Import Tint changes from Dawn
Changes:
- b8b0c21918d43d64ccd34c795431f9b3bfd03514 Add break-if support. by dan sinclair <dsinclair@chromium.org>
- b69c6066c4f0d73f2e3f226c840bcb2d90f0ba5b tint: Fix uniformity ICE during error reporting wrt non-u... by Antonio Maiorano <amaiorano@google.com>
- 481b2ed959fff0497fb12762c8a243a5c5349593 Fix issue resolving address of numeric. by dan sinclair <dsinclair@chromium.org>
- 882b38a2f50829e1205c8b7bd955c438a44d78a7 Update fallthrough deprecation notice. by dan sinclair <dsinclair@chromium.org>
- 6e77b47ed98e5a81ac2edd6115bd3434d5c766b9 Update internals to initializer instead of constructor. by dan sinclair <dsinclair@chromium.org>
- fdd2ff11455b9c628e7b9383e5cabe1825878c55 Add tests to show correct handling of mixed && and ||. by dan sinclair <dsinclair@chromium.org>
- 1c94938726db859f555167d5028f5230d83a0567 tint: implement updated spec rules for shift left of conc... by Antonio Maiorano <amaiorano@google.com>
- 3fa6887679673c88aa7e8e3bcfb7a16aa749ecc9 tint: use struct instead of tuple for test cases by Antonio Maiorano <amaiorano@google.com>
- f148f0891bf5c36d9631ebe03020e83ed1c6070a [WGSL] Allow default as a case selector by dan sinclair <dsinclair@chromium.org>
- d32fbe07e76a37f0df143bbdd1fb1be70c29b93b Store expressions in switch case statements. by dan sinclair <dsinclair@chromium.org>
- 00aa7ef462c5cbc450f081a97dc68dddb7b2425a tint/reader/wgsl: Better diagnostics for missing parenthe... by Ben Clayton <bclayton@google.com>
- b6e1bc7d5d2fcd5166816ca4c4d1d5e33b3ce255 tint: Fix C++ UB when shifting abstract 0 left by >= 64 by Antonio Maiorano <amaiorano@google.com>
GitOrigin-RevId: b8b0c21918d43d64ccd34c795431f9b3bfd03514
Change-Id: I03ade9548ff45b78ad6a6dcea8f4e4f64eaf9eec
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/106412
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Copybara Prod <copybara-worker-blackhole@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
diff --git a/src/tint/BUILD.gn b/src/tint/BUILD.gn
index 5ef8252..6560b6f 100644
--- a/src/tint/BUILD.gn
+++ b/src/tint/BUILD.gn
@@ -205,6 +205,8 @@
"ast/bool.h",
"ast/bool_literal_expression.cc",
"ast/bool_literal_expression.h",
+ "ast/break_if_statement.cc",
+ "ast/break_if_statement.h",
"ast/break_statement.cc",
"ast/break_statement.h",
"ast/builtin_attribute.cc",
@@ -215,6 +217,8 @@
"ast/call_expression.h",
"ast/call_statement.cc",
"ast/call_statement.h",
+ "ast/case_selector.cc",
+ "ast/case_selector.h",
"ast/case_statement.cc",
"ast/case_statement.h",
"ast/compound_assignment_statement.cc",
@@ -395,10 +399,10 @@
"reflection.h",
"resolver/const_eval.cc",
"resolver/const_eval.h",
- "resolver/ctor_conv_intrinsic.cc",
- "resolver/ctor_conv_intrinsic.h",
"resolver/dependency_graph.cc",
"resolver/dependency_graph.h",
+ "resolver/init_conv_intrinsic.cc",
+ "resolver/init_conv_intrinsic.h",
"resolver/intrinsic_table.cc",
"resolver/intrinsic_table.h",
"resolver/intrinsic_table.inl",
@@ -419,6 +423,7 @@
"sem/behavior.h",
"sem/binding_point.h",
"sem/bool.h",
+ "sem/break_if_statement.h",
"sem/builtin.h",
"sem/builtin_type.h",
"sem/call.h",
@@ -453,8 +458,8 @@
"sem/switch_statement.h",
"sem/texture.h",
"sem/type.h",
- "sem/type_constructor.h",
"sem/type_conversion.h",
+ "sem/type_initializer.h",
"sem/type_manager.h",
"sem/type_mappings.h",
"sem/u32.h",
@@ -552,8 +557,8 @@
"transform/var_for_dynamic_index.h",
"transform/vectorize_matrix_conversions.cc",
"transform/vectorize_matrix_conversions.h",
- "transform/vectorize_scalar_matrix_constructors.cc",
- "transform/vectorize_scalar_matrix_constructors.h",
+ "transform/vectorize_scalar_matrix_initializers.cc",
+ "transform/vectorize_scalar_matrix_initializers.h",
"transform/vertex_pulling.cc",
"transform/vertex_pulling.h",
"transform/while_to_loop.cc",
@@ -628,6 +633,8 @@
"sem/block_statement.cc",
"sem/bool.cc",
"sem/bool.h",
+ "sem/break_if_statement.cc",
+ "sem/break_if_statement.h",
"sem/builtin.cc",
"sem/builtin.h",
"sem/builtin_type.cc",
@@ -696,10 +703,10 @@
"sem/texture.h",
"sem/type.cc",
"sem/type.h",
- "sem/type_constructor.cc",
- "sem/type_constructor.h",
"sem/type_conversion.cc",
"sem/type_conversion.h",
+ "sem/type_initializer.cc",
+ "sem/type_initializer.h",
"sem/type_manager.cc",
"sem/type_manager.h",
"sem/type_mappings.h",
@@ -1014,6 +1021,7 @@
"ast/block_statement_test.cc",
"ast/bool_literal_expression_test.cc",
"ast/bool_test.cc",
+ "ast/break_if_statement_test.cc",
"ast/break_statement_test.cc",
"ast/builtin_attribute_test.cc",
"ast/builtin_texture_helper_test.cc",
@@ -1021,6 +1029,7 @@
"ast/builtin_value_test.cc",
"ast/call_expression_test.cc",
"ast/call_statement_test.cc",
+ "ast/case_selector_test.cc",
"ast/case_statement_test.cc",
"ast/compound_assignment_statement_test.cc",
"ast/continue_statement_test.cc",
@@ -1150,7 +1159,7 @@
"resolver/struct_address_space_use_test.cc",
"resolver/struct_layout_test.cc",
"resolver/struct_pipeline_stage_use_test.cc",
- "resolver/type_constructor_validation_test.cc",
+ "resolver/type_initializer_validation_test.cc",
"resolver/type_validation_test.cc",
"resolver/uniformity_test.cc",
"resolver/validation_test.cc",
@@ -1238,7 +1247,7 @@
"transform/utils/hoist_to_decl_before_test.cc",
"transform/var_for_dynamic_index_test.cc",
"transform/vectorize_matrix_conversions_test.cc",
- "transform/vectorize_scalar_matrix_constructors_test.cc",
+ "transform/vectorize_scalar_matrix_initializers_test.cc",
"transform/vertex_pulling_test.cc",
"transform/while_to_loop_test.cc",
"transform/zero_init_workgroup_memory_test.cc",
@@ -1332,7 +1341,6 @@
"writer/spirv/builder_builtin_test.cc",
"writer/spirv/builder_builtin_texture_test.cc",
"writer/spirv/builder_call_test.cc",
- "writer/spirv/builder_constructor_expression_test.cc",
"writer/spirv/builder_discard_test.cc",
"writer/spirv/builder_entry_point_test.cc",
"writer/spirv/builder_format_conversion_test.cc",
@@ -1342,6 +1350,7 @@
"writer/spirv/builder_global_variable_test.cc",
"writer/spirv/builder_ident_expression_test.cc",
"writer/spirv/builder_if_test.cc",
+ "writer/spirv/builder_initializer_expression_test.cc",
"writer/spirv/builder_literal_test.cc",
"writer/spirv/builder_loop_test.cc",
"writer/spirv/builder_return_test.cc",
@@ -1461,7 +1470,6 @@
"writer/wgsl/generator_impl_call_test.cc",
"writer/wgsl/generator_impl_case_test.cc",
"writer/wgsl/generator_impl_cast_test.cc",
- "writer/wgsl/generator_impl_constructor_test.cc",
"writer/wgsl/generator_impl_continue_test.cc",
"writer/wgsl/generator_impl_discard_test.cc",
"writer/wgsl/generator_impl_enable_test.cc",
@@ -1470,6 +1478,7 @@
"writer/wgsl/generator_impl_global_decl_test.cc",
"writer/wgsl/generator_impl_identifier_test.cc",
"writer/wgsl/generator_impl_if_test.cc",
+ "writer/wgsl/generator_impl_initializer_test.cc",
"writer/wgsl/generator_impl_literal_test.cc",
"writer/wgsl/generator_impl_loop_test.cc",
"writer/wgsl/generator_impl_member_accessor_test.cc",
@@ -1503,13 +1512,13 @@
"writer/msl/generator_impl_call_test.cc",
"writer/msl/generator_impl_case_test.cc",
"writer/msl/generator_impl_cast_test.cc",
- "writer/msl/generator_impl_constructor_test.cc",
"writer/msl/generator_impl_continue_test.cc",
"writer/msl/generator_impl_discard_test.cc",
"writer/msl/generator_impl_function_test.cc",
"writer/msl/generator_impl_identifier_test.cc",
"writer/msl/generator_impl_if_test.cc",
"writer/msl/generator_impl_import_test.cc",
+ "writer/msl/generator_impl_initializer_test.cc",
"writer/msl/generator_impl_loop_test.cc",
"writer/msl/generator_impl_member_accessor_test.cc",
"writer/msl/generator_impl_module_constant_test.cc",
@@ -1543,13 +1552,13 @@
"writer/hlsl/generator_impl_call_test.cc",
"writer/hlsl/generator_impl_case_test.cc",
"writer/hlsl/generator_impl_cast_test.cc",
- "writer/hlsl/generator_impl_constructor_test.cc",
"writer/hlsl/generator_impl_continue_test.cc",
"writer/hlsl/generator_impl_discard_test.cc",
"writer/hlsl/generator_impl_function_test.cc",
"writer/hlsl/generator_impl_identifier_test.cc",
"writer/hlsl/generator_impl_if_test.cc",
"writer/hlsl/generator_impl_import_test.cc",
+ "writer/hlsl/generator_impl_initializer_test.cc",
"writer/hlsl/generator_impl_loop_test.cc",
"writer/hlsl/generator_impl_member_accessor_test.cc",
"writer/hlsl/generator_impl_module_constant_test.cc",
@@ -1584,13 +1593,13 @@
"writer/glsl/generator_impl_call_test.cc",
"writer/glsl/generator_impl_case_test.cc",
"writer/glsl/generator_impl_cast_test.cc",
- "writer/glsl/generator_impl_constructor_test.cc",
"writer/glsl/generator_impl_continue_test.cc",
"writer/glsl/generator_impl_discard_test.cc",
"writer/glsl/generator_impl_function_test.cc",
"writer/glsl/generator_impl_identifier_test.cc",
"writer/glsl/generator_impl_if_test.cc",
"writer/glsl/generator_impl_import_test.cc",
+ "writer/glsl/generator_impl_initializer_test.cc",
"writer/glsl/generator_impl_loop_test.cc",
"writer/glsl/generator_impl_member_accessor_test.cc",
"writer/glsl/generator_impl_module_constant_test.cc",
diff --git a/src/tint/CMakeLists.txt b/src/tint/CMakeLists.txt
index 0811598..af4384c 100644
--- a/src/tint/CMakeLists.txt
+++ b/src/tint/CMakeLists.txt
@@ -73,6 +73,8 @@
ast/bool_literal_expression.h
ast/bool.cc
ast/bool.h
+ ast/break_if_statement.cc
+ ast/break_if_statement.h
ast/break_statement.cc
ast/break_statement.h
ast/builtin_attribute.cc
@@ -83,6 +85,8 @@
ast/call_expression.h
ast/call_statement.cc
ast/call_statement.h
+ ast/case_selector.cc
+ ast/case_selector.h
ast/case_statement.cc
ast/case_statement.h
ast/compound_assignment_statement.cc
@@ -257,10 +261,10 @@
reader/reader.h
resolver/const_eval.cc
resolver/const_eval.h
- resolver/ctor_conv_intrinsic.cc
- resolver/ctor_conv_intrinsic.h
resolver/dependency_graph.cc
resolver/dependency_graph.h
+ resolver/init_conv_intrinsic.cc
+ resolver/init_conv_intrinsic.h
resolver/intrinsic_table.cc
resolver/intrinsic_table.h
resolver/intrinsic_table.inl
@@ -290,6 +294,8 @@
sem/block_statement.h
sem/bool.cc
sem/bool.h
+ sem/break_if_statement.cc
+ sem/break_if_statement.h
sem/builtin_type.cc
sem/builtin_type.h
sem/builtin.cc
@@ -357,8 +363,8 @@
sem/switch_statement.h
sem/texture.cc
sem/texture.h
- sem/type_constructor.cc
- sem/type_constructor.h
+ sem/type_initializer.cc
+ sem/type_initializer.h
sem/type_conversion.cc
sem/type_conversion.h
sem/type_manager.cc
@@ -464,8 +470,8 @@
transform/var_for_dynamic_index.h
transform/vectorize_matrix_conversions.cc
transform/vectorize_matrix_conversions.h
- transform/vectorize_scalar_matrix_constructors.cc
- transform/vectorize_scalar_matrix_constructors.h
+ transform/vectorize_scalar_matrix_initializers.cc
+ transform/vectorize_scalar_matrix_initializers.h
transform/vertex_pulling.cc
transform/vertex_pulling.h
transform/while_to_loop.cc
@@ -706,6 +712,7 @@
ast/block_statement_test.cc
ast/bool_literal_expression_test.cc
ast/bool_test.cc
+ ast/break_if_statement_test.cc
ast/break_statement_test.cc
ast/builtin_attribute_test.cc
ast/builtin_texture_helper_test.cc
@@ -713,6 +720,7 @@
ast/builtin_value_test.cc
ast/call_expression_test.cc
ast/call_statement_test.cc
+ ast/case_selector_test.cc
ast/case_statement_test.cc
ast/compound_assignment_statement_test.cc
ast/continue_statement_test.cc
@@ -831,7 +839,7 @@
resolver/struct_layout_test.cc
resolver/struct_pipeline_stage_use_test.cc
resolver/struct_address_space_use_test.cc
- resolver/type_constructor_validation_test.cc
+ resolver/type_initializer_validation_test.cc
resolver/type_validation_test.cc
resolver/validation_test.cc
resolver/validator_is_storeable_test.cc
@@ -1047,7 +1055,7 @@
writer/spirv/builder_builtin_test.cc
writer/spirv/builder_builtin_texture_test.cc
writer/spirv/builder_call_test.cc
- writer/spirv/builder_constructor_expression_test.cc
+ writer/spirv/builder_initializer_expression_test.cc
writer/spirv/builder_discard_test.cc
writer/spirv/builder_entry_point_test.cc
writer/spirv/builder_format_conversion_test.cc
@@ -1087,7 +1095,7 @@
writer/wgsl/generator_impl_call_test.cc
writer/wgsl/generator_impl_case_test.cc
writer/wgsl/generator_impl_cast_test.cc
- writer/wgsl/generator_impl_constructor_test.cc
+ writer/wgsl/generator_impl_initializer_test.cc
writer/wgsl/generator_impl_continue_test.cc
writer/wgsl/generator_impl_discard_test.cc
writer/wgsl/generator_impl_enable_test.cc
@@ -1152,7 +1160,7 @@
transform/unwind_discard_functions_test.cc
transform/var_for_dynamic_index_test.cc
transform/vectorize_matrix_conversions_test.cc
- transform/vectorize_scalar_matrix_constructors_test.cc
+ transform/vectorize_scalar_matrix_initializers_test.cc
transform/vertex_pulling_test.cc
transform/while_to_loop_test.cc
transform/zero_init_workgroup_memory_test.cc
@@ -1174,7 +1182,7 @@
writer/msl/generator_impl_call_test.cc
writer/msl/generator_impl_case_test.cc
writer/msl/generator_impl_cast_test.cc
- writer/msl/generator_impl_constructor_test.cc
+ writer/msl/generator_impl_initializer_test.cc
writer/msl/generator_impl_continue_test.cc
writer/msl/generator_impl_discard_test.cc
writer/msl/generator_impl_function_test.cc
@@ -1209,7 +1217,7 @@
writer/glsl/generator_impl_call_test.cc
writer/glsl/generator_impl_case_test.cc
writer/glsl/generator_impl_cast_test.cc
- writer/glsl/generator_impl_constructor_test.cc
+ writer/glsl/generator_impl_initializer_test.cc
writer/glsl/generator_impl_continue_test.cc
writer/glsl/generator_impl_discard_test.cc
writer/glsl/generator_impl_function_test.cc
@@ -1246,7 +1254,7 @@
writer/hlsl/generator_impl_call_test.cc
writer/hlsl/generator_impl_case_test.cc
writer/hlsl/generator_impl_cast_test.cc
- writer/hlsl/generator_impl_constructor_test.cc
+ writer/hlsl/generator_impl_initializer_test.cc
writer/hlsl/generator_impl_continue_test.cc
writer/hlsl/generator_impl_discard_test.cc
writer/hlsl/generator_impl_function_test.cc
diff --git a/src/tint/ast/binary_expression.h b/src/tint/ast/binary_expression.h
index cdc5960..323ab48 100644
--- a/src/tint/ast/binary_expression.h
+++ b/src/tint/ast/binary_expression.h
@@ -248,7 +248,53 @@
case BinaryOp::kModulo:
return "modulo";
}
- return "INVALID";
+ return "<invalid>";
+}
+
+/// @returns the WGSL operator of the BinaryOp
+/// @param op the BinaryOp
+constexpr const char* Operator(BinaryOp op) {
+ switch (op) {
+ case BinaryOp::kAnd:
+ return "&";
+ case BinaryOp::kOr:
+ return "|";
+ case BinaryOp::kXor:
+ return "^";
+ case BinaryOp::kLogicalAnd:
+ return "&&";
+ case BinaryOp::kLogicalOr:
+ return "||";
+ case BinaryOp::kEqual:
+ return "==";
+ case BinaryOp::kNotEqual:
+ return "!=";
+ case BinaryOp::kLessThan:
+ return "<";
+ case BinaryOp::kGreaterThan:
+ return ">";
+ case BinaryOp::kLessThanEqual:
+ return "<=";
+ case BinaryOp::kGreaterThanEqual:
+ return ">=";
+ case BinaryOp::kShiftLeft:
+ return "<<";
+ case BinaryOp::kShiftRight:
+ return ">>";
+ case BinaryOp::kAdd:
+ return "+";
+ case BinaryOp::kSubtract:
+ return "-";
+ case BinaryOp::kMultiply:
+ return "*";
+ case BinaryOp::kDivide:
+ return "/";
+ case BinaryOp::kModulo:
+ return "%";
+ default:
+ break;
+ }
+ return "<invalid>";
}
/// @param out the std::ostream to write to
diff --git a/src/tint/ast/break_if_statement.cc b/src/tint/ast/break_if_statement.cc
new file mode 100644
index 0000000..a931541
--- /dev/null
+++ b/src/tint/ast/break_if_statement.cc
@@ -0,0 +1,43 @@
+// Copyright 2022 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include "src/tint/ast/break_if_statement.h"
+
+#include "src/tint/program_builder.h"
+
+TINT_INSTANTIATE_TYPEINFO(tint::ast::BreakIfStatement);
+
+namespace tint::ast {
+
+BreakIfStatement::BreakIfStatement(ProgramID pid,
+ NodeID nid,
+ const Source& src,
+ const Expression* cond)
+ : Base(pid, nid, src), condition(cond) {
+ TINT_ASSERT(AST, condition);
+ TINT_ASSERT_PROGRAM_IDS_EQUAL_IF_VALID(AST, condition, program_id);
+}
+
+BreakIfStatement::BreakIfStatement(BreakIfStatement&&) = default;
+
+BreakIfStatement::~BreakIfStatement() = default;
+
+const BreakIfStatement* BreakIfStatement::Clone(CloneContext* ctx) const {
+ // Clone arguments outside of create() call to have deterministic ordering
+ auto src = ctx->Clone(source);
+ auto* cond = ctx->Clone(condition);
+ return ctx->dst->create<BreakIfStatement>(src, cond);
+}
+
+} // namespace tint::ast
diff --git a/src/tint/ast/break_if_statement.h b/src/tint/ast/break_if_statement.h
new file mode 100644
index 0000000..fe83d92
--- /dev/null
+++ b/src/tint/ast/break_if_statement.h
@@ -0,0 +1,50 @@
+// Copyright 2022 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef SRC_TINT_AST_BREAK_IF_STATEMENT_H_
+#define SRC_TINT_AST_BREAK_IF_STATEMENT_H_
+
+#include <utility>
+
+#include "src/tint/ast/block_statement.h"
+#include "src/tint/ast/expression.h"
+
+namespace tint::ast {
+
+/// A break if statement
+class BreakIfStatement final : public Castable<BreakIfStatement, Statement> {
+ public:
+ /// Constructor
+ /// @param pid the identifier of the program that owns this node
+ /// @param nid the unique node identifier
+ /// @param src the source of this node
+ /// @param condition the if condition
+ BreakIfStatement(ProgramID pid, NodeID nid, const Source& src, const Expression* condition);
+
+ /// Move constructor
+ BreakIfStatement(BreakIfStatement&&);
+ ~BreakIfStatement() override;
+
+ /// Clones this node and all transitive child nodes using the `CloneContext` `ctx`.
+ /// @param ctx the clone context
+ /// @return the newly cloned node
+ const BreakIfStatement* Clone(CloneContext* ctx) const override;
+
+ /// The if condition or nullptr if none set
+ const Expression* const condition;
+};
+
+} // namespace tint::ast
+
+#endif // SRC_TINT_AST_BREAK_IF_STATEMENT_H_
diff --git a/src/tint/ast/break_if_statement_test.cc b/src/tint/ast/break_if_statement_test.cc
new file mode 100644
index 0000000..1ff37a2
--- /dev/null
+++ b/src/tint/ast/break_if_statement_test.cc
@@ -0,0 +1,58 @@
+// Copyright 2022 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include "src/tint/ast/break_if_statement.h"
+
+#include "gtest/gtest-spi.h"
+#include "src/tint/ast/test_helper.h"
+
+namespace tint::ast {
+namespace {
+
+using BreakIfStatementTest = TestHelper;
+
+TEST_F(BreakIfStatementTest, Creation) {
+ auto* cond = Expr("cond");
+ auto* stmt = BreakIf(Source{Source::Location{20, 2}}, cond);
+ auto src = stmt->source;
+ EXPECT_EQ(src.range.begin.line, 20u);
+ EXPECT_EQ(src.range.begin.column, 2u);
+}
+
+TEST_F(BreakIfStatementTest, IsBreakIf) {
+ auto* stmt = BreakIf(Expr(true));
+ EXPECT_TRUE(stmt->Is<BreakIfStatement>());
+}
+
+TEST_F(BreakIfStatementTest, Assert_Null_Condition) {
+ EXPECT_FATAL_FAILURE(
+ {
+ ProgramBuilder b;
+ b.BreakIf(nullptr);
+ },
+ "internal compiler error");
+}
+
+TEST_F(BreakIfStatementTest, Assert_DifferentProgramID_Cond) {
+ EXPECT_FATAL_FAILURE(
+ {
+ ProgramBuilder b1;
+ ProgramBuilder b2;
+ b1.BreakIf(b2.Expr(true));
+ },
+ "internal compiler error");
+}
+
+} // namespace
+} // namespace tint::ast
diff --git a/src/tint/ast/case_selector.cc b/src/tint/ast/case_selector.cc
new file mode 100644
index 0000000..8622d3a
--- /dev/null
+++ b/src/tint/ast/case_selector.cc
@@ -0,0 +1,39 @@
+// Copyright 2022 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include "src/tint/ast/case_selector.h"
+
+#include <utility>
+
+#include "src/tint/program_builder.h"
+
+TINT_INSTANTIATE_TYPEINFO(tint::ast::CaseSelector);
+
+namespace tint::ast {
+
+CaseSelector::CaseSelector(ProgramID pid, NodeID nid, const Source& src, const ast::Expression* e)
+ : Base(pid, nid, src), expr(e) {}
+
+CaseSelector::CaseSelector(CaseSelector&&) = default;
+
+CaseSelector::~CaseSelector() = default;
+
+const CaseSelector* CaseSelector::Clone(CloneContext* ctx) const {
+ // Clone arguments outside of create() call to have deterministic ordering
+ auto src = ctx->Clone(source);
+ auto ex = ctx->Clone(expr);
+ return ctx->dst->create<CaseSelector>(src, ex);
+}
+
+} // namespace tint::ast
diff --git a/src/tint/ast/case_selector.h b/src/tint/ast/case_selector.h
new file mode 100644
index 0000000..b4c3ca7
--- /dev/null
+++ b/src/tint/ast/case_selector.h
@@ -0,0 +1,52 @@
+// Copyright 2022 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef SRC_TINT_AST_CASE_SELECTOR_H_
+#define SRC_TINT_AST_CASE_SELECTOR_H_
+
+#include <vector>
+
+#include "src/tint/ast/block_statement.h"
+#include "src/tint/ast/expression.h"
+
+namespace tint::ast {
+
+/// A case selector
+class CaseSelector final : public Castable<CaseSelector, Node> {
+ public:
+ /// Constructor
+ /// @param pid the identifier of the program that owns this node
+ /// @param nid the unique node identifier
+ /// @param src the source of this node
+ /// @param expr the selector expression, |nullptr| for a `default` selector
+ CaseSelector(ProgramID pid, NodeID nid, const Source& src, const Expression* expr = nullptr);
+ /// Move constructor
+ CaseSelector(CaseSelector&&);
+ ~CaseSelector() override;
+
+ /// @returns true if this is a default statement
+ bool IsDefault() const { return expr == nullptr; }
+
+ /// Clones this node and all transitive child nodes using the `CloneContext` `ctx`.
+ /// @param ctx the clone context
+ /// @return the newly cloned node
+ const CaseSelector* Clone(CloneContext* ctx) const override;
+
+ /// The selector, nullptr for a default selector
+ const Expression* const expr = nullptr;
+};
+
+} // namespace tint::ast
+
+#endif // SRC_TINT_AST_CASE_SELECTOR_H_
diff --git a/src/tint/ast/case_selector_test.cc b/src/tint/ast/case_selector_test.cc
new file mode 100644
index 0000000..16e74cc
--- /dev/null
+++ b/src/tint/ast/case_selector_test.cc
@@ -0,0 +1,40 @@
+// Copyright 2022 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include "src/tint/ast/case_selector.h"
+
+#include "gtest/gtest-spi.h"
+#include "src/tint/ast/test_helper.h"
+
+using namespace tint::number_suffixes; // NOLINT
+
+namespace tint::ast {
+namespace {
+
+using CaseSelectorTest = TestHelper;
+
+TEST_F(CaseSelectorTest, NonDefault) {
+ auto* e = Expr(2_i);
+ auto* c = CaseSelector(e);
+ EXPECT_FALSE(c->IsDefault());
+ EXPECT_EQ(e, c->expr);
+}
+
+TEST_F(CaseSelectorTest, Default) {
+ auto* c = DefaultCaseSelector();
+ EXPECT_TRUE(c->IsDefault());
+}
+
+} // namespace
+} // namespace tint::ast
diff --git a/src/tint/ast/case_statement.cc b/src/tint/ast/case_statement.cc
index 9f1c20e..7b2e798 100644
--- a/src/tint/ast/case_statement.cc
+++ b/src/tint/ast/case_statement.cc
@@ -25,10 +25,11 @@
CaseStatement::CaseStatement(ProgramID pid,
NodeID nid,
const Source& src,
- utils::VectorRef<const IntLiteralExpression*> s,
+ utils::VectorRef<const CaseSelector*> s,
const BlockStatement* b)
: Base(pid, nid, src), selectors(std::move(s)), body(b) {
TINT_ASSERT(AST, body);
+ TINT_ASSERT(AST, !selectors.IsEmpty());
TINT_ASSERT_PROGRAM_IDS_EQUAL_IF_VALID(AST, body, program_id);
for (auto* selector : selectors) {
TINT_ASSERT(AST, selector);
@@ -40,6 +41,15 @@
CaseStatement::~CaseStatement() = default;
+bool CaseStatement::ContainsDefault() const {
+ for (const auto* sel : selectors) {
+ if (sel->IsDefault()) {
+ return true;
+ }
+ }
+ return false;
+}
+
const CaseStatement* CaseStatement::Clone(CloneContext* ctx) const {
// Clone arguments outside of create() call to have deterministic ordering
auto src = ctx->Clone(source);
diff --git a/src/tint/ast/case_statement.h b/src/tint/ast/case_statement.h
index 47d2097..acd502a 100644
--- a/src/tint/ast/case_statement.h
+++ b/src/tint/ast/case_statement.h
@@ -18,7 +18,7 @@
#include <vector>
#include "src/tint/ast/block_statement.h"
-#include "src/tint/ast/int_literal_expression.h"
+#include "src/tint/ast/case_selector.h"
namespace tint::ast {
@@ -34,23 +34,23 @@
CaseStatement(ProgramID pid,
NodeID nid,
const Source& src,
- utils::VectorRef<const IntLiteralExpression*> selectors,
+ utils::VectorRef<const CaseSelector*> selectors,
const BlockStatement* body);
/// Move constructor
CaseStatement(CaseStatement&&);
~CaseStatement() override;
- /// @returns true if this is a default statement
- bool IsDefault() const { return selectors.IsEmpty(); }
-
/// Clones this node and all transitive child nodes using the `CloneContext`
/// `ctx`.
/// @param ctx the clone context
/// @return the newly cloned node
const CaseStatement* Clone(CloneContext* ctx) const override;
+ /// @returns true if this item contains a default selector
+ bool ContainsDefault() const;
+
/// The case selectors, empty if none set
- const utils::Vector<const IntLiteralExpression*, 4> selectors;
+ const utils::Vector<const CaseSelector*, 4> selectors;
/// The case body
const BlockStatement* const body;
diff --git a/src/tint/ast/case_statement_test.cc b/src/tint/ast/case_statement_test.cc
index dc3c88a..04b887b 100644
--- a/src/tint/ast/case_statement_test.cc
+++ b/src/tint/ast/case_statement_test.cc
@@ -27,7 +27,7 @@
using CaseStatementTest = TestHelper;
TEST_F(CaseStatementTest, Creation_i32) {
- auto* selector = Expr(2_i);
+ auto* selector = CaseSelector(2_i);
utils::Vector b{selector};
auto* discard = create<DiscardStatement>();
@@ -41,7 +41,7 @@
}
TEST_F(CaseStatementTest, Creation_u32) {
- auto* selector = Expr(2_u);
+ auto* selector = CaseSelector(2_u);
utils::Vector b{selector};
auto* discard = create<DiscardStatement>();
@@ -54,8 +54,20 @@
EXPECT_EQ(c->body->statements[0], discard);
}
+TEST_F(CaseStatementTest, ContainsDefault_WithDefault) {
+ utils::Vector b{CaseSelector(2_u), DefaultCaseSelector()};
+ auto* c = create<CaseStatement>(b, create<BlockStatement>(utils::Empty));
+ EXPECT_TRUE(c->ContainsDefault());
+}
+
+TEST_F(CaseStatementTest, ContainsDefault_WithOutDefault) {
+ utils::Vector b{CaseSelector(2_u), CaseSelector(3_u)};
+ auto* c = create<CaseStatement>(b, create<BlockStatement>(utils::Empty));
+ EXPECT_FALSE(c->ContainsDefault());
+}
+
TEST_F(CaseStatementTest, Creation_WithSource) {
- utils::Vector b{Expr(2_i)};
+ utils::Vector b{CaseSelector(2_i)};
auto* body = create<BlockStatement>(utils::Vector{
create<DiscardStatement>(),
@@ -66,22 +78,9 @@
EXPECT_EQ(src.range.begin.column, 2u);
}
-TEST_F(CaseStatementTest, IsDefault_WithoutSelectors) {
- auto* body = create<BlockStatement>(utils::Vector{
- create<DiscardStatement>(),
- });
- auto* c = create<CaseStatement>(utils::Empty, body);
- EXPECT_TRUE(c->IsDefault());
-}
-
-TEST_F(CaseStatementTest, IsDefault_WithSelectors) {
- utils::Vector b{Expr(2_i)};
- auto* c = create<CaseStatement>(b, create<BlockStatement>(utils::Empty));
- EXPECT_FALSE(c->IsDefault());
-}
-
TEST_F(CaseStatementTest, IsCase) {
- auto* c = create<CaseStatement>(utils::Empty, create<BlockStatement>(utils::Empty));
+ auto* c = create<CaseStatement>(utils::Vector{DefaultCaseSelector()},
+ create<BlockStatement>(utils::Empty));
EXPECT_TRUE(c->Is<CaseStatement>());
}
@@ -89,7 +88,7 @@
EXPECT_FATAL_FAILURE(
{
ProgramBuilder b;
- b.create<CaseStatement>(utils::Empty, nullptr);
+ b.create<CaseStatement>(utils::Vector{b.DefaultCaseSelector()}, nullptr);
},
"internal compiler error");
}
@@ -98,7 +97,7 @@
EXPECT_FATAL_FAILURE(
{
ProgramBuilder b;
- b.create<CaseStatement>(utils::Vector<const ast::IntLiteralExpression*, 1>{nullptr},
+ b.create<CaseStatement>(utils::Vector<const ast::CaseSelector*, 1>{nullptr},
b.create<BlockStatement>(utils::Empty));
},
"internal compiler error");
@@ -109,7 +108,8 @@
{
ProgramBuilder b1;
ProgramBuilder b2;
- b1.create<CaseStatement>(utils::Empty, b2.create<BlockStatement>(utils::Empty));
+ b1.create<CaseStatement>(utils::Vector{b1.DefaultCaseSelector()},
+ b2.create<BlockStatement>(utils::Empty));
},
"internal compiler error");
}
@@ -119,7 +119,7 @@
{
ProgramBuilder b1;
ProgramBuilder b2;
- b1.create<CaseStatement>(utils::Vector{b2.Expr(2_i)},
+ b1.create<CaseStatement>(utils::Vector{b2.CaseSelector(b2.Expr(2_i))},
b1.create<BlockStatement>(utils::Empty));
},
"internal compiler error");
diff --git a/src/tint/ast/const.cc b/src/tint/ast/const.cc
index fbc8469..40f46a2 100644
--- a/src/tint/ast/const.cc
+++ b/src/tint/ast/const.cc
@@ -27,10 +27,10 @@
const Source& src,
const Symbol& sym,
const ast::Type* ty,
- const Expression* ctor,
+ const Expression* init,
utils::VectorRef<const Attribute*> attrs)
- : Base(pid, nid, src, sym, ty, ctor, std::move(attrs)) {
- TINT_ASSERT(AST, ctor != nullptr);
+ : Base(pid, nid, src, sym, ty, init, std::move(attrs)) {
+ TINT_ASSERT(AST, init != nullptr);
}
Const::Const(Const&&) = default;
@@ -45,9 +45,9 @@
auto src = ctx->Clone(source);
auto sym = ctx->Clone(symbol);
auto* ty = ctx->Clone(type);
- auto* ctor = ctx->Clone(constructor);
+ auto* init = ctx->Clone(initializer);
auto attrs = ctx->Clone(attributes);
- return ctx->dst->create<Const>(src, sym, ty, ctor, std::move(attrs));
+ return ctx->dst->create<Const>(src, sym, ty, init, std::move(attrs));
}
} // namespace tint::ast
diff --git a/src/tint/ast/const.h b/src/tint/ast/const.h
index c37458f..4b955f0 100644
--- a/src/tint/ast/const.h
+++ b/src/tint/ast/const.h
@@ -20,7 +20,7 @@
namespace tint::ast {
/// A "const" declaration is a name for a module-scoped or function-scoped creation-time value.
-/// const must have a constructor expression.
+/// const must have a initializer expression.
///
/// Examples:
///
@@ -38,14 +38,14 @@
/// @param source the variable source
/// @param sym the variable symbol
/// @param type the declared variable type
- /// @param constructor the constructor expression. Must not be nullptr.
+ /// @param initializer the initializer expression. Must not be nullptr.
/// @param attributes the variable attributes
Const(ProgramID pid,
NodeID nid,
const Source& source,
const Symbol& sym,
const ast::Type* type,
- const Expression* constructor,
+ const Expression* initializer,
utils::VectorRef<const Attribute*> attributes);
/// Move constructor
diff --git a/src/tint/ast/let.cc b/src/tint/ast/let.cc
index 0248234..30ed851 100644
--- a/src/tint/ast/let.cc
+++ b/src/tint/ast/let.cc
@@ -27,10 +27,10 @@
const Source& src,
const Symbol& sym,
const ast::Type* ty,
- const Expression* ctor,
+ const Expression* init,
utils::VectorRef<const Attribute*> attrs)
- : Base(pid, nid, src, sym, ty, ctor, std::move(attrs)) {
- TINT_ASSERT(AST, ctor != nullptr);
+ : Base(pid, nid, src, sym, ty, init, std::move(attrs)) {
+ TINT_ASSERT(AST, init != nullptr);
}
Let::Let(Let&&) = default;
@@ -45,9 +45,9 @@
auto src = ctx->Clone(source);
auto sym = ctx->Clone(symbol);
auto* ty = ctx->Clone(type);
- auto* ctor = ctx->Clone(constructor);
+ auto* init = ctx->Clone(initializer);
auto attrs = ctx->Clone(attributes);
- return ctx->dst->create<Let>(src, sym, ty, ctor, std::move(attrs));
+ return ctx->dst->create<Let>(src, sym, ty, init, std::move(attrs));
}
} // namespace tint::ast
diff --git a/src/tint/ast/let.h b/src/tint/ast/let.h
index fa0c8be..8fd9cfa 100644
--- a/src/tint/ast/let.h
+++ b/src/tint/ast/let.h
@@ -35,14 +35,14 @@
/// @param source the variable source
/// @param sym the variable symbol
/// @param type the declared variable type
- /// @param constructor the constructor expression
+ /// @param initializer the initializer expression
/// @param attributes the variable attributes
Let(ProgramID pid,
NodeID nid,
const Source& source,
const Symbol& sym,
const ast::Type* type,
- const Expression* constructor,
+ const Expression* initializer,
utils::VectorRef<const Attribute*> attributes);
/// Move constructor
diff --git a/src/tint/ast/matrix.h b/src/tint/ast/matrix.h
index e778738..00bf658 100644
--- a/src/tint/ast/matrix.h
+++ b/src/tint/ast/matrix.h
@@ -29,8 +29,8 @@
/// @param nid the unique node identifier
/// @param src the source of this node
/// @param subtype the declared type of the matrix components. May be null for
- /// matrix constructors, where the element type will be inferred from
- /// the constructor arguments
+ /// matrix initializers, where the element type will be inferred from
+ /// the initializer arguments
/// @param rows the number of rows in the matrix
/// @param columns the number of columns in the matrix
Matrix(ProgramID pid,
@@ -54,7 +54,7 @@
const Matrix* Clone(CloneContext* ctx) const override;
/// The declared type of the matrix components. May be null for matrix
- /// constructors, where the element type will be inferred from the constructor
+ /// initializers, where the element type will be inferred from the initializer
/// arguments
const Type* const type;
diff --git a/src/tint/ast/override.cc b/src/tint/ast/override.cc
index bb0f063..5f2a600 100644
--- a/src/tint/ast/override.cc
+++ b/src/tint/ast/override.cc
@@ -27,9 +27,9 @@
const Source& src,
const Symbol& sym,
const ast::Type* ty,
- const Expression* ctor,
+ const Expression* init,
utils::VectorRef<const Attribute*> attrs)
- : Base(pid, nid, src, sym, ty, ctor, std::move(attrs)) {}
+ : Base(pid, nid, src, sym, ty, init, std::move(attrs)) {}
Override::Override(Override&&) = default;
@@ -43,9 +43,9 @@
auto src = ctx->Clone(source);
auto sym = ctx->Clone(symbol);
auto* ty = ctx->Clone(type);
- auto* ctor = ctx->Clone(constructor);
+ auto* init = ctx->Clone(initializer);
auto attrs = ctx->Clone(attributes);
- return ctx->dst->create<Override>(src, sym, ty, ctor, std::move(attrs));
+ return ctx->dst->create<Override>(src, sym, ty, init, std::move(attrs));
}
} // namespace tint::ast
diff --git a/src/tint/ast/override.h b/src/tint/ast/override.h
index c56cedf..2d586df 100644
--- a/src/tint/ast/override.h
+++ b/src/tint/ast/override.h
@@ -38,14 +38,14 @@
/// @param source the variable source
/// @param sym the variable symbol
/// @param type the declared variable type
- /// @param constructor the constructor expression
+ /// @param initializer the initializer expression
/// @param attributes the variable attributes
Override(ProgramID pid,
NodeID nid,
const Source& source,
const Symbol& sym,
const ast::Type* type,
- const Expression* constructor,
+ const Expression* initializer,
utils::VectorRef<const Attribute*> attributes);
/// Move constructor
diff --git a/src/tint/ast/switch_statement_test.cc b/src/tint/ast/switch_statement_test.cc
index 0f66c61..00c515e 100644
--- a/src/tint/ast/switch_statement_test.cc
+++ b/src/tint/ast/switch_statement_test.cc
@@ -25,7 +25,7 @@
using SwitchStatementTest = TestHelper;
TEST_F(SwitchStatementTest, Creation) {
- auto* case_stmt = create<CaseStatement>(utils::Vector{Expr(1_u)}, Block());
+ auto* case_stmt = create<CaseStatement>(utils::Vector{CaseSelector(1_u)}, Block());
auto* ident = Expr("ident");
utils::Vector body{case_stmt};
@@ -44,7 +44,7 @@
}
TEST_F(SwitchStatementTest, IsSwitch) {
- utils::Vector lit{Expr(2_i)};
+ utils::Vector lit{CaseSelector(2_i)};
auto* ident = Expr("ident");
utils::Vector body{create<CaseStatement>(lit, Block())};
@@ -58,7 +58,8 @@
{
ProgramBuilder b;
CaseStatementList cases;
- cases.Push(b.create<CaseStatement>(utils::Vector{b.Expr(1_i)}, b.Block()));
+ cases.Push(
+ b.create<CaseStatement>(utils::Vector{b.CaseSelector(b.Expr(1_i))}, b.Block()));
b.create<SwitchStatement>(nullptr, cases);
},
"internal compiler error");
@@ -82,7 +83,7 @@
b1.create<SwitchStatement>(b2.Expr(true), utils::Vector{
b1.create<CaseStatement>(
utils::Vector{
- b1.Expr(1_i),
+ b1.CaseSelector(b1.Expr(1_i)),
},
b1.Block()),
});
@@ -98,7 +99,7 @@
b1.create<SwitchStatement>(b1.Expr(true), utils::Vector{
b2.create<CaseStatement>(
utils::Vector{
- b2.Expr(1_i),
+ b2.CaseSelector(b2.Expr(1_i)),
},
b2.Block()),
});
diff --git a/src/tint/ast/var.cc b/src/tint/ast/var.cc
index 26c23f6..12f3f31 100644
--- a/src/tint/ast/var.cc
+++ b/src/tint/ast/var.cc
@@ -27,9 +27,9 @@
const ast::Type* ty,
AddressSpace address_space,
Access access,
- const Expression* ctor,
+ const Expression* init,
utils::VectorRef<const Attribute*> attrs)
- : Base(pid, nid, src, sym, ty, ctor, std::move(attrs)),
+ : Base(pid, nid, src, sym, ty, init, std::move(attrs)),
declared_address_space(address_space),
declared_access(access) {}
@@ -45,9 +45,9 @@
auto src = ctx->Clone(source);
auto sym = ctx->Clone(symbol);
auto* ty = ctx->Clone(type);
- auto* ctor = ctx->Clone(constructor);
+ auto* init = ctx->Clone(initializer);
auto attrs = ctx->Clone(attributes);
- return ctx->dst->create<Var>(src, sym, ty, declared_address_space, declared_access, ctor,
+ return ctx->dst->create<Var>(src, sym, ty, declared_address_space, declared_access, init,
std::move(attrs));
}
diff --git a/src/tint/ast/var.h b/src/tint/ast/var.h
index 5234165..0141d9c 100644
--- a/src/tint/ast/var.h
+++ b/src/tint/ast/var.h
@@ -49,7 +49,7 @@
/// @param type the declared variable type
/// @param declared_address_space the declared address space
/// @param declared_access the declared access control
- /// @param constructor the constructor expression
+ /// @param initializer the initializer expression
/// @param attributes the variable attributes
Var(ProgramID pid,
NodeID nid,
@@ -58,7 +58,7 @@
const ast::Type* type,
AddressSpace declared_address_space,
Access declared_access,
- const Expression* constructor,
+ const Expression* initializer,
utils::VectorRef<const Attribute*> attributes);
/// Move constructor
diff --git a/src/tint/ast/variable.cc b/src/tint/ast/variable.cc
index bb719c0..1617d45 100644
--- a/src/tint/ast/variable.cc
+++ b/src/tint/ast/variable.cc
@@ -25,12 +25,12 @@
const Source& src,
const Symbol& sym,
const ast::Type* ty,
- const Expression* ctor,
+ const Expression* init,
utils::VectorRef<const Attribute*> attrs)
- : Base(pid, nid, src), symbol(sym), type(ty), constructor(ctor), attributes(std::move(attrs)) {
+ : Base(pid, nid, src), symbol(sym), type(ty), initializer(init), attributes(std::move(attrs)) {
TINT_ASSERT(AST, symbol.IsValid());
TINT_ASSERT_PROGRAM_IDS_EQUAL_IF_VALID(AST, symbol, program_id);
- TINT_ASSERT_PROGRAM_IDS_EQUAL_IF_VALID(AST, constructor, program_id);
+ TINT_ASSERT_PROGRAM_IDS_EQUAL_IF_VALID(AST, initializer, program_id);
}
Variable::Variable(Variable&&) = default;
diff --git a/src/tint/ast/variable.h b/src/tint/ast/variable.h
index ea0ff99..81096e9 100644
--- a/src/tint/ast/variable.h
+++ b/src/tint/ast/variable.h
@@ -47,14 +47,14 @@
/// @param source the variable source
/// @param sym the variable symbol
/// @param type the declared variable type
- /// @param constructor the constructor expression
+ /// @param initializer the initializer expression
/// @param attributes the variable attributes
Variable(ProgramID pid,
NodeID nid,
const Source& source,
const Symbol& sym,
const ast::Type* type,
- const Expression* constructor,
+ const Expression* initializer,
utils::VectorRef<const Attribute*> attributes);
/// Move constructor
@@ -81,8 +81,8 @@
/// var i = 1;
const ast::Type* const type;
- /// The constructor expression or nullptr if none set
- const Expression* const constructor;
+ /// The initializer expression or nullptr if none set
+ const Expression* const initializer;
/// The attributes attached to this variable
const utils::Vector<const Attribute*, 2> attributes;
diff --git a/src/tint/ast/variable_test.cc b/src/tint/ast/variable_test.cc
index 01f3d8e..a0ee93d 100644
--- a/src/tint/ast/variable_test.cc
+++ b/src/tint/ast/variable_test.cc
@@ -81,7 +81,7 @@
"internal compiler error");
}
-TEST_F(VariableTest, Assert_DifferentProgramID_Constructor) {
+TEST_F(VariableTest, Assert_DifferentProgramID_Initializer) {
EXPECT_FATAL_FAILURE(
{
ProgramBuilder b1;
diff --git a/src/tint/ast/vector.h b/src/tint/ast/vector.h
index 111602d..0f24782 100644
--- a/src/tint/ast/vector.h
+++ b/src/tint/ast/vector.h
@@ -29,8 +29,8 @@
/// @param nid the unique node identifier
/// @param src the source of this node
/// @param subtype the declared type of the vector components. May be null
- /// for vector constructors, where the element type will be inferred
- /// from the constructor arguments
+ /// for vector initializers, where the element type will be inferred
+ /// from the initializer arguments
/// @param width the number of elements in the vector
Vector(ProgramID pid, NodeID nid, Source const& src, const Type* subtype, uint32_t width);
/// Move constructor
@@ -48,7 +48,7 @@
const Vector* Clone(CloneContext* ctx) const override;
/// The declared type of the vector components. May be null for vector
- /// constructors, where the element type will be inferred from the constructor
+ /// initializers, where the element type will be inferred from the initializer
/// arguments
const Type* const type;
diff --git a/src/tint/castable_test.cc b/src/tint/castable_test.cc
index 52efd80..c452c9b 100644
--- a/src/tint/castable_test.cc
+++ b/src/tint/castable_test.cc
@@ -710,7 +710,7 @@
EXPECT_TRUE(default_called);
}
-TEST(Castable, SwitchReturnNoDefaultConstructor) {
+TEST(Castable, SwitchReturnNoDefaultInitializer) {
struct Object {
explicit Object(int v) : value(v) {}
int value;
diff --git a/src/tint/fuzzers/tint_ast_fuzzer/mutations/change_binary_operator_test.cc b/src/tint/fuzzers/tint_ast_fuzzer/mutations/change_binary_operator_test.cc
index 1de527c..1c83fd4 100644
--- a/src/tint/fuzzers/tint_ast_fuzzer/mutations/change_binary_operator_test.cc
+++ b/src/tint/fuzzers/tint_ast_fuzzer/mutations/change_binary_operator_test.cc
@@ -92,7 +92,7 @@
auto a_var_id = node_id_map.GetId(a_var);
- const auto* sum_expr = a_var->constructor->As<ast::BinaryExpression>();
+ const auto* sum_expr = a_var->initializer->As<ast::BinaryExpression>();
ASSERT_NE(sum_expr, nullptr);
auto sum_expr_id = node_id_map.GetId(sum_expr);
@@ -131,7 +131,7 @@
const auto* a_var = main_fn_stmts[0]->As<ast::VariableDeclStatement>()->variable;
ASSERT_NE(a_var, nullptr);
- const auto* sum_expr = a_var->constructor->As<ast::BinaryExpression>();
+ const auto* sum_expr = a_var->initializer->As<ast::BinaryExpression>();
ASSERT_NE(sum_expr, nullptr);
auto sum_expr_id = node_id_map.GetId(sum_expr);
@@ -194,7 +194,7 @@
const auto* r_var = stmts[0]->As<ast::VariableDeclStatement>()->variable;
ASSERT_NE(r_var, nullptr);
- const auto* binary_expr = r_var->constructor->As<ast::BinaryExpression>();
+ const auto* binary_expr = r_var->initializer->As<ast::BinaryExpression>();
ASSERT_NE(binary_expr, nullptr);
auto binary_expr_id = node_id_map.GetId(binary_expr);
diff --git a/src/tint/fuzzers/tint_ast_fuzzer/mutations/change_unary_operator_test.cc b/src/tint/fuzzers/tint_ast_fuzzer/mutations/change_unary_operator_test.cc
index 511af4f..08d94e8 100644
--- a/src/tint/fuzzers/tint_ast_fuzzer/mutations/change_unary_operator_test.cc
+++ b/src/tint/fuzzers/tint_ast_fuzzer/mutations/change_unary_operator_test.cc
@@ -64,16 +64,16 @@
ASSERT_NE(neg_d_var, nullptr);
// Get the expression from variable declaration.
- const auto* neg_a_expr = neg_a_var->constructor->As<ast::UnaryOpExpression>();
+ const auto* neg_a_expr = neg_a_var->initializer->As<ast::UnaryOpExpression>();
ASSERT_NE(neg_a_expr, nullptr);
- const auto* not_b_expr = not_b_var->constructor->As<ast::UnaryOpExpression>();
+ const auto* not_b_expr = not_b_var->initializer->As<ast::UnaryOpExpression>();
ASSERT_NE(not_b_expr, nullptr);
- const auto* not_c_expr = not_c_var->constructor->As<ast::UnaryOpExpression>();
+ const auto* not_c_expr = not_c_var->initializer->As<ast::UnaryOpExpression>();
ASSERT_NE(not_c_expr, nullptr);
- const auto* neg_d_expr = neg_d_var->constructor->As<ast::UnaryOpExpression>();
+ const auto* neg_d_expr = neg_d_var->initializer->As<ast::UnaryOpExpression>();
ASSERT_NE(neg_d_expr, nullptr);
// The following mutations are not applicable.
@@ -147,7 +147,7 @@
ASSERT_NE(comp_a_var, nullptr);
// Get the expression from variable declaration.
- const auto* comp_a_expr = comp_a_var->constructor->As<ast::UnaryOpExpression>();
+ const auto* comp_a_expr = comp_a_var->initializer->As<ast::UnaryOpExpression>();
ASSERT_NE(comp_a_expr, nullptr);
// Assert mutation to be applicable and apply mutation.
@@ -188,7 +188,7 @@
ASSERT_NE(comp_b_var, nullptr);
// Get the expression from variable declaration.
- const auto* comp_b_expr = comp_b_var->constructor->As<ast::UnaryOpExpression>();
+ const auto* comp_b_expr = comp_b_var->initializer->As<ast::UnaryOpExpression>();
ASSERT_NE(comp_b_expr, nullptr);
// Assert mutation to be applicable and apply mutation.
@@ -231,7 +231,7 @@
ASSERT_NE(neg_a_var, nullptr);
// Get the expression from variable declaration.
- const auto* neg_a_expr = neg_a_var->constructor->As<ast::UnaryOpExpression>();
+ const auto* neg_a_expr = neg_a_var->initializer->As<ast::UnaryOpExpression>();
ASSERT_NE(neg_a_expr, nullptr);
// Assert mutation to be applicable and apply mutation.
@@ -273,7 +273,7 @@
ASSERT_NE(neg_b_var, nullptr);
// Get the expression from variable declaration.
- const auto* neg_b_expr = neg_b_var->constructor->As<ast::UnaryOpExpression>();
+ const auto* neg_b_expr = neg_b_var->initializer->As<ast::UnaryOpExpression>();
ASSERT_NE(neg_b_expr, nullptr);
// Assert mutation to be applicable and apply mutation.
diff --git a/src/tint/fuzzers/tint_ast_fuzzer/mutations/replace_identifier_test.cc b/src/tint/fuzzers/tint_ast_fuzzer/mutations/replace_identifier_test.cc
index 93466d8..ac5743e 100644
--- a/src/tint/fuzzers/tint_ast_fuzzer/mutations/replace_identifier_test.cc
+++ b/src/tint/fuzzers/tint_ast_fuzzer/mutations/replace_identifier_test.cc
@@ -62,7 +62,7 @@
auto b_var_id = node_id_map.GetId(b_var);
ASSERT_NE(b_var_id, 0);
- const auto* sum_expr = b_var->constructor->As<ast::BinaryExpression>();
+ const auto* sum_expr = b_var->initializer->As<ast::BinaryExpression>();
ASSERT_NE(sum_expr, nullptr);
auto a_ident_id = node_id_map.GetId(sum_expr->lhs);
@@ -75,7 +75,7 @@
ASSERT_NE(e_var_id, 0);
auto vec_member_access_id =
- node_id_map.GetId(e_var->constructor->As<ast::MemberAccessorExpression>()->member);
+ node_id_map.GetId(e_var->initializer->As<ast::MemberAccessorExpression>()->member);
ASSERT_NE(vec_member_access_id, 0);
// use_id is invalid.
@@ -596,7 +596,7 @@
.Functions()[0]
->body->statements[1]
->As<ast::VariableDeclStatement>()
- ->variable->constructor->As<ast::IndexAccessorExpression>()
+ ->variable->initializer->As<ast::IndexAccessorExpression>()
->object->As<ast::UnaryOpExpression>()
->expr->As<ast::UnaryOpExpression>()
->expr);
@@ -631,7 +631,7 @@
.Functions()[0]
->body->statements[3]
->As<ast::VariableDeclStatement>()
- ->variable->constructor->As<ast::IndexAccessorExpression>()
+ ->variable->initializer->As<ast::IndexAccessorExpression>()
->object->As<ast::UnaryOpExpression>()
->expr);
ASSERT_NE(use_id, 0);
diff --git a/src/tint/fuzzers/tint_ast_fuzzer/mutations/wrap_unary_operator_test.cc b/src/tint/fuzzers/tint_ast_fuzzer/mutations/wrap_unary_operator_test.cc
index a22e2b9..4da9bf7 100644
--- a/src/tint/fuzzers/tint_ast_fuzzer/mutations/wrap_unary_operator_test.cc
+++ b/src/tint/fuzzers/tint_ast_fuzzer/mutations/wrap_unary_operator_test.cc
@@ -84,7 +84,7 @@
const auto* expr = main_fn_statements[0]
->As<ast::VariableDeclStatement>()
- ->variable->constructor->As<ast::Expression>();
+ ->variable->initializer->As<ast::Expression>();
const auto expression_id = node_id_map.GetId(expr);
ASSERT_NE(expression_id, 0);
@@ -162,7 +162,7 @@
const auto* expr = main_fn_statements[0]
->As<ast::VariableDeclStatement>()
- ->variable->constructor->As<ast::BinaryExpression>()
+ ->variable->initializer->As<ast::BinaryExpression>()
->lhs;
const auto expression_id = node_id_map.GetId(expr);
@@ -203,7 +203,7 @@
const auto* expr = main_fn_statements[0]
->As<ast::VariableDeclStatement>()
- ->variable->constructor->As<ast::UnaryOpExpression>()
+ ->variable->initializer->As<ast::UnaryOpExpression>()
->expr;
const auto expression_id = node_id_map.GetId(expr);
@@ -243,7 +243,7 @@
const auto* expr = main_fn_statements[0]
->As<ast::VariableDeclStatement>()
- ->variable->constructor->As<ast::Expression>();
+ ->variable->initializer->As<ast::Expression>();
const auto expression_id = node_id_map.GetId(expr);
ASSERT_NE(expression_id, 0);
@@ -286,7 +286,7 @@
const auto* expr = main_fn_statements[1]
->As<ast::ForLoopStatement>()
->initializer->As<ast::VariableDeclStatement>()
- ->variable->constructor->As<ast::Expression>();
+ ->variable->initializer->As<ast::Expression>();
const auto expression_id = node_id_map.GetId(expr);
ASSERT_NE(expression_id, 0);
@@ -328,7 +328,7 @@
const auto* expr = main_fn_statements[0]
->As<ast::VariableDeclStatement>()
- ->variable->constructor->As<ast::Expression>();
+ ->variable->initializer->As<ast::Expression>();
const auto expression_id = node_id_map.GetId(expr);
ASSERT_NE(expression_id, 0);
@@ -367,7 +367,7 @@
const auto* expr = main_fn_statements[0]
->As<ast::VariableDeclStatement>()
- ->variable->constructor->As<ast::Expression>();
+ ->variable->initializer->As<ast::Expression>();
const auto expression_id = node_id_map.GetId(expr);
ASSERT_NE(expression_id, 0);
@@ -396,7 +396,7 @@
const auto* expr = main_fn_statements[0]
->As<ast::VariableDeclStatement>()
- ->variable->constructor->As<ast::Expression>();
+ ->variable->initializer->As<ast::Expression>();
const auto expression_id = node_id_map.GetId(expr);
ASSERT_NE(expression_id, 0);
@@ -424,7 +424,7 @@
const auto* expr = main_fn_statements[0]
->As<ast::VariableDeclStatement>()
- ->variable->constructor->As<ast::Expression>();
+ ->variable->initializer->As<ast::Expression>();
const auto expression_id = node_id_map.GetId(expr);
ASSERT_NE(expression_id, 0);
@@ -453,7 +453,7 @@
const auto* expr = main_fn_statements[0]
->As<ast::VariableDeclStatement>()
- ->variable->constructor->As<ast::Expression>();
+ ->variable->initializer->As<ast::Expression>();
const auto expression_id = node_id_map.GetId(expr);
ASSERT_NE(expression_id, 0);
@@ -482,7 +482,7 @@
const auto* expr = main_fn_statements[0]
->As<ast::VariableDeclStatement>()
- ->variable->constructor->As<ast::Expression>();
+ ->variable->initializer->As<ast::Expression>();
const auto expression_id = node_id_map.GetId(expr);
ASSERT_NE(expression_id, 0);
diff --git a/src/tint/fuzzers/tint_regex_fuzzer/regex_fuzzer_tests.cc b/src/tint/fuzzers/tint_regex_fuzzer/regex_fuzzer_tests.cc
index b8e3288..b391860 100644
--- a/src/tint/fuzzers/tint_regex_fuzzer/regex_fuzzer_tests.cc
+++ b/src/tint/fuzzers/tint_regex_fuzzer/regex_fuzzer_tests.cc
@@ -36,7 +36,7 @@
using WgslMutator::GetIntLiterals;
using WgslMutator::GetLoopBodyPositions;
using WgslMutator::GetSwizzles;
- using WgslMutator::GetVectorConstructors;
+ using WgslMutator::GetVectorInitializers;
using WgslMutator::ReplaceRegion;
using WgslMutator::SwapIntervals;
};
@@ -660,7 +660,7 @@
ASSERT_EQ(ground_truth, swizzles);
}
-TEST(TestAddSwizzle, FindVectorConstructors) {
+TEST(TestAddSwizzle, FindVectorInitializers) {
RandomGenerator generator(0);
WgslMutatorTest mutator(generator);
std::string code = R"(
@@ -668,7 +668,7 @@
vec2<i32>(1, abs(abs(2)))
)";
- std::vector<std::pair<size_t, size_t>> swizzles = mutator.GetVectorConstructors(code);
+ std::vector<std::pair<size_t, size_t>> swizzles = mutator.GetVectorInitializers(code);
std::vector<std::pair<size_t, size_t>> ground_truth{{1, 40}, {11, 15}, {28, 12}, {43, 25}};
ASSERT_EQ(ground_truth, swizzles);
}
diff --git a/src/tint/fuzzers/tint_regex_fuzzer/wgsl_mutator.cc b/src/tint/fuzzers/tint_regex_fuzzer/wgsl_mutator.cc
index 7d16aad..c3a1f0a 100644
--- a/src/tint/fuzzers/tint_regex_fuzzer/wgsl_mutator.cc
+++ b/src/tint/fuzzers/tint_regex_fuzzer/wgsl_mutator.cc
@@ -692,15 +692,15 @@
auto identifiers = GetIdentifiers(function_body);
// - existing swizzles, e.g. to turn v.xy into v.xy.xx
auto swizzles = GetSwizzles(function_body);
- // - vector constructors, e.g. to turn vec3<f32>(...) into vec3<f32>(...).yyz
- auto vector_constructors = GetVectorConstructors(function_body);
+ // - vector initializers, e.g. to turn vec3<f32>(...) into vec3<f32>(...).yyz
+ auto vector_initializers = GetVectorInitializers(function_body);
// Create a combined vector of all the possibilities for swizzling, so that they can be sampled
// from as a whole.
std::vector<std::pair<size_t, size_t>> combined;
combined.insert(combined.end(), identifiers.begin(), identifiers.end());
combined.insert(combined.end(), swizzles.begin(), swizzles.end());
- combined.insert(combined.end(), vector_constructors.begin(), vector_constructors.end());
+ combined.insert(combined.end(), vector_initializers.begin(), vector_initializers.end());
if (combined.empty()) {
// No opportunities for swizzling: give up.
@@ -709,7 +709,7 @@
// Randomly create a swizzle operation. This is done without checking the potential length of
// the target vector. For identifiers this isn't possible without proper context. For existing
- // swizzles and vector constructors it would be possible to check the length, but it is anyway
+ // swizzles and vector initializers it would be possible to check the length, but it is anyway
// good to stress-test swizzle validation code paths.
std::string swizzle = ".";
{
@@ -758,28 +758,28 @@
return result;
}
-std::vector<std::pair<size_t, size_t>> WgslMutator::GetVectorConstructors(
+std::vector<std::pair<size_t, size_t>> WgslMutator::GetVectorInitializers(
const std::string& wgsl_code) {
- // This regex recognises the prefixes of vector constructors, which have the form:
+ // This regex recognises the prefixes of vector initializers, which have the form:
// "vecn<type>(", with possible whitespace between tokens.
- std::regex vector_constructor_prefix_regex("vec\\d[ \\n]*<[ \\n]*[a-z0-9_]+[ \\n]*>[^\\(]*\\(");
+ std::regex vector_initializer_prefix_regex("vec\\d[ \\n]*<[ \\n]*[a-z0-9_]+[ \\n]*>[^\\(]*\\(");
std::vector<std::pair<size_t, size_t>> result;
- auto vector_constructor_prefixes_begin =
- std::sregex_iterator(wgsl_code.begin(), wgsl_code.end(), vector_constructor_prefix_regex);
- auto vector_constructor_prefixes_end = std::sregex_iterator();
+ auto vector_initializer_prefixes_begin =
+ std::sregex_iterator(wgsl_code.begin(), wgsl_code.end(), vector_initializer_prefix_regex);
+ auto vector_initializer_prefixes_end = std::sregex_iterator();
- // Look through all of the vector constructor prefixes and see whether each one appears to
+ // Look through all of the vector initializer prefixes and see whether each one appears to
// correspond to a complete vector construction.
- for (std::sregex_iterator i = vector_constructor_prefixes_begin;
- i != vector_constructor_prefixes_end; ++i) {
+ for (std::sregex_iterator i = vector_initializer_prefixes_begin;
+ i != vector_initializer_prefixes_end; ++i) {
// A prefix is deemed to correspond to a complete vector construction if it is possible to
// find a corresponding closing bracket for the "(" at the end of the prefix.
size_t closing_bracket = FindClosingBracket(
static_cast<size_t>(i->suffix().first - wgsl_code.cbegin()), wgsl_code, '(', ')');
if (closing_bracket != 0) {
// A closing bracket was found, so record the start and size of the entire vector
- // constructor.
+ // initializer.
size_t start = static_cast<size_t>(i->prefix().second - wgsl_code.cbegin());
result.push_back({start, closing_bracket - start + 1});
}
diff --git a/src/tint/fuzzers/tint_regex_fuzzer/wgsl_mutator.h b/src/tint/fuzzers/tint_regex_fuzzer/wgsl_mutator.h
index cd1f2b6..8ebf943 100644
--- a/src/tint/fuzzers/tint_regex_fuzzer/wgsl_mutator.h
+++ b/src/tint/fuzzers/tint_regex_fuzzer/wgsl_mutator.h
@@ -94,7 +94,7 @@
bool ReplaceFunctionCallWithBuiltin(std::string& wgsl_code);
/// Given a WGSL-like string, adds a swizzle operation to either (a) an identifier, (b) a vector
- /// constructor, or (c) an existing swizzle.
+ /// initializer, or (c) an existing swizzle.
/// @param wgsl_code - the initial WGSL-like string that will be mutated.
/// @return true if a swizzle operation is added or false otherwise.
bool AddSwizzle(std::string& wgsl_code);
@@ -212,10 +212,10 @@
/// @return a vector with the positions and lengths of all the swizzles in wgsl_code.
std::vector<std::pair<size_t, size_t>> GetSwizzles(const std::string& wgsl_code);
- /// Finds all the vector constructors in a WGSL-like string.
- /// @param wgsl_code - the WGSL-like string where the vector constructors will be found.
- /// @return a vector with the positions and lengths of all the vector constructors in wgsl_code.
- std::vector<std::pair<size_t, size_t>> GetVectorConstructors(const std::string& wgsl_code);
+ /// Finds all the vector initializers in a WGSL-like string.
+ /// @param wgsl_code - the WGSL-like string where the vector initializers will be found.
+ /// @return a vector with the positions and lengths of all the vector initializers in wgsl_code.
+ std::vector<std::pair<size_t, size_t>> GetVectorInitializers(const std::string& wgsl_code);
private:
/// A function that given a delimiter, returns a vector that contains
diff --git a/src/tint/fuzzers/tint_spirv_tools_fuzzer/mutator.cc b/src/tint/fuzzers/tint_spirv_tools_fuzzer/mutator.cc
index 241143f..6bb7809 100644
--- a/src/tint/fuzzers/tint_spirv_tools_fuzzer/mutator.cc
+++ b/src/tint/fuzzers/tint_spirv_tools_fuzzer/mutator.cc
@@ -16,7 +16,7 @@
namespace tint::fuzzers::spvtools_fuzzer {
-// We need to define constructor here so that vtable is produced in this
+// We need to define destructor here so that vtable is produced in this
// translation unit (see -Wweak-vtables clang flag).
Mutator::~Mutator() = default;
diff --git a/src/tint/inspector/inspector.cc b/src/tint/inspector/inspector.cc
index 687ac91..516c1dc 100644
--- a/src/tint/inspector/inspector.cc
+++ b/src/tint/inspector/inspector.cc
@@ -252,7 +252,7 @@
TINT_UNREACHABLE(Inspector, diagnostics_);
}
- override.is_initialized = global->Declaration()->constructor;
+ override.is_initialized = global->Declaration()->initializer;
override.is_id_specified =
ast::HasAttribute<ast::IdAttribute>(global->Declaration()->attributes);
@@ -302,8 +302,8 @@
continue;
}
- if (global->Constructor()) {
- if (auto* value = global->Constructor()->ConstantValue()) {
+ if (global->Initializer()) {
+ if (auto* value = global->Initializer()->ConstantValue()) {
result[override_id] = Switch(
value->Type(), //
[&](const sem::I32*) { return Scalar(value->As<i32>()); },
diff --git a/src/tint/intrinsics.def b/src/tint/intrinsics.def
index 493d224..ae18606 100644
--- a/src/tint/intrinsics.def
+++ b/src/tint/intrinsics.def
@@ -711,124 +711,124 @@
@stage("fragment", "compute") fn atomicCompareExchangeWeak<T: iu32, S: workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T, T) -> __atomic_compare_exchange_result<T>
////////////////////////////////////////////////////////////////////////////////
-// Type constructors //
+// Type initializers //
////////////////////////////////////////////////////////////////////////////////
-// Zero value constructors
-@const("Zero") ctor i32() -> i32
-@const("Zero") ctor u32() -> u32
-@const("Zero") ctor f32() -> f32
-@const("Zero") ctor f16() -> f16
-@const("Zero") ctor bool() -> bool
-@const("Zero") ctor vec2<T: concrete_scalar>() -> vec2<T>
-@const("Zero") ctor vec3<T: concrete_scalar>() -> vec3<T>
-@const("Zero") ctor vec4<T: concrete_scalar>() -> vec4<T>
-@const("Zero") ctor mat2x2<T: f32_f16>() -> mat2x2<T>
-@const("Zero") ctor mat2x3<T: f32_f16>() -> mat2x3<T>
-@const("Zero") ctor mat2x4<T: f32_f16>() -> mat2x4<T>
-@const("Zero") ctor mat3x2<T: f32_f16>() -> mat3x2<T>
-@const("Zero") ctor mat3x3<T: f32_f16>() -> mat3x3<T>
-@const("Zero") ctor mat3x4<T: f32_f16>() -> mat3x4<T>
-@const("Zero") ctor mat4x2<T: f32_f16>() -> mat4x2<T>
-@const("Zero") ctor mat4x3<T: f32_f16>() -> mat4x3<T>
-@const("Zero") ctor mat4x4<T: f32_f16>() -> mat4x4<T>
+// Zero value initializers
+@const("Zero") init i32() -> i32
+@const("Zero") init u32() -> u32
+@const("Zero") init f32() -> f32
+@const("Zero") init f16() -> f16
+@const("Zero") init bool() -> bool
+@const("Zero") init vec2<T: concrete_scalar>() -> vec2<T>
+@const("Zero") init vec3<T: concrete_scalar>() -> vec3<T>
+@const("Zero") init vec4<T: concrete_scalar>() -> vec4<T>
+@const("Zero") init mat2x2<T: f32_f16>() -> mat2x2<T>
+@const("Zero") init mat2x3<T: f32_f16>() -> mat2x3<T>
+@const("Zero") init mat2x4<T: f32_f16>() -> mat2x4<T>
+@const("Zero") init mat3x2<T: f32_f16>() -> mat3x2<T>
+@const("Zero") init mat3x3<T: f32_f16>() -> mat3x3<T>
+@const("Zero") init mat3x4<T: f32_f16>() -> mat3x4<T>
+@const("Zero") init mat4x2<T: f32_f16>() -> mat4x2<T>
+@const("Zero") init mat4x3<T: f32_f16>() -> mat4x3<T>
+@const("Zero") init mat4x4<T: f32_f16>() -> mat4x4<T>
-// Identity constructors
-@const("Identity") ctor i32(i32) -> i32
-@const("Identity") ctor u32(u32) -> u32
-@const("Identity") ctor f32(f32) -> f32
-@const("Identity") ctor f16(f16) -> f16
-@const("Identity") ctor bool(bool) -> bool
-@const("Identity") ctor vec2<T: concrete_scalar>(vec2<T>) -> vec2<T>
-@const("Identity") ctor vec3<T: concrete_scalar>(vec3<T>) -> vec3<T>
-@const("Identity") ctor vec4<T: concrete_scalar>(vec4<T>) -> vec4<T>
-@const("Identity") ctor mat2x2<T: f32_f16>(mat2x2<T>) -> mat2x2<T>
-@const("Identity") ctor mat2x3<T: f32_f16>(mat2x3<T>) -> mat2x3<T>
-@const("Identity") ctor mat2x4<T: f32_f16>(mat2x4<T>) -> mat2x4<T>
-@const("Identity") ctor mat3x2<T: f32_f16>(mat3x2<T>) -> mat3x2<T>
-@const("Identity") ctor mat3x3<T: f32_f16>(mat3x3<T>) -> mat3x3<T>
-@const("Identity") ctor mat3x4<T: f32_f16>(mat3x4<T>) -> mat3x4<T>
-@const("Identity") ctor mat4x2<T: f32_f16>(mat4x2<T>) -> mat4x2<T>
-@const("Identity") ctor mat4x3<T: f32_f16>(mat4x3<T>) -> mat4x3<T>
-@const("Identity") ctor mat4x4<T: f32_f16>(mat4x4<T>) -> mat4x4<T>
+// Identity initializers
+@const("Identity") init i32(i32) -> i32
+@const("Identity") init u32(u32) -> u32
+@const("Identity") init f32(f32) -> f32
+@const("Identity") init f16(f16) -> f16
+@const("Identity") init bool(bool) -> bool
+@const("Identity") init vec2<T: concrete_scalar>(vec2<T>) -> vec2<T>
+@const("Identity") init vec3<T: concrete_scalar>(vec3<T>) -> vec3<T>
+@const("Identity") init vec4<T: concrete_scalar>(vec4<T>) -> vec4<T>
+@const("Identity") init mat2x2<T: f32_f16>(mat2x2<T>) -> mat2x2<T>
+@const("Identity") init mat2x3<T: f32_f16>(mat2x3<T>) -> mat2x3<T>
+@const("Identity") init mat2x4<T: f32_f16>(mat2x4<T>) -> mat2x4<T>
+@const("Identity") init mat3x2<T: f32_f16>(mat3x2<T>) -> mat3x2<T>
+@const("Identity") init mat3x3<T: f32_f16>(mat3x3<T>) -> mat3x3<T>
+@const("Identity") init mat3x4<T: f32_f16>(mat3x4<T>) -> mat3x4<T>
+@const("Identity") init mat4x2<T: f32_f16>(mat4x2<T>) -> mat4x2<T>
+@const("Identity") init mat4x3<T: f32_f16>(mat4x3<T>) -> mat4x3<T>
+@const("Identity") init mat4x4<T: f32_f16>(mat4x4<T>) -> mat4x4<T>
-// Vector constructors (splat)
-@const("VecSplat") ctor vec2<T: scalar>(T) -> vec2<T>
-@const("VecSplat") ctor vec3<T: scalar>(T) -> vec3<T>
-@const("VecSplat") ctor vec4<T: scalar>(T) -> vec4<T>
+// Vector initializers (splat)
+@const("VecSplat") init vec2<T: scalar>(T) -> vec2<T>
+@const("VecSplat") init vec3<T: scalar>(T) -> vec3<T>
+@const("VecSplat") init vec4<T: scalar>(T) -> vec4<T>
-// Vector constructors (scalar)
-@const("VecCtorS") ctor vec2<T: scalar>(x: T, y: T) -> vec2<T>
-@const("VecCtorS") ctor vec3<T: scalar>(x: T, y: T, z: T) -> vec3<T>
-@const("VecCtorS") ctor vec4<T: scalar>(x: T, y: T, z: T, w: T) -> vec4<T>
+// Vector initializers (scalar)
+@const("VecInitS") init vec2<T: scalar>(x: T, y: T) -> vec2<T>
+@const("VecInitS") init vec3<T: scalar>(x: T, y: T, z: T) -> vec3<T>
+@const("VecInitS") init vec4<T: scalar>(x: T, y: T, z: T, w: T) -> vec4<T>
-// Vector constructors (mixed)
-@const("VecCtorM") ctor vec3<T: scalar>(xy: vec2<T>, z: T) -> vec3<T>
-@const("VecCtorM") ctor vec3<T: scalar>(x: T, yz: vec2<T>) -> vec3<T>
-@const("VecCtorM") ctor vec4<T: scalar>(xy: vec2<T>, z: T, w: T) -> vec4<T>
-@const("VecCtorM") ctor vec4<T: scalar>(x: T, yz: vec2<T>, w: T) -> vec4<T>
-@const("VecCtorM") ctor vec4<T: scalar>(x: T, y: T, zw: vec2<T>) -> vec4<T>
-@const("VecCtorM") ctor vec4<T: scalar>(xy: vec2<T>, zw: vec2<T>) -> vec4<T>
-@const("VecCtorM") ctor vec4<T: scalar>(xyz: vec3<T>, w: T) -> vec4<T>
-@const("VecCtorM") ctor vec4<T: scalar>(x: T, zyw: vec3<T>) -> vec4<T>
+// Vector initializers (mixed)
+@const("VecInitM") init vec3<T: scalar>(xy: vec2<T>, z: T) -> vec3<T>
+@const("VecInitM") init vec3<T: scalar>(x: T, yz: vec2<T>) -> vec3<T>
+@const("VecInitM") init vec4<T: scalar>(xy: vec2<T>, z: T, w: T) -> vec4<T>
+@const("VecInitM") init vec4<T: scalar>(x: T, yz: vec2<T>, w: T) -> vec4<T>
+@const("VecInitM") init vec4<T: scalar>(x: T, y: T, zw: vec2<T>) -> vec4<T>
+@const("VecInitM") init vec4<T: scalar>(xy: vec2<T>, zw: vec2<T>) -> vec4<T>
+@const("VecInitM") init vec4<T: scalar>(xyz: vec3<T>, w: T) -> vec4<T>
+@const("VecInitM") init vec4<T: scalar>(x: T, zyw: vec3<T>) -> vec4<T>
-// Matrix constructors (scalar)
-@const("MatCtorS")
-ctor mat2x2<T: fa_f32_f16>(T, T,
+// Matrix initializers (scalar)
+@const("MatInitS")
+init mat2x2<T: fa_f32_f16>(T, T,
T, T) -> mat2x2<T>
-@const("MatCtorS")
-ctor mat2x3<T: fa_f32_f16>(T, T, T,
+@const("MatInitS")
+init mat2x3<T: fa_f32_f16>(T, T, T,
T, T, T) -> mat2x3<T>
-@const("MatCtorS")
-ctor mat2x4<T: fa_f32_f16>(T, T, T, T,
+@const("MatInitS")
+init mat2x4<T: fa_f32_f16>(T, T, T, T,
T, T, T, T) -> mat2x4<T>
-@const("MatCtorS")
-ctor mat3x2<T: fa_f32_f16>(T, T,
+@const("MatInitS")
+init mat3x2<T: fa_f32_f16>(T, T,
T, T,
T, T) -> mat3x2<T>
-@const("MatCtorS")
-ctor mat3x3<T: fa_f32_f16>(T, T, T,
+@const("MatInitS")
+init mat3x3<T: fa_f32_f16>(T, T, T,
T, T, T,
T, T, T) -> mat3x3<T>
-@const("MatCtorS")
-ctor mat3x4<T: fa_f32_f16>(T, T, T, T,
+@const("MatInitS")
+init mat3x4<T: fa_f32_f16>(T, T, T, T,
T, T, T, T,
T, T, T, T) -> mat3x4<T>
-@const("MatCtorS")
-ctor mat4x2<T: fa_f32_f16>(T, T,
+@const("MatInitS")
+init mat4x2<T: fa_f32_f16>(T, T,
T, T,
T, T,
T, T) -> mat4x2<T>
-@const("MatCtorS")
-ctor mat4x3<T: fa_f32_f16>(T, T, T,
+@const("MatInitS")
+init mat4x3<T: fa_f32_f16>(T, T, T,
T, T, T,
T, T, T,
T, T, T) -> mat4x3<T>
-@const("MatCtorS")
-ctor mat4x4<T: fa_f32_f16>(T, T, T, T,
+@const("MatInitS")
+init mat4x4<T: fa_f32_f16>(T, T, T, T,
T, T, T, T,
T, T, T, T,
T, T, T, T) -> mat4x4<T>
-// Matrix constructors (column vectors)
-@const("MatCtorV")
-ctor mat2x2<T: fa_f32_f16>(vec2<T>, vec2<T>) -> mat2x2<T>
-@const("MatCtorV")
-ctor mat2x3<T: fa_f32_f16>(vec3<T>, vec3<T>) -> mat2x3<T>
-@const("MatCtorV")
-ctor mat2x4<T: fa_f32_f16>(vec4<T>, vec4<T>) -> mat2x4<T>
-@const("MatCtorV")
-ctor mat3x2<T: fa_f32_f16>(vec2<T>, vec2<T>, vec2<T>) -> mat3x2<T>
-@const("MatCtorV")
-ctor mat3x3<T: fa_f32_f16>(vec3<T>, vec3<T>, vec3<T>) -> mat3x3<T>
-@const("MatCtorV")
-ctor mat3x4<T: fa_f32_f16>(vec4<T>, vec4<T>, vec4<T>) -> mat3x4<T>
-@const("MatCtorV")
-ctor mat4x2<T: fa_f32_f16>(vec2<T>, vec2<T>, vec2<T>, vec2<T>) -> mat4x2<T>
-@const("MatCtorV")
-ctor mat4x3<T: fa_f32_f16>(vec3<T>, vec3<T>, vec3<T>, vec3<T>) -> mat4x3<T>
-@const("MatCtorV")
-ctor mat4x4<T: fa_f32_f16>(vec4<T>, vec4<T>, vec4<T>, vec4<T>) -> mat4x4<T>
+// Matrix initializers (column vectors)
+@const("MatInitV")
+init mat2x2<T: fa_f32_f16>(vec2<T>, vec2<T>) -> mat2x2<T>
+@const("MatInitV")
+init mat2x3<T: fa_f32_f16>(vec3<T>, vec3<T>) -> mat2x3<T>
+@const("MatInitV")
+init mat2x4<T: fa_f32_f16>(vec4<T>, vec4<T>) -> mat2x4<T>
+@const("MatInitV")
+init mat3x2<T: fa_f32_f16>(vec2<T>, vec2<T>, vec2<T>) -> mat3x2<T>
+@const("MatInitV")
+init mat3x3<T: fa_f32_f16>(vec3<T>, vec3<T>, vec3<T>) -> mat3x3<T>
+@const("MatInitV")
+init mat3x4<T: fa_f32_f16>(vec4<T>, vec4<T>, vec4<T>) -> mat3x4<T>
+@const("MatInitV")
+init mat4x2<T: fa_f32_f16>(vec2<T>, vec2<T>, vec2<T>, vec2<T>) -> mat4x2<T>
+@const("MatInitV")
+init mat4x3<T: fa_f32_f16>(vec3<T>, vec3<T>, vec3<T>, vec3<T>) -> mat4x3<T>
+@const("MatInitV")
+init mat4x4<T: fa_f32_f16>(vec4<T>, vec4<T>, vec4<T>, vec4<T>) -> mat4x4<T>
////////////////////////////////////////////////////////////////////////////////
// Type conversions //
@@ -981,4 +981,4 @@
////////////////////////////////////////////////////////////////////////////////
// Tint internal builtins //
////////////////////////////////////////////////////////////////////////////////
-@const("Identity") fn _tint_materialize<T>(T) -> T
\ No newline at end of file
+@const("Identity") fn _tint_materialize<T>(T) -> T
diff --git a/src/tint/program_builder.h b/src/tint/program_builder.h
index f300710..25e6214 100644
--- a/src/tint/program_builder.h
+++ b/src/tint/program_builder.h
@@ -30,6 +30,7 @@
#include "src/tint/ast/bitcast_expression.h"
#include "src/tint/ast/bool.h"
#include "src/tint/ast/bool_literal_expression.h"
+#include "src/tint/ast/break_if_statement.h"
#include "src/tint/ast/break_statement.h"
#include "src/tint/ast/call_expression.h"
#include "src/tint/ast/call_statement.h"
@@ -54,6 +55,7 @@
#include "src/tint/ast/if_statement.h"
#include "src/tint/ast/increment_decrement_statement.h"
#include "src/tint/ast/index_accessor_expression.h"
+#include "src/tint/ast/int_literal_expression.h"
#include "src/tint/ast/interpolate_attribute.h"
#include "src/tint/ast/invariant_attribute.h"
#include "src/tint/ast/let.h"
@@ -174,14 +176,14 @@
const ast::Type* type = nullptr;
ast::AddressSpace address_space = ast::AddressSpace::kNone;
ast::Access access = ast::Access::kUndefined;
- const ast::Expression* constructor = nullptr;
+ const ast::Expression* initializer = nullptr;
utils::Vector<const ast::Attribute*, 4> attributes;
private:
void Set(const ast::Type* t) { type = t; }
void Set(ast::AddressSpace addr_space) { address_space = addr_space; }
void Set(ast::Access ac) { access = ac; }
- void Set(const ast::Expression* c) { constructor = c; }
+ void Set(const ast::Expression* c) { initializer = c; }
void Set(utils::VectorRef<const ast::Attribute*> l) { attributes = std::move(l); }
void Set(const ast::Attribute* a) { attributes.Push(a); }
};
@@ -201,12 +203,12 @@
~LetOptions();
const ast::Type* type = nullptr;
- const ast::Expression* constructor = nullptr;
+ const ast::Expression* initializer = nullptr;
utils::Vector<const ast::Attribute*, 4> attributes;
private:
void Set(const ast::Type* t) { type = t; }
- void Set(const ast::Expression* c) { constructor = c; }
+ void Set(const ast::Expression* c) { initializer = c; }
void Set(utils::VectorRef<const ast::Attribute*> l) { attributes = std::move(l); }
void Set(const ast::Attribute* a) { attributes.Push(a); }
};
@@ -226,12 +228,12 @@
~ConstOptions();
const ast::Type* type = nullptr;
- const ast::Expression* constructor = nullptr;
+ const ast::Expression* initializer = nullptr;
utils::Vector<const ast::Attribute*, 4> attributes;
private:
void Set(const ast::Type* t) { type = t; }
- void Set(const ast::Expression* c) { constructor = c; }
+ void Set(const ast::Expression* c) { initializer = c; }
void Set(utils::VectorRef<const ast::Attribute*> l) { attributes = std::move(l); }
void Set(const ast::Attribute* a) { attributes.Push(a); }
};
@@ -246,12 +248,12 @@
~OverrideOptions();
const ast::Type* type = nullptr;
- const ast::Expression* constructor = nullptr;
+ const ast::Expression* initializer = nullptr;
utils::Vector<const ast::Attribute*, 4> attributes;
private:
void Set(const ast::Type* t) { type = t; }
- void Set(const ast::Expression* c) { constructor = c; }
+ void Set(const ast::Expression* c) { initializer = c; }
void Set(utils::VectorRef<const ast::Attribute*> l) { attributes = std::move(l); }
void Set(const ast::Attribute* a) { attributes.Push(a); }
};
@@ -1377,7 +1379,7 @@
return create<ast::BitcastExpression>(source, type, Expr(std::forward<EXPR>(expr)));
}
- /// @param args the arguments for the vector constructor
+ /// @param args the arguments for the vector initializer
/// @param type the vector type
/// @param size the vector size
/// @return an `ast::CallExpression` of a `size`-element vector of
@@ -1387,7 +1389,7 @@
return Construct(ty.vec(type, size), std::forward<ARGS>(args)...);
}
- /// @param args the arguments for the vector constructor
+ /// @param args the arguments for the vector initializer
/// @return an `ast::CallExpression` of a 2-element vector of type
/// `T`, constructed with the values `args`.
template <typename T, typename... ARGS, typename _ = DisableIfSource<ARGS...>>
@@ -1396,7 +1398,7 @@
}
/// @param source the vector source
- /// @param args the arguments for the vector constructor
+ /// @param args the arguments for the vector initializer
/// @return an `ast::CallExpression` of a 2-element vector of type
/// `T`, constructed with the values `args`.
template <typename T, typename... ARGS>
@@ -1404,7 +1406,7 @@
return Construct(source, ty.vec2<T>(), std::forward<ARGS>(args)...);
}
- /// @param args the arguments for the vector constructor
+ /// @param args the arguments for the vector initializer
/// @return an `ast::CallExpression` of a 3-element vector of type
/// `T`, constructed with the values `args`.
template <typename T, typename... ARGS, typename _ = DisableIfSource<ARGS...>>
@@ -1413,7 +1415,7 @@
}
/// @param source the vector source
- /// @param args the arguments for the vector constructor
+ /// @param args the arguments for the vector initializer
/// @return an `ast::CallExpression` of a 3-element vector of type
/// `T`, constructed with the values `args`.
template <typename T, typename... ARGS>
@@ -1421,7 +1423,7 @@
return Construct(source, ty.vec3<T>(), std::forward<ARGS>(args)...);
}
- /// @param args the arguments for the vector constructor
+ /// @param args the arguments for the vector initializer
/// @return an `ast::CallExpression` of a 4-element vector of type
/// `T`, constructed with the values `args`.
template <typename T, typename... ARGS, typename _ = DisableIfSource<ARGS...>>
@@ -1430,7 +1432,7 @@
}
/// @param source the vector source
- /// @param args the arguments for the vector constructor
+ /// @param args the arguments for the vector initializer
/// @return an `ast::CallExpression` of a 4-element vector of type
/// `T`, constructed with the values `args`.
template <typename T, typename... ARGS>
@@ -1438,7 +1440,7 @@
return Construct(source, ty.vec4<T>(), std::forward<ARGS>(args)...);
}
- /// @param args the arguments for the matrix constructor
+ /// @param args the arguments for the matrix initializer
/// @return an `ast::CallExpression` of a 2x2 matrix of type
/// `T`, constructed with the values `args`.
template <typename T, typename... ARGS, typename _ = DisableIfSource<ARGS...>>
@@ -1447,7 +1449,7 @@
}
/// @param source the matrix source
- /// @param args the arguments for the matrix constructor
+ /// @param args the arguments for the matrix initializer
/// @return an `ast::CallExpression` of a 2x2 matrix of type
/// `T`, constructed with the values `args`.
template <typename T, typename... ARGS>
@@ -1455,7 +1457,7 @@
return Construct(source, ty.mat2x2<T>(), std::forward<ARGS>(args)...);
}
- /// @param args the arguments for the matrix constructor
+ /// @param args the arguments for the matrix initializer
/// @return an `ast::CallExpression` of a 2x3 matrix of type
/// `T`, constructed with the values `args`.
template <typename T, typename... ARGS, typename _ = DisableIfSource<ARGS...>>
@@ -1464,7 +1466,7 @@
}
/// @param source the matrix source
- /// @param args the arguments for the matrix constructor
+ /// @param args the arguments for the matrix initializer
/// @return an `ast::CallExpression` of a 2x3 matrix of type
/// `T`, constructed with the values `args`.
template <typename T, typename... ARGS>
@@ -1472,7 +1474,7 @@
return Construct(source, ty.mat2x3<T>(), std::forward<ARGS>(args)...);
}
- /// @param args the arguments for the matrix constructor
+ /// @param args the arguments for the matrix initializer
/// @return an `ast::CallExpression` of a 2x4 matrix of type
/// `T`, constructed with the values `args`.
template <typename T, typename... ARGS, typename _ = DisableIfSource<ARGS...>>
@@ -1481,7 +1483,7 @@
}
/// @param source the matrix source
- /// @param args the arguments for the matrix constructor
+ /// @param args the arguments for the matrix initializer
/// @return an `ast::CallExpression` of a 2x4 matrix of type
/// `T`, constructed with the values `args`.
template <typename T, typename... ARGS>
@@ -1489,7 +1491,7 @@
return Construct(source, ty.mat2x4<T>(), std::forward<ARGS>(args)...);
}
- /// @param args the arguments for the matrix constructor
+ /// @param args the arguments for the matrix initializer
/// @return an `ast::CallExpression` of a 3x2 matrix of type
/// `T`, constructed with the values `args`.
template <typename T, typename... ARGS, typename _ = DisableIfSource<ARGS...>>
@@ -1498,7 +1500,7 @@
}
/// @param source the matrix source
- /// @param args the arguments for the matrix constructor
+ /// @param args the arguments for the matrix initializer
/// @return an `ast::CallExpression` of a 3x2 matrix of type
/// `T`, constructed with the values `args`.
template <typename T, typename... ARGS>
@@ -1506,7 +1508,7 @@
return Construct(source, ty.mat3x2<T>(), std::forward<ARGS>(args)...);
}
- /// @param args the arguments for the matrix constructor
+ /// @param args the arguments for the matrix initializer
/// @return an `ast::CallExpression` of a 3x3 matrix of type
/// `T`, constructed with the values `args`.
template <typename T, typename... ARGS, typename _ = DisableIfSource<ARGS...>>
@@ -1515,7 +1517,7 @@
}
/// @param source the matrix source
- /// @param args the arguments for the matrix constructor
+ /// @param args the arguments for the matrix initializer
/// @return an `ast::CallExpression` of a 3x3 matrix of type
/// `T`, constructed with the values `args`.
template <typename T, typename... ARGS>
@@ -1523,7 +1525,7 @@
return Construct(source, ty.mat3x3<T>(), std::forward<ARGS>(args)...);
}
- /// @param args the arguments for the matrix constructor
+ /// @param args the arguments for the matrix initializer
/// @return an `ast::CallExpression` of a 3x4 matrix of type
/// `T`, constructed with the values `args`.
template <typename T, typename... ARGS, typename _ = DisableIfSource<ARGS...>>
@@ -1532,7 +1534,7 @@
}
/// @param source the matrix source
- /// @param args the arguments for the matrix constructor
+ /// @param args the arguments for the matrix initializer
/// @return an `ast::CallExpression` of a 3x4 matrix of type
/// `T`, constructed with the values `args`.
template <typename T, typename... ARGS>
@@ -1540,7 +1542,7 @@
return Construct(source, ty.mat3x4<T>(), std::forward<ARGS>(args)...);
}
- /// @param args the arguments for the matrix constructor
+ /// @param args the arguments for the matrix initializer
/// @return an `ast::CallExpression` of a 4x2 matrix of type
/// `T`, constructed with the values `args`.
template <typename T, typename... ARGS, typename _ = DisableIfSource<ARGS...>>
@@ -1549,7 +1551,7 @@
}
/// @param source the matrix source
- /// @param args the arguments for the matrix constructor
+ /// @param args the arguments for the matrix initializer
/// @return an `ast::CallExpression` of a 4x2 matrix of type
/// `T`, constructed with the values `args`.
template <typename T, typename... ARGS>
@@ -1557,7 +1559,7 @@
return Construct(source, ty.mat4x2<T>(), std::forward<ARGS>(args)...);
}
- /// @param args the arguments for the matrix constructor
+ /// @param args the arguments for the matrix initializer
/// @return an `ast::CallExpression` of a 4x3 matrix of type
/// `T`, constructed with the values `args`.
template <typename T, typename... ARGS, typename _ = DisableIfSource<ARGS...>>
@@ -1566,7 +1568,7 @@
}
/// @param source the matrix source
- /// @param args the arguments for the matrix constructor
+ /// @param args the arguments for the matrix initializer
/// @return an `ast::CallExpression` of a 4x3 matrix of type
/// `T`, constructed with the values `args`.
template <typename T, typename... ARGS>
@@ -1574,7 +1576,7 @@
return Construct(source, ty.mat4x3<T>(), std::forward<ARGS>(args)...);
}
- /// @param args the arguments for the matrix constructor
+ /// @param args the arguments for the matrix initializer
/// @return an `ast::CallExpression` of a 4x4 matrix of type
/// `T`, constructed with the values `args`.
template <typename T, typename... ARGS, typename _ = DisableIfSource<ARGS...>>
@@ -1583,7 +1585,7 @@
}
/// @param source the matrix source
- /// @param args the arguments for the matrix constructor
+ /// @param args the arguments for the matrix initializer
/// @return an `ast::CallExpression` of a 4x4 matrix of type
/// `T`, constructed with the values `args`.
template <typename T, typename... ARGS>
@@ -1591,7 +1593,7 @@
return Construct(source, ty.mat4x4<T>(), std::forward<ARGS>(args)...);
}
- /// @param args the arguments for the array constructor
+ /// @param args the arguments for the array initializer
/// @return an `ast::CallExpression` of an array with element type
/// `T` and size `N`, constructed with the values `args`.
template <typename T, int N, typename... ARGS>
@@ -1600,7 +1602,7 @@
}
/// @param source the array source
- /// @param args the arguments for the array constructor
+ /// @param args the arguments for the array initializer
/// @return an `ast::CallExpression` of an array with element type
/// `T` and size `N`, constructed with the values `args`.
template <typename T, int N, typename... ARGS>
@@ -1610,7 +1612,7 @@
/// @param subtype the array element type
/// @param n the array size. nullptr represents a runtime-array.
- /// @param args the arguments for the array constructor
+ /// @param args the arguments for the array initializer
/// @return an `ast::CallExpression` of an array with element type
/// `subtype`, constructed with the values `args`.
template <typename EXPR, typename... ARGS>
@@ -1621,7 +1623,7 @@
/// @param source the array source
/// @param subtype the array element type
/// @param n the array size. nullptr represents a runtime-array.
- /// @param args the arguments for the array constructor
+ /// @param args the arguments for the array initializer
/// @return an `ast::CallExpression` of an array with element type
/// `subtype`, constructed with the values `args`.
template <typename EXPR, typename... ARGS>
@@ -1653,7 +1655,7 @@
}
/// @param name the variable name
- /// @param options the extra options passed to the ast::Var constructor
+ /// @param options the extra options passed to the ast::Var initializer
/// Can be any of the following, in any order:
/// * ast::Type* - specifies the variable type
/// * ast::AddressSpace - specifies the variable address space
@@ -1667,12 +1669,12 @@
const ast::Var* Var(NAME&& name, OPTIONS&&... options) {
VarOptions opts(std::forward<OPTIONS>(options)...);
return create<ast::Var>(Sym(std::forward<NAME>(name)), opts.type, opts.address_space,
- opts.access, opts.constructor, std::move(opts.attributes));
+ opts.access, opts.initializer, std::move(opts.attributes));
}
/// @param source the variable source
/// @param name the variable name
- /// @param options the extra options passed to the ast::Var constructor
+ /// @param options the extra options passed to the ast::Var initializer
/// Can be any of the following, in any order:
/// * ast::Type* - specifies the variable type
/// * ast::AddressSpace - specifies the variable address space
@@ -1685,12 +1687,12 @@
const ast::Var* Var(const Source& source, NAME&& name, OPTIONS&&... options) {
VarOptions opts(std::forward<OPTIONS>(options)...);
return create<ast::Var>(source, Sym(std::forward<NAME>(name)), opts.type,
- opts.address_space, opts.access, opts.constructor,
+ opts.address_space, opts.access, opts.initializer,
std::move(opts.attributes));
}
/// @param name the variable name
- /// @param options the extra options passed to the ast::Var constructor
+ /// @param options the extra options passed to the ast::Var initializer
/// Can be any of the following, in any order:
/// * ast::Expression* - specifies the variable's initializer expression (required)
/// * ast::Type* - specifies the variable type
@@ -1700,13 +1702,13 @@
template <typename NAME, typename... OPTIONS, typename = DisableIfSource<NAME>>
const ast::Const* Const(NAME&& name, OPTIONS&&... options) {
ConstOptions opts(std::forward<OPTIONS>(options)...);
- return create<ast::Const>(Sym(std::forward<NAME>(name)), opts.type, opts.constructor,
+ return create<ast::Const>(Sym(std::forward<NAME>(name)), opts.type, opts.initializer,
std::move(opts.attributes));
}
/// @param source the variable source
/// @param name the variable name
- /// @param options the extra options passed to the ast::Var constructor
+ /// @param options the extra options passed to the ast::Var initializer
/// Can be any of the following, in any order:
/// * ast::Expression* - specifies the variable's initializer expression (required)
/// * ast::Type* - specifies the variable type
@@ -1717,11 +1719,11 @@
const ast::Const* Const(const Source& source, NAME&& name, OPTIONS&&... options) {
ConstOptions opts(std::forward<OPTIONS>(options)...);
return create<ast::Const>(source, Sym(std::forward<NAME>(name)), opts.type,
- opts.constructor, std::move(opts.attributes));
+ opts.initializer, std::move(opts.attributes));
}
/// @param name the variable name
- /// @param options the extra options passed to the ast::Var constructor
+ /// @param options the extra options passed to the ast::Var initializer
/// Can be any of the following, in any order:
/// * ast::Expression* - specifies the variable's initializer expression (required)
/// * ast::Type* - specifies the variable type
@@ -1731,13 +1733,13 @@
template <typename NAME, typename... OPTIONS, typename = DisableIfSource<NAME>>
const ast::Let* Let(NAME&& name, OPTIONS&&... options) {
LetOptions opts(std::forward<OPTIONS>(options)...);
- return create<ast::Let>(Sym(std::forward<NAME>(name)), opts.type, opts.constructor,
+ return create<ast::Let>(Sym(std::forward<NAME>(name)), opts.type, opts.initializer,
std::move(opts.attributes));
}
/// @param source the variable source
/// @param name the variable name
- /// @param options the extra options passed to the ast::Var constructor
+ /// @param options the extra options passed to the ast::Var initializer
/// Can be any of the following, in any order:
/// * ast::Expression* - specifies the variable's initializer expression (required)
/// * ast::Type* - specifies the variable type
@@ -1747,7 +1749,7 @@
template <typename NAME, typename... OPTIONS>
const ast::Let* Let(const Source& source, NAME&& name, OPTIONS&&... options) {
LetOptions opts(std::forward<OPTIONS>(options)...);
- return create<ast::Let>(source, Sym(std::forward<NAME>(name)), opts.type, opts.constructor,
+ return create<ast::Let>(source, Sym(std::forward<NAME>(name)), opts.type, opts.initializer,
std::move(opts.attributes));
}
@@ -1776,7 +1778,7 @@
}
/// @param name the variable name
- /// @param options the extra options passed to the ast::Var constructor
+ /// @param options the extra options passed to the ast::Var initializer
/// Can be any of the following, in any order:
/// * ast::Type* - specifies the variable type
/// * ast::AddressSpace - specifies the variable address space
@@ -1795,7 +1797,7 @@
/// @param source the variable source
/// @param name the variable name
- /// @param options the extra options passed to the ast::Var constructor
+ /// @param options the extra options passed to the ast::Var initializer
/// Can be any of the following, in any order:
/// * ast::Type* - specifies the variable type
/// * ast::AddressSpace - specifies the variable address space
@@ -1813,7 +1815,7 @@
}
/// @param name the variable name
- /// @param options the extra options passed to the ast::Const constructor
+ /// @param options the extra options passed to the ast::Const initializer
/// Can be any of the following, in any order:
/// * ast::Expression* - specifies the variable's initializer expression (required)
/// * ast::Type* - specifies the variable type
@@ -1830,7 +1832,7 @@
/// @param source the variable source
/// @param name the variable name
- /// @param options the extra options passed to the ast::Const constructor
+ /// @param options the extra options passed to the ast::Const initializer
/// Can be any of the following, in any order:
/// * ast::Expression* - specifies the variable's initializer expression (required)
/// * ast::Type* - specifies the variable type
@@ -1846,7 +1848,7 @@
}
/// @param name the variable name
- /// @param options the extra options passed to the ast::Override constructor
+ /// @param options the extra options passed to the ast::Override initializer
/// Can be any of the following, in any order:
/// * ast::Expression* - specifies the variable's initializer expression (required)
/// * ast::Type* - specifies the variable type
@@ -1858,14 +1860,14 @@
const ast::Override* Override(NAME&& name, OPTIONS&&... options) {
OverrideOptions opts(std::forward<OPTIONS>(options)...);
auto* variable = create<ast::Override>(Sym(std::forward<NAME>(name)), opts.type,
- opts.constructor, std::move(opts.attributes));
+ opts.initializer, std::move(opts.attributes));
AST().AddGlobalVariable(variable);
return variable;
}
/// @param source the variable source
/// @param name the variable name
- /// @param options the extra options passed to the ast::Override constructor
+ /// @param options the extra options passed to the ast::Override initializer
/// Can be any of the following, in any order:
/// * ast::Expression* - specifies the variable's initializer expression (required)
/// * ast::Type* - specifies the variable type
@@ -1877,7 +1879,7 @@
const ast::Override* Override(const Source& source, NAME&& name, OPTIONS&&... options) {
OverrideOptions opts(std::forward<OPTIONS>(options)...);
auto* variable = create<ast::Override>(source, Sym(std::forward<NAME>(name)), opts.type,
- opts.constructor, std::move(opts.attributes));
+ opts.initializer, std::move(opts.attributes));
AST().AddGlobalVariable(variable);
return variable;
}
@@ -2415,6 +2417,23 @@
/// @returns the break statement pointer
const ast::BreakStatement* Break() { return create<ast::BreakStatement>(); }
+ /// Creates a ast::BreakIfStatement with input condition
+ /// @param source the source information for the if statement
+ /// @param condition the if statement condition expression
+ /// @returns the break-if statement pointer
+ template <typename CONDITION>
+ const ast::BreakIfStatement* BreakIf(const Source& source, CONDITION&& condition) {
+ return create<ast::BreakIfStatement>(source, Expr(std::forward<CONDITION>(condition)));
+ }
+
+ /// Creates a ast::BreakIfStatement with input condition
+ /// @param condition the if statement condition expression
+ /// @returns the break-if statement pointer
+ template <typename CONDITION>
+ const ast::BreakIfStatement* BreakIf(CONDITION&& condition) {
+ return create<ast::BreakIfStatement>(Expr(std::forward<CONDITION>(condition)));
+ }
+
/// Creates an ast::ContinueStatement
/// @param source the source information
/// @returns the continue statement pointer
@@ -2846,7 +2865,7 @@
/// @param body the case body
/// @returns the case statement pointer
const ast::CaseStatement* Case(const Source& source,
- utils::VectorRef<const ast::IntLiteralExpression*> selectors,
+ utils::VectorRef<const ast::CaseSelector*> selectors,
const ast::BlockStatement* body = nullptr) {
return create<ast::CaseStatement>(source, std::move(selectors), body ? body : Block());
}
@@ -2855,7 +2874,7 @@
/// @param selectors list of selectors
/// @param body the case body
/// @returns the case statement pointer
- const ast::CaseStatement* Case(utils::VectorRef<const ast::IntLiteralExpression*> selectors,
+ const ast::CaseStatement* Case(utils::VectorRef<const ast::CaseSelector*> selectors,
const ast::BlockStatement* body = nullptr) {
return create<ast::CaseStatement>(std::move(selectors), body ? body : Block());
}
@@ -2864,7 +2883,7 @@
/// @param selector a single case selector
/// @param body the case body
/// @returns the case statement pointer
- const ast::CaseStatement* Case(const ast::IntLiteralExpression* selector,
+ const ast::CaseStatement* Case(const ast::CaseSelector* selector,
const ast::BlockStatement* body = nullptr) {
return Case(utils::Vector{selector}, body);
}
@@ -2875,16 +2894,44 @@
/// @returns the case statement pointer
const ast::CaseStatement* DefaultCase(const Source& source,
const ast::BlockStatement* body = nullptr) {
- return Case(source, utils::Empty, body);
+ return Case(source, utils::Vector{DefaultCaseSelector(source)}, body);
}
/// Convenience function that creates a 'default' ast::CaseStatement
/// @param body the case body
/// @returns the case statement pointer
const ast::CaseStatement* DefaultCase(const ast::BlockStatement* body = nullptr) {
- return Case(utils::Empty, body);
+ return Case(utils::Vector{DefaultCaseSelector()}, body);
}
+ /// Convenience function that creates a case selector
+ /// @param source the source information
+ /// @param expr the selector expression
+ /// @returns the selector pointer
+ template <typename EXPR>
+ const ast::CaseSelector* CaseSelector(const Source& source, EXPR&& expr) {
+ return create<ast::CaseSelector>(source, Expr(std::forward<EXPR>(expr)));
+ }
+
+ /// Convenience function that creates a case selector
+ /// @param expr the selector expression
+ /// @returns the selector pointer
+ template <typename EXPR>
+ const ast::CaseSelector* CaseSelector(EXPR&& expr) {
+ return create<ast::CaseSelector>(source_, Expr(std::forward<EXPR>(expr)));
+ }
+
+ /// Convenience function that creates a default case selector
+ /// @param source the source information
+ /// @returns the selector pointer
+ const ast::CaseSelector* DefaultCaseSelector(const Source& source) {
+ return create<ast::CaseSelector>(source, nullptr);
+ }
+
+ /// Convenience function that creates a default case selector
+ /// @returns the selector pointer
+ const ast::CaseSelector* DefaultCaseSelector() { return create<ast::CaseSelector>(nullptr); }
+
/// Creates an ast::FallthroughStatement
/// @param source the source information
/// @returns the fallthrough statement pointer
diff --git a/src/tint/reader/spirv/function.cc b/src/tint/reader/spirv/function.cc
index 9c38818..e6c73fe 100644
--- a/src/tint/reader/spirv/function.cc
+++ b/src/tint/reader/spirv/function.cc
@@ -2492,18 +2492,18 @@
if (failed()) {
return false;
}
- const ast::Expression* constructor = nullptr;
+ const ast::Expression* initializer = nullptr;
if (inst.NumInOperands() > 1) {
// SPIR-V initializers are always constants.
// (OpenCL also allows the ID of an OpVariable, but we don't handle that
// here.)
- constructor = parser_impl_.MakeConstantExpression(inst.GetSingleWordInOperand(1)).expr;
- if (!constructor) {
+ initializer = parser_impl_.MakeConstantExpression(inst.GetSingleWordInOperand(1)).expr;
+ if (!initializer) {
return false;
}
}
auto* var = parser_impl_.MakeVar(inst.result_id(), ast::AddressSpace::kNone, var_store_type,
- constructor, AttributeList{});
+ initializer, AttributeList{});
auto* var_decl_stmt = create<ast::VariableDeclStatement>(Source{}, var);
AddStatement(var_decl_stmt);
auto* var_type = ty_.Reference(var_store_type, ast::AddressSpace::kNone);
@@ -3024,7 +3024,7 @@
for (size_t i = last_clause_index;; --i) {
// Create a list of integer literals for the selector values leading to
// this case clause.
- utils::Vector<const ast::IntLiteralExpression*, 4> selectors;
+ utils::Vector<const ast::CaseSelector*, 4> selectors;
const bool has_selectors = clause_heads[i]->case_values.has_value();
if (has_selectors) {
auto values = clause_heads[i]->case_values.value();
@@ -3034,15 +3034,26 @@
// The Tint AST handles 32-bit values.
const uint32_t value32 = uint32_t(value & 0xFFFFFFFF);
if (selector.type->IsUnsignedScalarOrVector()) {
- selectors.Push(create<ast::IntLiteralExpression>(
- Source{}, value32, ast::IntLiteralExpression::Suffix::kU));
+ selectors.Push(create<ast::CaseSelector>(
+ Source{}, create<ast::IntLiteralExpression>(
+ Source{}, value32, ast::IntLiteralExpression::Suffix::kU)));
} else {
- selectors.Push(
+ selectors.Push(create<ast::CaseSelector>(
+ Source{},
create<ast::IntLiteralExpression>(Source{}, static_cast<int32_t>(value32),
- ast::IntLiteralExpression::Suffix::kI));
+ ast::IntLiteralExpression::Suffix::kI)));
}
}
+
+ if ((default_info == clause_heads[i]) && construct->ContainsPos(default_info->pos)) {
+ // Generate a default selector
+ selectors.Push(create<ast::CaseSelector>(Source{}));
+ }
+ } else {
+ // Generate a default selector
+ selectors.Push(create<ast::CaseSelector>(Source{}));
}
+ TINT_ASSERT(Reader, !selectors.IsEmpty());
// Where does this clause end?
const auto end_id =
@@ -3057,17 +3068,6 @@
swch->cases[case_idx] = create<ast::CaseStatement>(Source{}, selectors, body);
});
- if ((default_info == clause_heads[i]) && has_selectors &&
- construct->ContainsPos(default_info->pos)) {
- // Generate a default clause with a just fallthrough.
- auto* stmts = create<ast::BlockStatement>(
- Source{}, StatementList{
- create<ast::FallthroughStatement>(Source{}),
- });
- auto* case_stmt = create<ast::CaseStatement>(Source{}, utils::Empty, stmts);
- swch->cases.Push(case_stmt);
- }
-
if (i == 0) {
break;
}
@@ -3967,7 +3967,7 @@
if (ext_opcode == GLSLstd450Ldexp) {
// WGSL requires the second argument to be signed.
- // Use a type constructor to convert it, which is the same as a bitcast.
+ // Use a type initializer to convert it, which is the same as a bitcast.
// If the value would go from very large positive to negative, then the
// original result would have been infinity. And since WGSL
// implementations may assume that infinities are not present, then we
@@ -4705,7 +4705,7 @@
// Idiomatic vector accessors.
- // Generate an ast::TypeConstructor expression.
+ // Generate an ast::TypeInitializer expression.
// Assume the literal indices are valid, and there is a valid number of them.
auto source = GetSourceForInst(inst);
const Vector* result_type = As<Vector>(parser_impl_.ConvertType(inst.type_id()));
diff --git a/src/tint/reader/spirv/function.h b/src/tint/reader/spirv/function.h
index 9c9c832..fb4dfcf 100644
--- a/src/tint/reader/spirv/function.h
+++ b/src/tint/reader/spirv/function.h
@@ -957,7 +957,7 @@
const spvtools::opt::Instruction& image_access);
/// Returns the given value as an I32. If it's already an I32 then this
- /// return the given value. Otherwise, wrap the value in a TypeConstructor
+ /// return the given value. Otherwise, wrap the value in a TypeInitializer
/// expression.
/// @param value the value to pass through or convert
/// @returns the value as an I32 value.
@@ -965,7 +965,7 @@
/// Returns the given value as a signed integer type of the same shape
/// if the value is unsigned scalar or vector, by wrapping the value
- /// with a TypeConstructor expression. Returns the value itself if the
+ /// with a TypeInitializer expression. Returns the value itself if the
/// value otherwise.
/// @param value the value to pass through or convert
/// @returns the value itself, or converted to signed integral
@@ -1277,7 +1277,7 @@
TypedExpression Dereference(TypedExpression expr);
/// Creates a new `ast::Node` owned by the ProgramBuilder.
- /// @param args the arguments to pass to the type constructor
+ /// @param args the arguments to pass to the type initializer
/// @returns the node pointer
template <typename T, typename... ARGS>
T* create(ARGS&&... args) const {
diff --git a/src/tint/reader/spirv/function_cfg_test.cc b/src/tint/reader/spirv/function_cfg_test.cc
index 8356e37..538657b 100644
--- a/src/tint/reader/spirv/function_cfg_test.cc
+++ b/src/tint/reader/spirv/function_cfg_test.cc
@@ -9349,10 +9349,7 @@
case 20u: {
var_1 = 20u;
}
- default: {
- fallthrough;
- }
- case 30u: {
+ case 30u, default: {
var_1 = 30u;
}
}
diff --git a/src/tint/reader/spirv/function_composite_test.cc b/src/tint/reader/spirv/function_composite_test.cc
index 2b26d14..cf422a8 100644
--- a/src/tint/reader/spirv/function_composite_test.cc
+++ b/src/tint/reader/spirv/function_composite_test.cc
@@ -977,7 +977,7 @@
none
__u32
{
- ScalarConstructor[not set]{2}
+ ScalarInitializer[not set]{2}
}
}
VariableConst{
@@ -988,7 +988,7 @@
none
__u32
{
- ScalarConstructor[not set]{4}
+ ScalarInitializer[not set]{4}
}
}
VariableConst{
@@ -999,7 +999,7 @@
none
__u32
{
- ScalarConstructor[not set]{8}
+ ScalarInitializer[not set]{8}
}
}
)")) << got;
@@ -1010,11 +1010,11 @@
none
__vec_3__u32
{
- TypeConstructor[not set]{
+ TypeInitializer[not set]{
__vec_3__u32
- ScalarConstructor[not set]{2}
- ScalarConstructor[not set]{4}
- ScalarConstructor[not set]{8}
+ ScalarInitializer[not set]{2}
+ ScalarInitializer[not set]{4}
+ ScalarInitializer[not set]{8}
}
}
}
diff --git a/src/tint/reader/spirv/function_var_test.cc b/src/tint/reader/spirv/function_var_test.cc
index 5d156eb..e3d2acf 100644
--- a/src/tint/reader/spirv/function_var_test.cc
+++ b/src/tint/reader/spirv/function_var_test.cc
@@ -1393,10 +1393,7 @@
auto got = test::ToString(p->program(), ast_body);
auto* expect = R"(var x_41 : u32;
switch(1u) {
- default: {
- fallthrough;
- }
- case 0u: {
+ case 0u, default: {
fallthrough;
}
case 1u: {
diff --git a/src/tint/reader/spirv/parser_impl.cc b/src/tint/reader/spirv/parser_impl.cc
index c64586a..13b4132 100644
--- a/src/tint/reader/spirv/parser_impl.cc
+++ b/src/tint/reader/spirv/parser_impl.cc
@@ -1485,16 +1485,16 @@
auto* ast_store_type = ast_type->As<Pointer>()->type;
auto ast_address_space = ast_type->As<Pointer>()->address_space;
- const ast::Expression* ast_constructor = nullptr;
+ const ast::Expression* ast_initializer = nullptr;
if (var.NumInOperands() > 1) {
// SPIR-V initializers are always constants.
// (OpenCL also allows the ID of an OpVariable, but we don't handle that
// here.)
- ast_constructor = MakeConstantExpression(var.GetSingleWordInOperand(1)).expr;
+ ast_initializer = MakeConstantExpression(var.GetSingleWordInOperand(1)).expr;
}
- auto* ast_var = MakeVar(var.result_id(), ast_address_space, ast_store_type, ast_constructor,
+ auto* ast_var = MakeVar(var.result_id(), ast_address_space, ast_store_type, ast_initializer,
utils::Empty);
- // TODO(dneto): initializers (a.k.a. constructor expression)
+ // TODO(dneto): initializers (a.k.a. initializer expression)
if (ast_var) {
builder_.AST().AddGlobalVariable(ast_var);
module_variable_.GetOrCreate(var.result_id(), [ast_var] { return ast_var; });
@@ -1505,14 +1505,14 @@
if (builtin_position_.per_vertex_var_id) {
// Make sure the variable has a name.
namer_.SuggestSanitizedName(builtin_position_.per_vertex_var_id, "gl_Position");
- const ast::Expression* ast_constructor = nullptr;
+ const ast::Expression* ast_initializer = nullptr;
if (builtin_position_.per_vertex_var_init_id) {
// The initializer is complex.
const auto* init = def_use_mgr_->GetDef(builtin_position_.per_vertex_var_init_id);
switch (init->opcode()) {
case SpvOpConstantComposite:
case SpvOpSpecConstantComposite:
- ast_constructor =
+ ast_initializer =
MakeConstantExpression(
init->GetSingleWordInOperand(builtin_position_.position_member_index))
.expr;
@@ -1527,7 +1527,7 @@
auto* ast_var =
MakeVar(builtin_position_.per_vertex_var_id,
enum_converter_.ToAddressSpace(builtin_position_.storage_class),
- ConvertType(builtin_position_.position_member_type_id), ast_constructor, {});
+ ConvertType(builtin_position_.position_member_type_id), ast_initializer, {});
builder_.AST().AddGlobalVariable(ast_var);
module_variable_.GetOrCreate(builtin_position_.per_vertex_var_id,
@@ -1562,7 +1562,7 @@
ast::Var* ParserImpl::MakeVar(uint32_t id,
ast::AddressSpace address_space,
const Type* storage_type,
- const ast::Expression* constructor,
+ const ast::Expression* initializer,
AttributeList decorations) {
if (storage_type == nullptr) {
Fail() << "internal error: can't make ast::Variable for null type";
@@ -1593,23 +1593,23 @@
auto sym = builder_.Symbols().Register(namer_.Name(id));
return create<ast::Var>(Source{}, sym, storage_type->Build(builder_), address_space, access,
- constructor, decorations);
+ initializer, decorations);
}
-ast::Let* ParserImpl::MakeLet(uint32_t id, const Type* type, const ast::Expression* constructor) {
+ast::Let* ParserImpl::MakeLet(uint32_t id, const Type* type, const ast::Expression* initializer) {
auto sym = builder_.Symbols().Register(namer_.Name(id));
- return create<ast::Let>(Source{}, sym, type->Build(builder_), constructor, utils::Empty);
+ return create<ast::Let>(Source{}, sym, type->Build(builder_), initializer, utils::Empty);
}
ast::Override* ParserImpl::MakeOverride(uint32_t id,
const Type* type,
- const ast::Expression* constructor,
+ const ast::Expression* initializer,
AttributeList decorations) {
if (!ConvertDecorationsForVariable(id, &type, &decorations, false)) {
return nullptr;
}
auto sym = builder_.Symbols().Register(namer_.Name(id));
- return create<ast::Override>(Source{}, sym, type->Build(builder_), constructor, decorations);
+ return create<ast::Override>(Source{}, sym, type->Build(builder_), initializer, decorations);
}
ast::Parameter* ParserImpl::MakeParameter(uint32_t id,
@@ -1965,7 +1965,7 @@
}
const ast::Expression* ParserImpl::MakeNullValue(const Type* type) {
- // TODO(dneto): Use the no-operands constructor syntax when it becomes
+ // TODO(dneto): Use the no-operands initializer syntax when it becomes
// available in Tint.
// https://github.com/gpuweb/gpuweb/issues/685
// https://bugs.chromium.org/p/tint/issues/detail?id=34
diff --git a/src/tint/reader/spirv/parser_impl.h b/src/tint/reader/spirv/parser_impl.h
index 401a285..9965aa4 100644
--- a/src/tint/reader/spirv/parser_impl.h
+++ b/src/tint/reader/spirv/parser_impl.h
@@ -427,32 +427,32 @@
/// @param id the SPIR-V result ID
/// @param address_space the address space, which cannot be ast::AddressSpace::kNone
/// @param storage_type the storage type of the variable
- /// @param constructor the variable constructor
+ /// @param initializer the variable initializer
/// @param decorations the variable decorations
/// @returns a new Variable node, or null in the ignorable variable case and
/// in the error case
ast::Var* MakeVar(uint32_t id,
ast::AddressSpace address_space,
const Type* storage_type,
- const ast::Expression* constructor,
+ const ast::Expression* initializer,
AttributeList decorations);
/// Creates an AST 'let' node for a SPIR-V ID, including any attached decorations,.
/// @param id the SPIR-V result ID
/// @param type the type of the variable
- /// @param constructor the variable constructor
+ /// @param initializer the variable initializer
/// @returns the AST 'let' node
- ast::Let* MakeLet(uint32_t id, const Type* type, const ast::Expression* constructor);
+ ast::Let* MakeLet(uint32_t id, const Type* type, const ast::Expression* initializer);
/// Creates an AST 'override' node for a SPIR-V ID, including any attached decorations.
/// @param id the SPIR-V result ID
/// @param type the type of the variable
- /// @param constructor the variable constructor
+ /// @param initializer the variable initializer
/// @param decorations the variable decorations
/// @returns the AST 'override' node
ast::Override* MakeOverride(uint32_t id,
const Type* type,
- const ast::Expression* constructor,
+ const ast::Expression* initializer,
AttributeList decorations);
/// Creates an AST parameter node for a SPIR-V ID, including any attached decorations, unless
@@ -780,7 +780,7 @@
uint32_t* array_stride);
/// Creates a new `ast::Node` owned by the ProgramBuilder.
- /// @param args the arguments to pass to the type constructor
+ /// @param args the arguments to pass to the type initializer
/// @returns the node pointer
template <typename T, typename... ARGS>
T* create(ARGS&&... args) {
diff --git a/src/tint/reader/spirv/parser_impl_handle_test.cc b/src/tint/reader/spirv/parser_impl_handle_test.cc
index 094086a..f7879f6 100644
--- a/src/tint/reader/spirv/parser_impl_handle_test.cc
+++ b/src/tint/reader/spirv/parser_impl_handle_test.cc
@@ -2939,7 +2939,7 @@
INSTANTIATE_TEST_SUITE_P(
// When SPIR-V wants the result type to be unsigned, we have to
- // insert a type constructor or bitcast for WGSL to do the type
+ // insert a type initializer or bitcast for WGSL to do the type
// coercion. But the algorithm already does that as a matter
// of course.
ImageQuerySizeLod_NonArrayed_UnsignedResult_SignedLevel,
diff --git a/src/tint/reader/wgsl/parser_impl.cc b/src/tint/reader/wgsl/parser_impl.cc
index 8d6040d..90fb8a8 100644
--- a/src/tint/reader/wgsl/parser_impl.cc
+++ b/src/tint/reader/wgsl/parser_impl.cc
@@ -19,6 +19,7 @@
#include "src/tint/ast/array.h"
#include "src/tint/ast/assignment_statement.h"
#include "src/tint/ast/bitcast_expression.h"
+#include "src/tint/ast/break_if_statement.h"
#include "src/tint/ast/break_statement.h"
#include "src/tint/ast/call_statement.h"
#include "src/tint/ast/continue_statement.h"
@@ -2129,6 +2130,9 @@
}
selector_list = std::move(selectors.value);
+ } else {
+ // Push the default case selector
+ selector_list.Push(create<ast::CaseSelector>(t.source()));
}
// Consume the optional colon if present.
@@ -2148,21 +2152,19 @@
}
// case_selectors
-// : const_literal (COMMA const_literal)* COMMA?
+// : case_selector (COMMA case_selector)* COMMA?
Expect<ParserImpl::CaseSelectorList> ParserImpl::expect_case_selectors() {
CaseSelectorList selectors;
while (continue_parsing()) {
- auto cond = const_literal();
- if (cond.errored) {
+ auto expr = case_selector();
+ if (expr.errored) {
return Failure::kErrored;
- } else if (!cond.matched) {
- break;
- } else if (!cond->Is<ast::IntLiteralExpression>()) {
- return add_error(cond.value->source, "invalid case selector must be an integer value");
}
-
- selectors.Push(cond.value->As<ast::IntLiteralExpression>());
+ if (!expr.matched) {
+ break;
+ }
+ selectors.Push(expr.value);
if (!match(Token::Type::kComma)) {
break;
@@ -2170,12 +2172,32 @@
}
if (selectors.IsEmpty()) {
- return add_error(peek(), "unable to parse case selectors");
+ return add_error(peek(), "expected case selector expression or `default`");
}
return selectors;
}
+// case_selector
+// : DEFAULT
+// | expression
+Maybe<const ast::CaseSelector*> ParserImpl::case_selector() {
+ auto& p = peek();
+
+ if (match(Token::Type::kDefault)) {
+ return create<ast::CaseSelector>(p.source());
+ }
+
+ auto expr = expression();
+ if (expr.errored) {
+ return Failure::kErrored;
+ }
+ if (!expr.matched) {
+ return Failure::kNoMatch;
+ }
+ return create<ast::CaseSelector>(p.source(), expr.value);
+}
+
// case_body
// :
// | statement case_body
@@ -2192,7 +2214,8 @@
deprecated(source,
"fallthrough is set to be removed from WGSL. "
"Case can accept multiple selectors if the existing case bodies are empty. "
- "default is not yet supported in a case selector list.");
+ "(e.g. `case 1, 2, 3:`) "
+ "`default` is a valid case selector value. (e.g. `case 1, default:`)");
stmts.Push(create<ast::FallthroughStatement>(source));
break;
@@ -2243,8 +2266,7 @@
ForHeader::~ForHeader() = default;
-// (variable_statement | variable_updating_statement |
-// func_call_statement)?
+// (variable_statement | variable_updating_statement | func_call_statement)?
Maybe<const ast::Statement*> ParserImpl::for_header_initializer() {
auto call = func_call_statement();
if (call.errored) {
@@ -2295,10 +2317,7 @@
}
// for_header
-// : (variable_statement | variable_updating_statement | func_call_statement)?
-// SEMICOLON
-// expression? SEMICOLON
-// (variable_updating_statement | func_call_statement)?
+// : for_header_initializer? SEMICOLON expression? SEMICOLON for_header_continuing?
Expect<std::unique_ptr<ForHeader>> ParserImpl::expect_for_header() {
auto initializer = for_header_initializer();
if (initializer.errored) {
@@ -2422,28 +2441,58 @@
// break_if_statement:
// 'break' 'if' expression semicolon
Maybe<const ast::Statement*> ParserImpl::break_if_statement() {
- // TODO(crbug.com/tint/1451): Add support for break-if
- return Failure::kNoMatch;
+ auto& t1 = peek();
+ auto& t2 = peek(1);
+
+ // Match both the `break` and `if` at the same time.
+ if (!t1.Is(Token::Type::kBreak) || !t2.Is(Token::Type::kIf)) {
+ return Failure::kNoMatch;
+ }
+ next(); // Consume the peek
+ next(); // Consume the peek
+
+ auto expr = expression();
+ if (expr.errored) {
+ return Failure::kErrored;
+ }
+ if (!expr.matched) {
+ return add_error(t1, "expected expression for `break if`");
+ }
+ if (!match(Token::Type::kSemicolon)) {
+ return add_error(peek(), "expected ';' for `break if` statement");
+ }
+
+ return create<ast::BreakIfStatement>(t1.source(), expr.value);
}
// continuing_compound_statement:
// brace_left statement* break_if_statement? brace_right
Maybe<const ast::BlockStatement*> ParserImpl::continuing_compound_statement() {
return expect_brace_block("", [&]() -> Expect<ast::BlockStatement*> {
- auto stmts = expect_statements();
- if (stmts.errored) {
- return Failure::kErrored;
+ StatementList stmts;
+
+ while (continue_parsing()) {
+ // Note, break-if has to parse before statements because statements includes `break`
+ auto break_if = break_if_statement();
+ if (break_if.errored) {
+ return Failure::kErrored;
+ }
+ if (break_if.matched) {
+ stmts.Push(break_if.value);
+ continue;
+ }
+
+ auto stmt = statement();
+ if (stmt.errored) {
+ return Failure::kErrored;
+ }
+ if (!stmt.matched) {
+ break;
+ }
+ stmts.Push(stmt.value);
}
- auto break_if = break_if_statement();
- if (break_if.errored) {
- return Failure::kErrored;
- }
- if (break_if.matched) {
- stmts.value.Push(break_if.value);
- }
-
- return create<ast::BlockStatement>(Source{}, stmts.value);
+ return create<ast::BlockStatement>(Source{}, stmts);
});
}
@@ -2534,7 +2583,7 @@
return Failure::kErrored;
}
if (call.matched) {
- auto params = expect_argument_expression_list("type constructor");
+ auto params = expect_argument_expression_list("type initializer");
if (params.errored) {
return Failure::kErrored;
}
@@ -2662,43 +2711,24 @@
Maybe<const ast::Expression*> ParserImpl::bitwise_expression_post_unary_expression(
const ast::Expression* lhs) {
auto& t = peek();
- if (!t.Is(Token::Type::kAnd) && !t.Is(Token::Type::kOr) && !t.Is(Token::Type::kXor)) {
- return Failure::kNoMatch;
- }
ast::BinaryOp op = ast::BinaryOp::kXor;
- if (t.Is(Token::Type::kAnd)) {
- op = ast::BinaryOp::kAnd;
- } else if (t.Is(Token::Type::kOr)) {
- op = ast::BinaryOp::kOr;
+ switch (t.type()) {
+ case Token::Type::kAnd:
+ op = ast::BinaryOp::kAnd;
+ break;
+ case Token::Type::kOr:
+ op = ast::BinaryOp::kOr;
+ break;
+ case Token::Type::kXor:
+ op = ast::BinaryOp::kXor;
+ break;
+ default:
+ return Failure::kNoMatch;
}
+ next(); // Consume t
while (continue_parsing()) {
- auto& n = peek();
- // Handle the case of `a & b &&c` where `&c` is a unary_expression
- bool split = false;
- if (op == ast::BinaryOp::kAnd && n.Is(Token::Type::kAndAnd)) {
- next();
- split_token(Token::Type::kAnd, Token::Type::kAnd);
- split = true;
- }
-
- if (!n.Is(t.type())) {
- if (n.Is(Token::Type::kAnd) || n.Is(Token::Type::kOr) || n.Is(Token::Type::kXor)) {
- return add_error(n.source(), std::string("mixing '") + std::string(t.to_name()) +
- "' and '" + std::string(n.to_name()) +
- "' requires parenthesis");
- }
-
- return lhs;
- }
- // If forced to split an `&&` then we've already done the `next` above which consumes
- // the `&`. The type check above will always fail because we only split if already consuming
- // a `&` operator.
- if (!split) {
- next();
- }
-
auto rhs = unary_expression();
if (rhs.errored) {
return Failure::kErrored;
@@ -2709,6 +2739,10 @@
}
lhs = create<ast::BinaryExpression>(t.source(), op, lhs, rhs.value);
+
+ if (!match(t.type())) {
+ return lhs;
+ }
}
return Failure::kErrored;
}
@@ -2949,37 +2983,45 @@
}
lhs = lhs_result.value;
- auto& t = peek();
- if (match(Token::Type::kEqualEqual) || match(Token::Type::kGreaterThan) ||
- match(Token::Type::kGreaterThanEqual) || match(Token::Type::kLessThan) ||
- match(Token::Type::kLessThanEqual) || match(Token::Type::kNotEqual)) {
- ast::BinaryOp op = ast::BinaryOp::kNone;
- if (t.Is(Token::Type::kLessThan)) {
- op = ast::BinaryOp::kLessThan;
- } else if (t.Is(Token::Type::kGreaterThan)) {
- op = ast::BinaryOp::kGreaterThan;
- } else if (t.Is(Token::Type::kLessThanEqual)) {
- op = ast::BinaryOp::kLessThanEqual;
- } else if (t.Is(Token::Type::kGreaterThanEqual)) {
- op = ast::BinaryOp::kGreaterThanEqual;
- } else if (t.Is(Token::Type::kEqualEqual)) {
- op = ast::BinaryOp::kEqual;
- } else if (t.Is(Token::Type::kNotEqual)) {
- op = ast::BinaryOp::kNotEqual;
- }
+ auto& tok_op = peek();
- auto& next = peek();
- auto rhs = shift_expression();
- if (rhs.errored) {
- return Failure::kErrored;
- }
- if (!rhs.matched) {
- return add_error(next, std::string("unable to parse right side of ") +
- std::string(t.to_name()) + " expression");
- }
- lhs = create<ast::BinaryExpression>(t.source(), op, lhs, rhs.value);
+ ast::BinaryOp op = ast::BinaryOp::kNone;
+ switch (tok_op.type()) {
+ case Token::Type::kLessThan:
+ op = ast::BinaryOp::kLessThan;
+ break;
+ case Token::Type::kGreaterThan:
+ op = ast::BinaryOp::kGreaterThan;
+ break;
+ case Token::Type::kLessThanEqual:
+ op = ast::BinaryOp::kLessThanEqual;
+ break;
+ case Token::Type::kGreaterThanEqual:
+ op = ast::BinaryOp::kGreaterThanEqual;
+ break;
+ case Token::Type::kEqualEqual:
+ op = ast::BinaryOp::kEqual;
+ break;
+ case Token::Type::kNotEqual:
+ op = ast::BinaryOp::kNotEqual;
+ break;
+ default:
+ return lhs;
}
- return lhs;
+
+ next(); // consume tok_op
+
+ auto& tok_rhs = peek();
+ auto rhs = shift_expression();
+ if (rhs.errored) {
+ return Failure::kErrored;
+ }
+ if (!rhs.matched) {
+ return add_error(tok_rhs, std::string("unable to parse right side of ") +
+ std::string(tok_op.to_name()) + " expression");
+ }
+
+ return create<ast::BinaryExpression>(tok_op.source(), op, lhs, rhs.value);
}
// expression
@@ -2992,62 +3034,75 @@
//
// Note, a `relational_expression` element was added to simplify many of the right sides
Maybe<const ast::Expression*> ParserImpl::expression() {
- auto lhs = unary_expression();
- if (lhs.errored) {
- return Failure::kErrored;
- }
- if (!lhs.matched) {
- return Failure::kNoMatch;
- }
-
- auto bitwise = bitwise_expression_post_unary_expression(lhs.value);
- if (bitwise.errored) {
- return Failure::kErrored;
- }
- if (bitwise.matched) {
- return bitwise.value;
- }
-
- auto relational = expect_relational_expression_post_unary_expression(lhs.value);
- if (relational.errored) {
- return Failure::kErrored;
- }
- auto* ret = relational.value;
-
- auto& t = peek();
- if (t.Is(Token::Type::kAndAnd) || t.Is(Token::Type::kOrOr)) {
- ast::BinaryOp op = ast::BinaryOp::kNone;
- if (t.Is(Token::Type::kAndAnd)) {
- op = ast::BinaryOp::kLogicalAnd;
- } else if (t.Is(Token::Type::kOrOr)) {
- op = ast::BinaryOp::kLogicalOr;
+ auto expr = [&]() -> Maybe<const ast::Expression*> {
+ auto lhs = unary_expression();
+ if (lhs.errored) {
+ return Failure::kErrored;
+ }
+ if (!lhs.matched) {
+ return Failure::kNoMatch;
}
- while (continue_parsing()) {
- auto& n = peek();
- if (!n.Is(t.type())) {
- if (n.Is(Token::Type::kAndAnd) || n.Is(Token::Type::kOrOr)) {
- return add_error(
- n.source(), std::string("mixing '") + std::string(t.to_name()) + "' and '" +
- std::string(n.to_name()) + "' requires parenthesis");
- }
- break;
- }
- next();
+ auto bitwise = bitwise_expression_post_unary_expression(lhs.value);
+ if (bitwise.errored) {
+ return Failure::kErrored;
+ }
+ if (bitwise.matched) {
+ return bitwise.value;
+ }
- auto rhs = relational_expression();
- if (rhs.errored) {
+ auto relational = expect_relational_expression_post_unary_expression(lhs.value);
+ if (relational.errored) {
+ return Failure::kErrored;
+ }
+ auto* ret = relational.value;
+
+ auto& t = peek();
+ if (t.Is(Token::Type::kAndAnd) || t.Is(Token::Type::kOrOr)) {
+ ast::BinaryOp op = ast::BinaryOp::kNone;
+ if (t.Is(Token::Type::kAndAnd)) {
+ op = ast::BinaryOp::kLogicalAnd;
+ } else if (t.Is(Token::Type::kOrOr)) {
+ op = ast::BinaryOp::kLogicalOr;
+ }
+
+ while (continue_parsing()) {
+ auto& n = peek();
+ if (!n.Is(t.type())) {
+ break;
+ }
+ next();
+
+ auto rhs = relational_expression();
+ if (rhs.errored) {
+ return Failure::kErrored;
+ }
+ if (!rhs.matched) {
+ return add_error(peek(), std::string("unable to parse right side of ") +
+ std::string(t.to_name()) + " expression");
+ }
+
+ ret = create<ast::BinaryExpression>(t.source(), op, ret, rhs.value);
+ }
+ }
+ return ret;
+ }();
+
+ if (expr.matched) {
+ // Note, expression is greedy an will consume all the operators of the same type
+ // so, `a & a & a` would all be consumed above. If you see any binary operator
+ // after this then it _must_ be a different one, and hence an error.
+ if (auto* lhs = expr->As<ast::BinaryExpression>()) {
+ if (auto& n = peek(); n.IsBinaryOperator()) {
+ auto source = Source::Combine(expr->source, n.source());
+ add_error(source, std::string("mixing '") + ast::Operator(lhs->op) + "' and '" +
+ std::string(n.to_name()) + "' requires parenthesis");
return Failure::kErrored;
}
- if (!rhs.matched) {
- return add_error(peek(), std::string("unable to parse right side of ") +
- std::string(t.to_name()) + " expression");
- }
-
- ret = create<ast::BinaryExpression>(t.source(), op, ret, rhs.value);
}
}
- return ret;
+
+ return expr;
}
// singular_expression
diff --git a/src/tint/reader/wgsl/parser_impl.h b/src/tint/reader/wgsl/parser_impl.h
index 60b94de..691cc5e 100644
--- a/src/tint/reader/wgsl/parser_impl.h
+++ b/src/tint/reader/wgsl/parser_impl.h
@@ -74,7 +74,7 @@
/// Pre-determined small vector sizes for AST pointers
//! @cond Doxygen_Suppress
using AttributeList = utils::Vector<const ast::Attribute*, 4>;
- using CaseSelectorList = utils::Vector<const ast::IntLiteralExpression*, 4>;
+ using CaseSelectorList = utils::Vector<const ast::CaseSelector*, 4>;
using CaseStatementList = utils::Vector<const ast::CaseStatement*, 4>;
using ExpressionList = utils::Vector<const ast::Expression*, 8>;
using ParameterList = utils::Vector<const ast::Parameter*, 8>;
@@ -573,6 +573,9 @@
/// Parses a `case_selectors` grammar element
/// @returns the list of literals
Expect<CaseSelectorList> expect_case_selectors();
+ /// Parses a `case_selector` grammar element
+ /// @returns the selector
+ Maybe<const ast::CaseSelector*> case_selector();
/// Parses a `case_body` grammar element
/// @returns the parsed statements
Maybe<const ast::BlockStatement*> case_body();
diff --git a/src/tint/reader/wgsl/parser_impl_bitwise_expression_test.cc b/src/tint/reader/wgsl/parser_impl_bitwise_expression_test.cc
index a5f675c..9e95a3c 100644
--- a/src/tint/reader/wgsl/parser_impl_bitwise_expression_test.cc
+++ b/src/tint/reader/wgsl/parser_impl_bitwise_expression_test.cc
@@ -87,28 +87,6 @@
ASSERT_TRUE(rel->rhs->As<ast::BoolLiteralExpression>()->value);
}
-TEST_F(ParserImplTest, BitwiseExpr_Or_MixedWithAnd_Invalid) {
- auto p = parser("a | b & c");
- auto lhs = p->unary_expression();
- auto e = p->bitwise_expression_post_unary_expression(lhs.value);
- EXPECT_FALSE(e.matched);
- EXPECT_TRUE(e.errored);
- EXPECT_EQ(e.value, nullptr);
- EXPECT_TRUE(p->has_error());
- EXPECT_EQ(p->error(), "1:7: mixing '|' and '&' requires parenthesis");
-}
-
-TEST_F(ParserImplTest, BitwiseExpr_Or_MixedWithXor_Invalid) {
- auto p = parser("a | b ^ c");
- auto lhs = p->unary_expression();
- auto e = p->bitwise_expression_post_unary_expression(lhs.value);
- EXPECT_FALSE(e.matched);
- EXPECT_TRUE(e.errored);
- EXPECT_EQ(e.value, nullptr);
- EXPECT_TRUE(p->has_error());
- EXPECT_EQ(p->error(), "1:7: mixing '|' and '^' requires parenthesis");
-}
-
TEST_F(ParserImplTest, BitwiseExpr_Or_InvalidRHS) {
auto p = parser("true | if (a) {}");
auto lhs = p->unary_expression();
@@ -179,28 +157,6 @@
ASSERT_TRUE(rel->rhs->As<ast::BoolLiteralExpression>()->value);
}
-TEST_F(ParserImplTest, BitwiseExpr_Xor_MixedWithOr_Invalid) {
- auto p = parser("a ^ b | c");
- auto lhs = p->unary_expression();
- auto e = p->bitwise_expression_post_unary_expression(lhs.value);
- EXPECT_FALSE(e.matched);
- EXPECT_TRUE(e.errored);
- EXPECT_EQ(e.value, nullptr);
- EXPECT_TRUE(p->has_error());
- EXPECT_EQ(p->error(), "1:7: mixing '^' and '|' requires parenthesis");
-}
-
-TEST_F(ParserImplTest, BitwiseExpr_Xor_MixedWithAnd_Invalid) {
- auto p = parser("a ^ b & c");
- auto lhs = p->unary_expression();
- auto e = p->bitwise_expression_post_unary_expression(lhs.value);
- EXPECT_FALSE(e.matched);
- EXPECT_TRUE(e.errored);
- EXPECT_EQ(e.value, nullptr);
- EXPECT_TRUE(p->has_error());
- EXPECT_EQ(p->error(), "1:7: mixing '^' and '&' requires parenthesis");
-}
-
TEST_F(ParserImplTest, BitwiseExpr_Xor_InvalidRHS) {
auto p = parser("true ^ if (a) {}");
auto lhs = p->unary_expression();
@@ -275,59 +231,21 @@
auto p = parser("a & true &&b");
auto lhs = p->unary_expression();
auto e = p->bitwise_expression_post_unary_expression(lhs.value);
+ // bitwise_expression_post_unary_expression returns before parsing '&&'
+
EXPECT_TRUE(e.matched);
EXPECT_FALSE(e.errored);
EXPECT_FALSE(p->has_error()) << p->error();
ASSERT_NE(e.value, nullptr);
- // lhs: (a & true)
- // rhs: &b
+ // lhs: a
+ // rhs: true
ASSERT_TRUE(e->Is<ast::BinaryExpression>());
auto* rel = e->As<ast::BinaryExpression>();
EXPECT_EQ(ast::BinaryOp::kAnd, rel->op);
- ASSERT_TRUE(rel->rhs->Is<ast::UnaryOpExpression>());
- auto* unary = rel->rhs->As<ast::UnaryOpExpression>();
- EXPECT_EQ(ast::UnaryOp::kAddressOf, unary->op);
-
- ASSERT_TRUE(unary->expr->Is<ast::IdentifierExpression>());
- auto* ident = unary->expr->As<ast::IdentifierExpression>();
- EXPECT_EQ(ident->symbol, p->builder().Symbols().Register("b"));
-
- ASSERT_TRUE(rel->lhs->Is<ast::BinaryExpression>());
-
- // lhs: a
- // rhs: true
- rel = rel->lhs->As<ast::BinaryExpression>();
-
ASSERT_TRUE(rel->lhs->Is<ast::IdentifierExpression>());
- ident = rel->lhs->As<ast::IdentifierExpression>();
- EXPECT_EQ(ident->symbol, p->builder().Symbols().Register("a"));
-
ASSERT_TRUE(rel->rhs->Is<ast::BoolLiteralExpression>());
- ASSERT_TRUE(rel->rhs->As<ast::BoolLiteralExpression>()->value);
-}
-
-TEST_F(ParserImplTest, BitwiseExpr_And_MixedWithOr_Invalid) {
- auto p = parser("a & b | c");
- auto lhs = p->unary_expression();
- auto e = p->bitwise_expression_post_unary_expression(lhs.value);
- EXPECT_FALSE(e.matched);
- EXPECT_TRUE(e.errored);
- EXPECT_EQ(e.value, nullptr);
- EXPECT_TRUE(p->has_error());
- EXPECT_EQ(p->error(), "1:7: mixing '&' and '|' requires parenthesis");
-}
-
-TEST_F(ParserImplTest, BitwiseExpr_And_MixedWithXor_Invalid) {
- auto p = parser("a & b ^ c");
- auto lhs = p->unary_expression();
- auto e = p->bitwise_expression_post_unary_expression(lhs.value);
- EXPECT_FALSE(e.matched);
- EXPECT_TRUE(e.errored);
- EXPECT_EQ(e.value, nullptr);
- EXPECT_TRUE(p->has_error());
- EXPECT_EQ(p->error(), "1:7: mixing '&' and '^' requires parenthesis");
}
TEST_F(ParserImplTest, BitwiseExpr_And_InvalidRHS) {
diff --git a/src/tint/reader/wgsl/parser_impl_error_msg_test.cc b/src/tint/reader/wgsl/parser_impl_error_msg_test.cc
index 9416a4d..fbfe6f6 100644
--- a/src/tint/reader/wgsl/parser_impl_error_msg_test.cc
+++ b/src/tint/reader/wgsl/parser_impl_error_msg_test.cc
@@ -186,17 +186,17 @@
)");
}
-TEST_F(ParserImplErrorTest, ConstructorExprMissingLParen) {
+TEST_F(ParserImplErrorTest, InitializerExprMissingLParen) {
EXPECT("fn f() { x = vec2<u32>1,2); }",
- R"(test.wgsl:1:23 error: expected '(' for type constructor
+ R"(test.wgsl:1:23 error: expected '(' for type initializer
fn f() { x = vec2<u32>1,2); }
^
)");
}
-TEST_F(ParserImplErrorTest, ConstructorExprMissingRParen) {
+TEST_F(ParserImplErrorTest, InitializerExprMissingRParen) {
EXPECT("fn f() { x = vec2<u32>(1,2; }",
- R"(test.wgsl:1:27 error: expected ')' for type constructor
+ R"(test.wgsl:1:27 error: expected ')' for type initializer
fn f() { x = vec2<u32>(1,2; }
^
)");
@@ -218,7 +218,7 @@
)");
}
-TEST_F(ParserImplErrorTest, ConstVarStmtMissingConstructor) {
+TEST_F(ParserImplErrorTest, ConstVarStmtMissingInitializer) {
EXPECT("fn f() { let a : i32 = >; }",
R"(test.wgsl:1:24 error: missing initializer for 'let' declaration
fn f() { let a : i32 = >; }
@@ -530,7 +530,7 @@
TEST_F(ParserImplErrorTest, GlobalDeclConstMissingLParen) {
EXPECT("const i : vec2<i32> = vec2<i32>;",
- R"(test.wgsl:1:32 error: expected '(' for type constructor
+ R"(test.wgsl:1:32 error: expected '(' for type initializer
const i : vec2<i32> = vec2<i32>;
^
)");
@@ -538,7 +538,7 @@
TEST_F(ParserImplErrorTest, GlobalDeclConstMissingRParen) {
EXPECT("const i : vec2<i32> = vec2<i32>(1., 2.;",
- R"(test.wgsl:1:39 error: expected ')' for type constructor
+ R"(test.wgsl:1:39 error: expected ')' for type initializer
const i : vec2<i32> = vec2<i32>(1., 2.;
^
)");
@@ -581,7 +581,7 @@
TEST_F(ParserImplErrorTest, GlobalDeclConstExprMissingLParen) {
EXPECT("const i : vec2<i32> = vec2<i32> 1, 2);",
- R"(test.wgsl:1:33 error: expected '(' for type constructor
+ R"(test.wgsl:1:33 error: expected '(' for type initializer
const i : vec2<i32> = vec2<i32> 1, 2);
^
)");
@@ -589,7 +589,7 @@
TEST_F(ParserImplErrorTest, GlobalDeclConstExprMissingRParen) {
EXPECT("const i : vec2<i32> = vec2<i32>(1, 2;",
- R"(test.wgsl:1:37 error: expected ')' for type constructor
+ R"(test.wgsl:1:37 error: expected ')' for type initializer
const i : vec2<i32> = vec2<i32>(1, 2;
^
)");
@@ -628,7 +628,7 @@
let i : vec2<i32> = vec2<i32>;
^^^
-test.wgsl:1:30 error: expected '(' for type constructor
+test.wgsl:1:30 error: expected '(' for type initializer
let i : vec2<i32> = vec2<i32>;
^
)");
@@ -641,7 +641,7 @@
let i : vec2<i32> = vec2<i32>(1., 2.;
^^^
-test.wgsl:1:37 error: expected ')' for type constructor
+test.wgsl:1:37 error: expected ')' for type initializer
let i : vec2<i32> = vec2<i32>(1., 2.;
^
)");
@@ -667,7 +667,7 @@
let i : vec2<i32> = vec2<i32> 1, 2);
^^^
-test.wgsl:1:31 error: expected '(' for type constructor
+test.wgsl:1:31 error: expected '(' for type initializer
let i : vec2<i32> = vec2<i32> 1, 2);
^
)");
@@ -680,7 +680,7 @@
let i : vec2<i32> = vec2<i32>(1, 2;
^^^
-test.wgsl:1:35 error: expected ')' for type constructor
+test.wgsl:1:35 error: expected ')' for type initializer
let i : vec2<i32> = vec2<i32>(1, 2;
^
)");
@@ -1333,20 +1333,12 @@
TEST_F(ParserImplErrorTest, SwitchStmtInvalidCase) {
EXPECT("fn f() { switch(1) { case ^: } }",
- R"(test.wgsl:1:27 error: unable to parse case selectors
+ R"(test.wgsl:1:27 error: expected case selector expression or `default`
fn f() { switch(1) { case ^: } }
^
)");
}
-TEST_F(ParserImplErrorTest, SwitchStmtInvalidCase2) {
- EXPECT("fn f() { switch(1) { case false: } }",
- R"(test.wgsl:1:27 error: invalid case selector must be an integer value
-fn f() { switch(1) { case false: } }
- ^^^^^
-)");
-}
-
TEST_F(ParserImplErrorTest, SwitchStmtCaseMissingLBrace) {
EXPECT("fn f() { switch(1) { case 1: } }",
R"(test.wgsl:1:30 error: expected '{' for case statement
diff --git a/src/tint/reader/wgsl/parser_impl_expression_test.cc b/src/tint/reader/wgsl/parser_impl_expression_test.cc
index 0adbeef..389999f 100644
--- a/src/tint/reader/wgsl/parser_impl_expression_test.cc
+++ b/src/tint/reader/wgsl/parser_impl_expression_test.cc
@@ -165,7 +165,7 @@
EXPECT_TRUE(e.errored);
EXPECT_EQ(e.value, nullptr);
EXPECT_TRUE(p->has_error());
- EXPECT_EQ(p->error(), "1:11: mixing '&&' and '||' requires parenthesis");
+ EXPECT_EQ(p->error(), "1:3: mixing '&&' and '||' requires parenthesis");
}
TEST_F(ParserImplTest, Expression_Mixing_AndWithOr) {
@@ -175,7 +175,7 @@
EXPECT_TRUE(e.errored);
EXPECT_EQ(e.value, nullptr);
EXPECT_TRUE(p->has_error());
- EXPECT_EQ(p->error(), "1:11: mixing '||' and '&&' requires parenthesis");
+ EXPECT_EQ(p->error(), "1:3: mixing '||' and '&&' requires parenthesis");
}
TEST_F(ParserImplTest, Expression_Bitwise) {
@@ -250,5 +250,142 @@
EXPECT_EQ(p->error(), "1:6: unable to parse right side of <= expression");
}
+TEST_F(ParserImplTest, Expression_Associativity) {
+ auto p = parser("1 < 2 || 2 < 3");
+ auto e = p->expression();
+ EXPECT_TRUE(e.matched);
+ EXPECT_FALSE(e.errored);
+ EXPECT_FALSE(p->has_error()) << p->error();
+ ASSERT_NE(e.value, nullptr);
+}
+
+TEST_F(ParserImplTest, Expression_InvalidAssociativity) {
+ auto p = parser("1 < 2 && 2 < 3 || 3 < 4");
+ auto e = p->expression();
+ EXPECT_FALSE(e.matched);
+ EXPECT_TRUE(e.errored);
+ EXPECT_TRUE(p->has_error());
+ EXPECT_EQ(e.value, nullptr);
+ EXPECT_EQ(p->error(), R"(1:7: mixing '&&' and '||' requires parenthesis)");
+}
+
+namespace mixing_binary_ops {
+
+struct BinaryOperatorInfo {
+ // A uint64_t with a single bit assigned that uniquely identifies the binary-op.
+ uint64_t bit;
+ // The WGSL operator symbol. Example: '<='
+ const char* symbol;
+ // A bit mask of all operators that can immediately follow the RHS of this operator without
+ // requiring parentheses. In other words, `can_follow_without_paren` is the full set of
+ // operators that can substitute `<next-operator>` in the WGSL:
+ // `expr_a <this-operator> expr_b <next-operator> expr_c`
+ // without requiring additional parentheses.
+ uint64_t can_follow_without_paren;
+};
+
+// Each binary operator is given a unique bit in a uint64_t
+static constexpr uint64_t kOpMul = static_cast<uint64_t>(1) << 0;
+static constexpr uint64_t kOpDiv = static_cast<uint64_t>(1) << 1;
+static constexpr uint64_t kOpMod = static_cast<uint64_t>(1) << 2;
+static constexpr uint64_t kOpAdd = static_cast<uint64_t>(1) << 3;
+static constexpr uint64_t kOpSub = static_cast<uint64_t>(1) << 4;
+static constexpr uint64_t kOpBAnd = static_cast<uint64_t>(1) << 5;
+static constexpr uint64_t kOpBOr = static_cast<uint64_t>(1) << 6;
+static constexpr uint64_t kOpBXor = static_cast<uint64_t>(1) << 7;
+static constexpr uint64_t kOpShl = static_cast<uint64_t>(1) << 8;
+static constexpr uint64_t kOpShr = static_cast<uint64_t>(1) << 9;
+static constexpr uint64_t kOpLt = static_cast<uint64_t>(1) << 10;
+static constexpr uint64_t kOpGt = static_cast<uint64_t>(1) << 11;
+static constexpr uint64_t kOpLe = static_cast<uint64_t>(1) << 12;
+static constexpr uint64_t kOpGe = static_cast<uint64_t>(1) << 13;
+static constexpr uint64_t kOpEq = static_cast<uint64_t>(1) << 14;
+static constexpr uint64_t kOpNe = static_cast<uint64_t>(1) << 15;
+static constexpr uint64_t kOpLAnd = static_cast<uint64_t>(1) << 16;
+static constexpr uint64_t kOpLOr = static_cast<uint64_t>(1) << 17;
+
+// Bit mask for the binary operator groups
+static constexpr uint64_t kMultiplicative = kOpMul | kOpDiv | kOpMod;
+static constexpr uint64_t kAdditive = kOpAdd | kOpSub;
+static constexpr uint64_t kShift = kOpShl | kOpShr;
+static constexpr uint64_t kRelational = kOpLt | kOpGt | kOpLe | kOpGe | kOpEq | kOpNe;
+static constexpr uint64_t kLogical = kOpLAnd | kOpLOr;
+
+// The binary operator table
+static constexpr const BinaryOperatorInfo kBinaryOperators[] = {
+ // multiplicative
+ {kOpMul, "*", kLogical | kRelational | kAdditive | kMultiplicative},
+ {kOpDiv, "/", kLogical | kRelational | kAdditive | kMultiplicative},
+ {kOpMod, "%", kLogical | kRelational | kAdditive | kMultiplicative},
+ // additive
+ {kOpAdd, "+", kLogical | kRelational | kAdditive | kMultiplicative},
+ {kOpSub, "-", kLogical | kRelational | kAdditive | kMultiplicative},
+ // bitwise
+ {kOpBAnd, "&", kOpBAnd},
+ {kOpBOr, "|", kOpBOr},
+ {kOpBXor, "^", kOpBXor},
+ // shift
+ {kOpShl, "<<", kLogical | kRelational},
+ {kOpShr, ">>", kLogical | kRelational},
+ // relational
+ {kOpLt, "<", kLogical | kShift | kAdditive | kMultiplicative},
+ {kOpGt, ">", kLogical | kShift | kAdditive | kMultiplicative},
+ {kOpLe, "<=", kLogical | kShift | kAdditive | kMultiplicative},
+ {kOpGe, ">=", kLogical | kShift | kAdditive | kMultiplicative},
+ {kOpEq, "==", kLogical | kShift | kAdditive | kMultiplicative},
+ {kOpNe, "!=", kLogical | kShift | kAdditive | kMultiplicative},
+ // logical
+ {kOpLAnd, "&&", kOpLAnd | kRelational | kShift | kAdditive | kMultiplicative},
+ {kOpLOr, "||", kOpLOr | kRelational | kShift | kAdditive | kMultiplicative},
+};
+
+struct Case {
+ BinaryOperatorInfo lhs_op;
+ BinaryOperatorInfo rhs_op;
+ bool should_parse;
+};
+
+static std::ostream& operator<<(std::ostream& o, const Case& c) {
+ return o << "a " << c.lhs_op.symbol << " b " << c.rhs_op.symbol << " c ";
+}
+
+static std::vector<Case> Cases() {
+ std::vector<Case> out;
+ for (auto& lhs_op : kBinaryOperators) {
+ for (auto& rhs_op : kBinaryOperators) {
+ bool should_parse = lhs_op.can_follow_without_paren & rhs_op.bit;
+ out.push_back({lhs_op, rhs_op, should_parse});
+ }
+ }
+ return out;
+}
+
+using ParserImplMixedBinaryOpTest = ParserImplTestWithParam<Case>;
+
+TEST_P(ParserImplMixedBinaryOpTest, Test) {
+ std::stringstream wgsl;
+ wgsl << GetParam();
+ auto p = parser(wgsl.str());
+ auto e = p->expression();
+ if (GetParam().should_parse) {
+ ASSERT_TRUE(e.matched) << e.errored;
+ EXPECT_TRUE(e->Is<ast::BinaryExpression>());
+ } else {
+ EXPECT_FALSE(e.matched);
+ EXPECT_TRUE(e.errored);
+ EXPECT_EQ(e.value, nullptr);
+ EXPECT_TRUE(p->has_error());
+ std::stringstream expected;
+ expected << "1:3: mixing '" << GetParam().lhs_op.symbol << "' and '"
+ << GetParam().rhs_op.symbol << "' requires parenthesis";
+ EXPECT_EQ(p->error(), expected.str());
+ }
+}
+INSTANTIATE_TEST_SUITE_P(ParserImplMixedBinaryOpTest,
+ ParserImplMixedBinaryOpTest,
+ testing::ValuesIn(Cases()));
+
+} // namespace mixing_binary_ops
+
} // namespace
} // namespace tint::reader::wgsl
diff --git a/src/tint/reader/wgsl/parser_impl_for_stmt_test.cc b/src/tint/reader/wgsl/parser_impl_for_stmt_test.cc
index a8d7873..5af8f22 100644
--- a/src/tint/reader/wgsl/parser_impl_for_stmt_test.cc
+++ b/src/tint/reader/wgsl/parser_impl_for_stmt_test.cc
@@ -58,7 +58,7 @@
ASSERT_TRUE(Is<ast::VariableDeclStatement>(fl->initializer));
auto* var = fl->initializer->As<ast::VariableDeclStatement>()->variable;
EXPECT_TRUE(var->Is<ast::Var>());
- EXPECT_EQ(var->constructor, nullptr);
+ EXPECT_EQ(var->initializer, nullptr);
EXPECT_EQ(fl->condition, nullptr);
EXPECT_EQ(fl->continuing, nullptr);
EXPECT_TRUE(fl->body->Empty());
@@ -75,7 +75,7 @@
ASSERT_TRUE(Is<ast::VariableDeclStatement>(fl->initializer));
auto* var = fl->initializer->As<ast::VariableDeclStatement>()->variable;
EXPECT_TRUE(var->Is<ast::Var>());
- EXPECT_NE(var->constructor, nullptr);
+ EXPECT_NE(var->initializer, nullptr);
EXPECT_EQ(fl->condition, nullptr);
EXPECT_EQ(fl->continuing, nullptr);
EXPECT_TRUE(fl->body->Empty());
@@ -91,7 +91,7 @@
ASSERT_TRUE(Is<ast::VariableDeclStatement>(fl->initializer));
auto* var = fl->initializer->As<ast::VariableDeclStatement>()->variable;
EXPECT_TRUE(var->Is<ast::Let>());
- EXPECT_NE(var->constructor, nullptr);
+ EXPECT_NE(var->initializer, nullptr);
EXPECT_EQ(fl->condition, nullptr);
EXPECT_EQ(fl->continuing, nullptr);
EXPECT_TRUE(fl->body->Empty());
diff --git a/src/tint/reader/wgsl/parser_impl_global_constant_decl_test.cc b/src/tint/reader/wgsl/parser_impl_global_constant_decl_test.cc
index 0531066..86e4383 100644
--- a/src/tint/reader/wgsl/parser_impl_global_constant_decl_test.cc
+++ b/src/tint/reader/wgsl/parser_impl_global_constant_decl_test.cc
@@ -39,8 +39,8 @@
EXPECT_EQ(const_->source.range.end.line, 1u);
EXPECT_EQ(const_->source.range.end.column, 6u);
- ASSERT_NE(const_->constructor, nullptr);
- EXPECT_TRUE(const_->constructor->Is<ast::LiteralExpression>());
+ ASSERT_NE(const_->initializer, nullptr);
+ EXPECT_TRUE(const_->initializer->Is<ast::LiteralExpression>());
}
TEST_F(ParserImplTest, GlobalLetDecl_Inferred) {
@@ -63,8 +63,8 @@
EXPECT_EQ(const_->source.range.end.line, 1u);
EXPECT_EQ(const_->source.range.end.column, 6u);
- ASSERT_NE(const_->constructor, nullptr);
- EXPECT_TRUE(const_->constructor->Is<ast::LiteralExpression>());
+ ASSERT_NE(const_->initializer, nullptr);
+ EXPECT_TRUE(const_->initializer->Is<ast::LiteralExpression>());
}
TEST_F(ParserImplTest, GlobalLetDecl_InvalidExpression) {
@@ -120,8 +120,8 @@
EXPECT_EQ(c->source.range.end.line, 1u);
EXPECT_EQ(c->source.range.end.column, 8u);
- ASSERT_NE(c->constructor, nullptr);
- EXPECT_TRUE(c->constructor->Is<ast::LiteralExpression>());
+ ASSERT_NE(c->initializer, nullptr);
+ EXPECT_TRUE(c->initializer->Is<ast::LiteralExpression>());
}
TEST_F(ParserImplTest, GlobalConstDecl_Inferred) {
@@ -144,8 +144,8 @@
EXPECT_EQ(c->source.range.end.line, 1u);
EXPECT_EQ(c->source.range.end.column, 8u);
- ASSERT_NE(c->constructor, nullptr);
- EXPECT_TRUE(c->constructor->Is<ast::LiteralExpression>());
+ ASSERT_NE(c->initializer, nullptr);
+ EXPECT_TRUE(c->initializer->Is<ast::LiteralExpression>());
}
TEST_F(ParserImplTest, GlobalConstDecl_InvalidExpression) {
@@ -196,8 +196,8 @@
EXPECT_EQ(override->source.range.end.line, 1u);
EXPECT_EQ(override->source.range.end.column, 18u);
- ASSERT_NE(override->constructor, nullptr);
- EXPECT_TRUE(override->constructor->Is<ast::LiteralExpression>());
+ ASSERT_NE(override->initializer, nullptr);
+ EXPECT_TRUE(override->initializer->Is<ast::LiteralExpression>());
auto* override_attr = ast::GetAttribute<ast::IdAttribute>(override->attributes);
ASSERT_NE(override_attr, nullptr);
@@ -226,8 +226,8 @@
EXPECT_EQ(override->source.range.end.line, 1u);
EXPECT_EQ(override->source.range.end.column, 19u);
- ASSERT_NE(override->constructor, nullptr);
- EXPECT_TRUE(override->constructor->Is<ast::LiteralExpression>());
+ ASSERT_NE(override->initializer, nullptr);
+ EXPECT_TRUE(override->initializer->Is<ast::LiteralExpression>());
auto* override_attr = ast::GetAttribute<ast::IdAttribute>(override->attributes);
ASSERT_NE(override_attr, nullptr);
@@ -256,8 +256,8 @@
EXPECT_EQ(override->source.range.end.line, 1u);
EXPECT_EQ(override->source.range.end.column, 11u);
- ASSERT_NE(override->constructor, nullptr);
- EXPECT_TRUE(override->constructor->Is<ast::LiteralExpression>());
+ ASSERT_NE(override->initializer, nullptr);
+ EXPECT_TRUE(override->initializer->Is<ast::LiteralExpression>());
auto* id_attr = ast::GetAttribute<ast::IdAttribute>(override->attributes);
ASSERT_EQ(id_attr, nullptr);
diff --git a/src/tint/reader/wgsl/parser_impl_global_variable_decl_test.cc b/src/tint/reader/wgsl/parser_impl_global_variable_decl_test.cc
index 5f051db..695fc86 100644
--- a/src/tint/reader/wgsl/parser_impl_global_variable_decl_test.cc
+++ b/src/tint/reader/wgsl/parser_impl_global_variable_decl_test.cc
@@ -17,7 +17,7 @@
namespace tint::reader::wgsl {
namespace {
-TEST_F(ParserImplTest, GlobalVariableDecl_WithoutConstructor) {
+TEST_F(ParserImplTest, GlobalVariableDecl_WithoutInitializer) {
auto p = parser("var<private> a : f32");
auto attrs = p->attribute_list();
EXPECT_FALSE(attrs.errored);
@@ -38,10 +38,10 @@
EXPECT_EQ(var->source.range.end.line, 1u);
EXPECT_EQ(var->source.range.end.column, 15u);
- ASSERT_EQ(var->constructor, nullptr);
+ ASSERT_EQ(var->initializer, nullptr);
}
-TEST_F(ParserImplTest, GlobalVariableDecl_WithConstructor) {
+TEST_F(ParserImplTest, GlobalVariableDecl_WithInitializer) {
auto p = parser("var<private> a : f32 = 1.");
auto attrs = p->attribute_list();
EXPECT_FALSE(attrs.errored);
@@ -62,8 +62,8 @@
EXPECT_EQ(var->source.range.end.line, 1u);
EXPECT_EQ(var->source.range.end.column, 15u);
- ASSERT_NE(var->constructor, nullptr);
- ASSERT_TRUE(var->constructor->Is<ast::FloatLiteralExpression>());
+ ASSERT_NE(var->initializer, nullptr);
+ ASSERT_TRUE(var->initializer->Is<ast::FloatLiteralExpression>());
}
TEST_F(ParserImplTest, GlobalVariableDecl_WithAttribute) {
@@ -88,7 +88,7 @@
EXPECT_EQ(var->source.range.end.line, 1u);
EXPECT_EQ(var->source.range.end.column, 37u);
- ASSERT_EQ(var->constructor, nullptr);
+ ASSERT_EQ(var->initializer, nullptr);
auto& attributes = var->attributes;
ASSERT_EQ(attributes.Length(), 2u);
@@ -119,7 +119,7 @@
EXPECT_EQ(var->source.range.end.line, 1u);
EXPECT_EQ(var->source.range.end.column, 37u);
- ASSERT_EQ(var->constructor, nullptr);
+ ASSERT_EQ(var->initializer, nullptr);
auto& attributes = var->attributes;
ASSERT_EQ(attributes.Length(), 2u);
diff --git a/src/tint/reader/wgsl/parser_impl_loop_stmt_test.cc b/src/tint/reader/wgsl/parser_impl_loop_stmt_test.cc
index a3e51b4..2b8033f 100644
--- a/src/tint/reader/wgsl/parser_impl_loop_stmt_test.cc
+++ b/src/tint/reader/wgsl/parser_impl_loop_stmt_test.cc
@@ -110,5 +110,57 @@
EXPECT_EQ(p->error(), "1:29: expected ';' for discard statement");
}
+TEST_F(ParserImplTest, LoopStmt_Continuing_BreakIf) {
+ auto p = parser("loop { continuing { break if 1 + 2 < 5; }}");
+ auto e = p->loop_statement();
+ EXPECT_TRUE(e.matched);
+ EXPECT_FALSE(e.errored);
+ EXPECT_FALSE(p->has_error()) << p->error();
+ ASSERT_NE(e.value, nullptr);
+ ASSERT_EQ(e->body->statements.Length(), 0u);
+ ASSERT_EQ(e->continuing->statements.Length(), 1u);
+ EXPECT_TRUE(e->continuing->statements[0]->Is<ast::BreakIfStatement>());
+}
+
+TEST_F(ParserImplTest, LoopStmt_Continuing_BreakIf_MissingExpr) {
+ auto p = parser("loop { continuing { break if; }}");
+ auto e = p->loop_statement();
+ EXPECT_FALSE(e.matched);
+ EXPECT_TRUE(e.errored);
+ EXPECT_TRUE(p->has_error());
+ EXPECT_EQ(e.value, nullptr);
+ EXPECT_EQ(p->error(), "1:21: expected expression for `break if`");
+}
+
+TEST_F(ParserImplTest, LoopStmt_Continuing_BreakIf_InvalidExpr) {
+ auto p = parser("loop { continuing { break if switch; }}");
+ auto e = p->loop_statement();
+ EXPECT_FALSE(e.matched);
+ EXPECT_TRUE(e.errored);
+ EXPECT_TRUE(p->has_error());
+ EXPECT_EQ(e.value, nullptr);
+ EXPECT_EQ(p->error(), "1:21: expected expression for `break if`");
+}
+
+TEST_F(ParserImplTest, LoopStmt_NoContinuing_BreakIf) {
+ auto p = parser("loop { break if true; }");
+ auto e = p->loop_statement();
+ EXPECT_FALSE(e.matched);
+ EXPECT_TRUE(e.errored);
+ EXPECT_TRUE(p->has_error());
+ EXPECT_EQ(e.value, nullptr);
+ EXPECT_EQ(p->error(), "1:14: expected ';' for break statement");
+}
+
+TEST_F(ParserImplTest, LoopStmt_Continuing_BreakIf_MissingSemicolon) {
+ auto p = parser("loop { continuing { break if 1 + 2 < 5 }}");
+ auto e = p->loop_statement();
+ EXPECT_FALSE(e.matched);
+ EXPECT_TRUE(e.errored);
+ EXPECT_TRUE(p->has_error());
+ EXPECT_EQ(e.value, nullptr);
+ EXPECT_EQ(p->error(), "1:40: expected ';' for `break if` statement");
+}
+
} // namespace
} // namespace tint::reader::wgsl
diff --git a/src/tint/reader/wgsl/parser_impl_primary_expression_test.cc b/src/tint/reader/wgsl/parser_impl_primary_expression_test.cc
index 82f64c3..f7f9a87 100644
--- a/src/tint/reader/wgsl/parser_impl_primary_expression_test.cc
+++ b/src/tint/reader/wgsl/parser_impl_primary_expression_test.cc
@@ -65,7 +65,7 @@
ast::IntLiteralExpression::Suffix::kNone);
}
-TEST_F(ParserImplTest, PrimaryExpression_TypeDecl_ZeroConstructor) {
+TEST_F(ParserImplTest, PrimaryExpression_TypeDecl_ZeroInitializer) {
auto p = parser("vec4<i32>()");
auto e = p->primary_expression();
EXPECT_TRUE(e.matched);
@@ -96,7 +96,7 @@
EXPECT_TRUE(e.errored);
EXPECT_EQ(e.value, nullptr);
ASSERT_TRUE(p->has_error());
- EXPECT_EQ(p->error(), "1:11: expected '(' for type constructor");
+ EXPECT_EQ(p->error(), "1:11: expected '(' for type initializer");
}
TEST_F(ParserImplTest, PrimaryExpression_TypeDecl_MissingRightParen) {
@@ -106,7 +106,7 @@
EXPECT_TRUE(e.errored);
EXPECT_EQ(e.value, nullptr);
ASSERT_TRUE(p->has_error());
- EXPECT_EQ(p->error(), "1:25: expected ')' for type constructor");
+ EXPECT_EQ(p->error(), "1:25: expected ')' for type initializer");
}
TEST_F(ParserImplTest, PrimaryExpression_TypeDecl_InvalidValue) {
@@ -116,10 +116,10 @@
EXPECT_TRUE(e.errored);
EXPECT_EQ(e.value, nullptr);
ASSERT_TRUE(p->has_error());
- EXPECT_EQ(p->error(), "1:5: expected ')' for type constructor");
+ EXPECT_EQ(p->error(), "1:5: expected ')' for type initializer");
}
-TEST_F(ParserImplTest, PrimaryExpression_TypeDecl_StructConstructor_Empty) {
+TEST_F(ParserImplTest, PrimaryExpression_TypeDecl_StructInitializer_Empty) {
auto p = parser(R"(
struct S { a : i32, b : f32, }
S()
@@ -143,7 +143,7 @@
ASSERT_EQ(call->args.Length(), 0u);
}
-TEST_F(ParserImplTest, PrimaryExpression_TypeDecl_StructConstructor_NotEmpty) {
+TEST_F(ParserImplTest, PrimaryExpression_TypeDecl_StructInitializer_NotEmpty) {
auto p = parser(R"(
struct S { a : i32, b : f32, }
S(1u, 2.0)
diff --git a/src/tint/reader/wgsl/parser_impl_statement_test.cc b/src/tint/reader/wgsl/parser_impl_statement_test.cc
index 7bb51d3..f78e944 100644
--- a/src/tint/reader/wgsl/parser_impl_statement_test.cc
+++ b/src/tint/reader/wgsl/parser_impl_statement_test.cc
@@ -143,7 +143,7 @@
EXPECT_TRUE(e.errored);
EXPECT_FALSE(e.matched);
EXPECT_EQ(e.value, nullptr);
- EXPECT_EQ(p->error(), "1:18: unable to parse case selectors");
+ EXPECT_EQ(p->error(), "1:18: expected case selector expression or `default`");
}
TEST_F(ParserImplTest, Statement_Loop) {
diff --git a/src/tint/reader/wgsl/parser_impl_struct_member_attribute_test.cc b/src/tint/reader/wgsl/parser_impl_struct_member_attribute_test.cc
index 80376d8..7abdcd5 100644
--- a/src/tint/reader/wgsl/parser_impl_struct_member_attribute_test.cc
+++ b/src/tint/reader/wgsl/parser_impl_struct_member_attribute_test.cc
@@ -220,7 +220,7 @@
EXPECT_EQ(attr.value, nullptr);
EXPECT_TRUE(p->has_error());
- EXPECT_EQ(p->error(), "1:13: expected ')' for align attribute");
+ EXPECT_EQ(p->error(), "1:9: mixing '+' and '<<' requires parenthesis");
}
} // namespace
diff --git a/src/tint/reader/wgsl/parser_impl_switch_body_test.cc b/src/tint/reader/wgsl/parser_impl_switch_body_test.cc
index 076b1c3..61ec524 100644
--- a/src/tint/reader/wgsl/parser_impl_switch_body_test.cc
+++ b/src/tint/reader/wgsl/parser_impl_switch_body_test.cc
@@ -25,11 +25,50 @@
EXPECT_FALSE(e.errored);
ASSERT_NE(e.value, nullptr);
ASSERT_TRUE(e->Is<ast::CaseStatement>());
- EXPECT_FALSE(e->IsDefault());
+ EXPECT_FALSE(e->ContainsDefault());
+
auto* stmt = e->As<ast::CaseStatement>();
ASSERT_EQ(stmt->selectors.Length(), 1u);
- EXPECT_EQ(stmt->selectors[0]->value, 1);
- EXPECT_EQ(stmt->selectors[0]->suffix, ast::IntLiteralExpression::Suffix::kNone);
+
+ auto* sel = stmt->selectors[0];
+ EXPECT_FALSE(sel->IsDefault());
+ ASSERT_TRUE(sel->expr->Is<ast::IntLiteralExpression>());
+
+ auto* expr = sel->expr->As<ast::IntLiteralExpression>();
+ EXPECT_EQ(expr->value, 1);
+ EXPECT_EQ(expr->suffix, ast::IntLiteralExpression::Suffix::kNone);
+ ASSERT_EQ(e->body->statements.Length(), 1u);
+ EXPECT_TRUE(e->body->statements[0]->Is<ast::AssignmentStatement>());
+}
+
+TEST_F(ParserImplTest, SwitchBody_Case_Expression) {
+ auto p = parser("case 1 + 2 { a = 4; }");
+ auto e = p->switch_body();
+ EXPECT_FALSE(p->has_error()) << p->error();
+ EXPECT_TRUE(e.matched);
+ EXPECT_FALSE(e.errored);
+ ASSERT_NE(e.value, nullptr);
+ ASSERT_TRUE(e->Is<ast::CaseStatement>());
+ EXPECT_FALSE(e->ContainsDefault());
+
+ auto* stmt = e->As<ast::CaseStatement>();
+ ASSERT_EQ(stmt->selectors.Length(), 1u);
+
+ auto* sel = stmt->selectors[0];
+ EXPECT_FALSE(sel->IsDefault());
+
+ ASSERT_TRUE(sel->expr->Is<ast::BinaryExpression>());
+ auto* expr = sel->expr->As<ast::BinaryExpression>();
+
+ EXPECT_EQ(ast::BinaryOp::kAdd, expr->op);
+ auto* v = expr->lhs->As<ast::IntLiteralExpression>();
+ ASSERT_NE(nullptr, v);
+ EXPECT_EQ(v->value, 1u);
+
+ v = expr->rhs->As<ast::IntLiteralExpression>();
+ ASSERT_NE(nullptr, v);
+ EXPECT_EQ(v->value, 2u);
+
ASSERT_EQ(e->body->statements.Length(), 1u);
EXPECT_TRUE(e->body->statements[0]->Is<ast::AssignmentStatement>());
}
@@ -42,11 +81,18 @@
EXPECT_FALSE(e.errored);
ASSERT_NE(e.value, nullptr);
ASSERT_TRUE(e->Is<ast::CaseStatement>());
- EXPECT_FALSE(e->IsDefault());
+ EXPECT_FALSE(e->ContainsDefault());
+
auto* stmt = e->As<ast::CaseStatement>();
ASSERT_EQ(stmt->selectors.Length(), 1u);
- EXPECT_EQ(stmt->selectors[0]->value, 1);
- EXPECT_EQ(stmt->selectors[0]->suffix, ast::IntLiteralExpression::Suffix::kNone);
+ auto* sel = stmt->selectors[0];
+ EXPECT_FALSE(sel->IsDefault());
+
+ ASSERT_TRUE(sel->expr->Is<ast::IntLiteralExpression>());
+ auto* expr = sel->expr->As<ast::IntLiteralExpression>();
+
+ EXPECT_EQ(expr->value, 1);
+ EXPECT_EQ(expr->suffix, ast::IntLiteralExpression::Suffix::kNone);
ASSERT_EQ(e->body->statements.Length(), 1u);
EXPECT_TRUE(e->body->statements[0]->Is<ast::AssignmentStatement>());
}
@@ -59,12 +105,22 @@
EXPECT_FALSE(e.errored);
ASSERT_NE(e.value, nullptr);
ASSERT_TRUE(e->Is<ast::CaseStatement>());
- EXPECT_FALSE(e->IsDefault());
+ EXPECT_FALSE(e->ContainsDefault());
+
auto* stmt = e->As<ast::CaseStatement>();
ASSERT_EQ(stmt->selectors.Length(), 2u);
- EXPECT_EQ(stmt->selectors[0]->value, 1);
- EXPECT_EQ(stmt->selectors[0]->suffix, ast::IntLiteralExpression::Suffix::kNone);
- EXPECT_EQ(stmt->selectors[1]->value, 2);
+ auto* sel = stmt->selectors[0];
+
+ ASSERT_TRUE(sel->expr->Is<ast::IntLiteralExpression>());
+ auto* expr = sel->expr->As<ast::IntLiteralExpression>();
+ EXPECT_EQ(expr->value, 1);
+ EXPECT_EQ(expr->suffix, ast::IntLiteralExpression::Suffix::kNone);
+
+ sel = stmt->selectors[1];
+ ASSERT_TRUE(sel->expr->Is<ast::IntLiteralExpression>());
+ expr = sel->expr->As<ast::IntLiteralExpression>();
+ EXPECT_EQ(expr->value, 2);
+ EXPECT_EQ(expr->suffix, ast::IntLiteralExpression::Suffix::kNone);
}
TEST_F(ParserImplTest, SwitchBody_Case_TrailingComma_WithColon) {
@@ -75,32 +131,32 @@
EXPECT_FALSE(e.errored);
ASSERT_NE(e.value, nullptr);
ASSERT_TRUE(e->Is<ast::CaseStatement>());
- EXPECT_FALSE(e->IsDefault());
+ EXPECT_FALSE(e->ContainsDefault());
+
auto* stmt = e->As<ast::CaseStatement>();
ASSERT_EQ(stmt->selectors.Length(), 2u);
- EXPECT_EQ(stmt->selectors[0]->value, 1);
- EXPECT_EQ(stmt->selectors[0]->suffix, ast::IntLiteralExpression::Suffix::kNone);
- EXPECT_EQ(stmt->selectors[1]->value, 2);
+ auto* sel = stmt->selectors[0];
+
+ ASSERT_TRUE(sel->expr->Is<ast::IntLiteralExpression>());
+ auto* expr = sel->expr->As<ast::IntLiteralExpression>();
+ EXPECT_EQ(expr->value, 1);
+ EXPECT_EQ(expr->suffix, ast::IntLiteralExpression::Suffix::kNone);
+
+ sel = stmt->selectors[1];
+ ASSERT_TRUE(sel->expr->Is<ast::IntLiteralExpression>());
+ expr = sel->expr->As<ast::IntLiteralExpression>();
+ EXPECT_EQ(expr->value, 2);
+ EXPECT_EQ(expr->suffix, ast::IntLiteralExpression::Suffix::kNone);
}
-TEST_F(ParserImplTest, SwitchBody_Case_InvalidConstLiteral) {
- auto p = parser("case a == 4: { a = 4; }");
+TEST_F(ParserImplTest, SwitchBody_Case_Invalid) {
+ auto p = parser("case if: { a = 4; }");
auto e = p->switch_body();
EXPECT_TRUE(p->has_error());
EXPECT_TRUE(e.errored);
EXPECT_FALSE(e.matched);
EXPECT_EQ(e.value, nullptr);
- EXPECT_EQ(p->error(), "1:6: unable to parse case selectors");
-}
-
-TEST_F(ParserImplTest, SwitchBody_Case_InvalidSelector_bool) {
- auto p = parser("case true: { a = 4; }");
- auto e = p->switch_body();
- EXPECT_TRUE(p->has_error());
- EXPECT_TRUE(e.errored);
- EXPECT_FALSE(e.matched);
- EXPECT_EQ(e.value, nullptr);
- EXPECT_EQ(p->error(), "1:6: invalid case selector must be an integer value");
+ EXPECT_EQ(p->error(), "1:6: expected case selector expression or `default`");
}
TEST_F(ParserImplTest, SwitchBody_Case_MissingConstLiteral) {
@@ -110,7 +166,7 @@
EXPECT_TRUE(e.errored);
EXPECT_FALSE(e.matched);
EXPECT_EQ(e.value, nullptr);
- EXPECT_EQ(p->error(), "1:5: unable to parse case selectors");
+ EXPECT_EQ(p->error(), "1:5: expected case selector expression or `default`");
}
TEST_F(ParserImplTest, SwitchBody_Case_MissingBracketLeft) {
@@ -161,13 +217,48 @@
EXPECT_FALSE(e.errored);
ASSERT_NE(e.value, nullptr);
ASSERT_TRUE(e->Is<ast::CaseStatement>());
- EXPECT_FALSE(e->IsDefault());
+ EXPECT_FALSE(e->ContainsDefault());
ASSERT_EQ(e->body->statements.Length(), 0u);
ASSERT_EQ(e->selectors.Length(), 2u);
- ASSERT_EQ(e->selectors[0]->value, 1);
- EXPECT_EQ(e->selectors[0]->suffix, ast::IntLiteralExpression::Suffix::kNone);
- ASSERT_EQ(e->selectors[1]->value, 2);
- EXPECT_EQ(e->selectors[1]->suffix, ast::IntLiteralExpression::Suffix::kNone);
+
+ auto* sel = e->selectors[0];
+ ASSERT_TRUE(sel->expr->Is<ast::IntLiteralExpression>());
+ auto* expr = sel->expr->As<ast::IntLiteralExpression>();
+ ASSERT_EQ(expr->value, 1);
+ EXPECT_EQ(expr->suffix, ast::IntLiteralExpression::Suffix::kNone);
+
+ sel = e->selectors[1];
+ ASSERT_TRUE(sel->expr->Is<ast::IntLiteralExpression>());
+ expr = sel->expr->As<ast::IntLiteralExpression>();
+ ASSERT_EQ(expr->value, 2);
+ EXPECT_EQ(expr->suffix, ast::IntLiteralExpression::Suffix::kNone);
+}
+
+TEST_F(ParserImplTest, SwitchBody_Case_MultipleSelectors_with_default) {
+ auto p = parser("case 1, default, 2 { }");
+ auto e = p->switch_body();
+ EXPECT_FALSE(p->has_error()) << p->error();
+ EXPECT_TRUE(e.matched);
+ EXPECT_FALSE(e.errored);
+ ASSERT_NE(e.value, nullptr);
+ ASSERT_TRUE(e->Is<ast::CaseStatement>());
+ EXPECT_TRUE(e->ContainsDefault());
+ ASSERT_EQ(e->body->statements.Length(), 0u);
+ ASSERT_EQ(e->selectors.Length(), 3u);
+
+ auto* sel = e->selectors[0];
+ ASSERT_TRUE(sel->expr->Is<ast::IntLiteralExpression>());
+ auto* expr = sel->expr->As<ast::IntLiteralExpression>();
+ ASSERT_EQ(expr->value, 1);
+ EXPECT_EQ(expr->suffix, ast::IntLiteralExpression::Suffix::kNone);
+
+ EXPECT_TRUE(e->selectors[1]->IsDefault());
+
+ sel = e->selectors[2];
+ ASSERT_TRUE(sel->expr->Is<ast::IntLiteralExpression>());
+ expr = sel->expr->As<ast::IntLiteralExpression>();
+ ASSERT_EQ(expr->value, 2);
+ EXPECT_EQ(expr->suffix, ast::IntLiteralExpression::Suffix::kNone);
}
TEST_F(ParserImplTest, SwitchBody_Case_MultipleSelectors_WithColon) {
@@ -178,13 +269,21 @@
EXPECT_FALSE(e.errored);
ASSERT_NE(e.value, nullptr);
ASSERT_TRUE(e->Is<ast::CaseStatement>());
- EXPECT_FALSE(e->IsDefault());
+ EXPECT_FALSE(e->ContainsDefault());
ASSERT_EQ(e->body->statements.Length(), 0u);
ASSERT_EQ(e->selectors.Length(), 2u);
- ASSERT_EQ(e->selectors[0]->value, 1);
- EXPECT_EQ(e->selectors[0]->suffix, ast::IntLiteralExpression::Suffix::kNone);
- ASSERT_EQ(e->selectors[1]->value, 2);
- EXPECT_EQ(e->selectors[1]->suffix, ast::IntLiteralExpression::Suffix::kNone);
+
+ auto* sel = e->selectors[0];
+ ASSERT_TRUE(sel->expr->Is<ast::IntLiteralExpression>());
+ auto* expr = sel->expr->As<ast::IntLiteralExpression>();
+ ASSERT_EQ(expr->value, 1);
+ EXPECT_EQ(expr->suffix, ast::IntLiteralExpression::Suffix::kNone);
+
+ sel = e->selectors[1];
+ ASSERT_TRUE(sel->expr->Is<ast::IntLiteralExpression>());
+ expr = sel->expr->As<ast::IntLiteralExpression>();
+ ASSERT_EQ(expr->value, 2);
+ EXPECT_EQ(expr->suffix, ast::IntLiteralExpression::Suffix::kNone);
}
TEST_F(ParserImplTest, SwitchBody_Case_MultipleSelectorsMissingComma) {
@@ -204,7 +303,7 @@
EXPECT_TRUE(e.errored);
EXPECT_FALSE(e.matched);
EXPECT_EQ(e.value, nullptr);
- EXPECT_EQ(p->error(), "1:6: unable to parse case selectors");
+ EXPECT_EQ(p->error(), "1:6: expected case selector expression or `default`");
}
TEST_F(ParserImplTest, SwitchBody_Default) {
@@ -215,7 +314,7 @@
EXPECT_FALSE(e.errored);
ASSERT_NE(e.value, nullptr);
ASSERT_TRUE(e->Is<ast::CaseStatement>());
- EXPECT_TRUE(e->IsDefault());
+ EXPECT_TRUE(e->ContainsDefault());
ASSERT_EQ(e->body->statements.Length(), 1u);
EXPECT_TRUE(e->body->statements[0]->Is<ast::AssignmentStatement>());
}
@@ -228,7 +327,7 @@
EXPECT_FALSE(e.errored);
ASSERT_NE(e.value, nullptr);
ASSERT_TRUE(e->Is<ast::CaseStatement>());
- EXPECT_TRUE(e->IsDefault());
+ EXPECT_TRUE(e->ContainsDefault());
ASSERT_EQ(e->body->statements.Length(), 1u);
EXPECT_TRUE(e->body->statements[0]->Is<ast::AssignmentStatement>());
}
diff --git a/src/tint/reader/wgsl/parser_impl_switch_stmt_test.cc b/src/tint/reader/wgsl/parser_impl_switch_stmt_test.cc
index 014d850..a5e3dd3 100644
--- a/src/tint/reader/wgsl/parser_impl_switch_stmt_test.cc
+++ b/src/tint/reader/wgsl/parser_impl_switch_stmt_test.cc
@@ -29,8 +29,8 @@
ASSERT_NE(e.value, nullptr);
ASSERT_TRUE(e->Is<ast::SwitchStatement>());
ASSERT_EQ(e->body.Length(), 2u);
- EXPECT_FALSE(e->body[0]->IsDefault());
- EXPECT_FALSE(e->body[1]->IsDefault());
+ EXPECT_FALSE(e->body[0]->ContainsDefault());
+ EXPECT_FALSE(e->body[1]->ContainsDefault());
}
TEST_F(ParserImplTest, SwitchStmt_Empty) {
@@ -58,9 +58,24 @@
ASSERT_TRUE(e->Is<ast::SwitchStatement>());
ASSERT_EQ(e->body.Length(), 3u);
- ASSERT_FALSE(e->body[0]->IsDefault());
- ASSERT_TRUE(e->body[1]->IsDefault());
- ASSERT_FALSE(e->body[2]->IsDefault());
+ ASSERT_FALSE(e->body[0]->ContainsDefault());
+ ASSERT_TRUE(e->body[1]->ContainsDefault());
+ ASSERT_FALSE(e->body[2]->ContainsDefault());
+}
+
+TEST_F(ParserImplTest, SwitchStmt_Default_Mixed) {
+ auto p = parser(R"(switch a {
+ case 1, default, 2: {}
+})");
+ auto e = p->switch_statement();
+ EXPECT_TRUE(e.matched);
+ EXPECT_FALSE(e.errored);
+ EXPECT_FALSE(p->has_error()) << p->error();
+ ASSERT_NE(e.value, nullptr);
+ ASSERT_TRUE(e->Is<ast::SwitchStatement>());
+
+ ASSERT_EQ(e->body.Length(), 1u);
+ ASSERT_TRUE(e->body[0]->ContainsDefault());
}
TEST_F(ParserImplTest, SwitchStmt_WithParens) {
@@ -123,7 +138,7 @@
EXPECT_TRUE(e.errored);
EXPECT_EQ(e.value, nullptr);
EXPECT_TRUE(p->has_error());
- EXPECT_EQ(p->error(), "2:7: unable to parse case selectors");
+ EXPECT_EQ(p->error(), "2:7: expected case selector expression or `default`");
}
} // namespace
diff --git a/src/tint/reader/wgsl/parser_impl_variable_stmt_test.cc b/src/tint/reader/wgsl/parser_impl_variable_stmt_test.cc
index 3e60acd..703eb57 100644
--- a/src/tint/reader/wgsl/parser_impl_variable_stmt_test.cc
+++ b/src/tint/reader/wgsl/parser_impl_variable_stmt_test.cc
@@ -33,7 +33,7 @@
ASSERT_EQ(e->source.range.end.line, 1u);
ASSERT_EQ(e->source.range.end.column, 6u);
- EXPECT_EQ(e->variable->constructor, nullptr);
+ EXPECT_EQ(e->variable->initializer, nullptr);
}
TEST_F(ParserImplTest, VariableStmt_VariableDecl_WithInit) {
@@ -52,11 +52,11 @@
ASSERT_EQ(e->source.range.end.line, 1u);
ASSERT_EQ(e->source.range.end.column, 6u);
- ASSERT_NE(e->variable->constructor, nullptr);
- EXPECT_TRUE(e->variable->constructor->Is<ast::LiteralExpression>());
+ ASSERT_NE(e->variable->initializer, nullptr);
+ EXPECT_TRUE(e->variable->initializer->Is<ast::LiteralExpression>());
}
-TEST_F(ParserImplTest, VariableStmt_VariableDecl_ConstructorInvalid) {
+TEST_F(ParserImplTest, VariableStmt_VariableDecl_InitializerInvalid) {
auto p = parser("var a : i32 = if(a) {}");
auto e = p->variable_statement();
EXPECT_FALSE(e.matched);
@@ -77,8 +77,8 @@
ASSERT_NE(e->variable, nullptr);
EXPECT_EQ(e->variable->symbol, p->builder().Symbols().Get("a"));
- ASSERT_NE(e->variable->constructor, nullptr);
- auto* call = e->variable->constructor->As<ast::CallExpression>();
+ ASSERT_NE(e->variable->initializer, nullptr);
+ auto* call = e->variable->initializer->As<ast::CallExpression>();
ASSERT_NE(call, nullptr);
EXPECT_EQ(call->target.name, nullptr);
EXPECT_NE(call->target.type, nullptr);
@@ -95,8 +95,8 @@
ASSERT_NE(e->variable, nullptr);
EXPECT_EQ(e->variable->symbol, p->builder().Symbols().Get("a"));
- ASSERT_NE(e->variable->constructor, nullptr);
- auto* call = e->variable->constructor->As<ast::CallExpression>();
+ ASSERT_NE(e->variable->initializer, nullptr);
+ auto* call = e->variable->initializer->As<ast::CallExpression>();
ASSERT_NE(call, nullptr);
EXPECT_EQ(call->target.name, nullptr);
EXPECT_NE(call->target.type, nullptr);
@@ -113,8 +113,8 @@
ASSERT_NE(e->variable, nullptr);
EXPECT_EQ(e->variable->symbol, p->builder().Symbols().Get("a"));
- ASSERT_NE(e->variable->constructor, nullptr);
- auto* call = e->variable->constructor->As<ast::CallExpression>();
+ ASSERT_NE(e->variable->initializer, nullptr);
+ auto* call = e->variable->initializer->As<ast::CallExpression>();
ASSERT_NE(call, nullptr);
EXPECT_EQ(call->target.name, nullptr);
EXPECT_NE(call->target.type, nullptr);
@@ -131,8 +131,8 @@
ASSERT_NE(e->variable, nullptr);
EXPECT_EQ(e->variable->symbol, p->builder().Symbols().Get("a"));
- ASSERT_NE(e->variable->constructor, nullptr);
- auto* call = e->variable->constructor->As<ast::CallExpression>();
+ ASSERT_NE(e->variable->initializer, nullptr);
+ auto* call = e->variable->initializer->As<ast::CallExpression>();
ASSERT_NE(call, nullptr);
EXPECT_EQ(call->target.name, nullptr);
EXPECT_NE(call->target.type, nullptr);
@@ -164,10 +164,10 @@
ASSERT_TRUE(e->Is<ast::VariableDeclStatement>());
auto* decl = e->As<ast::VariableDeclStatement>();
- ASSERT_NE(decl->variable->constructor, nullptr);
+ ASSERT_NE(decl->variable->initializer, nullptr);
- ASSERT_TRUE(decl->variable->constructor->Is<ast::BinaryExpression>());
- auto* expr = decl->variable->constructor->As<ast::BinaryExpression>();
+ ASSERT_TRUE(decl->variable->initializer->Is<ast::BinaryExpression>());
+ auto* expr = decl->variable->initializer->As<ast::BinaryExpression>();
EXPECT_EQ(expr->op, ast::BinaryOp::kAdd);
ASSERT_TRUE(expr->lhs->Is<ast::IdentifierExpression>());
@@ -189,7 +189,7 @@
EXPECT_EQ(p->error(), "1:13: expected '=' for 'let' declaration");
}
-TEST_F(ParserImplTest, VariableStmt_Let_MissingConstructor) {
+TEST_F(ParserImplTest, VariableStmt_Let_MissingInitializer) {
auto p = parser("let a : i32 =");
auto e = p->variable_statement();
EXPECT_FALSE(e.matched);
@@ -199,7 +199,7 @@
EXPECT_EQ(p->error(), "1:14: missing initializer for 'let' declaration");
}
-TEST_F(ParserImplTest, VariableStmt_Let_InvalidConstructor) {
+TEST_F(ParserImplTest, VariableStmt_Let_InvalidInitializer) {
auto p = parser("let a : i32 = if (a) {}");
auto e = p->variable_statement();
EXPECT_FALSE(e.matched);
diff --git a/src/tint/reader/wgsl/parser_impl_while_stmt_test.cc b/src/tint/reader/wgsl/parser_impl_while_stmt_test.cc
index 3b83ecc..e516267 100644
--- a/src/tint/reader/wgsl/parser_impl_while_stmt_test.cc
+++ b/src/tint/reader/wgsl/parser_impl_while_stmt_test.cc
@@ -94,7 +94,7 @@
// Test a while loop with missing left parenthesis is invalid.
TEST_F(WhileStmtErrorTest, MissingLeftParen) {
std::string while_str = "while bool) { }";
- std::string error_str = "1:11: expected '(' for type constructor";
+ std::string error_str = "1:11: expected '(' for type initializer";
TestWhileWithError(while_str, error_str);
}
diff --git a/src/tint/reader/wgsl/token.h b/src/tint/reader/wgsl/token.h
index 4cf9aad..3f92f48 100644
--- a/src/tint/reader/wgsl/token.h
+++ b/src/tint/reader/wgsl/token.h
@@ -379,8 +379,35 @@
/// @returns true if the token can be split during parse into component tokens
bool IsSplittable() const {
- return Is(Token::Type::kShiftRight) || Is(Token::Type::kGreaterThanEqual) ||
- Is(Token::Type::kAndAnd) || Is(Token::Type::kMinusMinus);
+ return Is(Type::kShiftRight) || Is(Type::kGreaterThanEqual) || Is(Type::kAndAnd) ||
+ Is(Type::kMinusMinus);
+ }
+
+ /// @returns true if the token is a binary operator
+ bool IsBinaryOperator() const {
+ switch (type_) {
+ case Type::kAnd:
+ case Type::kAndAnd:
+ case Type::kEqualEqual:
+ case Type::kForwardSlash:
+ case Type::kGreaterThan:
+ case Type::kGreaterThanEqual:
+ case Type::kLessThan:
+ case Type::kLessThanEqual:
+ case Type::kMinus:
+ case Type::kMod:
+ case Type::kNotEqual:
+ case Type::kOr:
+ case Type::kOrOr:
+ case Type::kPlus:
+ case Type::kShiftLeft:
+ case Type::kShiftRight:
+ case Type::kStar:
+ case Type::kXor:
+ return true;
+ default:
+ return false;
+ }
}
/// @returns the source information for this token
diff --git a/src/tint/resolver/builtin_validation_test.cc b/src/tint/resolver/builtin_validation_test.cc
index e5ad2e2..3cea975 100644
--- a/src/tint/resolver/builtin_validation_test.cc
+++ b/src/tint/resolver/builtin_validation_test.cc
@@ -257,7 +257,7 @@
auto*& arg_to_replace = (param.position == Position::kFirst) ? args.Front() : args.Back();
// BuildTextureVariable() uses a Literal for scalars, and a CallExpression for
- // a vector constructor.
+ // a vector initializer.
bool is_vector = arg_to_replace->Is<ast::CallExpression>();
// Make the expression to be replaced, reachable. This keeps the resolver happy.
@@ -310,7 +310,7 @@
auto*& arg_to_replace = (param.position == Position::kFirst) ? args.Front() : args.Back();
// BuildTextureVariable() uses a Literal for scalars, and a CallExpression for
- // a vector constructor.
+ // a vector initializer.
bool is_vector = arg_to_replace->Is<ast::CallExpression>();
// Make the expression to be replaced, reachable. This keeps the resolver happy.
diff --git a/src/tint/resolver/compound_statement_test.cc b/src/tint/resolver/compound_statement_test.cc
index 0a96ced..b5a5ba9 100644
--- a/src/tint/resolver/compound_statement_test.cc
+++ b/src/tint/resolver/compound_statement_test.cc
@@ -390,8 +390,8 @@
auto* stmt_a = Ignore(1_i);
auto* stmt_b = Ignore(1_i);
auto* stmt_c = Ignore(1_i);
- auto* swi = Switch(expr, Case(Expr(1_i), Block(stmt_a)), Case(Expr(2_i), Block(stmt_b)),
- DefaultCase(Block(stmt_c)));
+ auto* swi = Switch(expr, Case(CaseSelector(1_i), Block(stmt_a)),
+ Case(CaseSelector(2_i), Block(stmt_b)), DefaultCase(Block(stmt_c)));
WrapInFunction(swi);
ASSERT_TRUE(r()->Resolve()) << r()->error();
diff --git a/src/tint/resolver/const_eval.cc b/src/tint/resolver/const_eval.cc
index d9fde25..0e0678a 100644
--- a/src/tint/resolver/const_eval.cc
+++ b/src/tint/resolver/const_eval.cc
@@ -33,7 +33,7 @@
#include "src/tint/sem/i32.h"
#include "src/tint/sem/matrix.h"
#include "src/tint/sem/member_accessor_expression.h"
-#include "src/tint/sem/type_constructor.h"
+#include "src/tint/sem/type_initializer.h"
#include "src/tint/sem/u32.h"
#include "src/tint/sem/vector.h"
#include "src/tint/utils/compiler_macros.h"
@@ -286,7 +286,7 @@
};
/// Splat holds a single Constant value, duplicated as all children.
-/// Splat is used for zero-initializers, 'splat' constructors, or constructors where each element is
+/// Splat is used for zero-initializers, 'splat' initializers, or initializers where each element is
/// identical. Splat may be of a vector, matrix or array type.
/// Splat implements the Constant interface.
struct Splat : ImplConstant {
@@ -815,18 +815,18 @@
});
}
-ConstEval::Result ConstEval::ArrayOrStructCtor(const sem::Type* ty,
+ConstEval::Result ConstEval::ArrayOrStructInit(const sem::Type* ty,
utils::VectorRef<const sem::Expression*> args) {
if (args.IsEmpty()) {
return ZeroValue(builder, ty);
}
if (args.Length() == 1 && args[0]->Type() == ty) {
- // Identity constructor.
+ // Identity initializer.
return args[0]->ConstantValue();
}
- // Multiple arguments. Must be a type constructor.
+ // Multiple arguments. Must be a type initializer.
utils::Vector<const sem::Constant*, 4> els;
els.Reserve(args.Length());
for (auto* arg : args) {
@@ -872,13 +872,13 @@
return nullptr;
}
-ConstEval::Result ConstEval::VecCtorS(const sem::Type* ty,
+ConstEval::Result ConstEval::VecInitS(const sem::Type* ty,
utils::VectorRef<const sem::Constant*> args,
const Source&) {
return CreateComposite(builder, ty, args);
}
-ConstEval::Result ConstEval::VecCtorM(const sem::Type* ty,
+ConstEval::Result ConstEval::VecInitM(const sem::Type* ty,
utils::VectorRef<const sem::Constant*> args,
const Source&) {
utils::Vector<const sem::Constant*, 4> els;
@@ -904,7 +904,7 @@
return CreateComposite(builder, ty, std::move(els));
}
-ConstEval::Result ConstEval::MatCtorS(const sem::Type* ty,
+ConstEval::Result ConstEval::MatInitS(const sem::Type* ty,
utils::VectorRef<const sem::Constant*> args,
const Source&) {
auto* m = static_cast<const sem::Matrix*>(ty);
@@ -921,7 +921,7 @@
return CreateComposite(builder, ty, std::move(els));
}
-ConstEval::Result ConstEval::MatCtorV(const sem::Type* ty,
+ConstEval::Result ConstEval::MatInitV(const sem::Type* ty,
utils::VectorRef<const sem::Constant*> args,
const Source&) {
return CreateComposite(builder, ty, args);
@@ -1474,6 +1474,10 @@
AddError(OverflowErrorMessage(e1, "<<", e2), source);
return nullptr;
}
+
+ // It's UB in C++ to shift by greater or equal to the bit width (even if the lhs
+ // is 0), so we make sure to avoid this by setting the shift value to 0.
+ e2 = 0;
}
} else {
if (static_cast<size_t>(e2) >= bit_width) {
@@ -1487,13 +1491,25 @@
return nullptr;
}
- // The e2 + 1 most significant bits of e1 must have the same bit value, otherwise
- // sign change (overflow) would occur.
- size_t must_match_msb = e2u + 1;
- UT mask = ~UT{0} << (bit_width - must_match_msb);
- if ((e1u & mask) != 0 && (e1u & mask) != mask) {
- AddError("shift left operation results in sign change", source);
- return nullptr;
+ if constexpr (std::is_signed_v<T>) {
+ // If T is a signed integer type, and the e2+1 most significant bits of e1 do
+ // not have the same bit value, then error.
+ size_t must_match_msb = e2u + 1;
+ UT mask = ~UT{0} << (bit_width - must_match_msb);
+ if ((e1u & mask) != 0 && (e1u & mask) != mask) {
+ AddError("shift left operation results in sign change", source);
+ return nullptr;
+ }
+ } else {
+ // If T is an unsigned integer type, and any of the e2 most significant bits of
+ // e1 are 1, then error.
+ if (e2u > 0) {
+ size_t must_be_zero_msb = e2u;
+ UT mask = ~UT{0} << (bit_width - must_be_zero_msb);
+ if ((e1u & mask) != 0) {
+ AddError(OverflowErrorMessage(e1, "<<", e2), source);
+ }
+ }
}
}
diff --git a/src/tint/resolver/const_eval.h b/src/tint/resolver/const_eval.h
index 065cca5..18f1374 100644
--- a/src/tint/resolver/const_eval.h
+++ b/src/tint/resolver/const_eval.h
@@ -68,10 +68,10 @@
// Constant value evaluation methods, to be called directly from Resolver
////////////////////////////////////////////////////////////////////////////////////////////////
- /// @param ty the target type - must be an array or constructor
+ /// @param ty the target type - must be an array or initializer
/// @param args the input arguments
/// @return the constructed value, or null if the value cannot be calculated
- Result ArrayOrStructCtor(const sem::Type* ty, utils::VectorRef<const sem::Expression*> args);
+ Result ArrayOrStructInit(const sem::Type* ty, utils::VectorRef<const sem::Expression*> args);
/// @param ty the target type
/// @param expr the input expression
@@ -122,7 +122,7 @@
utils::VectorRef<const sem::Constant*> args,
const Source& source);
- /// Zero value type constructor
+ /// Zero value type initializer
/// @param ty the result type
/// @param args the input arguments (no arguments provided)
/// @param source the source location of the conversion
@@ -131,7 +131,7 @@
utils::VectorRef<const sem::Constant*> args,
const Source& source);
- /// Identity value type constructor
+ /// Identity value type initializer
/// @param ty the result type
/// @param args the input arguments
/// @param source the source location of the conversion
@@ -140,7 +140,7 @@
utils::VectorRef<const sem::Constant*> args,
const Source& source);
- /// Vector splat constructor
+ /// Vector splat initializer
/// @param ty the vector type
/// @param args the input arguments
/// @param source the source location of the conversion
@@ -149,39 +149,39 @@
utils::VectorRef<const sem::Constant*> args,
const Source& source);
- /// Vector constructor using scalars
+ /// Vector initializer using scalars
/// @param ty the vector type
/// @param args the input arguments
/// @param source the source location of the conversion
/// @return the constructed value, or null if the value cannot be calculated
- Result VecCtorS(const sem::Type* ty,
+ Result VecInitS(const sem::Type* ty,
utils::VectorRef<const sem::Constant*> args,
const Source& source);
- /// Vector constructor using a mix of scalars and smaller vectors
+ /// Vector initializer using a mix of scalars and smaller vectors
/// @param ty the vector type
/// @param args the input arguments
/// @param source the source location of the conversion
/// @return the constructed value, or null if the value cannot be calculated
- Result VecCtorM(const sem::Type* ty,
+ Result VecInitM(const sem::Type* ty,
utils::VectorRef<const sem::Constant*> args,
const Source& source);
- /// Matrix constructor using scalar values
+ /// Matrix initializer using scalar values
/// @param ty the matrix type
/// @param args the input arguments
/// @param source the source location of the conversion
/// @return the constructed value, or null if the value cannot be calculated
- Result MatCtorS(const sem::Type* ty,
+ Result MatInitS(const sem::Type* ty,
utils::VectorRef<const sem::Constant*> args,
const Source& source);
- /// Matrix constructor using column vectors
+ /// Matrix initializer using column vectors
/// @param ty the matrix type
/// @param args the input arguments
/// @param source the source location of the conversion
/// @return the constructed value, or null if the value cannot be calculated
- Result MatCtorV(const sem::Type* ty,
+ Result MatInitV(const sem::Type* ty,
utils::VectorRef<const sem::Constant*> args,
const Source& source);
diff --git a/src/tint/resolver/const_eval_binary_op_test.cc b/src/tint/resolver/const_eval_binary_op_test.cc
index 5f43499..b45401e 100644
--- a/src/tint/resolver/const_eval_binary_op_test.cc
+++ b/src/tint/resolver/const_eval_binary_op_test.cc
@@ -30,6 +30,11 @@
bool overflow;
};
+struct ErrorCase {
+ Types lhs;
+ Types rhs;
+};
+
/// Creates a Case with Values of any type
template <typename T, typename U, typename V>
Case C(Value<T> lhs, Value<U> rhs, Value<V> expected, bool overflow = false) {
@@ -42,12 +47,19 @@
return Case{Val(lhs), Val(rhs), Val(expected), overflow};
}
+/// Prints Case to ostream
static std::ostream& operator<<(std::ostream& o, const Case& c) {
o << "lhs: " << c.lhs << ", rhs: " << c.rhs << ", expected: " << c.expected
<< ", overflow: " << c.overflow;
return o;
}
+/// Prints ErrorCase to ostream
+std::ostream& operator<<(std::ostream& o, const ErrorCase& c) {
+ o << c.lhs << ", " << c.rhs;
+ return o;
+}
+
using ResolverConstEvalBinaryOpTest = ResolverTestWithParam<std::tuple<ast::BinaryOp, Case>>;
TEST_P(ResolverConstEvalBinaryOpTest, Test) {
Enable(ast::Extension::kF16);
@@ -598,20 +610,17 @@
// Shift type is u32 for non-abstract
using ST = std::conditional_t<IsAbstract<T>, T, u32>;
using B = BitValues<T>;
- return {
- C(T{0b1010}, ST{0}, T{0b0000'0000'1010}), //
- C(T{0b1010}, ST{1}, T{0b0000'0001'0100}), //
- C(T{0b1010}, ST{2}, T{0b0000'0010'1000}), //
- C(T{0b1010}, ST{3}, T{0b0000'0101'0000}), //
- C(T{0b1010}, ST{4}, T{0b0000'1010'0000}), //
- C(T{0b1010}, ST{5}, T{0b0001'0100'0000}), //
- C(T{0b1010}, ST{6}, T{0b0010'1000'0000}), //
- C(T{0b1010}, ST{7}, T{0b0101'0000'0000}), //
- C(T{0b1010}, ST{8}, T{0b1010'0000'0000}), //
- C(B::LeftMost, ST{0}, B::LeftMost), //
- C(B::TwoLeftMost, ST{1}, B::LeftMost), // No overflow
- C(B::All, ST{1}, B::AllButRightMost), // No overflow
- C(B::All, ST{B::NumBits - 1}, B::LeftMost), // No overflow
+ auto r = std::vector<Case>{
+ C(T{0b1010}, ST{0}, T{0b0000'0000'1010}), //
+ C(T{0b1010}, ST{1}, T{0b0000'0001'0100}), //
+ C(T{0b1010}, ST{2}, T{0b0000'0010'1000}), //
+ C(T{0b1010}, ST{3}, T{0b0000'0101'0000}), //
+ C(T{0b1010}, ST{4}, T{0b0000'1010'0000}), //
+ C(T{0b1010}, ST{5}, T{0b0001'0100'0000}), //
+ C(T{0b1010}, ST{6}, T{0b0010'1000'0000}), //
+ C(T{0b1010}, ST{7}, T{0b0101'0000'0000}), //
+ C(T{0b1010}, ST{8}, T{0b1010'0000'0000}), //
+ C(B::LeftMost, ST{0}, B::LeftMost), //
C(Vec(T{0b1010}, T{0b1010}), //
Vec(ST{0}, ST{1}), //
@@ -626,6 +635,50 @@
Vec(ST{6}, ST{7}, ST{8}), //
Vec(T{0b0010'1000'0000}, T{0b0101'0000'0000}, T{0b1010'0000'0000})), //
};
+
+ // Only abstract 0 can be shifted left as much as we like. For concrete 0 (and any number), it
+ // cannot be shifted equal or more than the number of bits of the lhs (see
+ // ResolverConstEvalShiftLeftConcreteGeqBitWidthError for negative tests)
+ ConcatIntoIf<IsAbstract<T>>( //
+ r, std::vector<Case>{
+ C(T{0}, ST{64}, T{0}),
+ C(T{0}, ST{65}, T{0}),
+ C(T{0}, ST{65}, T{0}),
+ C(T{0}, ST{10000}, T{0}),
+ C(T{0}, T::Highest(), T{0}),
+ C(Negate(T{0}), ST{64}, Negate(T{0})),
+ C(Negate(T{0}), ST{65}, Negate(T{0})),
+ C(Negate(T{0}), ST{65}, Negate(T{0})),
+ C(Negate(T{0}), ST{10000}, Negate(T{0})),
+ C(Negate(T{0}), T::Highest(), Negate(T{0})),
+ });
+
+ // Cases that are fine for signed values (no sign change), but would overflow unsigned values.
+ // See ResolverConstEvalBinaryOpTest_Overflow for negative tests.
+ ConcatIntoIf<IsSignedIntegral<T>>( //
+ r, std::vector<Case>{
+ C(B::TwoLeftMost, ST{1}, B::LeftMost), //
+ C(B::All, ST{1}, B::AllButRightMost), //
+ C(B::All, ST{B::NumBits - 1}, B::LeftMost) //
+ });
+
+ // Cases that are fine for unsigned values, but would overflow (sign change) signed
+ // values. See ShiftLeftSignChangeErrorCases() for negative tests.
+ ConcatIntoIf<IsUnsignedIntegral<T>>( //
+ r, std::vector<Case>{
+ C(T{0b0001}, ST{B::NumBits - 1}, B::Lsh(0b0001, B::NumBits - 1)),
+ C(T{0b0010}, ST{B::NumBits - 2}, B::Lsh(0b0010, B::NumBits - 2)),
+ C(T{0b0100}, ST{B::NumBits - 3}, B::Lsh(0b0100, B::NumBits - 3)),
+ C(T{0b1000}, ST{B::NumBits - 4}, B::Lsh(0b1000, B::NumBits - 4)),
+
+ C(T{0b0011}, ST{B::NumBits - 2}, B::Lsh(0b0011, B::NumBits - 2)),
+ C(T{0b0110}, ST{B::NumBits - 3}, B::Lsh(0b0110, B::NumBits - 3)),
+ C(T{0b1100}, ST{B::NumBits - 4}, B::Lsh(0b1100, B::NumBits - 4)),
+
+ C(B::AllButLeftMost, ST{1}, B::AllButRightMost),
+ });
+
+ return r;
}
INSTANTIATE_TEST_SUITE_P(ShiftLeft,
ResolverConstEvalBinaryOpTest,
@@ -764,7 +817,21 @@
Val(AInt{BitValues<AInt>::NumBits + 1})}, //
OverflowCase{ast::BinaryOp::kShiftLeft, //
Val(AInt{BitValues<AInt>::AllButLeftMost}), //
- Val(AInt{BitValues<AInt>::NumBits + 1000})}
+ Val(AInt{BitValues<AInt>::NumBits + 1000})},
+
+ // ShiftLeft of u32s that overflow (non-zero bits get shifted out)
+ OverflowCase{ast::BinaryOp::kShiftLeft, Val(0b00010_u), Val(31_u)},
+ OverflowCase{ast::BinaryOp::kShiftLeft, Val(0b00100_u), Val(30_u)},
+ OverflowCase{ast::BinaryOp::kShiftLeft, Val(0b01000_u), Val(29_u)},
+ OverflowCase{ast::BinaryOp::kShiftLeft, Val(0b10000_u), Val(28_u)},
+ // ...
+ OverflowCase{ast::BinaryOp::kShiftLeft, Val(u32(1u << 28)), Val(4_u)},
+ OverflowCase{ast::BinaryOp::kShiftLeft, Val(u32(1u << 29)), Val(3_u)},
+ OverflowCase{ast::BinaryOp::kShiftLeft, Val(u32(1u << 30)), Val(2_u)},
+ OverflowCase{ast::BinaryOp::kShiftLeft, Val(u32(1u << 31)), Val(1_u)},
+ // And some more
+ OverflowCase{ast::BinaryOp::kShiftLeft, Val(BitValues<u32>::All), Val(1_u)},
+ OverflowCase{ast::BinaryOp::kShiftLeft, Val(BitValues<u32>::AllButLeftMost), Val(2_u)}
));
@@ -837,11 +904,10 @@
}
// i32/u32 left shift by >= 32 -> error
-using ResolverConstEvalShiftLeftConcreteGeqBitWidthError =
- ResolverTestWithParam<std::tuple<Types, Types>>;
+using ResolverConstEvalShiftLeftConcreteGeqBitWidthError = ResolverTestWithParam<ErrorCase>;
TEST_P(ResolverConstEvalShiftLeftConcreteGeqBitWidthError, Test) {
- auto* lhs_expr = ToValueBase(std::get<0>(GetParam()))->Expr(*this);
- auto* rhs_expr = ToValueBase(std::get<1>(GetParam()))->Expr(*this);
+ auto* lhs_expr = ToValueBase(GetParam().lhs)->Expr(*this);
+ auto* rhs_expr = ToValueBase(GetParam().rhs)->Expr(*this);
GlobalConst("c", Shl(Source{{1, 1}}, lhs_expr, rhs_expr));
EXPECT_FALSE(r()->Resolve());
EXPECT_EQ(
@@ -850,28 +916,50 @@
}
INSTANTIATE_TEST_SUITE_P(Test,
ResolverConstEvalShiftLeftConcreteGeqBitWidthError,
- testing::Values( //
- std::make_tuple(Val(1_i), Val(32_u)), //
- std::make_tuple(Val(1_i), Val(33_u)), //
- std::make_tuple(Val(1_i), Val(34_u)), //
- std::make_tuple(Val(1_i), Val(99999999_u)), //
- std::make_tuple(Val(1_u), Val(32_u)), //
- std::make_tuple(Val(1_u), Val(33_u)), //
- std::make_tuple(Val(1_u), Val(34_u)), //
- std::make_tuple(Val(1_u), Val(99999999_u)) //
+ testing::Values( //
+ ErrorCase{Val(0_u), Val(32_u)}, //
+ ErrorCase{Val(0_u), Val(33_u)}, //
+ ErrorCase{Val(0_u), Val(34_u)}, //
+ ErrorCase{Val(0_u), Val(10000_u)}, //
+ ErrorCase{Val(0_u), Val(u32::Highest())}, //
+ ErrorCase{Val(0_i), Val(32_u)}, //
+ ErrorCase{Val(0_i), Val(33_u)}, //
+ ErrorCase{Val(0_i), Val(34_u)}, //
+ ErrorCase{Val(0_i), Val(10000_u)}, //
+ ErrorCase{Val(0_i), Val(u32::Highest())}, //
+ ErrorCase{Val(Negate(0_u)), Val(32_u)}, //
+ ErrorCase{Val(Negate(0_u)), Val(33_u)}, //
+ ErrorCase{Val(Negate(0_u)), Val(34_u)}, //
+ ErrorCase{Val(Negate(0_u)), Val(10000_u)}, //
+ ErrorCase{Val(Negate(0_u)), Val(u32::Highest())}, //
+ ErrorCase{Val(Negate(0_i)), Val(32_u)}, //
+ ErrorCase{Val(Negate(0_i)), Val(33_u)}, //
+ ErrorCase{Val(Negate(0_i)), Val(34_u)}, //
+ ErrorCase{Val(Negate(0_i)), Val(10000_u)}, //
+ ErrorCase{Val(Negate(0_i)), Val(u32::Highest())}, //
+ ErrorCase{Val(1_i), Val(32_u)}, //
+ ErrorCase{Val(1_i), Val(33_u)}, //
+ ErrorCase{Val(1_i), Val(34_u)}, //
+ ErrorCase{Val(1_i), Val(10000_u)}, //
+ ErrorCase{Val(1_i), Val(u32::Highest())}, //
+ ErrorCase{Val(1_u), Val(32_u)}, //
+ ErrorCase{Val(1_u), Val(33_u)}, //
+ ErrorCase{Val(1_u), Val(34_u)}, //
+ ErrorCase{Val(1_u), Val(10000_u)}, //
+ ErrorCase{Val(1_u), Val(u32::Highest())} //
));
// AInt left shift results in sign change error
-using ResolverConstEvalShiftLeftSignChangeError = ResolverTestWithParam<std::tuple<Types, Types>>;
+using ResolverConstEvalShiftLeftSignChangeError = ResolverTestWithParam<ErrorCase>;
TEST_P(ResolverConstEvalShiftLeftSignChangeError, Test) {
- auto* lhs_expr = ToValueBase(std::get<0>(GetParam()))->Expr(*this);
- auto* rhs_expr = ToValueBase(std::get<1>(GetParam()))->Expr(*this);
+ auto* lhs_expr = ToValueBase(GetParam().lhs)->Expr(*this);
+ auto* rhs_expr = ToValueBase(GetParam().rhs)->Expr(*this);
GlobalConst("c", Shl(Source{{1, 1}}, lhs_expr, rhs_expr));
EXPECT_FALSE(r()->Resolve());
EXPECT_EQ(r()->error(), "1:1 error: shift left operation results in sign change");
}
template <typename T>
-std::vector<std::tuple<Types, Types>> ShiftLeftSignChangeErrorCases() {
+std::vector<ErrorCase> ShiftLeftSignChangeErrorCases() {
// Shift type is u32 for non-abstract
using ST = std::conditional_t<IsAbstract<T>, T, u32>;
using B = BitValues<T>;
@@ -893,8 +981,7 @@
ResolverConstEvalShiftLeftSignChangeError,
testing::ValuesIn(Concat( //
ShiftLeftSignChangeErrorCases<AInt>(),
- ShiftLeftSignChangeErrorCases<i32>(),
- ShiftLeftSignChangeErrorCases<u32>())));
+ ShiftLeftSignChangeErrorCases<i32>())));
} // namespace
} // namespace tint::resolver
diff --git a/src/tint/resolver/const_eval_test.h b/src/tint/resolver/const_eval_test.h
index 2761daf..1915c05 100644
--- a/src/tint/resolver/const_eval_test.h
+++ b/src/tint/resolver/const_eval_test.h
@@ -281,7 +281,7 @@
/// @returns the shifted value
template <typename U, typename V>
static constexpr NumberT Lsh(U val, V shiftBy) {
- return NumberT{T{val} << T{shiftBy}};
+ return NumberT{static_cast<T>(val) << static_cast<T>(shiftBy)};
}
};
diff --git a/src/tint/resolver/control_block_validation_test.cc b/src/tint/resolver/control_block_validation_test.cc
index 9b0d289..8cbf506 100644
--- a/src/tint/resolver/control_block_validation_test.cc
+++ b/src/tint/resolver/control_block_validation_test.cc
@@ -25,7 +25,7 @@
class ResolverControlBlockValidationTest : public TestHelper, public testing::Test {};
-TEST_F(ResolverControlBlockValidationTest, SwitchSelectorExpressionNoneIntegerType_Fail) {
+TEST_F(ResolverControlBlockValidationTest, SwitchSelectorExpression_F32) {
// var a : f32 = 3.14;
// switch (a) {
// default: {}
@@ -43,6 +43,24 @@
"scalar integer type");
}
+TEST_F(ResolverControlBlockValidationTest, SwitchSelectorExpression_bool) {
+ // var a : bool = true;
+ // switch (a) {
+ // default: {}
+ // }
+ auto* var = Var("a", ty.bool_(), Expr(false));
+
+ auto* block = Block(Decl(var), Switch(Expr(Source{{12, 34}}, "a"), //
+ DefaultCase()));
+
+ WrapInFunction(block);
+
+ EXPECT_FALSE(r()->Resolve());
+ EXPECT_EQ(r()->error(),
+ "12:34 error: switch statement selector expression must be of a "
+ "scalar integer type");
+}
+
TEST_F(ResolverControlBlockValidationTest, SwitchWithoutDefault_Fail) {
// var a : i32 = 2;
// switch (a) {
@@ -52,7 +70,7 @@
auto* block = Block(Decl(var), //
Switch(Source{{12, 34}}, "a", //
- Case(Expr(1_i))));
+ Case(CaseSelector(1_i))));
WrapInFunction(block);
@@ -69,16 +87,79 @@
// }
auto* var = Var("a", ty.i32(), Expr(2_i));
- auto* block = Block(Decl(var), //
- Switch("a", //
- DefaultCase(), //
- Case(Expr(1_i)), //
+ auto* block = Block(Decl(var), //
+ Switch("a", //
+ DefaultCase(Source{{9, 2}}), //
+ Case(CaseSelector(1_i)), //
DefaultCase(Source{{12, 34}})));
WrapInFunction(block);
EXPECT_FALSE(r()->Resolve());
- EXPECT_EQ(r()->error(), "12:34 error: switch statement must have exactly one default clause");
+ EXPECT_EQ(r()->error(), R"(12:34 error: switch statement must have exactly one default clause
+9:2 note: previous default case)");
+}
+
+TEST_F(ResolverControlBlockValidationTest, SwitchWithTwoDefault_OneInCase_Fail) {
+ // var a : i32 = 2;
+ // switch (a) {
+ // case 1, default: {}
+ // default: {}
+ // }
+ auto* var = Var("a", ty.i32(), Expr(2_i));
+
+ auto* block = Block(
+ Decl(var), //
+ Switch("a", //
+ Case(utils::Vector{CaseSelector(1_i), DefaultCaseSelector(Source{{9, 2}})}), //
+ DefaultCase(Source{{12, 34}})));
+
+ WrapInFunction(block);
+
+ EXPECT_FALSE(r()->Resolve());
+ EXPECT_EQ(r()->error(), R"(12:34 error: switch statement must have exactly one default clause
+9:2 note: previous default case)");
+}
+
+TEST_F(ResolverControlBlockValidationTest, SwitchWithTwoDefault_SameCase) {
+ // var a : i32 = 2;
+ // switch (a) {
+ // case default, 1, default: {}
+ // }
+ auto* var = Var("a", ty.i32(), Expr(2_i));
+
+ auto* block =
+ Block(Decl(var), //
+ Switch("a", //
+ Case(utils::Vector{DefaultCaseSelector(Source{{9, 2}}), CaseSelector(1_i),
+ DefaultCaseSelector(Source{{12, 34}})})));
+
+ WrapInFunction(block);
+
+ EXPECT_FALSE(r()->Resolve());
+ EXPECT_EQ(r()->error(), R"(12:34 error: switch statement must have exactly one default clause
+9:2 note: previous default case)");
+}
+
+TEST_F(ResolverControlBlockValidationTest, SwitchWithTwoDefault_DifferentMultiCase) {
+ // var a : i32 = 2;
+ // switch (a) {
+ // case 1, default: {}
+ // case default, 2: {}
+ // }
+ auto* var = Var("a", ty.i32(), Expr(2_i));
+
+ auto* block = Block(
+ Decl(var), //
+ Switch("a", //
+ Case(utils::Vector{CaseSelector(1_i), DefaultCaseSelector(Source{{9, 2}})}),
+ Case(utils::Vector{DefaultCaseSelector(Source{{12, 34}}), CaseSelector(2_i)})));
+
+ WrapInFunction(block);
+
+ EXPECT_FALSE(r()->Resolve());
+ EXPECT_EQ(r()->error(), R"(12:34 error: switch statement must have exactly one default clause
+9:2 note: previous default case)");
}
TEST_F(ResolverControlBlockValidationTest, UnreachableCode_Loop_continue) {
@@ -169,9 +250,9 @@
auto* decl_z = Decl(Var("z", ty.i32()));
auto* brk = Break();
auto* assign_z = Assign(Source{{12, 34}}, "z", 1_i);
- WrapInFunction( //
- Block(Switch(1_i, //
- Case(Expr(1_i), Block(decl_z, brk, assign_z)), //
+ WrapInFunction( //
+ Block(Switch(1_i, //
+ Case(CaseSelector(1_i), Block(decl_z, brk, assign_z)), //
DefaultCase())));
ASSERT_TRUE(r()->Resolve()) << r()->error();
@@ -192,11 +273,11 @@
auto* decl_z = Decl(Var("z", ty.i32()));
auto* brk = Break();
auto* assign_z = Assign(Source{{12, 34}}, "z", 1_i);
- WrapInFunction(
- Loop(Block(Switch(1_i, //
- Case(Expr(1_i), Block(decl_z, Block(Block(Block(brk))), assign_z)),
- DefaultCase()), //
- Break())));
+ WrapInFunction(Loop(
+ Block(Switch(1_i, //
+ Case(CaseSelector(1_i), Block(decl_z, Block(Block(Block(brk))), assign_z)),
+ DefaultCase()), //
+ Break())));
ASSERT_TRUE(r()->Resolve()) << r()->error();
EXPECT_EQ(r()->error(), "12:34 warning: code is unreachable");
@@ -213,8 +294,8 @@
// }
auto* var = Var("a", ty.i32(), Expr(2_i));
- auto* block = Block(Decl(var), Switch("a", //
- Case(Source{{12, 34}}, utils::Vector{Expr(1_u)}), //
+ auto* block = Block(Decl(var), Switch("a", //
+ Case(CaseSelector(Source{{12, 34}}, 1_u)), //
DefaultCase()));
WrapInFunction(block);
@@ -232,9 +313,9 @@
// }
auto* var = Var("a", ty.u32(), Expr(2_u));
- auto* block = Block(Decl(var), //
- Switch("a", //
- Case(Source{{12, 34}}, utils::Vector{Expr(-1_i)}), //
+ auto* block = Block(Decl(var), //
+ Switch("a", //
+ Case(CaseSelector(Source{{12, 34}}, -1_i)), //
DefaultCase()));
WrapInFunction(block);
@@ -255,11 +336,11 @@
auto* block = Block(Decl(var), //
Switch("a", //
- Case(Expr(0_u)),
+ Case(CaseSelector(0_u)),
Case(utils::Vector{
- Expr(Source{{12, 34}}, 2_u),
- Expr(3_u),
- Expr(Source{{56, 78}}, 2_u),
+ CaseSelector(Source{{12, 34}}, 2_u),
+ CaseSelector(3_u),
+ CaseSelector(Source{{56, 78}}, 2_u),
}),
DefaultCase()));
WrapInFunction(block);
@@ -281,12 +362,12 @@
auto* block = Block(Decl(var), //
Switch("a", //
- Case(Expr(Source{{12, 34}}, -10_i)),
+ Case(CaseSelector(Source{{12, 34}}, -10_i)),
Case(utils::Vector{
- Expr(0_i),
- Expr(1_i),
- Expr(2_i),
- Expr(Source{{56, 78}}, -10_i),
+ CaseSelector(0_i),
+ CaseSelector(1_i),
+ CaseSelector(2_i),
+ CaseSelector(Source{{56, 78}}, -10_i),
}),
DefaultCase()));
WrapInFunction(block);
@@ -326,7 +407,77 @@
auto* block = Block(Decl(var), //
Switch("a", //
DefaultCase(Source{{12, 34}}), //
- Case(Expr(5_i))));
+ Case(CaseSelector(5_i))));
+ WrapInFunction(block);
+
+ EXPECT_TRUE(r()->Resolve()) << r()->error();
+}
+
+TEST_F(ResolverControlBlockValidationTest, SwitchCase_Expression_Pass) {
+ // var a : i32 = 2;
+ // switch (a) {
+ // default: {}
+ // case 5 + 6: {}
+ // }
+ auto* var = Var("a", ty.i32(), Expr(2_i));
+
+ auto* block = Block(Decl(var), //
+ Switch("a", //
+ DefaultCase(Source{{12, 34}}), //
+ Case(CaseSelector(Add(5_i, 6_i)))));
+ WrapInFunction(block);
+
+ EXPECT_TRUE(r()->Resolve()) << r()->error();
+}
+
+TEST_F(ResolverControlBlockValidationTest, SwitchCase_Expression_MixI32_Abstract) {
+ // var a = 2;
+ // switch (a) {
+ // default: {}
+ // case 5i + 6i: {}
+ // }
+ auto* var = Var("a", Expr(2_a));
+
+ auto* block = Block(Decl(var), //
+ Switch("a", //
+ DefaultCase(Source{{12, 34}}), //
+ Case(CaseSelector(Add(5_i, 6_i)))));
+ WrapInFunction(block);
+
+ EXPECT_TRUE(r()->Resolve()) << r()->error();
+}
+
+TEST_F(ResolverControlBlockValidationTest, SwitchCase_Expression_MixU32_Abstract) {
+ // var a = 2u;
+ // switch (a) {
+ // default: {}
+ // case 5 + 6: {}
+ // }
+ auto* var = Var("a", Expr(2_u));
+
+ auto* block = Block(Decl(var), //
+ Switch("a", //
+ DefaultCase(Source{{12, 34}}), //
+ Case(CaseSelector(Add(5_a, 6_a)))));
+ WrapInFunction(block);
+
+ EXPECT_TRUE(r()->Resolve()) << r()->error();
+}
+
+TEST_F(ResolverControlBlockValidationTest, SwitchCase_Expression_Multiple) {
+ // var a = 2u;
+ // switch (a) {
+ // default: {}
+ // case 5 + 6, 7+9, 2*4: {}
+ // }
+ auto* var = Var("a", Expr(2_u));
+
+ auto* block =
+ Block(Decl(var), //
+ Switch("a", //
+ DefaultCase(Source{{12, 34}}), //
+ Case(utils::Vector{CaseSelector(Add(5_u, 6_u)), CaseSelector(Add(7_u, 9_u)),
+ CaseSelector(Mul(2_u, 4_u))})));
WrapInFunction(block);
EXPECT_TRUE(r()->Resolve()) << r()->error();
@@ -349,5 +500,85 @@
EXPECT_TRUE(r()->Resolve()) << r()->error();
}
+TEST_F(ResolverControlBlockValidationTest, NonUniqueCaseSelector_Expression_Fail) {
+ // var a : i32 = 2i;
+ // switch (a) {
+ // case 10i: {}
+ // case 5i+5i: {}
+ // default: {}
+ // }
+ auto* var = Var("a", ty.i32(), Expr(2_i));
+
+ auto* block = Block(Decl(var), //
+ Switch("a", //
+ Case(CaseSelector(Source{{12, 34}}, 10_i)),
+ Case(CaseSelector(Source{{56, 78}}, Add(5_i, 5_i))), DefaultCase()));
+ WrapInFunction(block);
+
+ EXPECT_FALSE(r()->Resolve());
+ EXPECT_EQ(r()->error(),
+ "56:78 error: duplicate switch case '10'\n"
+ "12:34 note: previous case declared here");
+}
+
+TEST_F(ResolverControlBlockValidationTest, NonUniqueCaseSelectorSameCase_BothExpression_Fail) {
+ // var a : i32 = 2i;
+ // switch (a) {
+ // case 5i+5i, 6i+4i: {}
+ // default: {}
+ // }
+ auto* var = Var("a", ty.i32(), Expr(2_i));
+
+ auto* block = Block(Decl(var), //
+ Switch("a", //
+ Case(utils::Vector{CaseSelector(Source{{56, 78}}, Add(5_i, 5_i)),
+ CaseSelector(Source{{12, 34}}, Add(6_i, 4_i))}),
+ DefaultCase()));
+ WrapInFunction(block);
+
+ EXPECT_FALSE(r()->Resolve());
+ EXPECT_EQ(r()->error(),
+ "12:34 error: duplicate switch case '10'\n"
+ "56:78 note: previous case declared here");
+}
+
+TEST_F(ResolverControlBlockValidationTest, NonUniqueCaseSelectorSame_Case_Expression_Fail) {
+ // var a : i32 = 2i;
+ // switch (a) {
+ // case 5u+5u, 10i: {}
+ // default: {}
+ // }
+ auto* var = Var("a", ty.i32(), Expr(2_i));
+
+ auto* block = Block(Decl(var), //
+ Switch("a", //
+ Case(utils::Vector{CaseSelector(Source{{56, 78}}, Add(5_i, 5_i)),
+ CaseSelector(Source{{12, 34}}, 10_i)}),
+ DefaultCase()));
+ WrapInFunction(block);
+
+ EXPECT_FALSE(r()->Resolve());
+ EXPECT_EQ(r()->error(),
+ "12:34 error: duplicate switch case '10'\n"
+ "56:78 note: previous case declared here");
+}
+
+TEST_F(ResolverControlBlockValidationTest, Switch_OverrideCondition_Fail) {
+ // override a : i32 = 2;
+ // switch (a) {
+ // default: {}
+ // }
+ auto* var = Var("a", ty.i32(), Expr(2_i));
+ Override("b", ty.i32(), Expr(2_i));
+
+ auto* block = Block(Decl(var), //
+ Switch("a", //
+ Case(CaseSelector(Source{{12, 34}}, "b")), DefaultCase()));
+ WrapInFunction(block);
+
+ EXPECT_FALSE(r()->Resolve());
+ EXPECT_EQ(r()->error(), "12:34 error: case selector must be a constant expression");
+}
+
} // namespace
} // namespace tint::resolver
diff --git a/src/tint/resolver/ctor_conv_intrinsic.h b/src/tint/resolver/ctor_conv_intrinsic.h
deleted file mode 100644
index 4ee1c79..0000000
--- a/src/tint/resolver/ctor_conv_intrinsic.h
+++ /dev/null
@@ -1,99 +0,0 @@
-// Copyright 2021 The Tint Authors.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-////////////////////////////////////////////////////////////////////////////////
-// File generated by tools/src/cmd/gen
-// using the template:
-// src/tint/resolver/ctor_conv_intrinsic.h.tmpl
-//
-// Do not modify this file directly
-////////////////////////////////////////////////////////////////////////////////
-
-#ifndef SRC_TINT_RESOLVER_CTOR_CONV_INTRINSIC_H_
-#define SRC_TINT_RESOLVER_CTOR_CONV_INTRINSIC_H_
-
-#include <cstdint>
-
-namespace tint::resolver {
-
-/// CtorConvIntrinsic is an enumerator of types that have a constructor or converter overload
-/// declared in the intrinsic table.
-enum class CtorConvIntrinsic {
- kNone = -1,
- kI32,
- kU32,
- kF32,
- kF16,
- kBool,
- kVec2,
- kVec3,
- kVec4,
- kMat2x2,
- kMat2x3,
- kMat2x4,
- kMat3x2,
- kMat3x3,
- kMat3x4,
- kMat4x2,
- kMat4x3,
- kMat4x4,
-};
-
-/// @returns the name of the type.
-const char* str(CtorConvIntrinsic i);
-
-/// @param n the width of the vector
-/// @return the CtorConvIntrinsic for a vector of width `n`
-inline CtorConvIntrinsic VectorCtorConvIntrinsic(uint32_t n) {
- switch (n) {
- case 2:
- return CtorConvIntrinsic::kVec2;
- case 3:
- return CtorConvIntrinsic::kVec3;
- case 4:
- return CtorConvIntrinsic::kVec4;
- }
- return CtorConvIntrinsic::kNone;
-}
-
-/// @param c the number of columns in the matrix
-/// @param r the number of rows in the matrix
-/// @return the CtorConvIntrinsic for a matrix with `c` columns and `r` rows
-inline CtorConvIntrinsic MatrixCtorConvIntrinsic(uint32_t c, uint32_t r) {
- switch ((c - 2) * 3 + (r - 2)) {
- case 0:
- return CtorConvIntrinsic::kMat2x2;
- case 1:
- return CtorConvIntrinsic::kMat2x3;
- case 2:
- return CtorConvIntrinsic::kMat2x4;
- case 3:
- return CtorConvIntrinsic::kMat3x2;
- case 4:
- return CtorConvIntrinsic::kMat3x3;
- case 5:
- return CtorConvIntrinsic::kMat3x4;
- case 6:
- return CtorConvIntrinsic::kMat4x2;
- case 7:
- return CtorConvIntrinsic::kMat4x3;
- case 8:
- return CtorConvIntrinsic::kMat4x4;
- }
- return CtorConvIntrinsic::kNone;
-}
-
-} // namespace tint::resolver
-
-#endif // SRC_TINT_RESOLVER_CTOR_CONV_INTRINSIC_H_
diff --git a/src/tint/resolver/ctor_conv_intrinsic.h.tmpl b/src/tint/resolver/ctor_conv_intrinsic.h.tmpl
deleted file mode 100644
index 349f939..0000000
--- a/src/tint/resolver/ctor_conv_intrinsic.h.tmpl
+++ /dev/null
@@ -1,76 +0,0 @@
-{{- /*
---------------------------------------------------------------------------------
-Template file for use with tools/src/cmd/gen to generate ctor_conv_intrinsic.h
-
-To update the generated file, run:
- ./tools/run gen
-
-See:
-* tools/src/cmd/gen for structures used by this template
-* https://golang.org/pkg/text/template/ for documentation on the template syntax
---------------------------------------------------------------------------------
-*/ -}}
-
-#ifndef SRC_TINT_RESOLVER_CTOR_CONV_INTRINSIC_H_
-#define SRC_TINT_RESOLVER_CTOR_CONV_INTRINSIC_H_
-
-#include <cstdint>
-
-namespace tint::resolver {
-
-/// CtorConvIntrinsic is an enumerator of types that have a constructor or converter overload
-/// declared in the intrinsic table.
-enum class CtorConvIntrinsic {
- kNone = -1,
-{{- range Sem.ConstructorsAndConverters }}
- k{{Title .Name}},
-{{- end }}
-};
-
-/// @returns the name of the type.
-const char* str(CtorConvIntrinsic i);
-
-/// @param n the width of the vector
-/// @return the CtorConvIntrinsic for a vector of width `n`
-inline CtorConvIntrinsic VectorCtorConvIntrinsic(uint32_t n) {
- switch (n) {
- case 2:
- return CtorConvIntrinsic::kVec2;
- case 3:
- return CtorConvIntrinsic::kVec3;
- case 4:
- return CtorConvIntrinsic::kVec4;
- }
- return CtorConvIntrinsic::kNone;
-}
-
-/// @param c the number of columns in the matrix
-/// @param r the number of rows in the matrix
-/// @return the CtorConvIntrinsic for a matrix with `c` columns and `r` rows
-inline CtorConvIntrinsic MatrixCtorConvIntrinsic(uint32_t c, uint32_t r) {
- switch ((c - 2) * 3 + (r - 2)) {
- case 0:
- return CtorConvIntrinsic::kMat2x2;
- case 1:
- return CtorConvIntrinsic::kMat2x3;
- case 2:
- return CtorConvIntrinsic::kMat2x4;
- case 3:
- return CtorConvIntrinsic::kMat3x2;
- case 4:
- return CtorConvIntrinsic::kMat3x3;
- case 5:
- return CtorConvIntrinsic::kMat3x4;
- case 6:
- return CtorConvIntrinsic::kMat4x2;
- case 7:
- return CtorConvIntrinsic::kMat4x3;
- case 8:
- return CtorConvIntrinsic::kMat4x4;
- }
- return CtorConvIntrinsic::kNone;
-}
-
-} // namespace tint::resolver
-
-#endif // SRC_TINT_RESOLVER_CTOR_CONV_INTRINSIC_H_
diff --git a/src/tint/resolver/dependency_graph.cc b/src/tint/resolver/dependency_graph.cc
index e84eec5..b6001c1 100644
--- a/src/tint/resolver/dependency_graph.cc
+++ b/src/tint/resolver/dependency_graph.cc
@@ -25,6 +25,7 @@
#include "src/tint/ast/atomic.h"
#include "src/tint/ast/block_statement.h"
#include "src/tint/ast/bool.h"
+#include "src/tint/ast/break_if_statement.h"
#include "src/tint/ast/break_statement.h"
#include "src/tint/ast/call_statement.h"
#include "src/tint/ast/compound_assignment_statement.h"
@@ -199,8 +200,8 @@
Declare(var->symbol, var);
TraverseType(var->type);
TraverseAttributes(var->attributes);
- if (var->constructor) {
- TraverseExpression(var->constructor);
+ if (var->initializer) {
+ TraverseExpression(var->initializer);
}
},
[&](const ast::Enable*) {
@@ -263,9 +264,8 @@
TINT_DEFER(scope_stack_.Pop());
TraverseStatements(b->statements);
},
- [&](const ast::CallStatement* r) { //
- TraverseExpression(r->expr);
- },
+ [&](const ast::BreakIfStatement* b) { TraverseExpression(b->condition); },
+ [&](const ast::CallStatement* r) { TraverseExpression(r->expr); },
[&](const ast::CompoundAssignmentStatement* a) {
TraverseExpression(a->lhs);
TraverseExpression(a->rhs);
@@ -292,14 +292,12 @@
TraverseStatement(i->else_statement);
}
},
- [&](const ast::ReturnStatement* r) { //
- TraverseExpression(r->value);
- },
+ [&](const ast::ReturnStatement* r) { TraverseExpression(r->value); },
[&](const ast::SwitchStatement* s) {
TraverseExpression(s->condition);
for (auto* c : s->body) {
for (auto* sel : c->selectors) {
- TraverseExpression(sel);
+ TraverseExpression(sel->expr);
}
TraverseStatement(c->body);
}
@@ -309,7 +307,7 @@
graph_.shadows.emplace(v->variable, shadows);
}
TraverseType(v->variable->type);
- TraverseExpression(v->variable->constructor);
+ TraverseExpression(v->variable->initializer);
Declare(v->variable->symbol, v->variable);
},
[&](const ast::WhileStatement* w) {
diff --git a/src/tint/resolver/dependency_graph_test.cc b/src/tint/resolver/dependency_graph_test.cc
index 724a527..ae314b8 100644
--- a/src/tint/resolver/dependency_graph_test.cc
+++ b/src/tint/resolver/dependency_graph_test.cc
@@ -1260,11 +1260,11 @@
Block( //
Assign(V, V))), //
Loop(Block(Assign(V, V)), //
- Block(Assign(V, V))), //
+ Block(Assign(V, V), BreakIf(V))), //
Switch(V, //
- Case(Expr(1_i), //
+ Case(CaseSelector(1_i), //
Block(Assign(V, V))), //
- Case(Expr(2_i), //
+ Case(CaseSelector(2_i), //
Block(Fallthrough())), //
DefaultCase(Block(Assign(V, V)))), //
Return(V), //
diff --git a/src/tint/resolver/evaluation_stage_test.cc b/src/tint/resolver/evaluation_stage_test.cc
index 4504782..4d637b5 100644
--- a/src/tint/resolver/evaluation_stage_test.cc
+++ b/src/tint/resolver/evaluation_stage_test.cc
@@ -40,7 +40,7 @@
EXPECT_EQ(Sem().Get(expr)->Stage(), sem::EvaluationStage::kConstant);
}
-TEST_F(ResolverEvaluationStageTest, Vector_Ctor) {
+TEST_F(ResolverEvaluationStageTest, Vector_Init) {
auto* expr = vec3<f32>();
WrapInFunction(expr);
@@ -48,7 +48,7 @@
EXPECT_EQ(Sem().Get(expr)->Stage(), sem::EvaluationStage::kConstant);
}
-TEST_F(ResolverEvaluationStageTest, Vector_Ctor_Const_Const) {
+TEST_F(ResolverEvaluationStageTest, Vector_Init_Const_Const) {
// const f = 1.f;
// vec2<f32>(f, f);
auto* f = Const("f", Expr(1_f));
@@ -60,7 +60,7 @@
EXPECT_EQ(Sem().Get(expr)->Stage(), sem::EvaluationStage::kConstant);
}
-TEST_F(ResolverEvaluationStageTest, Vector_Ctor_Runtime_Runtime) {
+TEST_F(ResolverEvaluationStageTest, Vector_Init_Runtime_Runtime) {
// var f = 1.f;
// vec2<f32>(f, f);
auto* f = Var("f", Expr(1_f));
@@ -96,7 +96,7 @@
EXPECT_EQ(Sem().Get(expr)->Stage(), sem::EvaluationStage::kRuntime);
}
-TEST_F(ResolverEvaluationStageTest, Matrix_Ctor) {
+TEST_F(ResolverEvaluationStageTest, Matrix_Init) {
auto* expr = mat2x2<f32>();
WrapInFunction(expr);
@@ -104,7 +104,7 @@
EXPECT_EQ(Sem().Get(expr)->Stage(), sem::EvaluationStage::kConstant);
}
-TEST_F(ResolverEvaluationStageTest, Array_Ctor) {
+TEST_F(ResolverEvaluationStageTest, Array_Init) {
auto* expr = array<f32, 3>();
WrapInFunction(expr);
@@ -112,7 +112,7 @@
EXPECT_EQ(Sem().Get(expr)->Stage(), sem::EvaluationStage::kConstant);
}
-TEST_F(ResolverEvaluationStageTest, Array_Ctor_Const_Const) {
+TEST_F(ResolverEvaluationStageTest, Array_Init_Const_Const) {
// const f = 1.f;
// array<f32, 2>(f, f);
auto* f = Const("f", Expr(1_f));
@@ -124,7 +124,7 @@
EXPECT_EQ(Sem().Get(expr)->Stage(), sem::EvaluationStage::kConstant);
}
-TEST_F(ResolverEvaluationStageTest, Array_Ctor_Const_Override) {
+TEST_F(ResolverEvaluationStageTest, Array_Init_Const_Override) {
// const f1 = 1.f;
// override f2 = 2.f;
// array<f32, 2>(f1, f2);
@@ -139,7 +139,7 @@
EXPECT_EQ(Sem().Get(expr)->Stage(), sem::EvaluationStage::kOverride);
}
-TEST_F(ResolverEvaluationStageTest, Array_Ctor_Override_Runtime) {
+TEST_F(ResolverEvaluationStageTest, Array_Init_Override_Runtime) {
// override f1 = 1.f;
// var f2 = 2.f;
// array<f32, 2>(f1, f2);
@@ -154,7 +154,7 @@
EXPECT_EQ(Sem().Get(expr)->Stage(), sem::EvaluationStage::kRuntime);
}
-TEST_F(ResolverEvaluationStageTest, Array_Ctor_Const_Runtime) {
+TEST_F(ResolverEvaluationStageTest, Array_Init_Const_Runtime) {
// const f1 = 1.f;
// var f2 = 2.f;
// array<f32, 2>(f1, f2);
@@ -169,7 +169,7 @@
EXPECT_EQ(Sem().Get(expr)->Stage(), sem::EvaluationStage::kRuntime);
}
-TEST_F(ResolverEvaluationStageTest, Array_Ctor_Runtime_Runtime) {
+TEST_F(ResolverEvaluationStageTest, Array_Init_Runtime_Runtime) {
// var f = 1.f;
// array<f32, 2>(f, f);
auto* f = Var("f", Expr(1_f));
diff --git a/src/tint/resolver/function_validation_test.cc b/src/tint/resolver/function_validation_test.cc
index be7dcd2..49d37a1 100644
--- a/src/tint/resolver/function_validation_test.cc
+++ b/src/tint/resolver/function_validation_test.cc
@@ -805,7 +805,7 @@
EXPECT_EQ(r()->error(), "12:34 error: workgroup_size argument must be at least 1");
}
-TEST_F(ResolverFunctionValidationTest, WorkgroupSize_Const_NestedZeroValueConstructor) {
+TEST_F(ResolverFunctionValidationTest, WorkgroupSize_Const_NestedZeroValueInitializer) {
// const x = i32(i32(i32()));
// @compute @workgroup_size(x)
// fn main() {}
diff --git a/src/tint/resolver/inferred_type_test.cc b/src/tint/resolver/inferred_type_test.cc
index 3d03c1a..d2f649b 100644
--- a/src/tint/resolver/inferred_type_test.cc
+++ b/src/tint/resolver/inferred_type_test.cc
@@ -82,7 +82,7 @@
auto* expected_type = params.create_expected_type(*this);
- // const a = <type constructor>;
+ // const a = <type initializer>;
auto* ctor_expr = params.create_value(*this, 0);
auto* a = GlobalConst("a", ctor_expr);
@@ -95,7 +95,7 @@
auto* expected_type = params.create_expected_type(*this);
- // var a = <type constructor>;
+ // var a = <type initializer>;
auto* ctor_expr = params.create_value(*this, 0);
auto* var = GlobalVar("a", ast::AddressSpace::kPrivate, ctor_expr);
@@ -108,7 +108,7 @@
auto* expected_type = params.create_expected_type(*this);
- // let a = <type constructor>;
+ // let a = <type initializer>;
auto* ctor_expr = params.create_value(*this, 0);
auto* var = Let("a", ctor_expr);
WrapInFunction(var);
@@ -122,7 +122,7 @@
auto* expected_type = params.create_expected_type(*this);
- // var a = <type constructor>;
+ // var a = <type initializer>;
auto* ctor_expr = params.create_value(*this, 0);
auto* var = Var("a", ast::AddressSpace::kFunction, ctor_expr);
WrapInFunction(var);
diff --git a/src/tint/resolver/ctor_conv_intrinsic.cc b/src/tint/resolver/init_conv_intrinsic.cc
similarity index 63%
rename from src/tint/resolver/ctor_conv_intrinsic.cc
rename to src/tint/resolver/init_conv_intrinsic.cc
index 3ac3a67..f9f40bf 100644
--- a/src/tint/resolver/ctor_conv_intrinsic.cc
+++ b/src/tint/resolver/init_conv_intrinsic.cc
@@ -15,52 +15,52 @@
////////////////////////////////////////////////////////////////////////////////
// File generated by tools/src/cmd/gen
// using the template:
-// src/tint/resolver/ctor_conv_intrinsic.cc.tmpl
+// src/tint/resolver/init_conv_intrinsic.cc.tmpl
//
// Do not modify this file directly
////////////////////////////////////////////////////////////////////////////////
-#include "src/tint/resolver/ctor_conv_intrinsic.h"
+#include "src/tint/resolver/init_conv_intrinsic.h"
namespace tint::resolver {
-const char* str(CtorConvIntrinsic i) {
+const char* str(InitConvIntrinsic i) {
switch (i) {
- case CtorConvIntrinsic::kNone:
+ case InitConvIntrinsic::kNone:
return "<none>";
- case CtorConvIntrinsic::kI32:
+ case InitConvIntrinsic::kI32:
return "i32";
- case CtorConvIntrinsic::kU32:
+ case InitConvIntrinsic::kU32:
return "u32";
- case CtorConvIntrinsic::kF32:
+ case InitConvIntrinsic::kF32:
return "f32";
- case CtorConvIntrinsic::kF16:
+ case InitConvIntrinsic::kF16:
return "f16";
- case CtorConvIntrinsic::kBool:
+ case InitConvIntrinsic::kBool:
return "bool";
- case CtorConvIntrinsic::kVec2:
+ case InitConvIntrinsic::kVec2:
return "vec2";
- case CtorConvIntrinsic::kVec3:
+ case InitConvIntrinsic::kVec3:
return "vec3";
- case CtorConvIntrinsic::kVec4:
+ case InitConvIntrinsic::kVec4:
return "vec4";
- case CtorConvIntrinsic::kMat2x2:
+ case InitConvIntrinsic::kMat2x2:
return "mat2x2";
- case CtorConvIntrinsic::kMat2x3:
+ case InitConvIntrinsic::kMat2x3:
return "mat2x3";
- case CtorConvIntrinsic::kMat2x4:
+ case InitConvIntrinsic::kMat2x4:
return "mat2x4";
- case CtorConvIntrinsic::kMat3x2:
+ case InitConvIntrinsic::kMat3x2:
return "mat3x2";
- case CtorConvIntrinsic::kMat3x3:
+ case InitConvIntrinsic::kMat3x3:
return "mat3x3";
- case CtorConvIntrinsic::kMat3x4:
+ case InitConvIntrinsic::kMat3x4:
return "mat3x4";
- case CtorConvIntrinsic::kMat4x2:
+ case InitConvIntrinsic::kMat4x2:
return "mat4x2";
- case CtorConvIntrinsic::kMat4x3:
+ case InitConvIntrinsic::kMat4x3:
return "mat4x3";
- case CtorConvIntrinsic::kMat4x4:
+ case InitConvIntrinsic::kMat4x4:
return "mat4x4";
}
return "<unknown>";
diff --git a/src/tint/resolver/ctor_conv_intrinsic.cc.tmpl b/src/tint/resolver/init_conv_intrinsic.cc.tmpl
similarity index 66%
rename from src/tint/resolver/ctor_conv_intrinsic.cc.tmpl
rename to src/tint/resolver/init_conv_intrinsic.cc.tmpl
index 00ac21b..199cb61 100644
--- a/src/tint/resolver/ctor_conv_intrinsic.cc.tmpl
+++ b/src/tint/resolver/init_conv_intrinsic.cc.tmpl
@@ -1,6 +1,6 @@
{{- /*
--------------------------------------------------------------------------------
-Template file for use with tools/src/cmd/gen to generate ctor_conv_intrinsic.cc
+Template file for use with tools/src/cmd/gen to generate init_conv_intrinsic.cc
To update the generated file, run:
./tools/run gen
@@ -11,16 +11,16 @@
--------------------------------------------------------------------------------
*/ -}}
-#include "src/tint/resolver/ctor_conv_intrinsic.h"
+#include "src/tint/resolver/init_conv_intrinsic.h"
namespace tint::resolver {
-const char* str(CtorConvIntrinsic i) {
+const char* str(InitConvIntrinsic i) {
switch (i) {
- case CtorConvIntrinsic::kNone:
+ case InitConvIntrinsic::kNone:
return "<none>";
-{{- range Sem.ConstructorsAndConverters }}
- case CtorConvIntrinsic::k{{Title .Name}}:
+{{- range Sem.InitializersAndConverters }}
+ case InitConvIntrinsic::k{{Title .Name}}:
return "{{.Name}}";
{{- end }}
}
diff --git a/src/tint/resolver/init_conv_intrinsic.h b/src/tint/resolver/init_conv_intrinsic.h
new file mode 100644
index 0000000..07bb45b
--- /dev/null
+++ b/src/tint/resolver/init_conv_intrinsic.h
@@ -0,0 +1,99 @@
+// Copyright 2021 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// File generated by tools/src/cmd/gen
+// using the template:
+// src/tint/resolver/init_conv_intrinsic.h.tmpl
+//
+// Do not modify this file directly
+////////////////////////////////////////////////////////////////////////////////
+
+#ifndef SRC_TINT_RESOLVER_INIT_CONV_INTRINSIC_H_
+#define SRC_TINT_RESOLVER_INIT_CONV_INTRINSIC_H_
+
+#include <cstdint>
+
+namespace tint::resolver {
+
+/// InitConvIntrinsic is an enumerator of types that have a initializer or converter overload
+/// declared in the intrinsic table.
+enum class InitConvIntrinsic {
+ kNone = -1,
+ kI32,
+ kU32,
+ kF32,
+ kF16,
+ kBool,
+ kVec2,
+ kVec3,
+ kVec4,
+ kMat2x2,
+ kMat2x3,
+ kMat2x4,
+ kMat3x2,
+ kMat3x3,
+ kMat3x4,
+ kMat4x2,
+ kMat4x3,
+ kMat4x4,
+};
+
+/// @returns the name of the type.
+const char* str(InitConvIntrinsic i);
+
+/// @param n the width of the vector
+/// @return the InitConvIntrinsic for a vector of width `n`
+inline InitConvIntrinsic VectorInitConvIntrinsic(uint32_t n) {
+ switch (n) {
+ case 2:
+ return InitConvIntrinsic::kVec2;
+ case 3:
+ return InitConvIntrinsic::kVec3;
+ case 4:
+ return InitConvIntrinsic::kVec4;
+ }
+ return InitConvIntrinsic::kNone;
+}
+
+/// @param c the number of columns in the matrix
+/// @param r the number of rows in the matrix
+/// @return the InitConvIntrinsic for a matrix with `c` columns and `r` rows
+inline InitConvIntrinsic MatrixInitConvIntrinsic(uint32_t c, uint32_t r) {
+ switch ((c - 2) * 3 + (r - 2)) {
+ case 0:
+ return InitConvIntrinsic::kMat2x2;
+ case 1:
+ return InitConvIntrinsic::kMat2x3;
+ case 2:
+ return InitConvIntrinsic::kMat2x4;
+ case 3:
+ return InitConvIntrinsic::kMat3x2;
+ case 4:
+ return InitConvIntrinsic::kMat3x3;
+ case 5:
+ return InitConvIntrinsic::kMat3x4;
+ case 6:
+ return InitConvIntrinsic::kMat4x2;
+ case 7:
+ return InitConvIntrinsic::kMat4x3;
+ case 8:
+ return InitConvIntrinsic::kMat4x4;
+ }
+ return InitConvIntrinsic::kNone;
+}
+
+} // namespace tint::resolver
+
+#endif // SRC_TINT_RESOLVER_INIT_CONV_INTRINSIC_H_
diff --git a/src/tint/resolver/init_conv_intrinsic.h.tmpl b/src/tint/resolver/init_conv_intrinsic.h.tmpl
new file mode 100644
index 0000000..5f1281b
--- /dev/null
+++ b/src/tint/resolver/init_conv_intrinsic.h.tmpl
@@ -0,0 +1,76 @@
+{{- /*
+--------------------------------------------------------------------------------
+Template file for use with tools/src/cmd/gen to generate init_conv_intrinsic.h
+
+To update the generated file, run:
+ ./tools/run gen
+
+See:
+* tools/src/cmd/gen for structures used by this template
+* https://golang.org/pkg/text/template/ for documentation on the template syntax
+--------------------------------------------------------------------------------
+*/ -}}
+
+#ifndef SRC_TINT_RESOLVER_INIT_CONV_INTRINSIC_H_
+#define SRC_TINT_RESOLVER_INIT_CONV_INTRINSIC_H_
+
+#include <cstdint>
+
+namespace tint::resolver {
+
+/// InitConvIntrinsic is an enumerator of types that have a initializer or converter overload
+/// declared in the intrinsic table.
+enum class InitConvIntrinsic {
+ kNone = -1,
+{{- range Sem.InitializersAndConverters }}
+ k{{Title .Name}},
+{{- end }}
+};
+
+/// @returns the name of the type.
+const char* str(InitConvIntrinsic i);
+
+/// @param n the width of the vector
+/// @return the InitConvIntrinsic for a vector of width `n`
+inline InitConvIntrinsic VectorInitConvIntrinsic(uint32_t n) {
+ switch (n) {
+ case 2:
+ return InitConvIntrinsic::kVec2;
+ case 3:
+ return InitConvIntrinsic::kVec3;
+ case 4:
+ return InitConvIntrinsic::kVec4;
+ }
+ return InitConvIntrinsic::kNone;
+}
+
+/// @param c the number of columns in the matrix
+/// @param r the number of rows in the matrix
+/// @return the InitConvIntrinsic for a matrix with `c` columns and `r` rows
+inline InitConvIntrinsic MatrixInitConvIntrinsic(uint32_t c, uint32_t r) {
+ switch ((c - 2) * 3 + (r - 2)) {
+ case 0:
+ return InitConvIntrinsic::kMat2x2;
+ case 1:
+ return InitConvIntrinsic::kMat2x3;
+ case 2:
+ return InitConvIntrinsic::kMat2x4;
+ case 3:
+ return InitConvIntrinsic::kMat3x2;
+ case 4:
+ return InitConvIntrinsic::kMat3x3;
+ case 5:
+ return InitConvIntrinsic::kMat3x4;
+ case 6:
+ return InitConvIntrinsic::kMat4x2;
+ case 7:
+ return InitConvIntrinsic::kMat4x3;
+ case 8:
+ return InitConvIntrinsic::kMat4x4;
+ }
+ return InitConvIntrinsic::kNone;
+}
+
+} // namespace tint::resolver
+
+#endif // SRC_TINT_RESOLVER_INIT_CONV_INTRINSIC_H_
diff --git a/src/tint/resolver/intrinsic_table.cc b/src/tint/resolver/intrinsic_table.cc
index 6a190de..314e619 100644
--- a/src/tint/resolver/intrinsic_table.cc
+++ b/src/tint/resolver/intrinsic_table.cc
@@ -33,8 +33,8 @@
#include "src/tint/sem/pipeline_stage_set.h"
#include "src/tint/sem/sampled_texture.h"
#include "src/tint/sem/storage_texture.h"
-#include "src/tint/sem/type_constructor.h"
#include "src/tint/sem/type_conversion.h"
+#include "src/tint/sem/type_initializer.h"
#include "src/tint/utils/hash.h"
#include "src/tint/utils/map.h"
#include "src/tint/utils/math.h"
@@ -338,7 +338,7 @@
enum class OverloadFlag {
kIsBuiltin, // The overload is a builtin ('fn')
kIsOperator, // The overload is an operator ('op')
- kIsConstructor, // The overload is a type constructor ('ctor')
+ kIsInitializer, // The overload is a type initializer ('ctor')
kIsConverter, // The overload is a type converter ('conv')
kSupportsVertexPipeline, // The overload can be used in vertex shaders
kSupportsFragmentPipeline, // The overload can be used in fragment shaders
@@ -1003,7 +1003,7 @@
const Source& source,
bool is_compound) override;
- CtorOrConv Lookup(CtorConvIntrinsic type,
+ InitOrConv Lookup(InitConvIntrinsic type,
const sem::Type* template_arg,
utils::VectorRef<const sem::Type*> args,
const Source& source) override;
@@ -1110,8 +1110,8 @@
ProgramBuilder& builder;
Matchers matchers;
std::unordered_map<IntrinsicPrototype, sem::Builtin*, IntrinsicPrototype::Hasher> builtins;
- std::unordered_map<IntrinsicPrototype, sem::TypeConstructor*, IntrinsicPrototype::Hasher>
- constructors;
+ std::unordered_map<IntrinsicPrototype, sem::TypeInitializer*, IntrinsicPrototype::Hasher>
+ initializers;
std::unordered_map<IntrinsicPrototype, sem::TypeConversion*, IntrinsicPrototype::Hasher>
converters;
};
@@ -1330,7 +1330,7 @@
};
}
-IntrinsicTable::CtorOrConv Impl::Lookup(CtorConvIntrinsic type,
+IntrinsicTable::InitOrConv Impl::Lookup(InitConvIntrinsic type,
const sem::Type* template_arg,
utils::VectorRef<const sem::Type*> args,
const Source& source) {
@@ -1339,11 +1339,11 @@
// Generates an error when no overloads match the provided arguments
auto on_no_match = [&](utils::VectorRef<Candidate> candidates) {
std::stringstream ss;
- ss << "no matching constructor for " << CallSignature(builder, name, args, template_arg)
+ ss << "no matching initializer for " << CallSignature(builder, name, args, template_arg)
<< std::endl;
Candidates ctor, conv;
for (auto candidate : candidates) {
- if (candidate.overload->flags.Contains(OverloadFlag::kIsConstructor)) {
+ if (candidate.overload->flags.Contains(OverloadFlag::kIsInitializer)) {
ctor.Push(candidate);
} else {
conv.Push(candidate);
@@ -1351,7 +1351,7 @@
}
if (!ctor.IsEmpty()) {
ss << std::endl
- << ctor.Length() << " candidate constructor" << (ctor.Length() > 1 ? "s:" : ":")
+ << ctor.Length() << " candidate initializer" << (ctor.Length() > 1 ? "s:" : ":")
<< std::endl;
PrintCandidates(ss, ctor, name);
}
@@ -1371,14 +1371,14 @@
}
// Resolve the intrinsic overload
- auto match = MatchIntrinsic(kConstructorsAndConverters[static_cast<size_t>(type)], name, args,
+ auto match = MatchIntrinsic(kInitializersAndConverters[static_cast<size_t>(type)], name, args,
sem::EvaluationStage::kConstant, templates, on_no_match);
if (!match.overload) {
return {};
}
- // Was this overload a constructor or conversion?
- if (match.overload->flags.Contains(OverloadFlag::kIsConstructor)) {
+ // Was this overload a initializer or conversion?
+ if (match.overload->flags.Contains(OverloadFlag::kIsInitializer)) {
utils::Vector<const sem::Parameter*, 8> params;
params.Reserve(match.parameters.Length());
for (auto& p : match.parameters) {
@@ -1388,11 +1388,11 @@
}
auto eval_stage = match.overload->const_eval_fn ? sem::EvaluationStage::kConstant
: sem::EvaluationStage::kRuntime;
- auto* target = utils::GetOrCreate(constructors, match, [&]() {
- return builder.create<sem::TypeConstructor>(match.return_type, std::move(params),
+ auto* target = utils::GetOrCreate(initializers, match, [&]() {
+ return builder.create<sem::TypeInitializer>(match.return_type, std::move(params),
eval_stage);
});
- return CtorOrConv{target, match.overload->const_eval_fn};
+ return InitOrConv{target, match.overload->const_eval_fn};
}
// Conversion.
@@ -1404,7 +1404,7 @@
: sem::EvaluationStage::kRuntime;
return builder.create<sem::TypeConversion>(match.return_type, param, eval_stage);
});
- return CtorOrConv{target, match.overload->const_eval_fn};
+ return InitOrConv{target, match.overload->const_eval_fn};
}
IntrinsicPrototype Impl::MatchIntrinsic(const IntrinsicInfo& intrinsic,
diff --git a/src/tint/resolver/intrinsic_table.h b/src/tint/resolver/intrinsic_table.h
index b27f5ee..bea1e3c 100644
--- a/src/tint/resolver/intrinsic_table.h
+++ b/src/tint/resolver/intrinsic_table.h
@@ -21,7 +21,7 @@
#include "src/tint/ast/binary_expression.h"
#include "src/tint/ast/unary_op.h"
#include "src/tint/resolver/const_eval.h"
-#include "src/tint/resolver/ctor_conv_intrinsic.h"
+#include "src/tint/resolver/init_conv_intrinsic.h"
#include "src/tint/sem/builtin.h"
#include "src/tint/utils/vector.h"
@@ -72,9 +72,9 @@
ConstEval::Function const_eval_fn = nullptr;
};
- /// CtorOrConv describes a resolved type constructor or type conversion
- struct CtorOrConv {
- /// The result type of the type constructor or type conversion
+ /// InitOrConv describes a resolved type initializer or type conversion
+ struct InitOrConv {
+ /// The result type of the type initializer or type conversion
const sem::CallTarget* target = nullptr;
/// The constant evaluation function
ConstEval::Function const_eval_fn = nullptr;
@@ -121,14 +121,14 @@
const Source& source,
bool is_compound) = 0;
- /// Lookup looks for the type constructor or conversion overload for the given
- /// CtorConvIntrinsic.
+ /// Lookup looks for the type initializer or conversion overload for the given
+ /// InitConvIntrinsic.
/// @param type the type being constructed or converted
/// @param template_arg the optional template argument
- /// @param args the argument types passed to the constructor / conversion call
+ /// @param args the argument types passed to the initializer / conversion call
/// @param source the source of the call
- /// @return a sem::TypeConstructor, sem::TypeConversion or nullptr if nothing matched
- virtual CtorOrConv Lookup(CtorConvIntrinsic type,
+ /// @return a sem::TypeInitializer, sem::TypeConversion or nullptr if nothing matched
+ virtual InitOrConv Lookup(InitConvIntrinsic type,
const sem::Type* template_arg,
utils::VectorRef<const sem::Type*> args,
const Source& source) = 0;
diff --git a/src/tint/resolver/intrinsic_table.inl b/src/tint/resolver/intrinsic_table.inl
index 426b78b..268e332 100644
--- a/src/tint/resolver/intrinsic_table.inl
+++ b/src/tint/resolver/intrinsic_table.inl
@@ -2748,228 +2748,228 @@
/* [8] */ 0,
/* [9] */ 0,
/* [10] */ 22,
- /* [11] */ 0,
- /* [12] */ 1,
+ /* [11] */ 1,
+ /* [12] */ 2,
/* [13] */ 0,
/* [14] */ 22,
- /* [15] */ 0,
+ /* [15] */ 1,
/* [16] */ 0,
/* [17] */ 0,
/* [18] */ 22,
/* [19] */ 0,
- /* [20] */ 2,
+ /* [20] */ 1,
/* [21] */ 0,
/* [22] */ 22,
- /* [23] */ 1,
+ /* [23] */ 0,
/* [24] */ 0,
/* [25] */ 0,
/* [26] */ 22,
- /* [27] */ 1,
+ /* [27] */ 0,
/* [28] */ 2,
/* [29] */ 0,
/* [30] */ 21,
/* [31] */ 0,
/* [32] */ 0,
- /* [33] */ 43,
- /* [34] */ 5,
- /* [35] */ 6,
+ /* [33] */ 21,
+ /* [34] */ 0,
+ /* [35] */ 2,
/* [36] */ 21,
/* [37] */ 0,
- /* [38] */ 2,
- /* [39] */ 42,
- /* [40] */ 5,
- /* [41] */ 6,
- /* [42] */ 41,
- /* [43] */ 5,
+ /* [38] */ 7,
+ /* [39] */ 21,
+ /* [40] */ 1,
+ /* [41] */ 0,
+ /* [42] */ 21,
+ /* [43] */ 0,
/* [44] */ 6,
- /* [45] */ 42,
+ /* [45] */ 48,
/* [46] */ 0,
- /* [47] */ 1,
- /* [48] */ 40,
- /* [49] */ 5,
- /* [50] */ 6,
- /* [51] */ 43,
- /* [52] */ 4,
- /* [53] */ 6,
- /* [54] */ 42,
- /* [55] */ 4,
+ /* [47] */ 0,
+ /* [48] */ 21,
+ /* [49] */ 0,
+ /* [50] */ 3,
+ /* [51] */ 21,
+ /* [52] */ 0,
+ /* [53] */ 5,
+ /* [54] */ 43,
+ /* [55] */ 5,
/* [56] */ 6,
- /* [57] */ 41,
- /* [58] */ 4,
+ /* [57] */ 42,
+ /* [58] */ 5,
/* [59] */ 6,
- /* [60] */ 21,
- /* [61] */ 0,
- /* [62] */ 7,
+ /* [60] */ 41,
+ /* [61] */ 5,
+ /* [62] */ 6,
/* [63] */ 40,
- /* [64] */ 4,
+ /* [64] */ 5,
/* [65] */ 6,
/* [66] */ 43,
- /* [67] */ 3,
+ /* [67] */ 4,
/* [68] */ 6,
- /* [69] */ 21,
- /* [70] */ 1,
- /* [71] */ 0,
- /* [72] */ 42,
- /* [73] */ 3,
+ /* [69] */ 42,
+ /* [70] */ 4,
+ /* [71] */ 6,
+ /* [72] */ 41,
+ /* [73] */ 4,
/* [74] */ 6,
- /* [75] */ 41,
- /* [76] */ 3,
+ /* [75] */ 40,
+ /* [76] */ 4,
/* [77] */ 6,
- /* [78] */ 48,
- /* [79] */ 0,
- /* [80] */ 0,
- /* [81] */ 43,
- /* [82] */ 0,
- /* [83] */ 1,
+ /* [78] */ 43,
+ /* [79] */ 3,
+ /* [80] */ 6,
+ /* [81] */ 42,
+ /* [82] */ 3,
+ /* [83] */ 6,
/* [84] */ 41,
- /* [85] */ 0,
- /* [86] */ 1,
+ /* [85] */ 3,
+ /* [86] */ 6,
/* [87] */ 40,
- /* [88] */ 0,
- /* [89] */ 1,
- /* [90] */ 21,
+ /* [88] */ 3,
+ /* [89] */ 6,
+ /* [90] */ 42,
/* [91] */ 0,
- /* [92] */ 5,
- /* [93] */ 21,
+ /* [92] */ 1,
+ /* [93] */ 43,
/* [94] */ 0,
- /* [95] */ 6,
- /* [96] */ 21,
+ /* [95] */ 1,
+ /* [96] */ 41,
/* [97] */ 0,
- /* [98] */ 3,
- /* [99] */ 46,
+ /* [98] */ 1,
+ /* [99] */ 40,
/* [100] */ 0,
- /* [101] */ 0,
- /* [102] */ 40,
- /* [103] */ 3,
- /* [104] */ 6,
- /* [105] */ 10,
+ /* [101] */ 1,
+ /* [102] */ 46,
+ /* [103] */ 0,
+ /* [104] */ 0,
+ /* [105] */ 9,
/* [106] */ 7,
/* [107] */ 10,
- /* [108] */ 1,
- /* [109] */ 10,
- /* [110] */ 8,
- /* [111] */ 10,
- /* [112] */ 5,
- /* [113] */ 10,
+ /* [108] */ 7,
+ /* [109] */ 20,
+ /* [110] */ 7,
+ /* [111] */ 20,
+ /* [112] */ 8,
+ /* [113] */ 20,
/* [114] */ 0,
- /* [115] */ 9,
+ /* [115] */ 11,
/* [116] */ 0,
- /* [117] */ 10,
- /* [118] */ 6,
- /* [119] */ 10,
- /* [120] */ 2,
- /* [121] */ 11,
+ /* [117] */ 19,
+ /* [118] */ 7,
+ /* [119] */ 19,
+ /* [120] */ 8,
+ /* [121] */ 19,
/* [122] */ 0,
- /* [123] */ 9,
- /* [124] */ 2,
- /* [125] */ 9,
- /* [126] */ 1,
- /* [127] */ 9,
- /* [128] */ 6,
- /* [129] */ 9,
- /* [130] */ 5,
- /* [131] */ 11,
- /* [132] */ 7,
- /* [133] */ 9,
- /* [134] */ 8,
- /* [135] */ 9,
+ /* [123] */ 10,
+ /* [124] */ 0,
+ /* [125] */ 18,
+ /* [126] */ 7,
+ /* [127] */ 18,
+ /* [128] */ 8,
+ /* [129] */ 18,
+ /* [130] */ 0,
+ /* [131] */ 9,
+ /* [132] */ 0,
+ /* [133] */ 11,
+ /* [134] */ 7,
+ /* [135] */ 17,
/* [136] */ 7,
- /* [137] */ 45,
- /* [138] */ 0,
- /* [139] */ 28,
+ /* [137] */ 17,
+ /* [138] */ 8,
+ /* [139] */ 17,
/* [140] */ 0,
- /* [141] */ 29,
+ /* [141] */ 28,
/* [142] */ 0,
- /* [143] */ 11,
- /* [144] */ 1,
- /* [145] */ 30,
- /* [146] */ 0,
- /* [147] */ 31,
+ /* [143] */ 29,
+ /* [144] */ 0,
+ /* [145] */ 9,
+ /* [146] */ 5,
+ /* [147] */ 30,
/* [148] */ 0,
- /* [149] */ 11,
- /* [150] */ 8,
- /* [151] */ 32,
+ /* [149] */ 16,
+ /* [150] */ 7,
+ /* [151] */ 31,
/* [152] */ 0,
- /* [153] */ 33,
- /* [154] */ 0,
- /* [155] */ 11,
- /* [156] */ 5,
- /* [157] */ 34,
+ /* [153] */ 10,
+ /* [154] */ 5,
+ /* [155] */ 16,
+ /* [156] */ 8,
+ /* [157] */ 32,
/* [158] */ 0,
- /* [159] */ 11,
- /* [160] */ 6,
- /* [161] */ 11,
- /* [162] */ 2,
- /* [163] */ 12,
+ /* [159] */ 33,
+ /* [160] */ 0,
+ /* [161] */ 34,
+ /* [162] */ 0,
+ /* [163] */ 16,
/* [164] */ 0,
- /* [165] */ 20,
+ /* [165] */ 15,
/* [166] */ 7,
- /* [167] */ 12,
- /* [168] */ 7,
- /* [169] */ 12,
- /* [170] */ 8,
- /* [171] */ 13,
+ /* [167] */ 15,
+ /* [168] */ 8,
+ /* [169] */ 15,
+ /* [170] */ 0,
+ /* [171] */ 45,
/* [172] */ 0,
- /* [173] */ 13,
+ /* [173] */ 14,
/* [174] */ 7,
- /* [175] */ 47,
- /* [176] */ 0,
- /* [177] */ 13,
- /* [178] */ 8,
- /* [179] */ 14,
- /* [180] */ 0,
- /* [181] */ 14,
- /* [182] */ 7,
- /* [183] */ 14,
- /* [184] */ 8,
- /* [185] */ 15,
- /* [186] */ 0,
- /* [187] */ 15,
- /* [188] */ 7,
- /* [189] */ 15,
- /* [190] */ 8,
- /* [191] */ 16,
- /* [192] */ 0,
- /* [193] */ 16,
- /* [194] */ 7,
- /* [195] */ 16,
- /* [196] */ 8,
- /* [197] */ 17,
- /* [198] */ 0,
- /* [199] */ 17,
- /* [200] */ 7,
- /* [201] */ 17,
- /* [202] */ 8,
- /* [203] */ 18,
- /* [204] */ 0,
- /* [205] */ 18,
- /* [206] */ 7,
- /* [207] */ 18,
+ /* [175] */ 14,
+ /* [176] */ 8,
+ /* [177] */ 14,
+ /* [178] */ 0,
+ /* [179] */ 13,
+ /* [180] */ 7,
+ /* [181] */ 13,
+ /* [182] */ 8,
+ /* [183] */ 13,
+ /* [184] */ 0,
+ /* [185] */ 12,
+ /* [186] */ 7,
+ /* [187] */ 12,
+ /* [188] */ 8,
+ /* [189] */ 12,
+ /* [190] */ 0,
+ /* [191] */ 11,
+ /* [192] */ 2,
+ /* [193] */ 11,
+ /* [194] */ 1,
+ /* [195] */ 11,
+ /* [196] */ 6,
+ /* [197] */ 11,
+ /* [198] */ 5,
+ /* [199] */ 11,
+ /* [200] */ 8,
+ /* [201] */ 10,
+ /* [202] */ 2,
+ /* [203] */ 10,
+ /* [204] */ 1,
+ /* [205] */ 10,
+ /* [206] */ 6,
+ /* [207] */ 10,
/* [208] */ 8,
- /* [209] */ 19,
- /* [210] */ 0,
- /* [211] */ 28,
+ /* [209] */ 28,
+ /* [210] */ 7,
+ /* [211] */ 29,
/* [212] */ 7,
- /* [213] */ 49,
- /* [214] */ 0,
- /* [215] */ 29,
- /* [216] */ 7,
- /* [217] */ 30,
- /* [218] */ 7,
+ /* [213] */ 30,
+ /* [214] */ 7,
+ /* [215] */ 9,
+ /* [216] */ 2,
+ /* [217] */ 9,
+ /* [218] */ 1,
/* [219] */ 31,
/* [220] */ 7,
- /* [221] */ 19,
- /* [222] */ 7,
- /* [223] */ 19,
- /* [224] */ 8,
- /* [225] */ 32,
+ /* [221] */ 9,
+ /* [222] */ 6,
+ /* [223] */ 32,
+ /* [224] */ 7,
+ /* [225] */ 33,
/* [226] */ 7,
- /* [227] */ 33,
- /* [228] */ 7,
- /* [229] */ 20,
+ /* [227] */ 9,
+ /* [228] */ 8,
+ /* [229] */ 47,
/* [230] */ 0,
- /* [231] */ 20,
- /* [232] */ 8,
+ /* [231] */ 49,
+ /* [232] */ 0,
/* [233] */ 26,
/* [234] */ 27,
/* [235] */ 38,
@@ -3315,7 +3315,7 @@
{
/* [65] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[217],
+ /* matcher indices */ &kMatcherIndices[213],
},
{
/* [66] */
@@ -3325,62 +3325,62 @@
{
/* [67] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[105],
},
{
/* [68] */
/* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[34],
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [69] */
/* usage */ ParameterUsage::kDdx,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[105],
},
{
/* [70] */
/* usage */ ParameterUsage::kDdy,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[105],
},
{
/* [71] */
/* usage */ ParameterUsage::kOffset,
- /* matcher indices */ &kMatcherIndices[129],
+ /* matcher indices */ &kMatcherIndices[145],
},
{
/* [72] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[215],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [73] */
- /* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[233],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [74] */
- /* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [75] */
- /* usage */ ParameterUsage::kDdx,
- /* matcher indices */ &kMatcherIndices[135],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [76] */
- /* usage */ ParameterUsage::kDdy,
- /* matcher indices */ &kMatcherIndices[135],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [77] */
- /* usage */ ParameterUsage::kOffset,
- /* matcher indices */ &kMatcherIndices[129],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [78] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[217],
+ /* matcher indices */ &kMatcherIndices[213],
},
{
/* [79] */
@@ -3390,87 +3390,87 @@
{
/* [80] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[105],
},
{
/* [81] */
/* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[34],
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [82] */
- /* usage */ ParameterUsage::kDdx,
- /* matcher indices */ &kMatcherIndices[135],
+ /* usage */ ParameterUsage::kBias,
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [83] */
- /* usage */ ParameterUsage::kDdy,
- /* matcher indices */ &kMatcherIndices[135],
+ /* usage */ ParameterUsage::kOffset,
+ /* matcher indices */ &kMatcherIndices[145],
},
{
/* [84] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[213],
},
{
/* [85] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
- },
- {
- /* [86] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
- },
- {
- /* [87] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
- },
- {
- /* [88] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
- },
- {
- /* [89] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
- },
- {
- /* [90] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[219],
- },
- {
- /* [91] */
/* usage */ ParameterUsage::kSampler,
/* matcher indices */ &kMatcherIndices[233],
},
{
- /* [92] */
+ /* [86] */
/* usage */ ParameterUsage::kCoords,
/* matcher indices */ &kMatcherIndices[105],
},
{
+ /* [87] */
+ /* usage */ ParameterUsage::kArrayIndex,
+ /* matcher indices */ &kMatcherIndices[53],
+ },
+ {
+ /* [88] */
+ /* usage */ ParameterUsage::kLevel,
+ /* matcher indices */ &kMatcherIndices[4],
+ },
+ {
+ /* [89] */
+ /* usage */ ParameterUsage::kOffset,
+ /* matcher indices */ &kMatcherIndices[145],
+ },
+ {
+ /* [90] */
+ /* usage */ ParameterUsage::kComponent,
+ /* matcher indices */ &kMatcherIndices[53],
+ },
+ {
+ /* [91] */
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[147],
+ },
+ {
+ /* [92] */
+ /* usage */ ParameterUsage::kSampler,
+ /* matcher indices */ &kMatcherIndices[233],
+ },
+ {
/* [93] */
- /* usage */ ParameterUsage::kDdx,
+ /* usage */ ParameterUsage::kCoords,
/* matcher indices */ &kMatcherIndices[105],
},
{
/* [94] */
- /* usage */ ParameterUsage::kDdy,
- /* matcher indices */ &kMatcherIndices[105],
+ /* usage */ ParameterUsage::kArrayIndex,
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [95] */
/* usage */ ParameterUsage::kOffset,
- /* matcher indices */ &kMatcherIndices[111],
+ /* matcher indices */ &kMatcherIndices[145],
},
{
/* [96] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[237],
+ /* matcher indices */ &kMatcherIndices[225],
},
{
/* [97] */
@@ -3480,27 +3480,27 @@
{
/* [98] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[107],
},
{
/* [99] */
/* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[34],
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [100] */
- /* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[34],
+ /* usage */ ParameterUsage::kDdx,
+ /* matcher indices */ &kMatcherIndices[107],
},
{
/* [101] */
- /* usage */ ParameterUsage::kOffset,
- /* matcher indices */ &kMatcherIndices[129],
+ /* usage */ ParameterUsage::kDdy,
+ /* matcher indices */ &kMatcherIndices[107],
},
{
/* [102] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[217],
+ /* matcher indices */ &kMatcherIndices[237],
},
{
/* [103] */
@@ -3510,52 +3510,52 @@
{
/* [104] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[105],
},
{
/* [105] */
/* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[34],
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [106] */
/* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[4],
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [107] */
/* usage */ ParameterUsage::kOffset,
- /* matcher indices */ &kMatcherIndices[129],
+ /* matcher indices */ &kMatcherIndices[145],
},
{
/* [108] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[237],
+ /* matcher indices */ &kMatcherIndices[219],
},
{
/* [109] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[234],
+ /* matcher indices */ &kMatcherIndices[233],
},
{
/* [110] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[107],
},
{
/* [111] */
- /* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[34],
+ /* usage */ ParameterUsage::kDdx,
+ /* matcher indices */ &kMatcherIndices[107],
},
{
/* [112] */
- /* usage */ ParameterUsage::kDepthRef,
- /* matcher indices */ &kMatcherIndices[4],
+ /* usage */ ParameterUsage::kDdy,
+ /* matcher indices */ &kMatcherIndices[107],
},
{
/* [113] */
/* usage */ ParameterUsage::kOffset,
- /* matcher indices */ &kMatcherIndices[129],
+ /* matcher indices */ &kMatcherIndices[153],
},
{
/* [114] */
@@ -3590,32 +3590,32 @@
{
/* [120] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[237],
+ /* matcher indices */ &kMatcherIndices[213],
},
{
/* [121] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[234],
+ /* matcher indices */ &kMatcherIndices[233],
},
{
/* [122] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[105],
},
{
/* [123] */
/* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[34],
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [124] */
- /* usage */ ParameterUsage::kDepthRef,
- /* matcher indices */ &kMatcherIndices[4],
+ /* usage */ ParameterUsage::kDdx,
+ /* matcher indices */ &kMatcherIndices[105],
},
{
/* [125] */
- /* usage */ ParameterUsage::kOffset,
- /* matcher indices */ &kMatcherIndices[129],
+ /* usage */ ParameterUsage::kDdy,
+ /* matcher indices */ &kMatcherIndices[105],
},
{
/* [126] */
@@ -3630,12 +3630,12 @@
{
/* [128] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[105],
},
{
/* [129] */
/* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[34],
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [130] */
@@ -3645,12 +3645,12 @@
{
/* [131] */
/* usage */ ParameterUsage::kOffset,
- /* matcher indices */ &kMatcherIndices[129],
+ /* matcher indices */ &kMatcherIndices[145],
},
{
/* [132] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[217],
+ /* matcher indices */ &kMatcherIndices[211],
},
{
/* [133] */
@@ -3660,32 +3660,32 @@
{
/* [134] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[105],
},
{
/* [135] */
- /* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[34],
+ /* usage */ ParameterUsage::kDdx,
+ /* matcher indices */ &kMatcherIndices[105],
},
{
/* [136] */
- /* usage */ ParameterUsage::kBias,
- /* matcher indices */ &kMatcherIndices[4],
+ /* usage */ ParameterUsage::kDdy,
+ /* matcher indices */ &kMatcherIndices[105],
},
{
/* [137] */
/* usage */ ParameterUsage::kOffset,
- /* matcher indices */ &kMatcherIndices[129],
+ /* matcher indices */ &kMatcherIndices[145],
},
{
/* [138] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[227],
+ /* matcher indices */ &kMatcherIndices[237],
},
{
/* [139] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[233],
+ /* matcher indices */ &kMatcherIndices[234],
},
{
/* [140] */
@@ -3695,52 +3695,52 @@
{
/* [141] */
/* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[34],
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [142] */
- /* usage */ ParameterUsage::kDdx,
- /* matcher indices */ &kMatcherIndices[105],
+ /* usage */ ParameterUsage::kDepthRef,
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [143] */
- /* usage */ ParameterUsage::kDdy,
- /* matcher indices */ &kMatcherIndices[105],
- },
- {
- /* [144] */
- /* usage */ ParameterUsage::kComponent,
- /* matcher indices */ &kMatcherIndices[34],
- },
- {
- /* [145] */
- /* usage */ ParameterUsage::kTexture,
+ /* usage */ ParameterUsage::kOffset,
/* matcher indices */ &kMatcherIndices[145],
},
{
- /* [146] */
+ /* [144] */
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[237],
+ },
+ {
+ /* [145] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[233],
+ /* matcher indices */ &kMatcherIndices[234],
+ },
+ {
+ /* [146] */
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[105],
},
{
/* [147] */
- /* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* usage */ ParameterUsage::kArrayIndex,
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [148] */
- /* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[34],
+ /* usage */ ParameterUsage::kDepthRef,
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [149] */
/* usage */ ParameterUsage::kOffset,
- /* matcher indices */ &kMatcherIndices[129],
+ /* matcher indices */ &kMatcherIndices[145],
},
{
/* [150] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[217],
+ /* matcher indices */ &kMatcherIndices[213],
},
{
/* [151] */
@@ -3750,52 +3750,52 @@
{
/* [152] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[105],
},
{
/* [153] */
/* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[34],
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [154] */
- /* usage */ ParameterUsage::kBias,
- /* matcher indices */ &kMatcherIndices[4],
+ /* usage */ ParameterUsage::kOffset,
+ /* matcher indices */ &kMatcherIndices[145],
},
{
/* [155] */
- /* usage */ ParameterUsage::kComponent,
- /* matcher indices */ &kMatcherIndices[34],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[237],
},
{
/* [156] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[141],
+ /* usage */ ParameterUsage::kSampler,
+ /* matcher indices */ &kMatcherIndices[234],
},
{
/* [157] */
- /* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[233],
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[105],
},
{
/* [158] */
- /* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* usage */ ParameterUsage::kArrayIndex,
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [159] */
- /* usage */ ParameterUsage::kOffset,
- /* matcher indices */ &kMatcherIndices[129],
+ /* usage */ ParameterUsage::kDepthRef,
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [160] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[235],
+ /* matcher indices */ &kMatcherIndices[211],
},
{
/* [161] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[234],
+ /* matcher indices */ &kMatcherIndices[233],
},
{
/* [162] */
@@ -3804,18 +3804,18 @@
},
{
/* [163] */
- /* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[34],
+ /* usage */ ParameterUsage::kBias,
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [164] */
- /* usage */ ParameterUsage::kDepthRef,
- /* matcher indices */ &kMatcherIndices[4],
+ /* usage */ ParameterUsage::kOffset,
+ /* matcher indices */ &kMatcherIndices[145],
},
{
/* [165] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[237],
+ /* matcher indices */ &kMatcherIndices[219],
},
{
/* [166] */
@@ -3825,22 +3825,22 @@
{
/* [167] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[107],
},
{
/* [168] */
- /* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[34],
+ /* usage */ ParameterUsage::kBias,
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [169] */
/* usage */ ParameterUsage::kOffset,
- /* matcher indices */ &kMatcherIndices[129],
+ /* matcher indices */ &kMatcherIndices[153],
},
{
/* [170] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[219],
+ /* matcher indices */ &kMatcherIndices[225],
},
{
/* [171] */
@@ -3850,47 +3850,47 @@
{
/* [172] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[105],
+ /* matcher indices */ &kMatcherIndices[107],
},
{
/* [173] */
- /* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[4],
+ /* usage */ ParameterUsage::kArrayIndex,
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [174] */
- /* usage */ ParameterUsage::kOffset,
- /* matcher indices */ &kMatcherIndices[111],
+ /* usage */ ParameterUsage::kBias,
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [175] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[237],
+ /* matcher indices */ &kMatcherIndices[238],
},
{
/* [176] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[233],
+ /* matcher indices */ &kMatcherIndices[234],
},
{
/* [177] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[105],
},
{
/* [178] */
- /* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[34],
+ /* usage */ ParameterUsage::kDepthRef,
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [179] */
/* usage */ ParameterUsage::kOffset,
- /* matcher indices */ &kMatcherIndices[129],
+ /* matcher indices */ &kMatcherIndices[145],
},
{
/* [180] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[238],
+ /* matcher indices */ &kMatcherIndices[237],
},
{
/* [181] */
@@ -3900,17 +3900,17 @@
{
/* [182] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[105],
},
{
/* [183] */
- /* usage */ ParameterUsage::kDepthRef,
- /* matcher indices */ &kMatcherIndices[4],
+ /* usage */ ParameterUsage::kArrayIndex,
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [184] */
- /* usage */ ParameterUsage::kOffset,
- /* matcher indices */ &kMatcherIndices[129],
+ /* usage */ ParameterUsage::kDepthRef,
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [185] */
@@ -3920,152 +3920,152 @@
{
/* [186] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[234],
+ /* matcher indices */ &kMatcherIndices[233],
},
{
/* [187] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[105],
},
{
/* [188] */
/* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[34],
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [189] */
- /* usage */ ParameterUsage::kDepthRef,
- /* matcher indices */ &kMatcherIndices[4],
+ /* usage */ ParameterUsage::kOffset,
+ /* matcher indices */ &kMatcherIndices[145],
},
{
/* [190] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[215],
+ /* matcher indices */ &kMatcherIndices[235],
},
{
/* [191] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[233],
+ /* matcher indices */ &kMatcherIndices[234],
},
{
/* [192] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[107],
},
{
/* [193] */
- /* usage */ ParameterUsage::kBias,
- /* matcher indices */ &kMatcherIndices[4],
+ /* usage */ ParameterUsage::kArrayIndex,
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [194] */
- /* usage */ ParameterUsage::kOffset,
- /* matcher indices */ &kMatcherIndices[129],
+ /* usage */ ParameterUsage::kDepthRef,
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [195] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[217],
+ /* matcher indices */ &kMatcherIndices[238],
},
{
/* [196] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[233],
+ /* matcher indices */ &kMatcherIndices[234],
},
{
/* [197] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[105],
},
{
/* [198] */
- /* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[34],
+ /* usage */ ParameterUsage::kDepthRef,
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [199] */
/* usage */ ParameterUsage::kOffset,
- /* matcher indices */ &kMatcherIndices[129],
+ /* matcher indices */ &kMatcherIndices[145],
},
{
/* [200] */
- /* usage */ ParameterUsage::kComponent,
- /* matcher indices */ &kMatcherIndices[34],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[237],
},
{
/* [201] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[153],
+ /* usage */ ParameterUsage::kSampler,
+ /* matcher indices */ &kMatcherIndices[234],
},
{
/* [202] */
- /* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[233],
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[105],
},
{
/* [203] */
- /* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[105],
+ /* usage */ ParameterUsage::kArrayIndex,
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [204] */
- /* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[34],
+ /* usage */ ParameterUsage::kDepthRef,
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [205] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[227],
+ /* usage */ ParameterUsage::kComponent,
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [206] */
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[159],
+ },
+ {
+ /* [207] */
/* usage */ ParameterUsage::kSampler,
/* matcher indices */ &kMatcherIndices[233],
},
{
- /* [207] */
- /* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[105],
- },
- {
/* [208] */
- /* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[34],
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[107],
},
{
/* [209] */
- /* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[4],
+ /* usage */ ParameterUsage::kArrayIndex,
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [210] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[219],
+ /* matcher indices */ &kMatcherIndices[235],
},
{
/* [211] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[233],
+ /* matcher indices */ &kMatcherIndices[234],
},
{
/* [212] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[105],
+ /* matcher indices */ &kMatcherIndices[107],
},
{
/* [213] */
- /* usage */ ParameterUsage::kBias,
- /* matcher indices */ &kMatcherIndices[4],
+ /* usage */ ParameterUsage::kArrayIndex,
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [214] */
- /* usage */ ParameterUsage::kOffset,
- /* matcher indices */ &kMatcherIndices[111],
+ /* usage */ ParameterUsage::kDepthRef,
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [215] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[238],
+ /* matcher indices */ &kMatcherIndices[211],
},
{
/* [216] */
@@ -4075,17 +4075,17 @@
{
/* [217] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[105],
},
{
/* [218] */
- /* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[34],
+ /* usage */ ParameterUsage::kDdx,
+ /* matcher indices */ &kMatcherIndices[105],
},
{
/* [219] */
- /* usage */ ParameterUsage::kOffset,
- /* matcher indices */ &kMatcherIndices[129],
+ /* usage */ ParameterUsage::kDdy,
+ /* matcher indices */ &kMatcherIndices[105],
},
{
/* [220] */
@@ -4100,12 +4100,12 @@
{
/* [222] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[105],
+ /* matcher indices */ &kMatcherIndices[107],
},
{
/* [223] */
/* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[34],
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [224] */
@@ -4115,57 +4115,57 @@
{
/* [225] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[238],
+ /* matcher indices */ &kMatcherIndices[213],
},
{
/* [226] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[234],
+ /* matcher indices */ &kMatcherIndices[233],
},
{
/* [227] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[105],
},
{
/* [228] */
- /* usage */ ParameterUsage::kDepthRef,
- /* matcher indices */ &kMatcherIndices[4],
+ /* usage */ ParameterUsage::kArrayIndex,
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [229] */
- /* usage */ ParameterUsage::kOffset,
- /* matcher indices */ &kMatcherIndices[129],
+ /* usage */ ParameterUsage::kBias,
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [230] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[217],
+ /* usage */ ParameterUsage::kComponent,
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [231] */
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[143],
+ },
+ {
+ /* [232] */
/* usage */ ParameterUsage::kSampler,
/* matcher indices */ &kMatcherIndices[233],
},
{
- /* [232] */
- /* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
- },
- {
/* [233] */
- /* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[34],
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[105],
},
{
/* [234] */
- /* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[4],
+ /* usage */ ParameterUsage::kOffset,
+ /* matcher indices */ &kMatcherIndices[145],
},
{
/* [235] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[227],
+ /* matcher indices */ &kMatcherIndices[219],
},
{
/* [236] */
@@ -4175,167 +4175,167 @@
{
/* [237] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[105],
+ /* matcher indices */ &kMatcherIndices[107],
},
{
/* [238] */
- /* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[34],
+ /* usage */ ParameterUsage::kDdx,
+ /* matcher indices */ &kMatcherIndices[107],
},
{
/* [239] */
- /* usage */ ParameterUsage::kBias,
- /* matcher indices */ &kMatcherIndices[4],
+ /* usage */ ParameterUsage::kDdy,
+ /* matcher indices */ &kMatcherIndices[107],
},
{
/* [240] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[237],
+ /* usage */ ParameterUsage::kComponent,
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [241] */
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[147],
+ },
+ {
+ /* [242] */
/* usage */ ParameterUsage::kSampler,
/* matcher indices */ &kMatcherIndices[233],
},
{
- /* [242] */
- /* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
- },
- {
/* [243] */
- /* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[34],
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[105],
},
{
/* [244] */
- /* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[34],
+ /* usage */ ParameterUsage::kArrayIndex,
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [245] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[235],
+ /* matcher indices */ &kMatcherIndices[223],
},
{
/* [246] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[234],
+ /* matcher indices */ &kMatcherIndices[233],
},
{
/* [247] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[105],
+ /* matcher indices */ &kMatcherIndices[107],
},
{
/* [248] */
- /* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[34],
+ /* usage */ ParameterUsage::kDdx,
+ /* matcher indices */ &kMatcherIndices[107],
},
{
/* [249] */
- /* usage */ ParameterUsage::kDepthRef,
- /* matcher indices */ &kMatcherIndices[4],
+ /* usage */ ParameterUsage::kDdy,
+ /* matcher indices */ &kMatcherIndices[107],
},
{
/* [250] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[215],
+ /* matcher indices */ &kMatcherIndices[238],
},
{
/* [251] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[233],
+ /* matcher indices */ &kMatcherIndices[234],
},
{
/* [252] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[105],
},
{
/* [253] */
- /* usage */ ParameterUsage::kDdx,
- /* matcher indices */ &kMatcherIndices[135],
+ /* usage */ ParameterUsage::kDepthRef,
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [254] */
- /* usage */ ParameterUsage::kDdy,
- /* matcher indices */ &kMatcherIndices[135],
+ /* usage */ ParameterUsage::kOffset,
+ /* matcher indices */ &kMatcherIndices[145],
},
{
/* [255] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[237],
+ /* matcher indices */ &kMatcherIndices[211],
},
{
/* [256] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[234],
+ /* matcher indices */ &kMatcherIndices[233],
},
{
/* [257] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[105],
},
{
/* [258] */
- /* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[34],
+ /* usage */ ParameterUsage::kLevel,
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [259] */
- /* usage */ ParameterUsage::kDepthRef,
- /* matcher indices */ &kMatcherIndices[4],
+ /* usage */ ParameterUsage::kOffset,
+ /* matcher indices */ &kMatcherIndices[145],
},
{
/* [260] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[238],
+ /* matcher indices */ &kMatcherIndices[213],
},
{
/* [261] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[234],
+ /* matcher indices */ &kMatcherIndices[233],
},
{
/* [262] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[105],
},
{
/* [263] */
- /* usage */ ParameterUsage::kDepthRef,
- /* matcher indices */ &kMatcherIndices[4],
+ /* usage */ ParameterUsage::kArrayIndex,
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [264] */
- /* usage */ ParameterUsage::kOffset,
- /* matcher indices */ &kMatcherIndices[129],
+ /* usage */ ParameterUsage::kLevel,
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [265] */
- /* usage */ ParameterUsage::kComponent,
- /* matcher indices */ &kMatcherIndices[34],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[237],
},
{
/* [266] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[145],
- },
- {
- /* [267] */
/* usage */ ParameterUsage::kSampler,
/* matcher indices */ &kMatcherIndices[233],
},
{
- /* [268] */
+ /* [267] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[105],
+ },
+ {
+ /* [268] */
+ /* usage */ ParameterUsage::kArrayIndex,
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [269] */
- /* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[34],
+ /* usage */ ParameterUsage::kOffset,
+ /* matcher indices */ &kMatcherIndices[145],
},
{
/* [270] */
@@ -4350,47 +4350,47 @@
{
/* [272] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[105],
+ /* matcher indices */ &kMatcherIndices[107],
},
{
/* [273] */
- /* usage */ ParameterUsage::kDdx,
- /* matcher indices */ &kMatcherIndices[105],
+ /* usage */ ParameterUsage::kLevel,
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [274] */
- /* usage */ ParameterUsage::kDdy,
- /* matcher indices */ &kMatcherIndices[105],
+ /* usage */ ParameterUsage::kOffset,
+ /* matcher indices */ &kMatcherIndices[153],
},
{
/* [275] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[237],
+ /* matcher indices */ &kMatcherIndices[225],
},
{
/* [276] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[234],
+ /* matcher indices */ &kMatcherIndices[233],
},
{
/* [277] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[107],
},
{
/* [278] */
/* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[34],
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [279] */
- /* usage */ ParameterUsage::kDepthRef,
+ /* usage */ ParameterUsage::kLevel,
/* matcher indices */ &kMatcherIndices[4],
},
{
/* [280] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[225],
+ /* matcher indices */ &kMatcherIndices[238],
},
{
/* [281] */
@@ -4404,13 +4404,13 @@
},
{
/* [283] */
- /* usage */ ParameterUsage::kDdx,
- /* matcher indices */ &kMatcherIndices[105],
+ /* usage */ ParameterUsage::kLevel,
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [284] */
- /* usage */ ParameterUsage::kDdy,
- /* matcher indices */ &kMatcherIndices[105],
+ /* usage */ ParameterUsage::kOffset,
+ /* matcher indices */ &kMatcherIndices[145],
},
{
/* [285] */
@@ -4425,22 +4425,22 @@
{
/* [287] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[105],
+ /* matcher indices */ &kMatcherIndices[107],
},
{
/* [288] */
/* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[34],
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [289] */
/* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[34],
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [290] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[215],
+ /* matcher indices */ &kMatcherIndices[237],
},
{
/* [291] */
@@ -4450,22 +4450,22 @@
{
/* [292] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[105],
},
{
/* [293] */
- /* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[4],
+ /* usage */ ParameterUsage::kArrayIndex,
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [294] */
- /* usage */ ParameterUsage::kOffset,
- /* matcher indices */ &kMatcherIndices[129],
+ /* usage */ ParameterUsage::kLevel,
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [295] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[217],
+ /* matcher indices */ &kMatcherIndices[237],
},
{
/* [296] */
@@ -4475,57 +4475,57 @@
{
/* [297] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[105],
},
{
/* [298] */
/* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[34],
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [299] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[215],
+ /* matcher indices */ &kMatcherIndices[238],
},
{
/* [300] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[233],
+ /* matcher indices */ &kMatcherIndices[234],
},
{
/* [301] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
- },
- {
- /* [302] */
- /* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[4],
- },
- {
- /* [303] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[236],
- },
- {
- /* [304] */
- /* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[234],
- },
- {
- /* [305] */
- /* usage */ ParameterUsage::kCoords,
/* matcher indices */ &kMatcherIndices[105],
},
{
- /* [306] */
+ /* [302] */
/* usage */ ParameterUsage::kDepthRef,
/* matcher indices */ &kMatcherIndices[4],
},
{
+ /* [303] */
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[115],
+ },
+ {
+ /* [304] */
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[115],
+ },
+ {
+ /* [305] */
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[115],
+ },
+ {
+ /* [306] */
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[115],
+ },
+ {
/* [307] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[215],
+ /* matcher indices */ &kMatcherIndices[238],
},
{
/* [308] */
@@ -4535,77 +4535,77 @@
{
/* [309] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
- },
- {
- /* [310] */
- /* usage */ ParameterUsage::kOffset,
- /* matcher indices */ &kMatcherIndices[129],
- },
- {
- /* [311] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[236],
- },
- {
- /* [312] */
- /* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[234],
- },
- {
- /* [313] */
- /* usage */ ParameterUsage::kCoords,
/* matcher indices */ &kMatcherIndices[105],
},
{
+ /* [310] */
+ /* usage */ ParameterUsage::kLevel,
+ /* matcher indices */ &kMatcherIndices[53],
+ },
+ {
+ /* [311] */
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[123],
+ },
+ {
+ /* [312] */
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[123],
+ },
+ {
+ /* [313] */
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[123],
+ },
+ {
/* [314] */
- /* usage */ ParameterUsage::kDepthRef,
- /* matcher indices */ &kMatcherIndices[4],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[123],
},
{
/* [315] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[113],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[223],
},
{
/* [316] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[113],
- },
- {
- /* [317] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[113],
- },
- {
- /* [318] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[113],
- },
- {
- /* [319] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[219],
- },
- {
- /* [320] */
/* usage */ ParameterUsage::kSampler,
/* matcher indices */ &kMatcherIndices[233],
},
{
- /* [321] */
+ /* [317] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[105],
+ /* matcher indices */ &kMatcherIndices[107],
+ },
+ {
+ /* [318] */
+ /* usage */ ParameterUsage::kLevel,
+ /* matcher indices */ &kMatcherIndices[4],
+ },
+ {
+ /* [319] */
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[131],
+ },
+ {
+ /* [320] */
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[131],
+ },
+ {
+ /* [321] */
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[131],
},
{
/* [322] */
- /* usage */ ParameterUsage::kOffset,
- /* matcher indices */ &kMatcherIndices[111],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[131],
},
{
/* [323] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[227],
+ /* matcher indices */ &kMatcherIndices[219],
},
{
/* [324] */
@@ -4615,37 +4615,37 @@
{
/* [325] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[105],
+ /* matcher indices */ &kMatcherIndices[107],
},
{
/* [326] */
- /* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[34],
+ /* usage */ ParameterUsage::kLevel,
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [327] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[238],
+ /* usage */ ParameterUsage::kComponent,
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [328] */
- /* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[234],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[157],
},
{
/* [329] */
- /* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* usage */ ParameterUsage::kSampler,
+ /* matcher indices */ &kMatcherIndices[233],
},
{
/* [330] */
- /* usage */ ParameterUsage::kDepthRef,
- /* matcher indices */ &kMatcherIndices[4],
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[107],
},
{
/* [331] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[235],
+ /* matcher indices */ &kMatcherIndices[238],
},
{
/* [332] */
@@ -4659,28 +4659,28 @@
},
{
/* [334] */
- /* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[34],
+ /* usage */ ParameterUsage::kOffset,
+ /* matcher indices */ &kMatcherIndices[145],
},
{
/* [335] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[238],
+ /* matcher indices */ &kMatcherIndices[81],
},
{
/* [336] */
- /* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[233],
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[145],
},
{
/* [337] */
- /* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* usage */ ParameterUsage::kArrayIndex,
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [338] */
- /* usage */ ParameterUsage::kOffset,
- /* matcher indices */ &kMatcherIndices[129],
+ /* usage */ ParameterUsage::kValue,
+ /* matcher indices */ &kMatcherIndices[133],
},
{
/* [339] */
@@ -4695,17 +4695,17 @@
{
/* [341] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[105],
},
{
/* [342] */
/* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[34],
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [343] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[238],
+ /* matcher indices */ &kMatcherIndices[235],
},
{
/* [344] */
@@ -4715,137 +4715,137 @@
{
/* [345] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[107],
},
{
/* [346] */
- /* usage */ ParameterUsage::kOffset,
- /* matcher indices */ &kMatcherIndices[129],
+ /* usage */ ParameterUsage::kArrayIndex,
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [347] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[237],
+ /* matcher indices */ &kMatcherIndices[238],
},
{
/* [348] */
/* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[233],
+ /* matcher indices */ &kMatcherIndices[234],
},
{
/* [349] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[105],
},
{
/* [350] */
- /* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[34],
+ /* usage */ ParameterUsage::kDepthRef,
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [351] */
- /* usage */ ParameterUsage::kComponent,
- /* matcher indices */ &kMatcherIndices[34],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[211],
},
{
/* [352] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[151],
- },
- {
- /* [353] */
/* usage */ ParameterUsage::kSampler,
/* matcher indices */ &kMatcherIndices[233],
},
{
- /* [354] */
+ /* [353] */
/* usage */ ParameterUsage::kCoords,
/* matcher indices */ &kMatcherIndices[105],
},
{
+ /* [354] */
+ /* usage */ ParameterUsage::kLevel,
+ /* matcher indices */ &kMatcherIndices[4],
+ },
+ {
/* [355] */
- /* usage */ ParameterUsage::kX,
+ /* usage */ ParameterUsage::kNone,
/* matcher indices */ &kMatcherIndices[1],
},
{
/* [356] */
- /* usage */ ParameterUsage::kY,
+ /* usage */ ParameterUsage::kNone,
/* matcher indices */ &kMatcherIndices[1],
},
{
/* [357] */
- /* usage */ ParameterUsage::kZ,
+ /* usage */ ParameterUsage::kNone,
/* matcher indices */ &kMatcherIndices[1],
},
{
/* [358] */
- /* usage */ ParameterUsage::kW,
+ /* usage */ ParameterUsage::kNone,
/* matcher indices */ &kMatcherIndices[1],
},
{
/* [359] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[237],
+ /* matcher indices */ &kMatcherIndices[236],
},
{
/* [360] */
- /* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[129],
+ /* usage */ ParameterUsage::kSampler,
+ /* matcher indices */ &kMatcherIndices[234],
},
{
/* [361] */
- /* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[34],
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[107],
},
{
/* [362] */
- /* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[34],
+ /* usage */ ParameterUsage::kDepthRef,
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [363] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[39],
+ /* matcher indices */ &kMatcherIndices[211],
},
{
/* [364] */
- /* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[129],
- },
- {
- /* [365] */
- /* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[34],
- },
- {
- /* [366] */
- /* usage */ ParameterUsage::kValue,
- /* matcher indices */ &kMatcherIndices[159],
- },
- {
- /* [367] */
- /* usage */ ParameterUsage::kComponent,
- /* matcher indices */ &kMatcherIndices[34],
- },
- {
- /* [368] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[141],
- },
- {
- /* [369] */
/* usage */ ParameterUsage::kSampler,
/* matcher indices */ &kMatcherIndices[233],
},
{
- /* [370] */
+ /* [365] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[105],
+ },
+ {
+ /* [366] */
+ /* usage */ ParameterUsage::kOffset,
+ /* matcher indices */ &kMatcherIndices[145],
+ },
+ {
+ /* [367] */
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[69],
+ },
+ {
+ /* [368] */
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[145],
+ },
+ {
+ /* [369] */
+ /* usage */ ParameterUsage::kArrayIndex,
+ /* matcher indices */ &kMatcherIndices[53],
+ },
+ {
+ /* [370] */
+ /* usage */ ParameterUsage::kValue,
+ /* matcher indices */ &kMatcherIndices[197],
},
{
/* [371] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[219],
+ /* matcher indices */ &kMatcherIndices[213],
},
{
/* [372] */
@@ -4859,13 +4859,13 @@
},
{
/* [374] */
- /* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[4],
+ /* usage */ ParameterUsage::kArrayIndex,
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [375] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[215],
+ /* matcher indices */ &kMatcherIndices[219],
},
{
/* [376] */
@@ -4875,12 +4875,12 @@
{
/* [377] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[107],
},
{
/* [378] */
- /* usage */ ParameterUsage::kBias,
- /* matcher indices */ &kMatcherIndices[4],
+ /* usage */ ParameterUsage::kOffset,
+ /* matcher indices */ &kMatcherIndices[153],
},
{
/* [379] */
@@ -4895,17 +4895,17 @@
{
/* [381] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[105],
+ /* matcher indices */ &kMatcherIndices[107],
},
{
/* [382] */
- /* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[4],
+ /* usage */ ParameterUsage::kArrayIndex,
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [383] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[219],
+ /* matcher indices */ &kMatcherIndices[238],
},
{
/* [384] */
@@ -4919,113 +4919,113 @@
},
{
/* [386] */
- /* usage */ ParameterUsage::kBias,
- /* matcher indices */ &kMatcherIndices[4],
+ /* usage */ ParameterUsage::kOffset,
+ /* matcher indices */ &kMatcherIndices[145],
},
{
/* [387] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[238],
+ /* usage */ ParameterUsage::kComponent,
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [388] */
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[143],
+ },
+ {
+ /* [389] */
/* usage */ ParameterUsage::kSampler,
/* matcher indices */ &kMatcherIndices[233],
},
{
- /* [389] */
- /* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
- },
- {
/* [390] */
- /* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[34],
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[105],
},
{
/* [391] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[225],
+ /* matcher indices */ &kMatcherIndices[57],
},
{
/* [392] */
- /* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[233],
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[145],
},
{
/* [393] */
- /* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[105],
+ /* usage */ ParameterUsage::kArrayIndex,
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [394] */
- /* usage */ ParameterUsage::kBias,
- /* matcher indices */ &kMatcherIndices[4],
+ /* usage */ ParameterUsage::kValue,
+ /* matcher indices */ &kMatcherIndices[195],
},
{
/* [395] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[235],
+ /* usage */ ParameterUsage::kX,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [396] */
- /* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[233],
+ /* usage */ ParameterUsage::kY,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [397] */
- /* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[105],
+ /* usage */ ParameterUsage::kZ,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [398] */
- /* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[34],
+ /* usage */ ParameterUsage::kW,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [399] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[236],
},
{
/* [400] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
- },
- {
- /* [401] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
- },
- {
- /* [402] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
- },
- {
- /* [403] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[238],
- },
- {
- /* [404] */
/* usage */ ParameterUsage::kSampler,
/* matcher indices */ &kMatcherIndices[234],
},
{
- /* [405] */
+ /* [401] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[107],
},
{
- /* [406] */
+ /* [402] */
/* usage */ ParameterUsage::kDepthRef,
/* matcher indices */ &kMatcherIndices[4],
},
{
+ /* [403] */
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[235],
+ },
+ {
+ /* [404] */
+ /* usage */ ParameterUsage::kSampler,
+ /* matcher indices */ &kMatcherIndices[233],
+ },
+ {
+ /* [405] */
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[107],
+ },
+ {
+ /* [406] */
+ /* usage */ ParameterUsage::kArrayIndex,
+ /* matcher indices */ &kMatcherIndices[53],
+ },
+ {
/* [407] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[236],
+ /* matcher indices */ &kMatcherIndices[211],
},
{
/* [408] */
@@ -5039,68 +5039,68 @@
},
{
/* [410] */
- /* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[34],
+ /* usage */ ParameterUsage::kBias,
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [411] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[236],
+ /* matcher indices */ &kMatcherIndices[147],
},
{
/* [412] */
- /* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[234],
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[145],
},
{
/* [413] */
- /* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[105],
+ /* usage */ ParameterUsage::kArrayIndex,
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [414] */
- /* usage */ ParameterUsage::kDepthRef,
- /* matcher indices */ &kMatcherIndices[4],
+ /* usage */ ParameterUsage::kLevel,
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [415] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[72],
+ /* matcher indices */ &kMatcherIndices[238],
},
{
/* [416] */
- /* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[129],
+ /* usage */ ParameterUsage::kSampler,
+ /* matcher indices */ &kMatcherIndices[234],
},
{
/* [417] */
- /* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[34],
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[105],
},
{
/* [418] */
- /* usage */ ParameterUsage::kValue,
- /* matcher indices */ &kMatcherIndices[131],
+ /* usage */ ParameterUsage::kDepthRef,
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [419] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[121],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[236],
},
{
/* [420] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[121],
+ /* usage */ ParameterUsage::kSampler,
+ /* matcher indices */ &kMatcherIndices[233],
},
{
/* [421] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[121],
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[107],
},
{
/* [422] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[121],
+ /* usage */ ParameterUsage::kLevel,
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [423] */
@@ -5115,12 +5115,12 @@
{
/* [425] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[35],
+ /* matcher indices */ &kMatcherIndices[44],
},
{
/* [426] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[35],
+ /* matcher indices */ &kMatcherIndices[44],
},
{
/* [427] */
@@ -5135,137 +5135,137 @@
{
/* [429] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[35],
+ /* matcher indices */ &kMatcherIndices[44],
},
{
/* [430] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[35],
+ /* matcher indices */ &kMatcherIndices[44],
},
{
/* [431] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[54],
+ /* matcher indices */ &kMatcherIndices[236],
},
{
/* [432] */
- /* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[129],
- },
- {
- /* [433] */
- /* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[34],
- },
- {
- /* [434] */
- /* usage */ ParameterUsage::kValue,
- /* matcher indices */ &kMatcherIndices[155],
- },
- {
- /* [435] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[145],
- },
- {
- /* [436] */
- /* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[129],
- },
- {
- /* [437] */
- /* usage */ ParameterUsage::kArrayIndex,
- /* matcher indices */ &kMatcherIndices[34],
- },
- {
- /* [438] */
- /* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[34],
- },
- {
- /* [439] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[115],
- },
- {
- /* [440] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[115],
- },
- {
- /* [441] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[115],
- },
- {
- /* [442] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[115],
- },
- {
- /* [443] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[238],
- },
- {
- /* [444] */
/* usage */ ParameterUsage::kSampler,
/* matcher indices */ &kMatcherIndices[234],
},
{
- /* [445] */
+ /* [433] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[107],
},
{
- /* [446] */
+ /* [434] */
/* usage */ ParameterUsage::kDepthRef,
/* matcher indices */ &kMatcherIndices[4],
},
{
+ /* [435] */
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[219],
+ },
+ {
+ /* [436] */
+ /* usage */ ParameterUsage::kSampler,
+ /* matcher indices */ &kMatcherIndices[233],
+ },
+ {
+ /* [437] */
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[107],
+ },
+ {
+ /* [438] */
+ /* usage */ ParameterUsage::kBias,
+ /* matcher indices */ &kMatcherIndices[4],
+ },
+ {
+ /* [439] */
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[223],
+ },
+ {
+ /* [440] */
+ /* usage */ ParameterUsage::kSampler,
+ /* matcher indices */ &kMatcherIndices[233],
+ },
+ {
+ /* [441] */
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[107],
+ },
+ {
+ /* [442] */
+ /* usage */ ParameterUsage::kBias,
+ /* matcher indices */ &kMatcherIndices[4],
+ },
+ {
+ /* [443] */
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[237],
+ },
+ {
+ /* [444] */
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[145],
+ },
+ {
+ /* [445] */
+ /* usage */ ParameterUsage::kArrayIndex,
+ /* matcher indices */ &kMatcherIndices[53],
+ },
+ {
+ /* [446] */
+ /* usage */ ParameterUsage::kLevel,
+ /* matcher indices */ &kMatcherIndices[53],
+ },
+ {
/* [447] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[141],
+ /* matcher indices */ &kMatcherIndices[240],
},
{
/* [448] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[129],
+ /* matcher indices */ &kMatcherIndices[145],
},
{
/* [449] */
- /* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[34],
+ /* usage */ ParameterUsage::kSampleIndex,
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [450] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[113],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[211],
},
{
/* [451] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[113],
+ /* usage */ ParameterUsage::kSampler,
+ /* matcher indices */ &kMatcherIndices[233],
},
{
/* [452] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[113],
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[105],
},
{
/* [453] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[115],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[238],
},
{
/* [454] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[115],
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[145],
},
{
/* [455] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[115],
+ /* usage */ ParameterUsage::kLevel,
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [456] */
@@ -5280,97 +5280,97 @@
{
/* [458] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[20],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [459] */
- /* usage */ ParameterUsage::kX,
- /* matcher indices */ &kMatcherIndices[1],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[161],
},
{
/* [460] */
- /* usage */ ParameterUsage::kY,
- /* matcher indices */ &kMatcherIndices[1],
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[145],
},
{
/* [461] */
- /* usage */ ParameterUsage::kZw,
- /* matcher indices */ &kMatcherIndices[115],
+ /* usage */ ParameterUsage::kSampleIndex,
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [462] */
- /* usage */ ParameterUsage::kX,
- /* matcher indices */ &kMatcherIndices[1],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[151],
},
{
/* [463] */
- /* usage */ ParameterUsage::kYz,
- /* matcher indices */ &kMatcherIndices[115],
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[153],
},
{
/* [464] */
- /* usage */ ParameterUsage::kW,
- /* matcher indices */ &kMatcherIndices[1],
+ /* usage */ ParameterUsage::kLevel,
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [465] */
- /* usage */ ParameterUsage::kXy,
- /* matcher indices */ &kMatcherIndices[115],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[0],
},
{
/* [466] */
- /* usage */ ParameterUsage::kZ,
+ /* usage */ ParameterUsage::kNone,
/* matcher indices */ &kMatcherIndices[1],
},
{
/* [467] */
- /* usage */ ParameterUsage::kW,
+ /* usage */ ParameterUsage::kNone,
/* matcher indices */ &kMatcherIndices[1],
},
{
/* [468] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[236],
+ /* usage */ ParameterUsage::kX,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [469] */
- /* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[233],
+ /* usage */ ParameterUsage::kY,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [470] */
- /* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[105],
+ /* usage */ ParameterUsage::kZ,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [471] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[143],
},
{
/* [472] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[145],
},
{
/* [473] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* usage */ ParameterUsage::kLevel,
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [474] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[141],
},
{
/* [475] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [476] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* usage */ ParameterUsage::kLevel,
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [477] */
@@ -5420,7 +5420,7 @@
{
/* [486] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[238],
+ /* matcher indices */ &kMatcherIndices[236],
},
{
/* [487] */
@@ -5430,57 +5430,57 @@
{
/* [488] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[107],
},
{
/* [489] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[225],
+ /* matcher indices */ &kMatcherIndices[54],
},
{
/* [490] */
- /* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[233],
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[153],
},
{
/* [491] */
- /* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[105],
+ /* usage */ ParameterUsage::kValue,
+ /* matcher indices */ &kMatcherIndices[195],
},
{
/* [492] */
- /* usage */ ParameterUsage::kX,
- /* matcher indices */ &kMatcherIndices[1],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[60],
},
{
/* [493] */
- /* usage */ ParameterUsage::kY,
- /* matcher indices */ &kMatcherIndices[1],
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[145],
},
{
/* [494] */
- /* usage */ ParameterUsage::kZ,
- /* matcher indices */ &kMatcherIndices[1],
+ /* usage */ ParameterUsage::kValue,
+ /* matcher indices */ &kMatcherIndices[195],
},
{
/* [495] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[219],
+ /* matcher indices */ &kMatcherIndices[63],
},
{
/* [496] */
- /* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[233],
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [497] */
- /* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[105],
+ /* usage */ ParameterUsage::kValue,
+ /* matcher indices */ &kMatcherIndices[195],
},
{
/* [498] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[215],
+ /* matcher indices */ &kMatcherIndices[238],
},
{
/* [499] */
@@ -5490,112 +5490,112 @@
{
/* [500] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
- },
- {
- /* [501] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[211],
- },
- {
- /* [502] */
- /* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[233],
- },
- {
- /* [503] */
- /* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[4],
- },
- {
- /* [504] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[121],
- },
- {
- /* [505] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[121],
- },
- {
- /* [506] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[121],
- },
- {
- /* [507] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[236],
- },
- {
- /* [508] */
- /* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[233],
- },
- {
- /* [509] */
- /* usage */ ParameterUsage::kCoords,
/* matcher indices */ &kMatcherIndices[105],
},
{
- /* [510] */
+ /* [501] */
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[30],
+ },
+ {
+ /* [502] */
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[30],
+ },
+ {
+ /* [503] */
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[30],
+ },
+ {
+ /* [504] */
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[223],
+ },
+ {
+ /* [505] */
+ /* usage */ ParameterUsage::kSampler,
+ /* matcher indices */ &kMatcherIndices[233],
+ },
+ {
+ /* [506] */
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[107],
+ },
+ {
+ /* [507] */
/* usage */ ParameterUsage::kNone,
/* matcher indices */ &kMatcherIndices[1],
},
{
+ /* [508] */
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[1],
+ },
+ {
+ /* [509] */
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[1],
+ },
+ {
+ /* [510] */
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[219],
+ },
+ {
/* [511] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[35],
+ /* usage */ ParameterUsage::kSampler,
+ /* matcher indices */ &kMatcherIndices[233],
},
{
/* [512] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[35],
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[107],
},
{
/* [513] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* usage */ ParameterUsage::kXy,
+ /* matcher indices */ &kMatcherIndices[131],
},
{
/* [514] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[35],
+ /* usage */ ParameterUsage::kZ,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [515] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[35],
+ /* usage */ ParameterUsage::kW,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [516] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[66],
},
{
/* [517] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[153],
},
{
/* [518] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* usage */ ParameterUsage::kValue,
+ /* matcher indices */ &kMatcherIndices[197],
},
{
/* [519] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[72],
},
{
/* [520] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[145],
},
{
/* [521] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* usage */ ParameterUsage::kValue,
+ /* matcher indices */ &kMatcherIndices[197],
},
{
/* [522] */
@@ -5629,108 +5629,108 @@
},
{
/* [528] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[0],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[209],
},
{
/* [529] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
- },
- {
- /* [530] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
- },
- {
- /* [531] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[238],
- },
- {
- /* [532] */
/* usage */ ParameterUsage::kSampler,
/* matcher indices */ &kMatcherIndices[233],
},
{
- /* [533] */
+ /* [530] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[4],
+ },
+ {
+ /* [531] */
+ /* usage */ ParameterUsage::kX,
+ /* matcher indices */ &kMatcherIndices[1],
+ },
+ {
+ /* [532] */
+ /* usage */ ParameterUsage::kYz,
+ /* matcher indices */ &kMatcherIndices[131],
+ },
+ {
+ /* [533] */
+ /* usage */ ParameterUsage::kW,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [534] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[239],
+ /* matcher indices */ &kMatcherIndices[75],
},
{
/* [535] */
- /* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[233],
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [536] */
- /* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* usage */ ParameterUsage::kValue,
+ /* matcher indices */ &kMatcherIndices[197],
},
{
/* [537] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[215],
+ /* usage */ ParameterUsage::kX,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [538] */
- /* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[233],
+ /* usage */ ParameterUsage::kY,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [539] */
- /* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* usage */ ParameterUsage::kZw,
+ /* matcher indices */ &kMatcherIndices[131],
},
{
/* [540] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[239],
+ /* matcher indices */ &kMatcherIndices[78],
},
{
/* [541] */
- /* usage */ ParameterUsage::kSampler,
- /* matcher indices */ &kMatcherIndices[233],
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[153],
},
{
/* [542] */
- /* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[135],
+ /* usage */ ParameterUsage::kValue,
+ /* matcher indices */ &kMatcherIndices[133],
},
{
/* [543] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[102],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[131],
},
{
/* [544] */
- /* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[34],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[131],
},
{
/* [545] */
- /* usage */ ParameterUsage::kValue,
+ /* usage */ ParameterUsage::kNone,
/* matcher indices */ &kMatcherIndices[131],
},
{
/* [546] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[75],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [547] */
- /* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[129],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [548] */
- /* usage */ ParameterUsage::kValue,
- /* matcher indices */ &kMatcherIndices[131],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[12],
},
{
/* [549] */
@@ -5745,7 +5745,7 @@
{
/* [551] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[20],
+ /* matcher indices */ &kMatcherIndices[12],
},
{
/* [552] */
@@ -5760,97 +5760,97 @@
{
/* [554] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[36],
+ /* matcher indices */ &kMatcherIndices[33],
},
{
/* [555] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[66],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [556] */
- /* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[111],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [557] */
- /* usage */ ParameterUsage::kValue,
- /* matcher indices */ &kMatcherIndices[131],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [558] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[63],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [559] */
- /* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[34],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[44],
},
{
/* [560] */
- /* usage */ ParameterUsage::kValue,
- /* matcher indices */ &kMatcherIndices[155],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[44],
},
{
/* [561] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[57],
+ /* matcher indices */ &kMatcherIndices[236],
},
{
/* [562] */
- /* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[129],
+ /* usage */ ParameterUsage::kSampler,
+ /* matcher indices */ &kMatcherIndices[233],
},
{
/* [563] */
- /* usage */ ParameterUsage::kValue,
- /* matcher indices */ &kMatcherIndices[155],
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[107],
},
{
/* [564] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[51],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[123],
},
{
/* [565] */
- /* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[111],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[123],
},
{
/* [566] */
- /* usage */ ParameterUsage::kValue,
- /* matcher indices */ &kMatcherIndices[155],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[123],
},
{
/* [567] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[48],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [568] */
- /* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[34],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[44],
},
{
/* [569] */
- /* usage */ ParameterUsage::kValue,
- /* matcher indices */ &kMatcherIndices[159],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[44],
},
{
/* [570] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[240],
+ /* matcher indices */ &kMatcherIndices[84],
},
{
/* [571] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[129],
+ /* matcher indices */ &kMatcherIndices[145],
},
{
/* [572] */
- /* usage */ ParameterUsage::kSampleIndex,
- /* matcher indices */ &kMatcherIndices[34],
+ /* usage */ ParameterUsage::kValue,
+ /* matcher indices */ &kMatcherIndices[133],
},
{
/* [573] */
@@ -5885,232 +5885,232 @@
{
/* [579] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[42],
- },
- {
- /* [580] */
- /* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[129],
- },
- {
- /* [581] */
- /* usage */ ParameterUsage::kValue,
- /* matcher indices */ &kMatcherIndices[159],
- },
- {
- /* [582] */
- /* usage */ ParameterUsage::kTexture,
/* matcher indices */ &kMatcherIndices[238],
},
{
- /* [583] */
+ /* [580] */
+ /* usage */ ParameterUsage::kSampler,
+ /* matcher indices */ &kMatcherIndices[233],
+ },
+ {
+ /* [581] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[129],
+ /* matcher indices */ &kMatcherIndices[105],
+ },
+ {
+ /* [582] */
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[115],
+ },
+ {
+ /* [583] */
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[115],
},
{
/* [584] */
- /* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[34],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[115],
},
{
/* [585] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[33],
+ /* matcher indices */ &kMatcherIndices[87],
},
{
/* [586] */
/* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[111],
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [587] */
/* usage */ ParameterUsage::kValue,
- /* matcher indices */ &kMatcherIndices[159],
+ /* matcher indices */ &kMatcherIndices[133],
},
{
/* [588] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[139],
+ /* matcher indices */ &kMatcherIndices[239],
},
{
/* [589] */
- /* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[34],
+ /* usage */ ParameterUsage::kSampler,
+ /* matcher indices */ &kMatcherIndices[233],
},
{
/* [590] */
- /* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[34],
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[105],
},
{
/* [591] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[157],
+ /* matcher indices */ &kMatcherIndices[211],
},
{
/* [592] */
- /* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[129],
+ /* usage */ ParameterUsage::kSampler,
+ /* matcher indices */ &kMatcherIndices[233],
},
{
/* [593] */
- /* usage */ ParameterUsage::kSampleIndex,
- /* matcher indices */ &kMatcherIndices[34],
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[105],
},
{
/* [594] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[147],
+ /* matcher indices */ &kMatcherIndices[239],
},
{
/* [595] */
- /* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[111],
+ /* usage */ ParameterUsage::kSampler,
+ /* matcher indices */ &kMatcherIndices[233],
},
{
/* [596] */
- /* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[34],
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[105],
},
{
/* [597] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [598] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [599] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[69],
+ /* matcher indices */ &kMatcherIndices[44],
},
{
/* [600] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[44],
},
{
/* [601] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* matcher indices */ &kMatcherIndices[115],
},
{
/* [602] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* matcher indices */ &kMatcherIndices[115],
},
{
/* [603] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* matcher indices */ &kMatcherIndices[123],
},
{
/* [604] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* matcher indices */ &kMatcherIndices[123],
},
{
/* [605] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[235],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[131],
},
{
/* [606] */
- /* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[34],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[131],
},
{
/* [607] */
- /* usage */ ParameterUsage::kNone,
+ /* usage */ ParameterUsage::kX,
/* matcher indices */ &kMatcherIndices[1],
},
{
/* [608] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[34],
+ /* usage */ ParameterUsage::kZyw,
+ /* matcher indices */ &kMatcherIndices[123],
},
{
/* [609] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[239],
+ /* usage */ ParameterUsage::kXyz,
+ /* matcher indices */ &kMatcherIndices[123],
},
{
/* [610] */
- /* usage */ ParameterUsage::kCoords,
- /* matcher indices */ &kMatcherIndices[129],
+ /* usage */ ParameterUsage::kW,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [611] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[0],
+ /* usage */ ParameterUsage::kXy,
+ /* matcher indices */ &kMatcherIndices[131],
},
{
/* [612] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* usage */ ParameterUsage::kZw,
+ /* matcher indices */ &kMatcherIndices[131],
},
{
/* [613] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[18],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [614] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[22],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [615] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[0],
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [616] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [617] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[0],
+ /* usage */ ParameterUsage::kX,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [618] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* usage */ ParameterUsage::kYz,
+ /* matcher indices */ &kMatcherIndices[131],
},
{
/* [619] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* usage */ ParameterUsage::kXy,
+ /* matcher indices */ &kMatcherIndices[131],
},
{
/* [620] */
- /* usage */ ParameterUsage::kNone,
+ /* usage */ ParameterUsage::kZ,
/* matcher indices */ &kMatcherIndices[1],
},
{
/* [621] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[0],
+ /* usage */ ParameterUsage::kX,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [622] */
- /* usage */ ParameterUsage::kNone,
+ /* usage */ ParameterUsage::kY,
/* matcher indices */ &kMatcherIndices[1],
},
{
/* [623] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[139],
+ /* matcher indices */ &kMatcherIndices[141],
},
{
/* [624] */
/* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[34],
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [625] */
@@ -6120,107 +6120,107 @@
{
/* [626] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* matcher indices */ &kMatcherIndices[42],
},
{
/* [627] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[141],
+ /* matcher indices */ &kMatcherIndices[143],
},
{
/* [628] */
/* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[34],
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [629] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [630] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[90],
+ /* matcher indices */ &kMatcherIndices[44],
},
{
/* [631] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[145],
+ /* matcher indices */ &kMatcherIndices[147],
},
{
/* [632] */
/* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[34],
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [633] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[0],
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [634] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* matcher indices */ &kMatcherIndices[48],
},
{
/* [635] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[147],
+ /* matcher indices */ &kMatcherIndices[151],
},
{
/* [636] */
/* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[34],
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [637] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[0],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [638] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* matcher indices */ &kMatcherIndices[50],
},
{
/* [639] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[151],
+ /* matcher indices */ &kMatcherIndices[157],
},
{
/* [640] */
/* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[34],
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [641] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[0],
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [642] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* matcher indices */ &kMatcherIndices[42],
},
{
/* [643] */
/* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[153],
+ /* matcher indices */ &kMatcherIndices[159],
},
{
/* [644] */
/* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[34],
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [645] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[0],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [646] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* matcher indices */ &kMatcherIndices[44],
},
{
/* [647] */
@@ -6230,17 +6230,17 @@
{
/* [648] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [649] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[0],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[238],
},
{
/* [650] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* usage */ ParameterUsage::kLevel,
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [651] */
@@ -6250,7 +6250,7 @@
{
/* [652] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [653] */
@@ -6260,17 +6260,17 @@
{
/* [654] */
/* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[34],
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [655] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [656] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [657] */
@@ -6280,32 +6280,32 @@
{
/* [658] */
/* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[34],
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [659] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [660] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [661] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[235],
},
{
/* [662] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* usage */ ParameterUsage::kLevel,
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [663] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [664] */
@@ -6315,22 +6315,22 @@
{
/* [665] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [666] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [667] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[20],
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [668] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[20],
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [669] */
@@ -6355,12 +6355,12 @@
{
/* [673] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[36],
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [674] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[36],
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [675] */
@@ -6375,32 +6375,32 @@
{
/* [677] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* matcher indices */ &kMatcherIndices[12],
},
{
/* [678] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* matcher indices */ &kMatcherIndices[12],
},
{
/* [679] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[20],
+ /* matcher indices */ &kMatcherIndices[12],
},
{
/* [680] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[20],
+ /* matcher indices */ &kMatcherIndices[12],
},
{
/* [681] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[36],
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [682] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[36],
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [683] */
@@ -6420,37 +6420,37 @@
{
/* [686] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [687] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[238],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [688] */
- /* usage */ ParameterUsage::kLevel,
- /* matcher indices */ &kMatcherIndices[34],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [689] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* matcher indices */ &kMatcherIndices[33],
},
{
/* [690] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* matcher indices */ &kMatcherIndices[33],
},
{
/* [691] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* matcher indices */ &kMatcherIndices[12],
},
{
/* [692] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* matcher indices */ &kMatcherIndices[12],
},
{
/* [693] */
@@ -6470,37 +6470,37 @@
{
/* [696] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [697] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[20],
+ /* matcher indices */ &kMatcherIndices[33],
},
{
/* [698] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[20],
+ /* matcher indices */ &kMatcherIndices[33],
},
{
/* [699] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[20],
+ /* matcher indices */ &kMatcherIndices[12],
},
{
/* [700] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[20],
+ /* matcher indices */ &kMatcherIndices[12],
},
{
/* [701] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [702] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [703] */
@@ -6515,7 +6515,7 @@
{
/* [705] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [706] */
@@ -6525,7 +6525,7 @@
{
/* [707] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [708] */
@@ -6560,7 +6560,7 @@
{
/* [714] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [715] */
@@ -6570,82 +6570,82 @@
{
/* [716] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [717] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [718] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [719] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [720] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [721] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* matcher indices */ &kMatcherIndices[26],
},
{
/* [722] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* matcher indices */ &kMatcherIndices[14],
},
{
/* [723] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* matcher indices */ &kMatcherIndices[39],
},
{
/* [724] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* matcher indices */ &kMatcherIndices[18],
},
{
/* [725] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* matcher indices */ &kMatcherIndices[18],
},
{
/* [726] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[35],
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [727] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[35],
+ /* matcher indices */ &kMatcherIndices[18],
},
{
/* [728] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[35],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [729] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[35],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [730] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[35],
+ /* matcher indices */ &kMatcherIndices[18],
},
{
/* [731] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [732] */
@@ -6660,67 +6660,67 @@
{
/* [734] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [735] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [736] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [737] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [738] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[93],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [739] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* matcher indices */ &kMatcherIndices[18],
},
{
/* [740] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[67],
+ /* matcher indices */ &kMatcherIndices[18],
},
{
/* [741] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [742] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[96],
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [743] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[113],
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [744] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[113],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [745] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [746] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [747] */
@@ -6740,32 +6740,32 @@
{
/* [750] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[35],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [751] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* matcher indices */ &kMatcherIndices[18],
},
{
/* [752] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[93],
+ /* matcher indices */ &kMatcherIndices[18],
},
{
/* [753] */
- /* usage */ ParameterUsage::kX,
- /* matcher indices */ &kMatcherIndices[1],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [754] */
- /* usage */ ParameterUsage::kY,
- /* matcher indices */ &kMatcherIndices[1],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [755] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [756] */
@@ -6785,22 +6785,22 @@
{
/* [759] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [760] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [761] */
- /* usage */ ParameterUsage::kXy,
- /* matcher indices */ &kMatcherIndices[115],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [762] */
- /* usage */ ParameterUsage::kZ,
- /* matcher indices */ &kMatcherIndices[1],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [763] */
@@ -6814,28 +6814,28 @@
},
{
/* [765] */
- /* usage */ ParameterUsage::kX,
- /* matcher indices */ &kMatcherIndices[1],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[0],
},
{
/* [766] */
- /* usage */ ParameterUsage::kYz,
- /* matcher indices */ &kMatcherIndices[115],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [767] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* matcher indices */ &kMatcherIndices[0],
},
{
/* [768] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [769] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* matcher indices */ &kMatcherIndices[0],
},
{
/* [770] */
@@ -6845,32 +6845,32 @@
{
/* [771] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* matcher indices */ &kMatcherIndices[0],
},
{
/* [772] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [773] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [774] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [775] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [776] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [777] */
@@ -6880,22 +6880,22 @@
{
/* [778] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [779] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [780] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [781] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* matcher indices */ &kMatcherIndices[0],
},
{
/* [782] */
@@ -6904,88 +6904,88 @@
},
{
/* [783] */
- /* usage */ ParameterUsage::kXy,
- /* matcher indices */ &kMatcherIndices[115],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[0],
},
{
/* [784] */
- /* usage */ ParameterUsage::kZw,
- /* matcher indices */ &kMatcherIndices[115],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [785] */
- /* usage */ ParameterUsage::kXyz,
- /* matcher indices */ &kMatcherIndices[113],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[0],
},
{
/* [786] */
- /* usage */ ParameterUsage::kW,
+ /* usage */ ParameterUsage::kNone,
/* matcher indices */ &kMatcherIndices[1],
},
{
/* [787] */
- /* usage */ ParameterUsage::kX,
- /* matcher indices */ &kMatcherIndices[1],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[0],
},
{
/* [788] */
- /* usage */ ParameterUsage::kZyw,
- /* matcher indices */ &kMatcherIndices[113],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [789] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* matcher indices */ &kMatcherIndices[0],
},
{
/* [790] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [791] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[115],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[239],
},
{
/* [792] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[115],
+ /* usage */ ParameterUsage::kCoords,
+ /* matcher indices */ &kMatcherIndices[145],
},
{
/* [793] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[113],
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [794] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[113],
+ /* matcher indices */ &kMatcherIndices[51],
},
{
/* [795] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[121],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [796] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[121],
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [797] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* matcher indices */ &kMatcherIndices[123],
},
{
/* [798] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[123],
},
{
/* [799] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [800] */
@@ -6995,7 +6995,7 @@
{
/* [801] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [802] */
@@ -7015,17 +7015,17 @@
{
/* [805] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* matcher indices */ &kMatcherIndices[44],
},
{
/* [806] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* matcher indices */ &kMatcherIndices[44],
},
{
/* [807] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[240],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[12],
},
{
/* [808] */
@@ -7034,183 +7034,183 @@
},
{
/* [809] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[236],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [810] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[237],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [811] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[238],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [812] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[153],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [813] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[151],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [814] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[147],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [815] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[145],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [816] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[141],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [817] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[139],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [818] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[45],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [819] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[235],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [820] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[237],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [821] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[153],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [822] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[145],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [823] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[239],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [824] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[81],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[36],
},
{
/* [825] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[45],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [826] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[84],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[36],
},
{
/* [827] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[87],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [828] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[240],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[36],
},
{
/* [829] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[235],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [830] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[236],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[36],
},
{
/* [831] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[237],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [832] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[238],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[36],
},
{
/* [833] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[157],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [834] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[153],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[36],
},
{
/* [835] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[151],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [836] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[147],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [837] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[145],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[36],
},
{
/* [838] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[141],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[4],
},
{
/* [839] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[139],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[36],
},
{
/* [840] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[35],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [841] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[35],
+ /* matcher indices */ &kMatcherIndices[22],
},
{
/* [842] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[35],
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [843] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[35],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [844] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[35],
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [845] */
@@ -7225,32 +7225,32 @@
{
/* [847] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[10],
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [848] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [849] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [850] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [851] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [852] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[165],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [853] */
@@ -7315,12 +7315,12 @@
{
/* [865] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [866] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* matcher indices */ &kMatcherIndices[105],
},
{
/* [867] */
@@ -7335,12 +7335,12 @@
{
/* [869] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[20],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [870] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[36],
+ /* matcher indices */ &kMatcherIndices[33],
},
{
/* [871] */
@@ -7365,137 +7365,137 @@
{
/* [875] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* matcher indices */ &kMatcherIndices[105],
},
{
/* [876] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* matcher indices */ &kMatcherIndices[105],
},
{
/* [877] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* matcher indices */ &kMatcherIndices[133],
},
{
/* [878] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[131],
+ /* matcher indices */ &kMatcherIndices[133],
},
{
/* [879] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[131],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [880] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [881] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[135],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [882] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[135],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[240],
},
{
/* [883] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[161],
},
{
/* [884] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[235],
},
{
/* [885] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[236],
},
{
/* [886] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[237],
},
{
/* [887] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[238],
},
{
/* [888] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[159],
},
{
/* [889] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[157],
},
{
/* [890] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[151],
},
{
/* [891] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[147],
},
{
/* [892] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[143],
},
{
/* [893] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[141],
},
{
/* [894] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[60],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[90],
},
{
/* [895] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[4],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[235],
},
{
/* [896] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[60],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[237],
},
{
/* [897] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[4],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[159],
},
{
/* [898] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[60],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[147],
},
{
/* [899] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[4],
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [900] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [901] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [902] */
@@ -7550,112 +7550,112 @@
{
/* [912] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* matcher indices */ &kMatcherIndices[111],
},
{
/* [913] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [914] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[60],
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [915] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[4],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[239],
},
{
/* [916] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[60],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [917] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[4],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[93],
},
{
/* [918] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[60],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[90],
},
{
/* [919] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[231],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[96],
},
{
/* [920] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[4],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[99],
},
{
/* [921] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[60],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[240],
},
{
/* [922] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[4],
+ /* matcher indices */ &kMatcherIndices[36],
},
{
/* [923] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[60],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[236],
},
{
/* [924] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[4],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[237],
},
{
/* [925] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[60],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[238],
},
{
/* [926] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[4],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[161],
},
{
/* [927] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[14],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[159],
},
{
/* [928] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[157],
},
{
/* [929] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[151],
},
{
/* [930] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[147],
},
{
/* [931] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[143],
},
{
/* [932] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* matcher indices */ &kMatcherIndices[109],
},
{
/* [933] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[34],
+ /* matcher indices */ &kMatcherIndices[53],
},
{
/* [934] */
@@ -7665,12 +7665,12 @@
{
/* [935] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[229],
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [936] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[35],
+ /* matcher indices */ &kMatcherIndices[44],
},
{
/* [937] */
@@ -7680,7 +7680,7 @@
{
/* [938] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[223],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [939] */
@@ -7695,12 +7695,12 @@
{
/* [941] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[221],
+ /* matcher indices */ &kMatcherIndices[113],
},
{
/* [942] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[110],
+ /* matcher indices */ &kMatcherIndices[112],
},
{
/* [943] */
@@ -7710,12 +7710,12 @@
{
/* [944] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* matcher indices */ &kMatcherIndices[119],
},
{
/* [945] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[20],
+ /* matcher indices */ &kMatcherIndices[12],
},
{
/* [946] */
@@ -7725,12 +7725,12 @@
{
/* [947] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* matcher indices */ &kMatcherIndices[117],
},
{
/* [948] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[115],
+ /* matcher indices */ &kMatcherIndices[131],
},
{
/* [949] */
@@ -7739,98 +7739,98 @@
},
{
/* [950] */
- /* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* usage */ ParameterUsage::kTexture,
+ /* matcher indices */ &kMatcherIndices[141],
},
{
/* [951] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[125],
+ /* matcher indices */ &kMatcherIndices[217],
},
{
/* [952] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[125],
+ /* matcher indices */ &kMatcherIndices[217],
},
{
/* [953] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[125],
+ /* matcher indices */ &kMatcherIndices[217],
},
{
/* [954] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[125],
+ /* matcher indices */ &kMatcherIndices[217],
},
{
/* [955] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[125],
+ /* matcher indices */ &kMatcherIndices[217],
},
{
/* [956] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[209],
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [957] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[113],
+ /* matcher indices */ &kMatcherIndices[123],
},
{
/* [958] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [959] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [960] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [961] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* matcher indices */ &kMatcherIndices[44],
},
{
/* [962] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[107],
+ /* matcher indices */ &kMatcherIndices[203],
},
{
/* [963] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[107],
+ /* matcher indices */ &kMatcherIndices[203],
},
{
/* [964] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[107],
+ /* matcher indices */ &kMatcherIndices[203],
},
{
/* [965] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[107],
+ /* matcher indices */ &kMatcherIndices[203],
},
{
/* [966] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[107],
+ /* matcher indices */ &kMatcherIndices[203],
},
{
/* [967] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[207],
+ /* matcher indices */ &kMatcherIndices[121],
},
{
/* [968] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[121],
+ /* matcher indices */ &kMatcherIndices[115],
},
{
/* [969] */
@@ -7840,32 +7840,32 @@
{
/* [970] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [971] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* matcher indices */ &kMatcherIndices[44],
},
{
/* [972] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* matcher indices */ &kMatcherIndices[44],
},
{
/* [973] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [974] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* matcher indices */ &kMatcherIndices[44],
},
{
/* [975] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* matcher indices */ &kMatcherIndices[44],
},
{
/* [976] */
@@ -7875,42 +7875,42 @@
{
/* [977] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* matcher indices */ &kMatcherIndices[193],
},
{
/* [978] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[143],
+ /* matcher indices */ &kMatcherIndices[193],
},
{
/* [979] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[143],
+ /* matcher indices */ &kMatcherIndices[193],
},
{
/* [980] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[143],
+ /* matcher indices */ &kMatcherIndices[193],
},
{
/* [981] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[143],
+ /* matcher indices */ &kMatcherIndices[193],
},
{
/* [982] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[205],
+ /* matcher indices */ &kMatcherIndices[127],
},
{
/* [983] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[163],
+ /* matcher indices */ &kMatcherIndices[189],
},
{
/* [984] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [985] */
@@ -7920,57 +7920,57 @@
{
/* [986] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[167],
+ /* matcher indices */ &kMatcherIndices[185],
},
{
/* [987] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[169],
+ /* matcher indices */ &kMatcherIndices[187],
},
{
/* [988] */
- /* usage */ ParameterUsage::kTexture,
- /* matcher indices */ &kMatcherIndices[157],
+ /* usage */ ParameterUsage::kNone,
+ /* matcher indices */ &kMatcherIndices[125],
},
{
/* [989] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[171],
+ /* matcher indices */ &kMatcherIndices[183],
},
{
/* [990] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[36],
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [991] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[20],
+ /* matcher indices */ &kMatcherIndices[18],
},
{
/* [992] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[173],
+ /* matcher indices */ &kMatcherIndices[179],
},
{
/* [993] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[177],
+ /* matcher indices */ &kMatcherIndices[181],
},
{
/* [994] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[36],
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [995] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[179],
+ /* matcher indices */ &kMatcherIndices[177],
},
{
/* [996] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[20],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [997] */
@@ -7980,97 +7980,97 @@
{
/* [998] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[181],
+ /* matcher indices */ &kMatcherIndices[173],
},
{
/* [999] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[183],
+ /* matcher indices */ &kMatcherIndices[175],
},
{
/* [1000] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[203],
+ /* matcher indices */ &kMatcherIndices[12],
},
{
/* [1001] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[185],
+ /* matcher indices */ &kMatcherIndices[169],
},
{
/* [1002] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* matcher indices */ &kMatcherIndices[30],
},
{
/* [1003] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* matcher indices */ &kMatcherIndices[1],
},
{
/* [1004] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[187],
+ /* matcher indices */ &kMatcherIndices[165],
},
{
/* [1005] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[189],
+ /* matcher indices */ &kMatcherIndices[167],
},
{
/* [1006] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[201],
+ /* matcher indices */ &kMatcherIndices[129],
},
{
/* [1007] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[191],
+ /* matcher indices */ &kMatcherIndices[163],
},
{
/* [1008] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* matcher indices */ &kMatcherIndices[5],
},
{
/* [1009] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[30],
+ /* matcher indices */ &kMatcherIndices[33],
},
{
/* [1010] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[193],
+ /* matcher indices */ &kMatcherIndices[149],
},
{
/* [1011] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[195],
+ /* matcher indices */ &kMatcherIndices[155],
},
{
/* [1012] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[199],
+ /* matcher indices */ &kMatcherIndices[137],
},
{
/* [1013] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[197],
+ /* matcher indices */ &kMatcherIndices[139],
},
{
/* [1014] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[5],
+ /* matcher indices */ &kMatcherIndices[12],
},
{
/* [1015] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[1],
+ /* matcher indices */ &kMatcherIndices[33],
},
{
/* [1016] */
/* usage */ ParameterUsage::kNone,
- /* matcher indices */ &kMatcherIndices[143],
+ /* matcher indices */ &kMatcherIndices[135],
},
};
@@ -8078,32 +8078,32 @@
{
/* [0] */
/* name */ "T",
- /* matcher index */ 2,
+ /* matcher index */ 7,
},
{
/* [1] */
/* name */ "U",
- /* matcher index */ 56,
+ /* matcher index */ 52,
},
{
/* [2] */
/* name */ "T",
- /* matcher index */ 7,
+ /* matcher index */ 2,
},
{
/* [3] */
/* name */ "U",
- /* matcher index */ 52,
+ /* matcher index */ 56,
},
{
/* [4] */
/* name */ "T",
- /* matcher index */ 8,
+ /* matcher index */ 6,
},
{
/* [5] */
/* name */ "U",
- /* matcher index */ 53,
+ /* matcher index */ 55,
},
{
/* [6] */
@@ -8118,22 +8118,22 @@
{
/* [8] */
/* name */ "T",
- /* matcher index */ 6,
+ /* matcher index */ 8,
},
{
/* [9] */
/* name */ "U",
- /* matcher index */ 55,
+ /* matcher index */ 53,
},
{
/* [10] */
/* name */ "T",
- /* matcher index */ 62,
+ /* matcher index */ 50,
},
{
/* [11] */
/* name */ "T",
- /* matcher index */ 67,
+ /* matcher index */ 57,
},
{
/* [12] */
@@ -8143,7 +8143,7 @@
{
/* [13] */
/* name */ "T",
- /* matcher index */ 57,
+ /* matcher index */ 67,
},
{
/* [14] */
@@ -8158,52 +8158,52 @@
{
/* [16] */
/* name */ "T",
- /* matcher index */ 50,
+ /* matcher index */ 64,
},
{
/* [17] */
/* name */ "T",
- /* matcher index */ 64,
+ /* matcher index */ 51,
},
{
/* [18] */
/* name */ "T",
- /* matcher index */ 51,
+ /* matcher index */ kNoMatcher,
},
{
/* [19] */
/* name */ "T",
- /* matcher index */ kNoMatcher,
+ /* matcher index */ 56,
},
{
/* [20] */
/* name */ "T",
- /* matcher index */ 56,
+ /* matcher index */ 53,
},
{
/* [21] */
/* name */ "T",
- /* matcher index */ 53,
+ /* matcher index */ 52,
},
{
/* [22] */
/* name */ "T",
- /* matcher index */ 52,
+ /* matcher index */ 55,
},
{
/* [23] */
/* name */ "T",
- /* matcher index */ 55,
+ /* matcher index */ 54,
},
{
/* [24] */
/* name */ "T",
- /* matcher index */ 54,
+ /* matcher index */ 3,
},
{
/* [25] */
/* name */ "T",
- /* matcher index */ 3,
+ /* matcher index */ 62,
},
{
/* [26] */
@@ -8240,20 +8240,20 @@
},
{
/* [5] */
- /* name */ "M",
- /* matcher index */ kNoMatcher,
- },
- {
- /* [6] */
/* name */ "N",
/* matcher index */ kNoMatcher,
},
{
- /* [7] */
+ /* [6] */
/* name */ "M",
/* matcher index */ kNoMatcher,
},
{
+ /* [7] */
+ /* name */ "N",
+ /* matcher index */ kNoMatcher,
+ },
+ {
/* [8] */
/* name */ "A",
/* matcher index */ kNoMatcher,
@@ -8271,10 +8271,10 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[17],
+ /* template types */ &kTemplateTypes[16],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[839],
- /* return matcher indices */ &kMatcherIndices[34],
+ /* parameters */ &kParameters[950],
+ /* return matcher indices */ &kMatcherIndices[53],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
@@ -8283,10 +8283,10 @@
/* num parameters */ 2,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[17],
+ /* template types */ &kTemplateTypes[16],
/* template numbers */ &kTemplateNumbers[10],
/* parameters */ &kParameters[623],
- /* return matcher indices */ &kMatcherIndices[34],
+ /* return matcher indices */ &kMatcherIndices[53],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
@@ -8295,10 +8295,10 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[17],
+ /* template types */ &kTemplateTypes[16],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[838],
- /* return matcher indices */ &kMatcherIndices[129],
+ /* parameters */ &kParameters[931],
+ /* return matcher indices */ &kMatcherIndices[145],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
@@ -8307,10 +8307,10 @@
/* num parameters */ 2,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[17],
+ /* template types */ &kTemplateTypes[16],
/* template numbers */ &kTemplateNumbers[10],
/* parameters */ &kParameters[627],
- /* return matcher indices */ &kMatcherIndices[129],
+ /* return matcher indices */ &kMatcherIndices[145],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
@@ -8319,10 +8319,10 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[17],
+ /* template types */ &kTemplateTypes[16],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[837],
- /* return matcher indices */ &kMatcherIndices[129],
+ /* parameters */ &kParameters[930],
+ /* return matcher indices */ &kMatcherIndices[145],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
@@ -8331,10 +8331,10 @@
/* num parameters */ 2,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[17],
+ /* template types */ &kTemplateTypes[16],
/* template numbers */ &kTemplateNumbers[10],
/* parameters */ &kParameters[631],
- /* return matcher indices */ &kMatcherIndices[129],
+ /* return matcher indices */ &kMatcherIndices[145],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
@@ -8343,10 +8343,10 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[17],
+ /* template types */ &kTemplateTypes[16],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[836],
- /* return matcher indices */ &kMatcherIndices[111],
+ /* parameters */ &kParameters[929],
+ /* return matcher indices */ &kMatcherIndices[153],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
@@ -8355,10 +8355,10 @@
/* num parameters */ 2,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[17],
+ /* template types */ &kTemplateTypes[16],
/* template numbers */ &kTemplateNumbers[10],
/* parameters */ &kParameters[635],
- /* return matcher indices */ &kMatcherIndices[111],
+ /* return matcher indices */ &kMatcherIndices[153],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
@@ -8367,10 +8367,10 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[17],
+ /* template types */ &kTemplateTypes[16],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[835],
- /* return matcher indices */ &kMatcherIndices[129],
+ /* parameters */ &kParameters[928],
+ /* return matcher indices */ &kMatcherIndices[145],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
@@ -8379,10 +8379,10 @@
/* num parameters */ 2,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[17],
+ /* template types */ &kTemplateTypes[16],
/* template numbers */ &kTemplateNumbers[10],
/* parameters */ &kParameters[639],
- /* return matcher indices */ &kMatcherIndices[129],
+ /* return matcher indices */ &kMatcherIndices[145],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
@@ -8391,10 +8391,10 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[17],
+ /* template types */ &kTemplateTypes[16],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[834],
- /* return matcher indices */ &kMatcherIndices[129],
+ /* parameters */ &kParameters[927],
+ /* return matcher indices */ &kMatcherIndices[145],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
@@ -8403,10 +8403,10 @@
/* num parameters */ 2,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[17],
+ /* template types */ &kTemplateTypes[16],
/* template numbers */ &kTemplateNumbers[10],
/* parameters */ &kParameters[643],
- /* return matcher indices */ &kMatcherIndices[129],
+ /* return matcher indices */ &kMatcherIndices[145],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
@@ -8415,10 +8415,10 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[17],
+ /* template types */ &kTemplateTypes[16],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[833],
- /* return matcher indices */ &kMatcherIndices[129],
+ /* parameters */ &kParameters[926],
+ /* return matcher indices */ &kMatcherIndices[145],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
@@ -8429,8 +8429,8 @@
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[832],
- /* return matcher indices */ &kMatcherIndices[129],
+ /* parameters */ &kParameters[925],
+ /* return matcher indices */ &kMatcherIndices[145],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
@@ -8441,8 +8441,8 @@
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[687],
- /* return matcher indices */ &kMatcherIndices[129],
+ /* parameters */ &kParameters[649],
+ /* return matcher indices */ &kMatcherIndices[145],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
@@ -8453,8 +8453,8 @@
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[831],
- /* return matcher indices */ &kMatcherIndices[129],
+ /* parameters */ &kParameters[924],
+ /* return matcher indices */ &kMatcherIndices[145],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
@@ -8466,7 +8466,7 @@
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
/* parameters */ &kParameters[653],
- /* return matcher indices */ &kMatcherIndices[129],
+ /* return matcher indices */ &kMatcherIndices[145],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
@@ -8477,8 +8477,8 @@
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[830],
- /* return matcher indices */ &kMatcherIndices[129],
+ /* parameters */ &kParameters[923],
+ /* return matcher indices */ &kMatcherIndices[145],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
@@ -8490,7 +8490,7 @@
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
/* parameters */ &kParameters[657],
- /* return matcher indices */ &kMatcherIndices[129],
+ /* return matcher indices */ &kMatcherIndices[145],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
@@ -8501,8 +8501,8 @@
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[829],
- /* return matcher indices */ &kMatcherIndices[129],
+ /* parameters */ &kParameters[808],
+ /* return matcher indices */ &kMatcherIndices[145],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
@@ -8513,8 +8513,8 @@
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[605],
- /* return matcher indices */ &kMatcherIndices[129],
+ /* parameters */ &kParameters[661],
+ /* return matcher indices */ &kMatcherIndices[145],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
@@ -8525,8 +8525,8 @@
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[828],
- /* return matcher indices */ &kMatcherIndices[129],
+ /* parameters */ &kParameters[921],
+ /* return matcher indices */ &kMatcherIndices[145],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
@@ -8537,8 +8537,8 @@
/* num template numbers */ 2,
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[3],
- /* parameters */ &kParameters[827],
- /* return matcher indices */ &kMatcherIndices[34],
+ /* parameters */ &kParameters[920],
+ /* return matcher indices */ &kMatcherIndices[53],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
@@ -8549,8 +8549,8 @@
/* num template numbers */ 2,
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[3],
- /* parameters */ &kParameters[826],
- /* return matcher indices */ &kMatcherIndices[129],
+ /* parameters */ &kParameters[919],
+ /* return matcher indices */ &kMatcherIndices[145],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
@@ -8561,8 +8561,8 @@
/* num template numbers */ 2,
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[3],
- /* parameters */ &kParameters[825],
- /* return matcher indices */ &kMatcherIndices[129],
+ /* parameters */ &kParameters[918],
+ /* return matcher indices */ &kMatcherIndices[145],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
@@ -8573,8 +8573,8 @@
/* num template numbers */ 2,
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[3],
- /* parameters */ &kParameters[824],
- /* return matcher indices */ &kMatcherIndices[111],
+ /* parameters */ &kParameters[917],
+ /* return matcher indices */ &kMatcherIndices[153],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
@@ -8585,81 +8585,81 @@
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[823],
- /* return matcher indices */ &kMatcherIndices[129],
+ /* parameters */ &kParameters[915],
+ /* return matcher indices */ &kMatcherIndices[145],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
/* [27] */
+ /* num parameters */ 3,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[528],
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [28] */
+ /* num parameters */ 3,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[450],
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [29] */
/* num parameters */ 4,
/* num template types */ 0,
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[299],
- /* return matcher indices */ &kMatcherIndices[131],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [28] */
- /* num parameters */ 5,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[290],
- /* return matcher indices */ &kMatcherIndices[131],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [29] */
- /* num parameters */ 5,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[230],
- /* return matcher indices */ &kMatcherIndices[131],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* parameters */ &kParameters[363],
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
/* const eval */ nullptr,
},
{
/* [30] */
- /* num parameters */ 6,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[102],
- /* return matcher indices */ &kMatcherIndices[131],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [31] */
/* num parameters */ 4,
/* num template types */ 0,
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
/* parameters */ &kParameters[371],
- /* return matcher indices */ &kMatcherIndices[131],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
/* const eval */ nullptr,
},
{
- /* [32] */
+ /* [31] */
/* num parameters */ 5,
/* num template types */ 0,
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[170],
- /* return matcher indices */ &kMatcherIndices[131],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* parameters */ &kParameters[150],
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [32] */
+ /* num parameters */ 3,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[510],
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
/* const eval */ nullptr,
},
{
@@ -8669,21 +8669,21 @@
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[379],
- /* return matcher indices */ &kMatcherIndices[131],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* parameters */ &kParameters[375],
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
/* const eval */ nullptr,
},
{
/* [34] */
- /* num parameters */ 5,
+ /* num parameters */ 3,
/* num template types */ 0,
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[205],
- /* return matcher indices */ &kMatcherIndices[131],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* parameters */ &kParameters[504],
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
/* const eval */ nullptr,
},
{
@@ -8693,373 +8693,61 @@
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[387],
- /* return matcher indices */ &kMatcherIndices[4],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [36] */
- /* num parameters */ 5,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[215],
- /* return matcher indices */ &kMatcherIndices[4],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [37] */
- /* num parameters */ 5,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[240],
- /* return matcher indices */ &kMatcherIndices[4],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [38] */
- /* num parameters */ 6,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[96],
- /* return matcher indices */ &kMatcherIndices[4],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [39] */
- /* num parameters */ 4,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[407],
- /* return matcher indices */ &kMatcherIndices[4],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [40] */
- /* num parameters */ 5,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[285],
- /* return matcher indices */ &kMatcherIndices[4],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [41] */
- /* num parameters */ 3,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[534],
- /* return matcher indices */ &kMatcherIndices[131],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kIsDeprecated),
- /* const eval */ nullptr,
- },
- {
- /* [42] */
- /* num parameters */ 0,
- /* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[18],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[1017],
- /* return matcher indices */ &kMatcherIndices[121],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::Zero,
- },
- {
- /* [43] */
- /* num parameters */ 1,
- /* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[18],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[968],
- /* return matcher indices */ &kMatcherIndices[121],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::Identity,
- },
- {
- /* [44] */
- /* num parameters */ 1,
- /* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[16],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[969],
- /* return matcher indices */ &kMatcherIndices[121],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::VecSplat,
- },
- {
- /* [45] */
- /* num parameters */ 4,
- /* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[16],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[355],
- /* return matcher indices */ &kMatcherIndices[121],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::VecCtorS,
- },
- {
- /* [46] */
- /* num parameters */ 3,
- /* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[16],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[465],
- /* return matcher indices */ &kMatcherIndices[121],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::VecCtorM,
- },
- {
- /* [47] */
- /* num parameters */ 3,
- /* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[16],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[462],
- /* return matcher indices */ &kMatcherIndices[121],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::VecCtorM,
- },
- {
- /* [48] */
- /* num parameters */ 3,
- /* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[16],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[459],
- /* return matcher indices */ &kMatcherIndices[121],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::VecCtorM,
- },
- {
- /* [49] */
- /* num parameters */ 2,
- /* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[16],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[783],
- /* return matcher indices */ &kMatcherIndices[121],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::VecCtorM,
- },
- {
- /* [50] */
- /* num parameters */ 2,
- /* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[16],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[785],
- /* return matcher indices */ &kMatcherIndices[121],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::VecCtorM,
- },
- {
- /* [51] */
- /* num parameters */ 2,
- /* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[16],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[787],
- /* return matcher indices */ &kMatcherIndices[121],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::VecCtorM,
- },
- {
- /* [52] */
- /* num parameters */ 1,
- /* num template types */ 2,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[2],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[1016],
- /* return matcher indices */ &kMatcherIndices[131],
- /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::Conv,
- },
- {
- /* [53] */
- /* num parameters */ 1,
- /* num template types */ 2,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[4],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[978],
- /* return matcher indices */ &kMatcherIndices[149],
- /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::Conv,
- },
- {
- /* [54] */
- /* num parameters */ 1,
- /* num template types */ 2,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[6],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[979],
- /* return matcher indices */ &kMatcherIndices[155],
- /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::Conv,
- },
- {
- /* [55] */
- /* num parameters */ 1,
- /* num template types */ 2,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[8],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[980],
- /* return matcher indices */ &kMatcherIndices[159],
- /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::Conv,
- },
- {
- /* [56] */
- /* num parameters */ 1,
- /* num template types */ 2,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[0],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[981],
- /* return matcher indices */ &kMatcherIndices[161],
- /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::Conv,
- },
- {
- /* [57] */
- /* num parameters */ 3,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[501],
- /* return matcher indices */ &kMatcherIndices[131],
+ /* parameters */ &kParameters[379],
+ /* return matcher indices */ &kMatcherIndices[133],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
/* const eval */ nullptr,
},
{
- /* [58] */
+ /* [36] */
/* num parameters */ 3,
/* num template types */ 0,
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
/* parameters */ &kParameters[498],
- /* return matcher indices */ &kMatcherIndices[131],
+ /* return matcher indices */ &kMatcherIndices[4],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
/* const eval */ nullptr,
},
{
- /* [59] */
+ /* [37] */
/* num parameters */ 4,
/* num template types */ 0,
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[307],
- /* return matcher indices */ &kMatcherIndices[131],
+ /* parameters */ &kParameters[383],
+ /* return matcher indices */ &kMatcherIndices[4],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
/* const eval */ nullptr,
},
{
- /* [60] */
+ /* [38] */
/* num parameters */ 4,
/* num template types */ 0,
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
/* parameters */ &kParameters[295],
- /* return matcher indices */ &kMatcherIndices[131],
+ /* return matcher indices */ &kMatcherIndices[4],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
/* const eval */ nullptr,
},
{
- /* [61] */
+ /* [39] */
/* num parameters */ 5,
/* num template types */ 0,
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[195],
- /* return matcher indices */ &kMatcherIndices[131],
+ /* parameters */ &kParameters[185],
+ /* return matcher indices */ &kMatcherIndices[4],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
/* const eval */ nullptr,
},
{
- /* [62] */
- /* num parameters */ 3,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[495],
- /* return matcher indices */ &kMatcherIndices[131],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
- /* const eval */ nullptr,
- },
- {
- /* [63] */
- /* num parameters */ 4,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[319],
- /* return matcher indices */ &kMatcherIndices[131],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
- /* const eval */ nullptr,
- },
- {
- /* [64] */
- /* num parameters */ 3,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[489],
- /* return matcher indices */ &kMatcherIndices[131],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
- /* const eval */ nullptr,
- },
- {
- /* [65] */
- /* num parameters */ 4,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[323],
- /* return matcher indices */ &kMatcherIndices[131],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
- /* const eval */ nullptr,
- },
- {
- /* [66] */
+ /* [40] */
/* num parameters */ 3,
/* num template types */ 0,
/* num template numbers */ 0,
@@ -9071,1339 +8759,7 @@
/* const eval */ nullptr,
},
{
- /* [67] */
- /* num parameters */ 4,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[335],
- /* return matcher indices */ &kMatcherIndices[4],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
- /* const eval */ nullptr,
- },
- {
- /* [68] */
- /* num parameters */ 4,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[347],
- /* return matcher indices */ &kMatcherIndices[4],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
- /* const eval */ nullptr,
- },
- {
- /* [69] */
- /* num parameters */ 5,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[165],
- /* return matcher indices */ &kMatcherIndices[4],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
- /* const eval */ nullptr,
- },
- {
- /* [70] */
- /* num parameters */ 3,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[468],
- /* return matcher indices */ &kMatcherIndices[4],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
- /* const eval */ nullptr,
- },
- {
- /* [71] */
- /* num parameters */ 4,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[395],
- /* return matcher indices */ &kMatcherIndices[4],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
- /* const eval */ nullptr,
- },
- {
- /* [72] */
- /* num parameters */ 4,
- /* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[17],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[367],
- /* return matcher indices */ &kMatcherIndices[121],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [73] */
- /* num parameters */ 5,
- /* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[17],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[155],
- /* return matcher indices */ &kMatcherIndices[121],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [74] */
- /* num parameters */ 5,
- /* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[17],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[265],
- /* return matcher indices */ &kMatcherIndices[121],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [75] */
- /* num parameters */ 6,
- /* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[17],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[144],
- /* return matcher indices */ &kMatcherIndices[121],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [76] */
- /* num parameters */ 4,
- /* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[17],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[351],
- /* return matcher indices */ &kMatcherIndices[121],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [77] */
- /* num parameters */ 5,
- /* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[17],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[200],
- /* return matcher indices */ &kMatcherIndices[121],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [78] */
- /* num parameters */ 3,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[531],
- /* return matcher indices */ &kMatcherIndices[131],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [79] */
- /* num parameters */ 4,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[343],
- /* return matcher indices */ &kMatcherIndices[131],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [80] */
- /* num parameters */ 4,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[339],
- /* return matcher indices */ &kMatcherIndices[131],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [81] */
- /* num parameters */ 5,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[175],
- /* return matcher indices */ &kMatcherIndices[131],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [82] */
- /* num parameters */ 3,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[507],
- /* return matcher indices */ &kMatcherIndices[131],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [83] */
- /* num parameters */ 4,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[331],
- /* return matcher indices */ &kMatcherIndices[131],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [84] */
- /* num parameters */ 3,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[543],
- /* return matcher indices */ nullptr,
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [85] */
- /* num parameters */ 3,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[546],
- /* return matcher indices */ nullptr,
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [86] */
- /* num parameters */ 4,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[415],
- /* return matcher indices */ nullptr,
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [87] */
- /* num parameters */ 3,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[555],
- /* return matcher indices */ nullptr,
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [88] */
- /* num parameters */ 3,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[558],
- /* return matcher indices */ nullptr,
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [89] */
- /* num parameters */ 3,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[561],
- /* return matcher indices */ nullptr,
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [90] */
- /* num parameters */ 4,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[431],
- /* return matcher indices */ nullptr,
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [91] */
- /* num parameters */ 3,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[564],
- /* return matcher indices */ nullptr,
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [92] */
- /* num parameters */ 3,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[567],
- /* return matcher indices */ nullptr,
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [93] */
- /* num parameters */ 3,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[579],
- /* return matcher indices */ nullptr,
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [94] */
- /* num parameters */ 4,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[363],
- /* return matcher indices */ nullptr,
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [95] */
- /* num parameters */ 3,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[585],
- /* return matcher indices */ nullptr,
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [96] */
- /* num parameters */ 0,
- /* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[18],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[1017],
- /* return matcher indices */ &kMatcherIndices[113],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::Zero,
- },
- {
- /* [97] */
- /* num parameters */ 1,
- /* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[18],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[957],
- /* return matcher indices */ &kMatcherIndices[113],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::Identity,
- },
- {
- /* [98] */
- /* num parameters */ 1,
- /* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[16],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[902],
- /* return matcher indices */ &kMatcherIndices[113],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::VecSplat,
- },
- {
- /* [99] */
- /* num parameters */ 3,
- /* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[16],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[492],
- /* return matcher indices */ &kMatcherIndices[113],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::VecCtorS,
- },
- {
- /* [100] */
- /* num parameters */ 2,
- /* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[16],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[761],
- /* return matcher indices */ &kMatcherIndices[113],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::VecCtorM,
- },
- {
- /* [101] */
- /* num parameters */ 2,
- /* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[16],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[765],
- /* return matcher indices */ &kMatcherIndices[113],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::VecCtorM,
- },
- {
- /* [102] */
- /* num parameters */ 1,
- /* num template types */ 2,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[2],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[962],
- /* return matcher indices */ &kMatcherIndices[105],
- /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::Conv,
- },
- {
- /* [103] */
- /* num parameters */ 1,
- /* num template types */ 2,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[4],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[963],
- /* return matcher indices */ &kMatcherIndices[109],
- /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::Conv,
- },
- {
- /* [104] */
- /* num parameters */ 1,
- /* num template types */ 2,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[6],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[964],
- /* return matcher indices */ &kMatcherIndices[111],
- /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::Conv,
- },
- {
- /* [105] */
- /* num parameters */ 1,
- /* num template types */ 2,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[8],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[965],
- /* return matcher indices */ &kMatcherIndices[117],
- /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::Conv,
- },
- {
- /* [106] */
- /* num parameters */ 1,
- /* num template types */ 2,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[0],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[966],
- /* return matcher indices */ &kMatcherIndices[119],
- /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::Conv,
- },
- {
- /* [107] */
- /* num parameters */ 1,
- /* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[17],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[817],
- /* return matcher indices */ &kMatcherIndices[34],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [108] */
- /* num parameters */ 1,
- /* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[17],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[816],
- /* return matcher indices */ &kMatcherIndices[34],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [109] */
- /* num parameters */ 1,
- /* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[17],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[815],
- /* return matcher indices */ &kMatcherIndices[34],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [110] */
- /* num parameters */ 1,
- /* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[17],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[814],
- /* return matcher indices */ &kMatcherIndices[34],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [111] */
- /* num parameters */ 1,
- /* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[17],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[813],
- /* return matcher indices */ &kMatcherIndices[34],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [112] */
- /* num parameters */ 1,
- /* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[17],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[812],
- /* return matcher indices */ &kMatcherIndices[34],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [113] */
- /* num parameters */ 1,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[811],
- /* return matcher indices */ &kMatcherIndices[34],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [114] */
- /* num parameters */ 1,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[810],
- /* return matcher indices */ &kMatcherIndices[34],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [115] */
- /* num parameters */ 1,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[809],
- /* return matcher indices */ &kMatcherIndices[34],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [116] */
- /* num parameters */ 1,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[808],
- /* return matcher indices */ &kMatcherIndices[34],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [117] */
- /* num parameters */ 2,
- /* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[13],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[763],
- /* return matcher indices */ &kMatcherIndices[1],
- /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::OpMultiply,
- },
- {
- /* [118] */
- /* num parameters */ 2,
- /* num template types */ 1,
- /* num template numbers */ 1,
- /* template types */ &kTemplateTypes[13],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[775],
- /* return matcher indices */ &kMatcherIndices[30],
- /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::OpMultiply,
- },
- {
- /* [119] */
- /* num parameters */ 2,
- /* num template types */ 1,
- /* num template numbers */ 1,
- /* template types */ &kTemplateTypes[13],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[777],
- /* return matcher indices */ &kMatcherIndices[30],
- /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::OpMultiply,
- },
- {
- /* [120] */
- /* num parameters */ 2,
- /* num template types */ 1,
- /* num template numbers */ 1,
- /* template types */ &kTemplateTypes[13],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[801],
- /* return matcher indices */ &kMatcherIndices[30],
- /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::OpMultiply,
- },
- {
- /* [121] */
- /* num parameters */ 2,
- /* num template types */ 1,
- /* num template numbers */ 2,
- /* template types */ &kTemplateTypes[12],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[797],
- /* return matcher indices */ &kMatcherIndices[10],
- /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::OpMultiply,
- },
- {
- /* [122] */
- /* num parameters */ 2,
- /* num template types */ 1,
- /* num template numbers */ 2,
- /* template types */ &kTemplateTypes[12],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[799],
- /* return matcher indices */ &kMatcherIndices[10],
- /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::OpMultiply,
- },
- {
- /* [123] */
- /* num parameters */ 2,
- /* num template types */ 1,
- /* num template numbers */ 2,
- /* template types */ &kTemplateTypes[12],
- /* template numbers */ &kTemplateNumbers[1],
- /* parameters */ &kParameters[597],
- /* return matcher indices */ &kMatcherIndices[69],
- /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::OpMultiplyMatVec,
- },
- {
- /* [124] */
- /* num parameters */ 2,
- /* num template types */ 1,
- /* num template numbers */ 2,
- /* template types */ &kTemplateTypes[12],
- /* template numbers */ &kTemplateNumbers[1],
- /* parameters */ &kParameters[599],
- /* return matcher indices */ &kMatcherIndices[30],
- /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::OpMultiplyVecMat,
- },
- {
- /* [125] */
- /* num parameters */ 2,
- /* num template types */ 1,
- /* num template numbers */ 3,
- /* template types */ &kTemplateTypes[12],
- /* template numbers */ &kTemplateNumbers[0],
- /* parameters */ &kParameters[613],
- /* return matcher indices */ &kMatcherIndices[26],
- /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::OpMultiplyMatMat,
- },
- {
- /* [126] */
- /* num parameters */ 0,
- /* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[18],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[1017],
- /* return matcher indices */ &kMatcherIndices[115],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::Zero,
- },
- {
- /* [127] */
- /* num parameters */ 1,
- /* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[18],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[948],
- /* return matcher indices */ &kMatcherIndices[115],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::Identity,
- },
- {
- /* [128] */
- /* num parameters */ 1,
- /* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[16],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[949],
- /* return matcher indices */ &kMatcherIndices[115],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::VecSplat,
- },
- {
- /* [129] */
- /* num parameters */ 2,
- /* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[16],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[753],
- /* return matcher indices */ &kMatcherIndices[115],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::VecCtorS,
- },
- {
- /* [130] */
- /* num parameters */ 1,
- /* num template types */ 2,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[2],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[951],
- /* return matcher indices */ &kMatcherIndices[135],
- /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::Conv,
- },
- {
- /* [131] */
- /* num parameters */ 1,
- /* num template types */ 2,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[4],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[952],
- /* return matcher indices */ &kMatcherIndices[133],
- /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::Conv,
- },
- {
- /* [132] */
- /* num parameters */ 1,
- /* num template types */ 2,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[6],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[953],
- /* return matcher indices */ &kMatcherIndices[129],
- /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::Conv,
- },
- {
- /* [133] */
- /* num parameters */ 1,
- /* num template types */ 2,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[8],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[954],
- /* return matcher indices */ &kMatcherIndices[127],
- /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::Conv,
- },
- {
- /* [134] */
- /* num parameters */ 1,
- /* num template types */ 2,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[0],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[955],
- /* return matcher indices */ &kMatcherIndices[123],
- /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::Conv,
- },
- {
- /* [135] */
- /* num parameters */ 3,
- /* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[17],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[588],
- /* return matcher indices */ &kMatcherIndices[121],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [136] */
- /* num parameters */ 3,
- /* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[17],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[447],
- /* return matcher indices */ &kMatcherIndices[121],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [137] */
- /* num parameters */ 4,
- /* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[17],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[435],
- /* return matcher indices */ &kMatcherIndices[121],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [138] */
- /* num parameters */ 3,
- /* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[17],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[594],
- /* return matcher indices */ &kMatcherIndices[121],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [139] */
- /* num parameters */ 3,
- /* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[17],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[591],
- /* return matcher indices */ &kMatcherIndices[121],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [140] */
- /* num parameters */ 3,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[582],
- /* return matcher indices */ &kMatcherIndices[4],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [141] */
- /* num parameters */ 4,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[359],
- /* return matcher indices */ &kMatcherIndices[4],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [142] */
- /* num parameters */ 3,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[570],
- /* return matcher indices */ &kMatcherIndices[4],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [143] */
- /* num parameters */ 2,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[609],
- /* return matcher indices */ &kMatcherIndices[131],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [144] */
- /* num parameters */ 4,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[375],
- /* return matcher indices */ &kMatcherIndices[131],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
- /* const eval */ nullptr,
- },
- {
- /* [145] */
- /* num parameters */ 5,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[190],
- /* return matcher indices */ &kMatcherIndices[131],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
- /* const eval */ nullptr,
- },
- {
- /* [146] */
- /* num parameters */ 5,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[150],
- /* return matcher indices */ &kMatcherIndices[131],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
- /* const eval */ nullptr,
- },
- {
- /* [147] */
- /* num parameters */ 6,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[132],
- /* return matcher indices */ &kMatcherIndices[131],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
- /* const eval */ nullptr,
- },
- {
- /* [148] */
- /* num parameters */ 4,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[383],
- /* return matcher indices */ &kMatcherIndices[131],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
- /* const eval */ nullptr,
- },
- {
- /* [149] */
- /* num parameters */ 5,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[210],
- /* return matcher indices */ &kMatcherIndices[131],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
- /* const eval */ nullptr,
- },
- {
- /* [150] */
- /* num parameters */ 4,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[391],
- /* return matcher indices */ &kMatcherIndices[131],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
- /* const eval */ nullptr,
- },
- {
- /* [151] */
- /* num parameters */ 5,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[235],
- /* return matcher indices */ &kMatcherIndices[131],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
- /* const eval */ nullptr,
- },
- {
- /* [152] */
- /* num parameters */ 5,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[250],
- /* return matcher indices */ &kMatcherIndices[131],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [153] */
- /* num parameters */ 6,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[72],
- /* return matcher indices */ &kMatcherIndices[131],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [154] */
- /* num parameters */ 6,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[78],
- /* return matcher indices */ &kMatcherIndices[131],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [155] */
- /* num parameters */ 7,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[65],
- /* return matcher indices */ &kMatcherIndices[131],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [156] */
- /* num parameters */ 5,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[270],
- /* return matcher indices */ &kMatcherIndices[131],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [157] */
- /* num parameters */ 6,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[90],
- /* return matcher indices */ &kMatcherIndices[131],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [158] */
- /* num parameters */ 5,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[280],
- /* return matcher indices */ &kMatcherIndices[131],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [159] */
- /* num parameters */ 6,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[138],
- /* return matcher indices */ &kMatcherIndices[131],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [160] */
- /* num parameters */ 0,
- /* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[11],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[1017],
- /* return matcher indices */ &kMatcherIndices[185],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::Zero,
- },
- {
- /* [161] */
- /* num parameters */ 1,
- /* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[11],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[1001],
- /* return matcher indices */ &kMatcherIndices[185],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::Identity,
- },
- {
- /* [162] */
- /* num parameters */ 6,
- /* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[12],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[114],
- /* return matcher indices */ &kMatcherIndices[185],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::MatCtorS,
- },
- {
- /* [163] */
- /* num parameters */ 3,
- /* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[12],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[453],
- /* return matcher indices */ &kMatcherIndices[185],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::MatCtorV,
- },
- {
- /* [164] */
- /* num parameters */ 1,
- /* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[4],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[1004],
- /* return matcher indices */ &kMatcherIndices[189],
- /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::Conv,
- },
- {
- /* [165] */
- /* num parameters */ 1,
- /* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[2],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[1005],
- /* return matcher indices */ &kMatcherIndices[187],
- /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::Conv,
- },
- {
- /* [166] */
- /* num parameters */ 4,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[443],
- /* return matcher indices */ &kMatcherIndices[4],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [167] */
- /* num parameters */ 5,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[225],
- /* return matcher indices */ &kMatcherIndices[4],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [168] */
- /* num parameters */ 5,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[255],
- /* return matcher indices */ &kMatcherIndices[4],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [169] */
- /* num parameters */ 6,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[108],
- /* return matcher indices */ &kMatcherIndices[4],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [170] */
- /* num parameters */ 4,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[303],
- /* return matcher indices */ &kMatcherIndices[4],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [171] */
- /* num parameters */ 5,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[245],
- /* return matcher indices */ &kMatcherIndices[4],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [172] */
- /* num parameters */ 0,
- /* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[11],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[1017],
- /* return matcher indices */ &kMatcherIndices[179],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::Zero,
- },
- {
- /* [173] */
- /* num parameters */ 1,
- /* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[11],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[995],
- /* return matcher indices */ &kMatcherIndices[179],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::Identity,
- },
- {
- /* [174] */
- /* num parameters */ 8,
- /* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[12],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[57],
- /* return matcher indices */ &kMatcherIndices[179],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::MatCtorS,
- },
- {
- /* [175] */
- /* num parameters */ 2,
- /* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[12],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[795],
- /* return matcher indices */ &kMatcherIndices[179],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::MatCtorV,
- },
- {
- /* [176] */
- /* num parameters */ 1,
- /* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[4],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[998],
- /* return matcher indices */ &kMatcherIndices[183],
- /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::Conv,
- },
- {
- /* [177] */
- /* num parameters */ 1,
- /* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[2],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[999],
- /* return matcher indices */ &kMatcherIndices[181],
- /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::Conv,
- },
- {
- /* [178] */
+ /* [41] */
/* num parameters */ 4,
/* num template types */ 0,
/* num template numbers */ 0,
@@ -10415,219 +8771,1863 @@
/* const eval */ nullptr,
},
{
- /* [179] */
+ /* [42] */
+ /* num parameters */ 0,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[17],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[1017],
+ /* return matcher indices */ &kMatcherIndices[115],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::Zero,
+ },
+ {
+ /* [43] */
+ /* num parameters */ 1,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[17],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[968],
+ /* return matcher indices */ &kMatcherIndices[115],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::Identity,
+ },
+ {
+ /* [44] */
+ /* num parameters */ 1,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[10],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[969],
+ /* return matcher indices */ &kMatcherIndices[115],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::VecSplat,
+ },
+ {
+ /* [45] */
+ /* num parameters */ 4,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[10],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[395],
+ /* return matcher indices */ &kMatcherIndices[115],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::VecInitS,
+ },
+ {
+ /* [46] */
+ /* num parameters */ 3,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[10],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[513],
+ /* return matcher indices */ &kMatcherIndices[115],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::VecInitM,
+ },
+ {
+ /* [47] */
+ /* num parameters */ 3,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[10],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[531],
+ /* return matcher indices */ &kMatcherIndices[115],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::VecInitM,
+ },
+ {
+ /* [48] */
+ /* num parameters */ 3,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[10],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[537],
+ /* return matcher indices */ &kMatcherIndices[115],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::VecInitM,
+ },
+ {
+ /* [49] */
+ /* num parameters */ 2,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[10],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[611],
+ /* return matcher indices */ &kMatcherIndices[115],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::VecInitM,
+ },
+ {
+ /* [50] */
+ /* num parameters */ 2,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[10],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[609],
+ /* return matcher indices */ &kMatcherIndices[115],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::VecInitM,
+ },
+ {
+ /* [51] */
+ /* num parameters */ 2,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[10],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[607],
+ /* return matcher indices */ &kMatcherIndices[115],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::VecInitM,
+ },
+ {
+ /* [52] */
+ /* num parameters */ 1,
+ /* num template types */ 2,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[0],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[977],
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::Conv,
+ },
+ {
+ /* [53] */
+ /* num parameters */ 1,
+ /* num template types */ 2,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[8],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[978],
+ /* return matcher indices */ &kMatcherIndices[199],
+ /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::Conv,
+ },
+ {
+ /* [54] */
+ /* num parameters */ 1,
+ /* num template types */ 2,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[6],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[979],
+ /* return matcher indices */ &kMatcherIndices[197],
+ /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::Conv,
+ },
+ {
+ /* [55] */
+ /* num parameters */ 1,
+ /* num template types */ 2,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[4],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[980],
+ /* return matcher indices */ &kMatcherIndices[195],
+ /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::Conv,
+ },
+ {
+ /* [56] */
+ /* num parameters */ 1,
+ /* num template types */ 2,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[2],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[981],
+ /* return matcher indices */ &kMatcherIndices[191],
+ /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::Conv,
+ },
+ {
+ /* [57] */
+ /* num parameters */ 4,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[351],
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [58] */
+ /* num parameters */ 5,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[255],
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [59] */
/* num parameters */ 5,
/* num template types */ 0,
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
/* parameters */ &kParameters[260],
- /* return matcher indices */ &kMatcherIndices[4],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
- /* [180] */
+ /* [60] */
+ /* num parameters */ 6,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[84],
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [61] */
+ /* num parameters */ 4,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[323],
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [62] */
+ /* num parameters */ 5,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[270],
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [63] */
+ /* num parameters */ 4,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[315],
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [64] */
/* num parameters */ 5,
/* num template types */ 0,
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
/* parameters */ &kParameters[275],
- /* return matcher indices */ &kMatcherIndices[4],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
- /* [181] */
+ /* [65] */
+ /* num parameters */ 4,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[307],
+ /* return matcher indices */ &kMatcherIndices[4],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [66] */
+ /* num parameters */ 5,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[280],
+ /* return matcher indices */ &kMatcherIndices[4],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [67] */
+ /* num parameters */ 5,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[290],
+ /* return matcher indices */ &kMatcherIndices[4],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [68] */
+ /* num parameters */ 6,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[102],
+ /* return matcher indices */ &kMatcherIndices[4],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [69] */
+ /* num parameters */ 4,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[419],
+ /* return matcher indices */ &kMatcherIndices[4],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [70] */
+ /* num parameters */ 5,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[285],
+ /* return matcher indices */ &kMatcherIndices[4],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [71] */
+ /* num parameters */ 3,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[594],
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kIsDeprecated),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [72] */
+ /* num parameters */ 3,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[585],
+ /* return matcher indices */ nullptr,
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [73] */
+ /* num parameters */ 3,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[570],
+ /* return matcher indices */ nullptr,
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [74] */
+ /* num parameters */ 4,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[335],
+ /* return matcher indices */ nullptr,
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [75] */
+ /* num parameters */ 3,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[540],
+ /* return matcher indices */ nullptr,
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [76] */
+ /* num parameters */ 3,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[534],
+ /* return matcher indices */ nullptr,
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [77] */
+ /* num parameters */ 3,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[519],
+ /* return matcher indices */ nullptr,
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [78] */
+ /* num parameters */ 4,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[367],
+ /* return matcher indices */ nullptr,
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [79] */
+ /* num parameters */ 3,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[516],
+ /* return matcher indices */ nullptr,
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [80] */
+ /* num parameters */ 3,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[495],
+ /* return matcher indices */ nullptr,
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [81] */
+ /* num parameters */ 3,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[492],
+ /* return matcher indices */ nullptr,
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [82] */
+ /* num parameters */ 4,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[391],
+ /* return matcher indices */ nullptr,
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [83] */
+ /* num parameters */ 3,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[489],
+ /* return matcher indices */ nullptr,
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [84] */
+ /* num parameters */ 4,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[16],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[387],
+ /* return matcher indices */ &kMatcherIndices[115],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [85] */
+ /* num parameters */ 5,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[16],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[230],
+ /* return matcher indices */ &kMatcherIndices[115],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [86] */
+ /* num parameters */ 5,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[16],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[240],
+ /* return matcher indices */ &kMatcherIndices[115],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [87] */
+ /* num parameters */ 6,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[16],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[90],
+ /* return matcher indices */ &kMatcherIndices[115],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [88] */
+ /* num parameters */ 4,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[16],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[327],
+ /* return matcher indices */ &kMatcherIndices[115],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [89] */
+ /* num parameters */ 5,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[16],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[205],
+ /* return matcher indices */ &kMatcherIndices[115],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [90] */
+ /* num parameters */ 3,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[579],
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [91] */
+ /* num parameters */ 4,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[331],
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [92] */
+ /* num parameters */ 4,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[339],
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [93] */
+ /* num parameters */ 5,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[265],
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [94] */
+ /* num parameters */ 3,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[561],
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [95] */
+ /* num parameters */ 4,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[343],
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [96] */
+ /* num parameters */ 0,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[17],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[1017],
+ /* return matcher indices */ &kMatcherIndices[123],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::Zero,
+ },
+ {
+ /* [97] */
+ /* num parameters */ 1,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[17],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[957],
+ /* return matcher indices */ &kMatcherIndices[123],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::Identity,
+ },
+ {
+ /* [98] */
+ /* num parameters */ 1,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[10],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[958],
+ /* return matcher indices */ &kMatcherIndices[123],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::VecSplat,
+ },
+ {
+ /* [99] */
+ /* num parameters */ 3,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[10],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[468],
+ /* return matcher indices */ &kMatcherIndices[123],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::VecInitS,
+ },
+ {
+ /* [100] */
+ /* num parameters */ 2,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[10],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[619],
+ /* return matcher indices */ &kMatcherIndices[123],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::VecInitM,
+ },
+ {
+ /* [101] */
+ /* num parameters */ 2,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[10],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[617],
+ /* return matcher indices */ &kMatcherIndices[123],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::VecInitM,
+ },
+ {
+ /* [102] */
+ /* num parameters */ 1,
+ /* num template types */ 2,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[0],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[962],
+ /* return matcher indices */ &kMatcherIndices[107],
+ /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::Conv,
+ },
+ {
+ /* [103] */
+ /* num parameters */ 1,
+ /* num template types */ 2,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[8],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[963],
+ /* return matcher indices */ &kMatcherIndices[207],
+ /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::Conv,
+ },
+ {
+ /* [104] */
+ /* num parameters */ 1,
+ /* num template types */ 2,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[6],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[964],
+ /* return matcher indices */ &kMatcherIndices[153],
+ /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::Conv,
+ },
+ {
+ /* [105] */
+ /* num parameters */ 1,
+ /* num template types */ 2,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[4],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[965],
+ /* return matcher indices */ &kMatcherIndices[205],
+ /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::Conv,
+ },
+ {
+ /* [106] */
+ /* num parameters */ 1,
+ /* num template types */ 2,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[2],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[966],
+ /* return matcher indices */ &kMatcherIndices[201],
+ /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::Conv,
+ },
+ {
+ /* [107] */
+ /* num parameters */ 1,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[16],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[893],
+ /* return matcher indices */ &kMatcherIndices[53],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [108] */
+ /* num parameters */ 1,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[16],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[892],
+ /* return matcher indices */ &kMatcherIndices[53],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [109] */
+ /* num parameters */ 1,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[16],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[891],
+ /* return matcher indices */ &kMatcherIndices[53],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [110] */
+ /* num parameters */ 1,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[16],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[890],
+ /* return matcher indices */ &kMatcherIndices[53],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [111] */
+ /* num parameters */ 1,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[16],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[889],
+ /* return matcher indices */ &kMatcherIndices[53],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [112] */
+ /* num parameters */ 1,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[16],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[888],
+ /* return matcher indices */ &kMatcherIndices[53],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [113] */
+ /* num parameters */ 1,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[887],
+ /* return matcher indices */ &kMatcherIndices[53],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [114] */
+ /* num parameters */ 1,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[886],
+ /* return matcher indices */ &kMatcherIndices[53],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [115] */
+ /* num parameters */ 1,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[885],
+ /* return matcher indices */ &kMatcherIndices[53],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [116] */
+ /* num parameters */ 1,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[884],
+ /* return matcher indices */ &kMatcherIndices[53],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [117] */
+ /* num parameters */ 3,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[16],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[474],
+ /* return matcher indices */ &kMatcherIndices[115],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [118] */
+ /* num parameters */ 3,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[16],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[471],
+ /* return matcher indices */ &kMatcherIndices[115],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [119] */
+ /* num parameters */ 4,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[16],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[411],
+ /* return matcher indices */ &kMatcherIndices[115],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [120] */
+ /* num parameters */ 3,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[16],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[462],
+ /* return matcher indices */ &kMatcherIndices[115],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [121] */
+ /* num parameters */ 3,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[16],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[459],
+ /* return matcher indices */ &kMatcherIndices[115],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [122] */
+ /* num parameters */ 3,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[453],
+ /* return matcher indices */ &kMatcherIndices[4],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [123] */
+ /* num parameters */ 4,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[443],
+ /* return matcher indices */ &kMatcherIndices[4],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [124] */
+ /* num parameters */ 3,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[447],
+ /* return matcher indices */ &kMatcherIndices[4],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [125] */
+ /* num parameters */ 2,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[791],
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [126] */
+ /* num parameters */ 2,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[11],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[737],
+ /* return matcher indices */ &kMatcherIndices[1],
+ /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::OpMultiply,
+ },
+ {
+ /* [127] */
+ /* num parameters */ 2,
+ /* num template types */ 1,
+ /* num template numbers */ 1,
+ /* template types */ &kTemplateTypes[11],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[735],
+ /* return matcher indices */ &kMatcherIndices[30],
+ /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::OpMultiply,
+ },
+ {
+ /* [128] */
+ /* num parameters */ 2,
+ /* num template types */ 1,
+ /* num template numbers */ 1,
+ /* template types */ &kTemplateTypes[11],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[733],
+ /* return matcher indices */ &kMatcherIndices[30],
+ /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::OpMultiply,
+ },
+ {
+ /* [129] */
+ /* num parameters */ 2,
+ /* num template types */ 1,
+ /* num template numbers */ 1,
+ /* template types */ &kTemplateTypes[11],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[731],
+ /* return matcher indices */ &kMatcherIndices[30],
+ /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::OpMultiply,
+ },
+ {
+ /* [130] */
+ /* num parameters */ 2,
+ /* num template types */ 1,
+ /* num template numbers */ 2,
+ /* template types */ &kTemplateTypes[12],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[729],
+ /* return matcher indices */ &kMatcherIndices[18],
+ /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::OpMultiply,
+ },
+ {
+ /* [131] */
+ /* num parameters */ 2,
+ /* num template types */ 1,
+ /* num template numbers */ 2,
+ /* template types */ &kTemplateTypes[12],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[727],
+ /* return matcher indices */ &kMatcherIndices[18],
+ /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::OpMultiply,
+ },
+ {
+ /* [132] */
+ /* num parameters */ 2,
+ /* num template types */ 1,
+ /* num template numbers */ 2,
+ /* template types */ &kTemplateTypes[12],
+ /* template numbers */ &kTemplateNumbers[1],
+ /* parameters */ &kParameters[725],
+ /* return matcher indices */ &kMatcherIndices[39],
+ /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::OpMultiplyMatVec,
+ },
+ {
+ /* [133] */
+ /* num parameters */ 2,
+ /* num template types */ 1,
+ /* num template numbers */ 2,
+ /* template types */ &kTemplateTypes[12],
+ /* template numbers */ &kTemplateNumbers[1],
+ /* parameters */ &kParameters[723],
+ /* return matcher indices */ &kMatcherIndices[30],
+ /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::OpMultiplyVecMat,
+ },
+ {
+ /* [134] */
+ /* num parameters */ 2,
+ /* num template types */ 1,
+ /* num template numbers */ 3,
+ /* template types */ &kTemplateTypes[12],
+ /* template numbers */ &kTemplateNumbers[0],
+ /* parameters */ &kParameters[721],
+ /* return matcher indices */ &kMatcherIndices[10],
+ /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::OpMultiplyMatMat,
+ },
+ {
+ /* [135] */
+ /* num parameters */ 0,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[17],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[1017],
+ /* return matcher indices */ &kMatcherIndices[131],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::Zero,
+ },
+ {
+ /* [136] */
+ /* num parameters */ 1,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[17],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[948],
+ /* return matcher indices */ &kMatcherIndices[131],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::Identity,
+ },
+ {
+ /* [137] */
+ /* num parameters */ 1,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[10],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[949],
+ /* return matcher indices */ &kMatcherIndices[131],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::VecSplat,
+ },
+ {
+ /* [138] */
+ /* num parameters */ 2,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[10],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[621],
+ /* return matcher indices */ &kMatcherIndices[131],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::VecInitS,
+ },
+ {
+ /* [139] */
+ /* num parameters */ 1,
+ /* num template types */ 2,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[0],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[951],
+ /* return matcher indices */ &kMatcherIndices[105],
+ /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::Conv,
+ },
+ {
+ /* [140] */
+ /* num parameters */ 1,
+ /* num template types */ 2,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[8],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[952],
+ /* return matcher indices */ &kMatcherIndices[227],
+ /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::Conv,
+ },
+ {
+ /* [141] */
+ /* num parameters */ 1,
+ /* num template types */ 2,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[6],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[953],
+ /* return matcher indices */ &kMatcherIndices[145],
+ /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::Conv,
+ },
+ {
+ /* [142] */
+ /* num parameters */ 1,
+ /* num template types */ 2,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[4],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[954],
+ /* return matcher indices */ &kMatcherIndices[221],
+ /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::Conv,
+ },
+ {
+ /* [143] */
+ /* num parameters */ 1,
+ /* num template types */ 2,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[2],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[955],
+ /* return matcher indices */ &kMatcherIndices[215],
+ /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::Conv,
+ },
+ {
+ /* [144] */
+ /* num parameters */ 5,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[215],
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [145] */
+ /* num parameters */ 6,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[132],
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [146] */
/* num parameters */ 6,
/* num template types */ 0,
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
/* parameters */ &kParameters[120],
- /* return matcher indices */ &kMatcherIndices[4],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
- /* [182] */
+ /* [147] */
+ /* num parameters */ 7,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[65],
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [148] */
+ /* num parameters */ 5,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[235],
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [149] */
+ /* num parameters */ 6,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[108],
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [150] */
+ /* num parameters */ 5,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[245],
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [151] */
+ /* num parameters */ 6,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[96],
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [152] */
/* num parameters */ 4,
/* num template types */ 0,
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[411],
- /* return matcher indices */ &kMatcherIndices[4],
+ /* parameters */ &kParameters[407],
+ /* return matcher indices */ &kMatcherIndices[133],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
/* const eval */ nullptr,
},
{
- /* [183] */
+ /* [153] */
/* num parameters */ 5,
/* num template types */ 0,
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
/* parameters */ &kParameters[160],
- /* return matcher indices */ &kMatcherIndices[4],
+ /* return matcher indices */ &kMatcherIndices[133],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
/* const eval */ nullptr,
},
{
- /* [184] */
+ /* [154] */
+ /* num parameters */ 5,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[225],
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [155] */
+ /* num parameters */ 6,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[78],
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [156] */
+ /* num parameters */ 4,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[435],
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [157] */
+ /* num parameters */ 5,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[165],
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [158] */
+ /* num parameters */ 4,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[439],
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [159] */
+ /* num parameters */ 5,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[170],
+ /* return matcher indices */ &kMatcherIndices[133],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [160] */
+ /* num parameters */ 4,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[415],
+ /* return matcher indices */ &kMatcherIndices[4],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [161] */
+ /* num parameters */ 5,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[195],
+ /* return matcher indices */ &kMatcherIndices[4],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [162] */
+ /* num parameters */ 5,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[200],
+ /* return matcher indices */ &kMatcherIndices[4],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [163] */
+ /* num parameters */ 6,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[138],
+ /* return matcher indices */ &kMatcherIndices[4],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [164] */
+ /* num parameters */ 4,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[399],
+ /* return matcher indices */ &kMatcherIndices[4],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [165] */
+ /* num parameters */ 5,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[210],
+ /* return matcher indices */ &kMatcherIndices[4],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [166] */
/* num parameters */ 0,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[11],
+ /* template types */ &kTemplateTypes[13],
/* template numbers */ &kTemplateNumbers[10],
/* parameters */ &kParameters[1017],
- /* return matcher indices */ &kMatcherIndices[229],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* return matcher indices */ &kMatcherIndices[163],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ &ConstEval::Zero,
},
{
- /* [185] */
+ /* [167] */
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[11],
+ /* template types */ &kTemplateTypes[13],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[935],
- /* return matcher indices */ &kMatcherIndices[229],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* parameters */ &kParameters[1007],
+ /* return matcher indices */ &kMatcherIndices[163],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ &ConstEval::Identity,
},
{
- /* [186] */
+ /* [168] */
+ /* num parameters */ 9,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[12],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[40],
+ /* return matcher indices */ &kMatcherIndices[163],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::MatInitS,
+ },
+ {
+ /* [169] */
+ /* num parameters */ 3,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[12],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[564],
+ /* return matcher indices */ &kMatcherIndices[163],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::MatInitV,
+ },
+ {
+ /* [170] */
+ /* num parameters */ 1,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[8],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[1010],
+ /* return matcher indices */ &kMatcherIndices[155],
+ /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::Conv,
+ },
+ {
+ /* [171] */
+ /* num parameters */ 1,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[0],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[1011],
+ /* return matcher indices */ &kMatcherIndices[149],
+ /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::Conv,
+ },
+ {
+ /* [172] */
+ /* num parameters */ 0,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[13],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[1017],
+ /* return matcher indices */ &kMatcherIndices[113],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::Zero,
+ },
+ {
+ /* [173] */
+ /* num parameters */ 1,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[13],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[941],
+ /* return matcher indices */ &kMatcherIndices[113],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::Identity,
+ },
+ {
+ /* [174] */
/* num parameters */ 16,
/* num template types */ 1,
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[12],
/* template numbers */ &kTemplateNumbers[10],
/* parameters */ &kParameters[0],
- /* return matcher indices */ &kMatcherIndices[229],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::MatCtorS,
+ /* return matcher indices */ &kMatcherIndices[113],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::MatInitS,
},
{
- /* [187] */
+ /* [175] */
/* num parameters */ 4,
/* num template types */ 1,
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[12],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[419],
- /* return matcher indices */ &kMatcherIndices[229],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::MatCtorV,
+ /* parameters */ &kParameters[303],
+ /* return matcher indices */ &kMatcherIndices[113],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::MatInitV,
},
{
- /* [188] */
+ /* [176] */
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[4],
+ /* template types */ &kTemplateTypes[8],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[852],
- /* return matcher indices */ &kMatcherIndices[231],
+ /* parameters */ &kParameters[932],
+ /* return matcher indices */ &kMatcherIndices[111],
/* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ &ConstEval::Conv,
},
{
- /* [189] */
+ /* [177] */
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[2],
+ /* template types */ &kTemplateTypes[0],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[919],
- /* return matcher indices */ &kMatcherIndices[165],
+ /* parameters */ &kParameters[912],
+ /* return matcher indices */ &kMatcherIndices[109],
/* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ &ConstEval::Conv,
},
{
- /* [190] */
+ /* [178] */
+ /* num parameters */ 0,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[13],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[1017],
+ /* return matcher indices */ &kMatcherIndices[121],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::Zero,
+ },
+ {
+ /* [179] */
+ /* num parameters */ 1,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[13],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[967],
+ /* return matcher indices */ &kMatcherIndices[121],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::Identity,
+ },
+ {
+ /* [180] */
+ /* num parameters */ 12,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[12],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[28],
+ /* return matcher indices */ &kMatcherIndices[121],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::MatInitS,
+ },
+ {
+ /* [181] */
+ /* num parameters */ 4,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[12],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[311],
+ /* return matcher indices */ &kMatcherIndices[121],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::MatInitV,
+ },
+ {
+ /* [182] */
+ /* num parameters */ 1,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[8],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[947],
+ /* return matcher indices */ &kMatcherIndices[119],
+ /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::Conv,
+ },
+ {
+ /* [183] */
+ /* num parameters */ 1,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[0],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[944],
+ /* return matcher indices */ &kMatcherIndices[117],
+ /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::Conv,
+ },
+ {
+ /* [184] */
/* num parameters */ 4,
/* num template types */ 0,
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[327],
- /* return matcher indices */ &kMatcherIndices[131],
+ /* parameters */ &kParameters[347],
+ /* return matcher indices */ &kMatcherIndices[133],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
- /* [191] */
+ /* [185] */
/* num parameters */ 5,
/* num template types */ 0,
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[180],
- /* return matcher indices */ &kMatcherIndices[131],
+ /* parameters */ &kParameters[250],
+ /* return matcher indices */ &kMatcherIndices[133],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
- /* [192] */
+ /* [186] */
/* num parameters */ 5,
/* num template types */ 0,
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[185],
- /* return matcher indices */ &kMatcherIndices[131],
+ /* parameters */ &kParameters[155],
+ /* return matcher indices */ &kMatcherIndices[133],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
- /* [193] */
+ /* [187] */
/* num parameters */ 6,
/* num template types */ 0,
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
/* parameters */ &kParameters[126],
- /* return matcher indices */ &kMatcherIndices[131],
+ /* return matcher indices */ &kMatcherIndices[133],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
- /* [194] */
+ /* [188] */
/* num parameters */ 4,
/* num template types */ 0,
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[311],
- /* return matcher indices */ &kMatcherIndices[131],
+ /* parameters */ &kParameters[359],
+ /* return matcher indices */ &kMatcherIndices[133],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
- /* [195] */
+ /* [189] */
/* num parameters */ 5,
/* num template types */ 0,
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
/* parameters */ &kParameters[220],
- /* return matcher indices */ &kMatcherIndices[131],
+ /* return matcher indices */ &kMatcherIndices[133],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
+ /* [190] */
+ /* num parameters */ 0,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[13],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[1017],
+ /* return matcher indices */ &kMatcherIndices[129],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::Zero,
+ },
+ {
+ /* [191] */
+ /* num parameters */ 1,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[13],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[1006],
+ /* return matcher indices */ &kMatcherIndices[129],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::Identity,
+ },
+ {
+ /* [192] */
+ /* num parameters */ 8,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[12],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[57],
+ /* return matcher indices */ &kMatcherIndices[129],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::MatInitS,
+ },
+ {
+ /* [193] */
+ /* num parameters */ 4,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[12],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[319],
+ /* return matcher indices */ &kMatcherIndices[129],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::MatInitV,
+ },
+ {
+ /* [194] */
+ /* num parameters */ 1,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[8],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[988],
+ /* return matcher indices */ &kMatcherIndices[127],
+ /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::Conv,
+ },
+ {
+ /* [195] */
+ /* num parameters */ 1,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[0],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[982],
+ /* return matcher indices */ &kMatcherIndices[125],
+ /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::Conv,
+ },
+ {
/* [196] */
/* num parameters */ 0,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[11],
+ /* template types */ &kTemplateTypes[13],
/* template numbers */ &kTemplateNumbers[10],
/* parameters */ &kParameters[1017],
- /* return matcher indices */ &kMatcherIndices[209],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* return matcher indices */ &kMatcherIndices[139],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ &ConstEval::Zero,
},
{
@@ -10635,11 +10635,11 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[11],
+ /* template types */ &kTemplateTypes[13],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[956],
- /* return matcher indices */ &kMatcherIndices[209],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* parameters */ &kParameters[1013],
+ /* return matcher indices */ &kMatcherIndices[139],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ &ConstEval::Identity,
},
{
@@ -10650,31 +10650,31 @@
/* template types */ &kTemplateTypes[12],
/* template numbers */ &kTemplateNumbers[10],
/* parameters */ &kParameters[16],
- /* return matcher indices */ &kMatcherIndices[209],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::MatCtorS,
+ /* return matcher indices */ &kMatcherIndices[139],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::MatInitS,
},
{
/* [199] */
- /* num parameters */ 4,
+ /* num parameters */ 3,
/* num template types */ 1,
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[12],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[315],
- /* return matcher indices */ &kMatcherIndices[209],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::MatCtorV,
+ /* parameters */ &kParameters[582],
+ /* return matcher indices */ &kMatcherIndices[139],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::MatInitV,
},
{
/* [200] */
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[4],
+ /* template types */ &kTemplateTypes[8],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[941],
- /* return matcher indices */ &kMatcherIndices[223],
+ /* parameters */ &kParameters[1016],
+ /* return matcher indices */ &kMatcherIndices[137],
/* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ &ConstEval::Conv,
},
@@ -10683,95 +10683,95 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[2],
+ /* template types */ &kTemplateTypes[0],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[938],
- /* return matcher indices */ &kMatcherIndices[221],
+ /* parameters */ &kParameters[1012],
+ /* return matcher indices */ &kMatcherIndices[135],
/* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ &ConstEval::Conv,
},
{
/* [202] */
- /* num parameters */ 0,
- /* num template types */ 1,
+ /* num parameters */ 4,
+ /* num template types */ 0,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[11],
+ /* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[1017],
- /* return matcher indices */ &kMatcherIndices[171],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::Zero,
+ /* parameters */ &kParameters[299],
+ /* return matcher indices */ &kMatcherIndices[4],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
+ /* const eval */ nullptr,
},
{
/* [203] */
- /* num parameters */ 1,
- /* num template types */ 1,
+ /* num parameters */ 5,
+ /* num template types */ 0,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[11],
+ /* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[989],
- /* return matcher indices */ &kMatcherIndices[171],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::Identity,
+ /* parameters */ &kParameters[175],
+ /* return matcher indices */ &kMatcherIndices[4],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
+ /* const eval */ nullptr,
},
{
/* [204] */
- /* num parameters */ 6,
- /* num template types */ 1,
+ /* num parameters */ 5,
+ /* num template types */ 0,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[12],
+ /* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[84],
- /* return matcher indices */ &kMatcherIndices[171],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::MatCtorS,
+ /* parameters */ &kParameters[180],
+ /* return matcher indices */ &kMatcherIndices[4],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
+ /* const eval */ nullptr,
},
{
/* [205] */
- /* num parameters */ 2,
- /* num template types */ 1,
+ /* num parameters */ 6,
+ /* num template types */ 0,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[12],
+ /* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[793],
- /* return matcher indices */ &kMatcherIndices[171],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::MatCtorV,
+ /* parameters */ &kParameters[144],
+ /* return matcher indices */ &kMatcherIndices[4],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
+ /* const eval */ nullptr,
},
{
/* [206] */
- /* num parameters */ 1,
- /* num template types */ 1,
+ /* num parameters */ 4,
+ /* num template types */ 0,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[4],
+ /* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[992],
- /* return matcher indices */ &kMatcherIndices[177],
- /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::Conv,
+ /* parameters */ &kParameters[431],
+ /* return matcher indices */ &kMatcherIndices[4],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
+ /* const eval */ nullptr,
},
{
/* [207] */
- /* num parameters */ 1,
- /* num template types */ 1,
+ /* num parameters */ 5,
+ /* num template types */ 0,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[2],
+ /* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[993],
- /* return matcher indices */ &kMatcherIndices[173],
- /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::Conv,
+ /* parameters */ &kParameters[190],
+ /* return matcher indices */ &kMatcherIndices[4],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
+ /* const eval */ nullptr,
},
{
/* [208] */
/* num parameters */ 0,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[11],
+ /* template types */ &kTemplateTypes[13],
/* template numbers */ &kTemplateNumbers[10],
/* parameters */ &kParameters[1017],
- /* return matcher indices */ &kMatcherIndices[163],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* return matcher indices */ &kMatcherIndices[169],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ &ConstEval::Zero,
},
{
@@ -10779,46 +10779,46 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[11],
+ /* template types */ &kTemplateTypes[13],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[983],
- /* return matcher indices */ &kMatcherIndices[163],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* parameters */ &kParameters[1001],
+ /* return matcher indices */ &kMatcherIndices[169],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ &ConstEval::Identity,
},
{
/* [210] */
- /* num parameters */ 4,
+ /* num parameters */ 6,
/* num template types */ 1,
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[12],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[399],
- /* return matcher indices */ &kMatcherIndices[163],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::MatCtorS,
+ /* parameters */ &kParameters[72],
+ /* return matcher indices */ &kMatcherIndices[169],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::MatInitS,
},
{
/* [211] */
- /* num parameters */ 2,
+ /* num parameters */ 3,
/* num template types */ 1,
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[12],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[791],
- /* return matcher indices */ &kMatcherIndices[163],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::MatCtorV,
+ /* parameters */ &kParameters[543],
+ /* return matcher indices */ &kMatcherIndices[169],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::MatInitV,
},
{
/* [212] */
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[4],
+ /* template types */ &kTemplateTypes[8],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[986],
- /* return matcher indices */ &kMatcherIndices[169],
+ /* parameters */ &kParameters[1004],
+ /* return matcher indices */ &kMatcherIndices[167],
/* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ &ConstEval::Conv,
},
@@ -10827,10 +10827,10 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[2],
+ /* template types */ &kTemplateTypes[0],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[987],
- /* return matcher indices */ &kMatcherIndices[167],
+ /* parameters */ &kParameters[1005],
+ /* return matcher indices */ &kMatcherIndices[165],
/* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ &ConstEval::Conv,
},
@@ -10839,11 +10839,11 @@
/* num parameters */ 0,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[11],
+ /* template types */ &kTemplateTypes[13],
/* template numbers */ &kTemplateNumbers[10],
/* parameters */ &kParameters[1017],
- /* return matcher indices */ &kMatcherIndices[197],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* return matcher indices */ &kMatcherIndices[177],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ &ConstEval::Zero,
},
{
@@ -10851,46 +10851,46 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[11],
+ /* template types */ &kTemplateTypes[13],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[1013],
- /* return matcher indices */ &kMatcherIndices[197],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* parameters */ &kParameters[995],
+ /* return matcher indices */ &kMatcherIndices[177],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ &ConstEval::Identity,
},
{
/* [216] */
- /* num parameters */ 12,
+ /* num parameters */ 8,
/* num template types */ 1,
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[12],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[28],
- /* return matcher indices */ &kMatcherIndices[197],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::MatCtorS,
+ /* parameters */ &kParameters[49],
+ /* return matcher indices */ &kMatcherIndices[177],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::MatInitS,
},
{
/* [217] */
- /* num parameters */ 3,
+ /* num parameters */ 2,
/* num template types */ 1,
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[12],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[504],
- /* return matcher indices */ &kMatcherIndices[197],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::MatCtorV,
+ /* parameters */ &kParameters[601],
+ /* return matcher indices */ &kMatcherIndices[177],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::MatInitV,
},
{
/* [218] */
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[4],
+ /* template types */ &kTemplateTypes[8],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[1012],
- /* return matcher indices */ &kMatcherIndices[201],
+ /* parameters */ &kParameters[998],
+ /* return matcher indices */ &kMatcherIndices[175],
/* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ &ConstEval::Conv,
},
@@ -10899,10 +10899,10 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[2],
+ /* template types */ &kTemplateTypes[0],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[1006],
- /* return matcher indices */ &kMatcherIndices[199],
+ /* parameters */ &kParameters[999],
+ /* return matcher indices */ &kMatcherIndices[173],
/* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ &ConstEval::Conv,
},
@@ -10911,11 +10911,11 @@
/* num parameters */ 0,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[11],
+ /* template types */ &kTemplateTypes[13],
/* template numbers */ &kTemplateNumbers[10],
/* parameters */ &kParameters[1017],
- /* return matcher indices */ &kMatcherIndices[191],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* return matcher indices */ &kMatcherIndices[183],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ &ConstEval::Zero,
},
{
@@ -10923,46 +10923,46 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[11],
+ /* template types */ &kTemplateTypes[13],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[1007],
- /* return matcher indices */ &kMatcherIndices[191],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* parameters */ &kParameters[989],
+ /* return matcher indices */ &kMatcherIndices[183],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ &ConstEval::Identity,
},
{
/* [222] */
- /* num parameters */ 9,
+ /* num parameters */ 6,
/* num template types */ 1,
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[12],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[40],
- /* return matcher indices */ &kMatcherIndices[191],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::MatCtorS,
+ /* parameters */ &kParameters[114],
+ /* return matcher indices */ &kMatcherIndices[183],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::MatInitS,
},
{
/* [223] */
- /* num parameters */ 3,
+ /* num parameters */ 2,
/* num template types */ 1,
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[12],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[450],
- /* return matcher indices */ &kMatcherIndices[191],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::MatCtorV,
+ /* parameters */ &kParameters[603],
+ /* return matcher indices */ &kMatcherIndices[183],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::MatInitV,
},
{
/* [224] */
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[4],
+ /* template types */ &kTemplateTypes[8],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[1010],
- /* return matcher indices */ &kMatcherIndices[195],
+ /* parameters */ &kParameters[992],
+ /* return matcher indices */ &kMatcherIndices[181],
/* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ &ConstEval::Conv,
},
@@ -10971,10 +10971,10 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[2],
+ /* template types */ &kTemplateTypes[0],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[1011],
- /* return matcher indices */ &kMatcherIndices[193],
+ /* parameters */ &kParameters[993],
+ /* return matcher indices */ &kMatcherIndices[179],
/* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ &ConstEval::Conv,
},
@@ -10983,11 +10983,11 @@
/* num parameters */ 0,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[11],
+ /* template types */ &kTemplateTypes[13],
/* template numbers */ &kTemplateNumbers[10],
/* parameters */ &kParameters[1017],
- /* return matcher indices */ &kMatcherIndices[203],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* return matcher indices */ &kMatcherIndices[189],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ &ConstEval::Zero,
},
{
@@ -10995,46 +10995,46 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[11],
+ /* template types */ &kTemplateTypes[13],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[1000],
- /* return matcher indices */ &kMatcherIndices[203],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* parameters */ &kParameters[983],
+ /* return matcher indices */ &kMatcherIndices[189],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ &ConstEval::Identity,
},
{
/* [228] */
- /* num parameters */ 8,
- /* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[12],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[49],
- /* return matcher indices */ &kMatcherIndices[203],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::MatCtorS,
- },
- {
- /* [229] */
/* num parameters */ 4,
/* num template types */ 1,
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[12],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[439],
- /* return matcher indices */ &kMatcherIndices[203],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::MatCtorV,
+ /* parameters */ &kParameters[355],
+ /* return matcher indices */ &kMatcherIndices[189],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::MatInitS,
+ },
+ {
+ /* [229] */
+ /* num parameters */ 2,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[12],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[605],
+ /* return matcher indices */ &kMatcherIndices[189],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::MatInitV,
},
{
/* [230] */
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[4],
+ /* template types */ &kTemplateTypes[8],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[982],
- /* return matcher indices */ &kMatcherIndices[207],
+ /* parameters */ &kParameters[986],
+ /* return matcher indices */ &kMatcherIndices[187],
/* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ &ConstEval::Conv,
},
@@ -11043,10 +11043,10 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[2],
+ /* template types */ &kTemplateTypes[0],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[967],
- /* return matcher indices */ &kMatcherIndices[205],
+ /* parameters */ &kParameters[987],
+ /* return matcher indices */ &kMatcherIndices[185],
/* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ &ConstEval::Conv,
},
@@ -11055,9 +11055,9 @@
/* num parameters */ 2,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[13],
+ /* template types */ &kTemplateTypes[11],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[669],
+ /* parameters */ &kParameters[763],
/* return matcher indices */ &kMatcherIndices[1],
/* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ &ConstEval::OpPlus,
@@ -11067,9 +11067,9 @@
/* num parameters */ 2,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[13],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[671],
+ /* template types */ &kTemplateTypes[11],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[761],
/* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ &ConstEval::OpPlus,
@@ -11079,9 +11079,9 @@
/* num parameters */ 2,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[13],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[685],
+ /* template types */ &kTemplateTypes[11],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[759],
/* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ &ConstEval::OpPlus,
@@ -11091,9 +11091,9 @@
/* num parameters */ 2,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[13],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[695],
+ /* template types */ &kTemplateTypes[11],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[757],
/* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ &ConstEval::OpPlus,
@@ -11104,9 +11104,9 @@
/* num template types */ 1,
/* num template numbers */ 2,
/* template types */ &kTemplateTypes[12],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[701],
- /* return matcher indices */ &kMatcherIndices[10],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[751],
+ /* return matcher indices */ &kMatcherIndices[18],
/* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ &ConstEval::OpPlus,
},
@@ -11115,9 +11115,9 @@
/* num parameters */ 2,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[13],
+ /* template types */ &kTemplateTypes[11],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[745],
+ /* parameters */ &kParameters[749],
/* return matcher indices */ &kMatcherIndices[1],
/* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ &ConstEval::OpMinus,
@@ -11127,9 +11127,9 @@
/* num parameters */ 2,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[13],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[747],
+ /* template types */ &kTemplateTypes[11],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[745],
/* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ &ConstEval::OpMinus,
@@ -11139,9 +11139,9 @@
/* num parameters */ 2,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[13],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[755],
+ /* template types */ &kTemplateTypes[11],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[743],
/* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ &ConstEval::OpMinus,
@@ -11151,9 +11151,9 @@
/* num parameters */ 2,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[13],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[757],
+ /* template types */ &kTemplateTypes[11],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[741],
/* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ &ConstEval::OpMinus,
@@ -11164,9 +11164,9 @@
/* num template types */ 1,
/* num template numbers */ 2,
/* template types */ &kTemplateTypes[12],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[759],
- /* return matcher indices */ &kMatcherIndices[10],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[739],
+ /* return matcher indices */ &kMatcherIndices[18],
/* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ &ConstEval::OpMinus,
},
@@ -11175,10 +11175,10 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[17],
+ /* template types */ &kTemplateTypes[16],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[822],
- /* return matcher indices */ &kMatcherIndices[34],
+ /* parameters */ &kParameters[898],
+ /* return matcher indices */ &kMatcherIndices[53],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
@@ -11187,10 +11187,10 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[17],
+ /* template types */ &kTemplateTypes[16],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[821],
- /* return matcher indices */ &kMatcherIndices[34],
+ /* parameters */ &kParameters[897],
+ /* return matcher indices */ &kMatcherIndices[53],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
@@ -11201,8 +11201,8 @@
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[820],
- /* return matcher indices */ &kMatcherIndices[34],
+ /* parameters */ &kParameters[896],
+ /* return matcher indices */ &kMatcherIndices[53],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
@@ -11213,8 +11213,8 @@
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[819],
- /* return matcher indices */ &kMatcherIndices[34],
+ /* parameters */ &kParameters[895],
+ /* return matcher indices */ &kMatcherIndices[53],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
@@ -11225,8 +11225,8 @@
/* num template numbers */ 2,
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[3],
- /* parameters */ &kParameters[818],
- /* return matcher indices */ &kMatcherIndices[34],
+ /* parameters */ &kParameters[894],
+ /* return matcher indices */ &kMatcherIndices[53],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
@@ -11237,10 +11237,10 @@
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[679],
- /* return matcher indices */ &kMatcherIndices[20],
+ /* parameters */ &kParameters[699],
+ /* return matcher indices */ &kMatcherIndices[12],
/* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::OpOr,
+ /* const eval */ &ConstEval::OpAnd,
},
{
/* [248] */
@@ -11248,92 +11248,92 @@
/* num template types */ 0,
/* num template numbers */ 1,
/* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[681],
- /* return matcher indices */ &kMatcherIndices[36],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[697],
+ /* return matcher indices */ &kMatcherIndices[33],
/* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::OpOr,
+ /* const eval */ &ConstEval::OpAnd,
},
{
/* [249] */
/* num parameters */ 2,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[10],
+ /* template types */ &kTemplateTypes[25],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[683],
+ /* parameters */ &kParameters[695],
/* return matcher indices */ &kMatcherIndices[1],
/* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::OpOr,
+ /* const eval */ &ConstEval::OpAnd,
},
{
/* [250] */
/* num parameters */ 2,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[10],
- /* template numbers */ &kTemplateNumbers[6],
+ /* template types */ &kTemplateTypes[25],
+ /* template numbers */ &kTemplateNumbers[5],
/* parameters */ &kParameters[693],
/* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::OpOr,
+ /* const eval */ &ConstEval::OpAnd,
},
{
/* [251] */
/* num parameters */ 2,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[14],
+ /* template types */ &kTemplateTypes[15],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[725],
+ /* parameters */ &kParameters[711],
/* return matcher indices */ &kMatcherIndices[1],
/* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::OpShiftLeft,
+ /* const eval */ nullptr,
},
{
/* [252] */
/* num parameters */ 2,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[14],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[737],
+ /* template types */ &kTemplateTypes[15],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[709],
/* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::OpShiftLeft,
+ /* const eval */ nullptr,
},
{
/* [253] */
/* num parameters */ 2,
/* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[25],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[739],
- /* return matcher indices */ &kMatcherIndices[1],
+ /* num template numbers */ 1,
+ /* template types */ &kTemplateTypes[15],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[707],
+ /* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::OpShiftLeft,
+ /* const eval */ nullptr,
},
{
/* [254] */
/* num parameters */ 2,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[25],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[741],
+ /* template types */ &kTemplateTypes[15],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[705],
/* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::OpShiftLeft,
+ /* const eval */ nullptr,
},
{
/* [255] */
/* num parameters */ 2,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[13],
+ /* template types */ &kTemplateTypes[11],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[619],
+ /* parameters */ &kParameters[719],
/* return matcher indices */ &kMatcherIndices[1],
/* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ &ConstEval::OpDivide,
@@ -11343,9 +11343,9 @@
/* num parameters */ 2,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[13],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[625],
+ /* template types */ &kTemplateTypes[11],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[717],
/* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ &ConstEval::OpDivide,
@@ -11355,9 +11355,9 @@
/* num parameters */ 2,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[13],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[647],
+ /* template types */ &kTemplateTypes[11],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[715],
/* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ &ConstEval::OpDivide,
@@ -11367,9 +11367,9 @@
/* num parameters */ 2,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[13],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[651],
+ /* template types */ &kTemplateTypes[11],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[713],
/* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ &ConstEval::OpDivide,
@@ -11377,134 +11377,134 @@
{
/* [259] */
/* num parameters */ 2,
- /* num template types */ 1,
+ /* num template types */ 0,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[15],
+ /* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[655],
- /* return matcher indices */ &kMatcherIndices[1],
+ /* parameters */ &kParameters[691],
+ /* return matcher indices */ &kMatcherIndices[12],
/* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
+ /* const eval */ &ConstEval::OpOr,
},
{
/* [260] */
/* num parameters */ 2,
- /* num template types */ 1,
+ /* num template types */ 0,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[15],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[659],
- /* return matcher indices */ &kMatcherIndices[30],
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[689],
+ /* return matcher indices */ &kMatcherIndices[33],
/* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
+ /* const eval */ &ConstEval::OpOr,
},
{
/* [261] */
/* num parameters */ 2,
/* num template types */ 1,
- /* num template numbers */ 1,
- /* template types */ &kTemplateTypes[15],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[661],
- /* return matcher indices */ &kMatcherIndices[30],
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[25],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[687],
+ /* return matcher indices */ &kMatcherIndices[1],
/* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
+ /* const eval */ &ConstEval::OpOr,
},
{
/* [262] */
/* num parameters */ 2,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[15],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[663],
+ /* template types */ &kTemplateTypes[25],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[685],
/* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
+ /* const eval */ &ConstEval::OpOr,
},
{
/* [263] */
/* num parameters */ 2,
- /* num template types */ 0,
+ /* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
+ /* template types */ &kTemplateTypes[14],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[667],
- /* return matcher indices */ &kMatcherIndices[20],
+ /* parameters */ &kParameters[645],
+ /* return matcher indices */ &kMatcherIndices[1],
/* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::OpAnd,
+ /* const eval */ &ConstEval::OpShiftLeft,
},
{
/* [264] */
/* num parameters */ 2,
- /* num template types */ 0,
+ /* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[673],
- /* return matcher indices */ &kMatcherIndices[36],
+ /* template types */ &kTemplateTypes[14],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[641],
+ /* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::OpAnd,
+ /* const eval */ &ConstEval::OpShiftLeft,
},
{
/* [265] */
/* num parameters */ 2,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[10],
+ /* template types */ &kTemplateTypes[24],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[675],
+ /* parameters */ &kParameters[637],
/* return matcher indices */ &kMatcherIndices[1],
/* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::OpAnd,
+ /* const eval */ &ConstEval::OpShiftLeft,
},
{
/* [266] */
/* num parameters */ 2,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[10],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[677],
+ /* template types */ &kTemplateTypes[24],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[633],
/* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::OpAnd,
+ /* const eval */ &ConstEval::OpShiftLeft,
},
{
/* [267] */
- /* num parameters */ 0,
- /* num template types */ 0,
+ /* num parameters */ 3,
+ /* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
+ /* template types */ &kTemplateTypes[13],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[1017],
- /* return matcher indices */ &kMatcherIndices[20],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::Zero,
+ /* parameters */ &kParameters[477],
+ /* return matcher indices */ &kMatcherIndices[1],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
},
{
/* [268] */
- /* num parameters */ 1,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[945],
- /* return matcher indices */ &kMatcherIndices[20],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::Identity,
+ /* num parameters */ 3,
+ /* num template types */ 1,
+ /* num template numbers */ 1,
+ /* template types */ &kTemplateTypes[13],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[480],
+ /* return matcher indices */ &kMatcherIndices[30],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
},
{
/* [269] */
- /* num parameters */ 1,
+ /* num parameters */ 3,
/* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[20],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[946],
- /* return matcher indices */ &kMatcherIndices[20],
- /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::Conv,
+ /* num template numbers */ 1,
+ /* template types */ &kTemplateTypes[13],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[483],
+ /* return matcher indices */ &kMatcherIndices[30],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
},
{
/* [270] */
@@ -11514,8 +11514,8 @@
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
/* parameters */ &kParameters[1017],
- /* return matcher indices */ &kMatcherIndices[110],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* return matcher indices */ &kMatcherIndices[112],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ &ConstEval::Zero,
},
{
@@ -11526,8 +11526,8 @@
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
/* parameters */ &kParameters[942],
- /* return matcher indices */ &kMatcherIndices[110],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* return matcher indices */ &kMatcherIndices[112],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ &ConstEval::Identity,
},
{
@@ -11535,10 +11535,10 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[21],
+ /* template types */ &kTemplateTypes[20],
/* template numbers */ &kTemplateNumbers[10],
/* parameters */ &kParameters[943],
- /* return matcher indices */ &kMatcherIndices[110],
+ /* return matcher indices */ &kMatcherIndices[112],
/* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ &ConstEval::Conv,
},
@@ -11550,8 +11550,8 @@
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
/* parameters */ &kParameters[1017],
- /* return matcher indices */ &kMatcherIndices[4],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* return matcher indices */ &kMatcherIndices[12],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ &ConstEval::Zero,
},
{
@@ -11561,9 +11561,9 @@
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[939],
- /* return matcher indices */ &kMatcherIndices[4],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* parameters */ &kParameters[945],
+ /* return matcher indices */ &kMatcherIndices[12],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ &ConstEval::Identity,
},
{
@@ -11571,48 +11571,48 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[22],
+ /* template types */ &kTemplateTypes[19],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[940],
- /* return matcher indices */ &kMatcherIndices[4],
+ /* parameters */ &kParameters[946],
+ /* return matcher indices */ &kMatcherIndices[12],
/* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ &ConstEval::Conv,
},
{
/* [276] */
- /* num parameters */ 3,
- /* num template types */ 1,
+ /* num parameters */ 0,
+ /* num template types */ 0,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[16],
+ /* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[456],
- /* return matcher indices */ &kMatcherIndices[1],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::select_bool,
+ /* parameters */ &kParameters[1017],
+ /* return matcher indices */ &kMatcherIndices[53],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::Zero,
},
{
/* [277] */
- /* num parameters */ 3,
- /* num template types */ 1,
- /* num template numbers */ 1,
- /* template types */ &kTemplateTypes[16],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[549],
- /* return matcher indices */ &kMatcherIndices[30],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::select_bool,
+ /* num parameters */ 1,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[933],
+ /* return matcher indices */ &kMatcherIndices[53],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::Identity,
},
{
/* [278] */
- /* num parameters */ 3,
+ /* num parameters */ 1,
/* num template types */ 1,
- /* num template numbers */ 1,
- /* template types */ &kTemplateTypes[16],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[552],
- /* return matcher indices */ &kMatcherIndices[30],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::select_boolvec,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[23],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[934],
+ /* return matcher indices */ &kMatcherIndices[53],
+ /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::Conv,
},
{
/* [279] */
@@ -11622,8 +11622,8 @@
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
/* parameters */ &kParameters[1017],
- /* return matcher indices */ &kMatcherIndices[35],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* return matcher indices */ &kMatcherIndices[44],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ &ConstEval::Zero,
},
{
@@ -11634,8 +11634,8 @@
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
/* parameters */ &kParameters[936],
- /* return matcher indices */ &kMatcherIndices[35],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* return matcher indices */ &kMatcherIndices[44],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ &ConstEval::Identity,
},
{
@@ -11643,10 +11643,10 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[23],
+ /* template types */ &kTemplateTypes[22],
/* template numbers */ &kTemplateNumbers[10],
/* parameters */ &kParameters[937],
- /* return matcher indices */ &kMatcherIndices[35],
+ /* return matcher indices */ &kMatcherIndices[44],
/* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ &ConstEval::Conv,
},
@@ -11658,8 +11658,8 @@
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
/* parameters */ &kParameters[1017],
- /* return matcher indices */ &kMatcherIndices[34],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* return matcher indices */ &kMatcherIndices[4],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ &ConstEval::Zero,
},
{
@@ -11669,9 +11669,9 @@
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[933],
- /* return matcher indices */ &kMatcherIndices[34],
- /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* parameters */ &kParameters[939],
+ /* return matcher indices */ &kMatcherIndices[4],
+ /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ &ConstEval::Identity,
},
{
@@ -11679,10 +11679,10 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[24],
+ /* template types */ &kTemplateTypes[21],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[934],
- /* return matcher indices */ &kMatcherIndices[34],
+ /* parameters */ &kParameters[940],
+ /* return matcher indices */ &kMatcherIndices[4],
/* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ &ConstEval::Conv,
},
@@ -11691,60 +11691,60 @@
/* num parameters */ 3,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[11],
+ /* template types */ &kTemplateTypes[10],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[477],
+ /* parameters */ &kParameters[546],
/* return matcher indices */ &kMatcherIndices[1],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
+ /* const eval */ &ConstEval::select_bool,
},
{
/* [286] */
/* num parameters */ 3,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[11],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[480],
+ /* template types */ &kTemplateTypes[10],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[549],
/* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
+ /* const eval */ &ConstEval::select_bool,
},
{
/* [287] */
/* num parameters */ 3,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[11],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[483],
+ /* template types */ &kTemplateTypes[10],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[552],
/* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
+ /* const eval */ &ConstEval::select_boolvec,
},
{
/* [288] */
/* num parameters */ 1,
- /* num template types */ 0,
+ /* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
+ /* template types */ &kTemplateTypes[13],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[869],
- /* return matcher indices */ &kMatcherIndices[20],
- /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::OpNot,
+ /* parameters */ &kParameters[913],
+ /* return matcher indices */ &kMatcherIndices[1],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
},
{
/* [289] */
/* num parameters */ 1,
- /* num template types */ 0,
+ /* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[870],
- /* return matcher indices */ &kMatcherIndices[36],
- /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::OpNot,
+ /* template types */ &kTemplateTypes[13],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[914],
+ /* return matcher indices */ &kMatcherIndices[30],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
},
{
/* [290] */
@@ -11753,7 +11753,7 @@
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[899],
+ /* parameters */ &kParameters[827],
/* return matcher indices */ &kMatcherIndices[4],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
/* const eval */ nullptr,
@@ -11764,34 +11764,34 @@
/* num template types */ 0,
/* num template numbers */ 1,
/* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[898],
- /* return matcher indices */ &kMatcherIndices[60],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[826],
+ /* return matcher indices */ &kMatcherIndices[36],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
/* const eval */ nullptr,
},
{
/* [292] */
/* num parameters */ 1,
- /* num template types */ 1,
+ /* num template types */ 0,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[11],
+ /* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[901],
- /* return matcher indices */ &kMatcherIndices[175],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* parameters */ &kParameters[836],
+ /* return matcher indices */ &kMatcherIndices[4],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
/* const eval */ nullptr,
},
{
/* [293] */
/* num parameters */ 1,
- /* num template types */ 1,
+ /* num template types */ 0,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[11],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[900],
- /* return matcher indices */ &kMatcherIndices[78],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[837],
+ /* return matcher indices */ &kMatcherIndices[36],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
/* const eval */ nullptr,
},
{
@@ -11801,7 +11801,7 @@
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[895],
+ /* parameters */ &kParameters[838],
/* return matcher indices */ &kMatcherIndices[4],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
/* const eval */ nullptr,
@@ -11812,9 +11812,9 @@
/* num template types */ 0,
/* num template numbers */ 1,
/* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[894],
- /* return matcher indices */ &kMatcherIndices[60],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[839],
+ /* return matcher indices */ &kMatcherIndices[36],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
/* const eval */ nullptr,
},
@@ -11836,7 +11836,7 @@
/* num template types */ 1,
/* num template numbers */ 1,
/* template types */ &kTemplateTypes[14],
- /* template numbers */ &kTemplateNumbers[6],
+ /* template numbers */ &kTemplateNumbers[5],
/* parameters */ &kParameters[427],
/* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
@@ -11847,9 +11847,9 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[11],
+ /* template types */ &kTemplateTypes[13],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[893],
+ /* parameters */ &kParameters[840],
/* return matcher indices */ &kMatcherIndices[1],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
@@ -11859,9 +11859,9 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[11],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[892],
+ /* template types */ &kTemplateTypes[13],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[844],
/* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
@@ -11871,9 +11871,9 @@
/* num parameters */ 2,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[11],
+ /* template types */ &kTemplateTypes[13],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[607],
+ /* parameters */ &kParameters[795],
/* return matcher indices */ &kMatcherIndices[1],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
@@ -11883,9 +11883,9 @@
/* num parameters */ 2,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[11],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[629],
+ /* template types */ &kTemplateTypes[13],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[793],
/* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
@@ -11895,9 +11895,9 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[11],
+ /* template types */ &kTemplateTypes[13],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[891],
+ /* parameters */ &kParameters[856],
/* return matcher indices */ &kMatcherIndices[1],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
@@ -11907,9 +11907,9 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[11],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[890],
+ /* template types */ &kTemplateTypes[13],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[858],
/* return matcher indices */ &kMatcherIndices[1],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
@@ -11919,9 +11919,9 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[11],
+ /* template types */ &kTemplateTypes[13],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[889],
+ /* parameters */ &kParameters[859],
/* return matcher indices */ &kMatcherIndices[1],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
@@ -11931,9 +11931,9 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[11],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[888],
+ /* template types */ &kTemplateTypes[13],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[860],
/* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
@@ -11943,9 +11943,9 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[11],
+ /* template types */ &kTemplateTypes[13],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[887],
+ /* parameters */ &kParameters[861],
/* return matcher indices */ &kMatcherIndices[1],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
@@ -11955,9 +11955,9 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[11],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[886],
+ /* template types */ &kTemplateTypes[13],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[862],
/* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
@@ -11969,7 +11969,7 @@
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[15],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[773],
+ /* parameters */ &kParameters[779],
/* return matcher indices */ &kMatcherIndices[1],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
@@ -11980,8 +11980,8 @@
/* num template types */ 1,
/* num template numbers */ 1,
/* template types */ &kTemplateTypes[15],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[771],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[777],
/* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
@@ -11993,7 +11993,7 @@
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[15],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[769],
+ /* parameters */ &kParameters[775],
/* return matcher indices */ &kMatcherIndices[1],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
@@ -12004,8 +12004,8 @@
/* num template types */ 1,
/* num template numbers */ 1,
/* template types */ &kTemplateTypes[15],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[767],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[773],
/* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
@@ -12015,10 +12015,10 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[11],
+ /* template types */ &kTemplateTypes[13],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[904],
- /* return matcher indices */ &kMatcherIndices[1],
+ /* parameters */ &kParameters[811],
+ /* return matcher indices */ &kMatcherIndices[229],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
@@ -12027,10 +12027,10 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[11],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[903],
- /* return matcher indices */ &kMatcherIndices[30],
+ /* template types */ &kTemplateTypes[13],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[810],
+ /* return matcher indices */ &kMatcherIndices[45],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
@@ -12039,10 +12039,10 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[11],
+ /* template types */ &kTemplateTypes[13],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[885],
- /* return matcher indices */ &kMatcherIndices[137],
+ /* parameters */ &kParameters[863],
+ /* return matcher indices */ &kMatcherIndices[171],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
@@ -12051,33 +12051,33 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[11],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[884],
- /* return matcher indices */ &kMatcherIndices[99],
+ /* template types */ &kTemplateTypes[13],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[864],
+ /* return matcher indices */ &kMatcherIndices[102],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
/* [316] */
- /* num parameters */ 3,
+ /* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[11],
+ /* template types */ &kTemplateTypes[13],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[519],
+ /* parameters */ &kParameters[938],
/* return matcher indices */ &kMatcherIndices[1],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
/* [317] */
- /* num parameters */ 3,
+ /* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[11],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[522],
+ /* template types */ &kTemplateTypes[13],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[956],
/* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
@@ -12085,95 +12085,95 @@
{
/* [318] */
/* num parameters */ 1,
- /* num template types */ 0,
+ /* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
+ /* template types */ &kTemplateTypes[13],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[897],
- /* return matcher indices */ &kMatcherIndices[4],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
+ /* parameters */ &kParameters[960],
+ /* return matcher indices */ &kMatcherIndices[1],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
/* [319] */
/* num parameters */ 1,
- /* num template types */ 0,
+ /* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[896],
- /* return matcher indices */ &kMatcherIndices[60],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
+ /* template types */ &kTemplateTypes[13],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[994],
+ /* return matcher indices */ &kMatcherIndices[30],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
/* [320] */
/* num parameters */ 1,
- /* num template types */ 1,
+ /* num template types */ 0,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[11],
+ /* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[906],
- /* return matcher indices */ &kMatcherIndices[1],
+ /* parameters */ &kParameters[1000],
+ /* return matcher indices */ &kMatcherIndices[12],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
/* [321] */
/* num parameters */ 1,
- /* num template types */ 1,
+ /* num template types */ 0,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[11],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[905],
- /* return matcher indices */ &kMatcherIndices[30],
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[1015],
+ /* return matcher indices */ &kMatcherIndices[12],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
/* [322] */
/* num parameters */ 1,
- /* num template types */ 1,
+ /* num template types */ 0,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[14],
+ /* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[910],
- /* return matcher indices */ &kMatcherIndices[1],
+ /* parameters */ &kParameters[1014],
+ /* return matcher indices */ &kMatcherIndices[12],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
/* [323] */
/* num parameters */ 1,
- /* num template types */ 1,
+ /* num template types */ 0,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[14],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[909],
- /* return matcher indices */ &kMatcherIndices[30],
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[1009],
+ /* return matcher indices */ &kMatcherIndices[12],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
/* [324] */
- /* num parameters */ 3,
+ /* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[14],
+ /* template types */ &kTemplateTypes[13],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[510],
+ /* parameters */ &kParameters[1003],
/* return matcher indices */ &kMatcherIndices[1],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
/* [325] */
- /* num parameters */ 3,
+ /* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[14],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[513],
+ /* template types */ &kTemplateTypes[13],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[1002],
/* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
@@ -12183,9 +12183,9 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[11],
+ /* template types */ &kTemplateTypes[13],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[912],
+ /* parameters */ &kParameters[996],
/* return matcher indices */ &kMatcherIndices[1],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
@@ -12195,9 +12195,9 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[11],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[911],
+ /* template types */ &kTemplateTypes[13],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[990],
/* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
@@ -12207,9 +12207,9 @@
/* num parameters */ 2,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[11],
+ /* template types */ &kTemplateTypes[13],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[691],
+ /* parameters */ &kParameters[755],
/* return matcher indices */ &kMatcherIndices[1],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
@@ -12219,9 +12219,9 @@
/* num parameters */ 2,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[11],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[689],
+ /* template types */ &kTemplateTypes[13],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[753],
/* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
@@ -12231,9 +12231,9 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[11],
+ /* template types */ &kTemplateTypes[13],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[877],
+ /* parameters */ &kParameters[879],
/* return matcher indices */ &kMatcherIndices[1],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
@@ -12243,9 +12243,9 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[11],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[876],
+ /* template types */ &kTemplateTypes[13],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[880],
/* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
@@ -12255,9 +12255,9 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[11],
+ /* template types */ &kTemplateTypes[13],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[875],
+ /* parameters */ &kParameters[984],
/* return matcher indices */ &kMatcherIndices[1],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
@@ -12267,36 +12267,36 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[11],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[913],
+ /* template types */ &kTemplateTypes[13],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[973],
/* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
/* [334] */
- /* num parameters */ 1,
- /* num template types */ 0,
+ /* num parameters */ 2,
+ /* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
+ /* template types */ &kTemplateTypes[12],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[915],
- /* return matcher indices */ &kMatcherIndices[4],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
- /* const eval */ nullptr,
+ /* parameters */ &kParameters[613],
+ /* return matcher indices */ &kMatcherIndices[1],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::atan2,
},
{
/* [335] */
- /* num parameters */ 1,
- /* num template types */ 0,
+ /* num parameters */ 2,
+ /* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[914],
- /* return matcher indices */ &kMatcherIndices[60],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
- /* const eval */ nullptr,
+ /* template types */ &kTemplateTypes[12],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[615],
+ /* return matcher indices */ &kMatcherIndices[30],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::atan2,
},
{
/* [336] */
@@ -12305,7 +12305,7 @@
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[14],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[867],
+ /* parameters */ &kParameters[881],
/* return matcher indices */ &kMatcherIndices[1],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
@@ -12316,8 +12316,8 @@
/* num template types */ 1,
/* num template numbers */ 1,
/* template types */ &kTemplateTypes[14],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[866],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[899],
/* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
@@ -12327,9 +12327,9 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[11],
+ /* template types */ &kTemplateTypes[13],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[865],
+ /* parameters */ &kParameters[900],
/* return matcher indices */ &kMatcherIndices[1],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
@@ -12339,9 +12339,9 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[11],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[864],
+ /* template types */ &kTemplateTypes[13],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[901],
/* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
@@ -12351,9 +12351,9 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[11],
+ /* template types */ &kTemplateTypes[13],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[863],
+ /* parameters */ &kParameters[902],
/* return matcher indices */ &kMatcherIndices[1],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
@@ -12363,9 +12363,9 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[11],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[862],
+ /* template types */ &kTemplateTypes[13],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[903],
/* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
@@ -12373,25 +12373,25 @@
{
/* [342] */
/* num parameters */ 1,
- /* num template types */ 0,
+ /* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
+ /* template types */ &kTemplateTypes[13],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[917],
- /* return matcher indices */ &kMatcherIndices[4],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
+ /* parameters */ &kParameters[813],
+ /* return matcher indices */ &kMatcherIndices[1],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
/* [343] */
/* num parameters */ 1,
- /* num template types */ 0,
+ /* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[916],
- /* return matcher indices */ &kMatcherIndices[60],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
+ /* template types */ &kTemplateTypes[13],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[812],
+ /* return matcher indices */ &kMatcherIndices[30],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
@@ -12399,9 +12399,9 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[11],
+ /* template types */ &kTemplateTypes[13],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[861],
+ /* parameters */ &kParameters[904],
/* return matcher indices */ &kMatcherIndices[1],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
@@ -12411,9 +12411,9 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[11],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[860],
+ /* template types */ &kTemplateTypes[13],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[905],
/* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
@@ -12423,9 +12423,9 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[11],
+ /* template types */ &kTemplateTypes[13],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[859],
+ /* parameters */ &kParameters[906],
/* return matcher indices */ &kMatcherIndices[1],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
@@ -12435,9 +12435,9 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[11],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[858],
+ /* template types */ &kTemplateTypes[13],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[907],
/* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
@@ -12447,9 +12447,9 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[11],
+ /* template types */ &kTemplateTypes[13],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[856],
+ /* parameters */ &kParameters[908],
/* return matcher indices */ &kMatcherIndices[1],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
@@ -12459,9 +12459,9 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[11],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[855],
+ /* template types */ &kTemplateTypes[13],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[909],
/* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
@@ -12471,7 +12471,7 @@
/* num parameters */ 3,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[11],
+ /* template types */ &kTemplateTypes[13],
/* template numbers */ &kTemplateNumbers[10],
/* parameters */ &kParameters[573],
/* return matcher indices */ &kMatcherIndices[1],
@@ -12483,8 +12483,8 @@
/* num parameters */ 3,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[11],
- /* template numbers */ &kTemplateNumbers[6],
+ /* template types */ &kTemplateTypes[13],
+ /* template numbers */ &kTemplateNumbers[5],
/* parameters */ &kParameters[576],
/* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
@@ -12495,9 +12495,9 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[11],
+ /* template types */ &kTemplateTypes[13],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[854],
+ /* parameters */ &kParameters[910],
/* return matcher indices */ &kMatcherIndices[1],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
@@ -12507,9 +12507,9 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[11],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[853],
+ /* template types */ &kTemplateTypes[13],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[911],
/* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
@@ -12519,9 +12519,9 @@
/* num parameters */ 2,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[11],
+ /* template types */ &kTemplateTypes[13],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[603],
+ /* parameters */ &kParameters[683],
/* return matcher indices */ &kMatcherIndices[1],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
@@ -12531,9 +12531,9 @@
/* num parameters */ 2,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[11],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[601],
+ /* template types */ &kTemplateTypes[13],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[681],
/* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
@@ -12541,49 +12541,49 @@
{
/* [356] */
/* num parameters */ 1,
- /* num template types */ 0,
+ /* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
+ /* template types */ &kTemplateTypes[13],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[920],
- /* return matcher indices */ &kMatcherIndices[4],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
+ /* parameters */ &kParameters[970],
+ /* return matcher indices */ &kMatcherIndices[1],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
/* [357] */
/* num parameters */ 1,
- /* num template types */ 0,
+ /* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[918],
- /* return matcher indices */ &kMatcherIndices[60],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
+ /* template types */ &kTemplateTypes[13],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[959],
+ /* return matcher indices */ &kMatcherIndices[30],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
/* [358] */
/* num parameters */ 1,
- /* num template types */ 0,
+ /* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
+ /* template types */ &kTemplateTypes[15],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[922],
- /* return matcher indices */ &kMatcherIndices[4],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
+ /* parameters */ &kParameters[916],
+ /* return matcher indices */ &kMatcherIndices[1],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
/* [359] */
/* num parameters */ 1,
- /* num template types */ 0,
+ /* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[921],
- /* return matcher indices */ &kMatcherIndices[60],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
+ /* template types */ &kTemplateTypes[15],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[935],
+ /* return matcher indices */ &kMatcherIndices[30],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
@@ -12591,9 +12591,9 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[11],
+ /* template types */ &kTemplateTypes[13],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[849],
+ /* parameters */ &kParameters[869],
/* return matcher indices */ &kMatcherIndices[1],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
@@ -12603,9 +12603,9 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[11],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[848],
+ /* template types */ &kTemplateTypes[13],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[997],
/* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
@@ -12613,25 +12613,25 @@
{
/* [362] */
/* num parameters */ 1,
- /* num template types */ 0,
+ /* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
+ /* template types */ &kTemplateTypes[13],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[924],
- /* return matcher indices */ &kMatcherIndices[4],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
+ /* parameters */ &kParameters[867],
+ /* return matcher indices */ &kMatcherIndices[1],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
/* [363] */
/* num parameters */ 1,
- /* num template types */ 0,
+ /* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[923],
- /* return matcher indices */ &kMatcherIndices[60],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
+ /* template types */ &kTemplateTypes[13],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[855],
+ /* return matcher indices */ &kMatcherIndices[30],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
@@ -12639,9 +12639,9 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[11],
+ /* template types */ &kTemplateTypes[13],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[846],
+ /* parameters */ &kParameters[985],
/* return matcher indices */ &kMatcherIndices[1],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
@@ -12651,178 +12651,178 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[11],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[845],
+ /* template types */ &kTemplateTypes[13],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[976],
/* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
/* [366] */
- /* num parameters */ 2,
+ /* num parameters */ 3,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[14],
+ /* template types */ &kTemplateTypes[11],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[749],
+ /* parameters */ &kParameters[456],
/* return matcher indices */ &kMatcherIndices[1],
- /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::clamp,
},
{
/* [367] */
- /* num parameters */ 2,
+ /* num parameters */ 3,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[14],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[751],
+ /* template types */ &kTemplateTypes[11],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[522],
/* return matcher indices */ &kMatcherIndices[30],
- /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::clamp,
},
{
/* [368] */
/* num parameters */ 1,
- /* num template types */ 0,
+ /* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
+ /* template types */ &kTemplateTypes[13],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[926],
- /* return matcher indices */ &kMatcherIndices[4],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
+ /* parameters */ &kParameters[854],
+ /* return matcher indices */ &kMatcherIndices[1],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
/* [369] */
/* num parameters */ 1,
- /* num template types */ 0,
+ /* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[925],
- /* return matcher indices */ &kMatcherIndices[60],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
+ /* template types */ &kTemplateTypes[13],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[853],
+ /* return matcher indices */ &kMatcherIndices[30],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
/* [370] */
- /* num parameters */ 2,
+ /* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[13],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[721],
- /* return matcher indices */ &kMatcherIndices[20],
- /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::OpGreaterThanEqual,
+ /* parameters */ &kParameters[852],
+ /* return matcher indices */ &kMatcherIndices[1],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
},
{
/* [371] */
- /* num parameters */ 2,
+ /* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[15],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[723],
- /* return matcher indices */ &kMatcherIndices[36],
- /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::OpGreaterThanEqual,
+ /* template types */ &kTemplateTypes[13],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[851],
+ /* return matcher indices */ &kMatcherIndices[30],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
},
{
/* [372] */
- /* num parameters */ 2,
+ /* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[13],
+ /* template types */ &kTemplateTypes[14],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[717],
- /* return matcher indices */ &kMatcherIndices[20],
- /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::OpLessThanEqual,
+ /* parameters */ &kParameters[850],
+ /* return matcher indices */ &kMatcherIndices[1],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
},
{
/* [373] */
- /* num parameters */ 2,
+ /* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[13],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[719],
- /* return matcher indices */ &kMatcherIndices[36],
- /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::OpLessThanEqual,
+ /* template types */ &kTemplateTypes[14],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[849],
+ /* return matcher indices */ &kMatcherIndices[30],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
},
{
/* [374] */
- /* num parameters */ 2,
+ /* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[13],
+ /* template types */ &kTemplateTypes[14],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[713],
- /* return matcher indices */ &kMatcherIndices[20],
- /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::OpGreaterThan,
+ /* parameters */ &kParameters[848],
+ /* return matcher indices */ &kMatcherIndices[1],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
},
{
/* [375] */
- /* num parameters */ 2,
+ /* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[13],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[715],
- /* return matcher indices */ &kMatcherIndices[36],
- /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::OpGreaterThan,
+ /* template types */ &kTemplateTypes[14],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[847],
+ /* return matcher indices */ &kMatcherIndices[30],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
},
{
/* [376] */
- /* num parameters */ 2,
+ /* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[13],
+ /* template types */ &kTemplateTypes[14],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[711],
- /* return matcher indices */ &kMatcherIndices[20],
- /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::OpLessThan,
+ /* parameters */ &kParameters[846],
+ /* return matcher indices */ &kMatcherIndices[1],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
},
{
/* [377] */
- /* num parameters */ 2,
+ /* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[13],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[789],
- /* return matcher indices */ &kMatcherIndices[36],
- /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::OpLessThan,
+ /* template types */ &kTemplateTypes[14],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[845],
+ /* return matcher indices */ &kMatcherIndices[30],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
},
{
/* [378] */
- /* num parameters */ 2,
+ /* num parameters */ 3,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[11],
+ /* template types */ &kTemplateTypes[13],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[735],
+ /* parameters */ &kParameters[507],
/* return matcher indices */ &kMatcherIndices[1],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
/* [379] */
- /* num parameters */ 2,
+ /* num parameters */ 3,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[11],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[733],
- /* return matcher indices */ &kMatcherIndices[1],
+ /* template types */ &kTemplateTypes[13],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[501],
+ /* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
@@ -12831,9 +12831,9 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[11],
+ /* template types */ &kTemplateTypes[13],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[929],
+ /* parameters */ &kParameters[815],
/* return matcher indices */ &kMatcherIndices[1],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
@@ -12843,9 +12843,9 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[11],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[928],
+ /* template types */ &kTemplateTypes[13],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[814],
/* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
@@ -12855,9 +12855,9 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[15],
+ /* template types */ &kTemplateTypes[14],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[1015],
+ /* parameters */ &kParameters[817],
/* return matcher indices */ &kMatcherIndices[1],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
@@ -12867,9 +12867,9 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[15],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[1009],
+ /* template types */ &kTemplateTypes[14],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[816],
/* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
@@ -12881,7 +12881,7 @@
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[14],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[931],
+ /* parameters */ &kParameters[819],
/* return matcher indices */ &kMatcherIndices[1],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
@@ -12892,34 +12892,34 @@
/* num template types */ 1,
/* num template numbers */ 1,
/* template types */ &kTemplateTypes[14],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[930],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[818],
/* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
/* [386] */
- /* num parameters */ 1,
+ /* num parameters */ 2,
/* num template types */ 1,
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[14],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[944],
+ /* parameters */ &kParameters[629],
/* return matcher indices */ &kMatcherIndices[1],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
/* [387] */
- /* num parameters */ 1,
+ /* num parameters */ 2,
/* num template types */ 1,
/* num template numbers */ 1,
/* template types */ &kTemplateTypes[14],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[932],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[625],
/* return matcher indices */ &kMatcherIndices[30],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
@@ -12927,10 +12927,10 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[17],
+ /* template types */ &kTemplateTypes[16],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[988],
- /* return matcher indices */ &kMatcherIndices[34],
+ /* parameters */ &kParameters[883],
+ /* return matcher indices */ &kMatcherIndices[53],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
@@ -12941,31 +12941,31 @@
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[807],
- /* return matcher indices */ &kMatcherIndices[34],
+ /* parameters */ &kParameters[882],
+ /* return matcher indices */ &kMatcherIndices[53],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
/* [390] */
- /* num parameters */ 1,
+ /* num parameters */ 3,
/* num template types */ 1,
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[14],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[950],
+ /* parameters */ &kParameters[567],
/* return matcher indices */ &kMatcherIndices[1],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
/* [391] */
- /* num parameters */ 1,
+ /* num parameters */ 3,
/* num template types */ 1,
/* num template numbers */ 1,
/* template types */ &kTemplateTypes[14],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[947],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[558],
/* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
@@ -12975,9 +12975,9 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[11],
+ /* template types */ &kTemplateTypes[13],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[959],
+ /* parameters */ &kParameters[821],
/* return matcher indices */ &kMatcherIndices[1],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
@@ -12987,107 +12987,107 @@
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[11],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[958],
+ /* template types */ &kTemplateTypes[13],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[820],
/* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
/* [394] */
- /* num parameters */ 2,
+ /* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[16],
+ /* template types */ &kTemplateTypes[13],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[707],
- /* return matcher indices */ &kMatcherIndices[20],
- /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::OpNotEqual,
+ /* parameters */ &kParameters[823],
+ /* return matcher indices */ &kMatcherIndices[1],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
},
{
/* [395] */
- /* num parameters */ 2,
+ /* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[16],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[709],
- /* return matcher indices */ &kMatcherIndices[36],
- /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::OpNotEqual,
+ /* template types */ &kTemplateTypes[13],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[822],
+ /* return matcher indices */ &kMatcherIndices[30],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
},
{
/* [396] */
/* num parameters */ 1,
- /* num template types */ 1,
+ /* num template types */ 0,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[11],
+ /* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[961],
- /* return matcher indices */ &kMatcherIndices[1],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* parameters */ &kParameters[825],
+ /* return matcher indices */ &kMatcherIndices[4],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
/* const eval */ nullptr,
},
{
/* [397] */
/* num parameters */ 1,
- /* num template types */ 1,
+ /* num template types */ 0,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[11],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[960],
- /* return matcher indices */ &kMatcherIndices[30],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[824],
+ /* return matcher indices */ &kMatcherIndices[36],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
/* const eval */ nullptr,
},
{
/* [398] */
- /* num parameters */ 3,
- /* num template types */ 1,
+ /* num parameters */ 1,
+ /* num template types */ 0,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[13],
+ /* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[471],
- /* return matcher indices */ &kMatcherIndices[1],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::clamp,
+ /* parameters */ &kParameters[809],
+ /* return matcher indices */ &kMatcherIndices[4],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
+ /* const eval */ nullptr,
},
{
/* [399] */
- /* num parameters */ 3,
- /* num template types */ 1,
+ /* num parameters */ 1,
+ /* num template types */ 0,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[13],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[474],
- /* return matcher indices */ &kMatcherIndices[30],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::clamp,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[922],
+ /* return matcher indices */ &kMatcherIndices[36],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
+ /* const eval */ nullptr,
},
{
/* [400] */
/* num parameters */ 1,
- /* num template types */ 1,
+ /* num template types */ 0,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[11],
+ /* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[971],
- /* return matcher indices */ &kMatcherIndices[1],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* parameters */ &kParameters[829],
+ /* return matcher indices */ &kMatcherIndices[4],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
/* const eval */ nullptr,
},
{
/* [401] */
/* num parameters */ 1,
- /* num template types */ 1,
+ /* num template types */ 0,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[11],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[970],
- /* return matcher indices */ &kMatcherIndices[30],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[828],
+ /* return matcher indices */ &kMatcherIndices[36],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
/* const eval */ nullptr,
},
{
@@ -13097,8 +13097,8 @@
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[537],
- /* return matcher indices */ &kMatcherIndices[131],
+ /* parameters */ &kParameters[591],
+ /* return matcher indices */ &kMatcherIndices[133],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
@@ -13109,278 +13109,302 @@
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[540],
- /* return matcher indices */ &kMatcherIndices[131],
+ /* parameters */ &kParameters[588],
+ /* return matcher indices */ &kMatcherIndices[133],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
/* [404] */
/* num parameters */ 1,
- /* num template types */ 1,
+ /* num template types */ 0,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[11],
+ /* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[973],
- /* return matcher indices */ &kMatcherIndices[1],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* parameters */ &kParameters[831],
+ /* return matcher indices */ &kMatcherIndices[4],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
/* const eval */ nullptr,
},
{
/* [405] */
/* num parameters */ 1,
- /* num template types */ 1,
+ /* num template types */ 0,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[11],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[972],
- /* return matcher indices */ &kMatcherIndices[30],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[830],
+ /* return matcher indices */ &kMatcherIndices[36],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
/* const eval */ nullptr,
},
{
/* [406] */
- /* num parameters */ 2,
- /* num template types */ 1,
+ /* num parameters */ 1,
+ /* num template types */ 0,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[12],
+ /* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[781],
- /* return matcher indices */ &kMatcherIndices[1],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::atan2,
+ /* parameters */ &kParameters[833],
+ /* return matcher indices */ &kMatcherIndices[4],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
+ /* const eval */ nullptr,
},
{
/* [407] */
- /* num parameters */ 2,
- /* num template types */ 1,
+ /* num parameters */ 1,
+ /* num template types */ 0,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[12],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[779],
- /* return matcher indices */ &kMatcherIndices[30],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::atan2,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[832],
+ /* return matcher indices */ &kMatcherIndices[36],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
+ /* const eval */ nullptr,
},
{
/* [408] */
/* num parameters */ 2,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[16],
+ /* template types */ &kTemplateTypes[11],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[703],
- /* return matcher indices */ &kMatcherIndices[20],
+ /* parameters */ &kParameters[651],
+ /* return matcher indices */ &kMatcherIndices[12],
/* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::OpEqual,
+ /* const eval */ &ConstEval::OpGreaterThanEqual,
},
{
/* [409] */
/* num parameters */ 2,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[16],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[705],
- /* return matcher indices */ &kMatcherIndices[36],
+ /* template types */ &kTemplateTypes[15],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[647],
+ /* return matcher indices */ &kMatcherIndices[33],
/* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::OpEqual,
+ /* const eval */ &ConstEval::OpGreaterThanEqual,
},
{
/* [410] */
- /* num parameters */ 1,
+ /* num parameters */ 2,
/* num template types */ 1,
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[11],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[975],
- /* return matcher indices */ &kMatcherIndices[1],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
+ /* parameters */ &kParameters[659],
+ /* return matcher indices */ &kMatcherIndices[12],
+ /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::OpLessThanEqual,
},
{
/* [411] */
- /* num parameters */ 1,
+ /* num parameters */ 2,
/* num template types */ 1,
/* num template numbers */ 1,
/* template types */ &kTemplateTypes[11],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[974],
- /* return matcher indices */ &kMatcherIndices[30],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[655],
+ /* return matcher indices */ &kMatcherIndices[33],
+ /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::OpLessThanEqual,
},
{
/* [412] */
- /* num parameters */ 1,
+ /* num parameters */ 2,
/* num template types */ 1,
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[11],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[977],
- /* return matcher indices */ &kMatcherIndices[1],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
+ /* parameters */ &kParameters[665],
+ /* return matcher indices */ &kMatcherIndices[12],
+ /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::OpGreaterThan,
},
{
/* [413] */
- /* num parameters */ 1,
+ /* num parameters */ 2,
/* num template types */ 1,
/* num template numbers */ 1,
/* template types */ &kTemplateTypes[11],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[976],
- /* return matcher indices */ &kMatcherIndices[30],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[663],
+ /* return matcher indices */ &kMatcherIndices[33],
+ /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::OpGreaterThan,
},
{
/* [414] */
/* num parameters */ 2,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[10],
+ /* template types */ &kTemplateTypes[11],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[805],
- /* return matcher indices */ &kMatcherIndices[1],
+ /* parameters */ &kParameters[669],
+ /* return matcher indices */ &kMatcherIndices[12],
/* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::OpXor,
+ /* const eval */ &ConstEval::OpLessThan,
},
{
/* [415] */
/* num parameters */ 2,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[10],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[665],
- /* return matcher indices */ &kMatcherIndices[30],
+ /* template types */ &kTemplateTypes[11],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[667],
+ /* return matcher indices */ &kMatcherIndices[33],
/* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::OpXor,
+ /* const eval */ &ConstEval::OpLessThan,
},
{
/* [416] */
- /* num parameters */ 1,
+ /* num parameters */ 2,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[11],
+ /* template types */ &kTemplateTypes[10],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[985],
- /* return matcher indices */ &kMatcherIndices[1],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
+ /* parameters */ &kParameters[597],
+ /* return matcher indices */ &kMatcherIndices[12],
+ /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::OpNotEqual,
},
{
/* [417] */
- /* num parameters */ 1,
+ /* num parameters */ 2,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[11],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[984],
- /* return matcher indices */ &kMatcherIndices[30],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
+ /* template types */ &kTemplateTypes[10],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[671],
+ /* return matcher indices */ &kMatcherIndices[33],
+ /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::OpNotEqual,
},
{
/* [418] */
- /* num parameters */ 1,
- /* num template types */ 0,
+ /* num parameters */ 2,
+ /* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
+ /* template types */ &kTemplateTypes[10],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[991],
- /* return matcher indices */ &kMatcherIndices[20],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
+ /* parameters */ &kParameters[675],
+ /* return matcher indices */ &kMatcherIndices[12],
+ /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::OpEqual,
},
{
/* [419] */
- /* num parameters */ 1,
- /* num template types */ 0,
+ /* num parameters */ 2,
+ /* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[990],
- /* return matcher indices */ &kMatcherIndices[20],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
+ /* template types */ &kTemplateTypes[10],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[673],
+ /* return matcher indices */ &kMatcherIndices[33],
+ /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::OpEqual,
},
{
/* [420] */
/* num parameters */ 1,
- /* num template types */ 0,
+ /* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
+ /* template types */ &kTemplateTypes[13],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[996],
- /* return matcher indices */ &kMatcherIndices[20],
+ /* parameters */ &kParameters[843],
+ /* return matcher indices */ &kMatcherIndices[1],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
/* [421] */
/* num parameters */ 1,
- /* num template types */ 0,
- /* num template numbers */ 1,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[994],
- /* return matcher indices */ &kMatcherIndices[20],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [422] */
- /* num parameters */ 1,
- /* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[11],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[1002],
- /* return matcher indices */ &kMatcherIndices[1],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [423] */
- /* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[11],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[997],
+ /* template types */ &kTemplateTypes[13],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[842],
/* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
- /* [424] */
- /* num parameters */ 1,
+ /* [422] */
+ /* num parameters */ 2,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[11],
+ /* template types */ &kTemplateTypes[25],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[1008],
+ /* parameters */ &kParameters[703],
+ /* return matcher indices */ &kMatcherIndices[1],
+ /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::OpXor,
+ },
+ {
+ /* [423] */
+ /* num parameters */ 2,
+ /* num template types */ 1,
+ /* num template numbers */ 1,
+ /* template types */ &kTemplateTypes[25],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[701],
+ /* return matcher indices */ &kMatcherIndices[30],
+ /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::OpXor,
+ },
+ {
+ /* [424] */
+ /* num parameters */ 2,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[13],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[799],
/* return matcher indices */ &kMatcherIndices[1],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
/* [425] */
- /* num parameters */ 1,
+ /* num parameters */ 2,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[11],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[1003],
- /* return matcher indices */ &kMatcherIndices[30],
+ /* template types */ &kTemplateTypes[13],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[801],
+ /* return matcher indices */ &kMatcherIndices[1],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
/* [426] */
/* num parameters */ 1,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[835],
+ /* return matcher indices */ &kMatcherIndices[4],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [427] */
+ /* num parameters */ 1,
+ /* num template types */ 0,
+ /* num template numbers */ 1,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[834],
+ /* return matcher indices */ &kMatcherIndices[36],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [428] */
+ /* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[26],
@@ -13391,23 +13415,23 @@
/* const eval */ &ConstEval::OpUnaryMinus,
},
{
- /* [427] */
+ /* [429] */
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 1,
/* template types */ &kTemplateTypes[26],
- /* template numbers */ &kTemplateNumbers[6],
+ /* template numbers */ &kTemplateNumbers[5],
/* parameters */ &kParameters[874],
/* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ &ConstEval::OpUnaryMinus,
},
{
- /* [428] */
+ /* [430] */
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 0,
- /* template types */ &kTemplateTypes[10],
+ /* template types */ &kTemplateTypes[25],
/* template numbers */ &kTemplateNumbers[10],
/* parameters */ &kParameters[871],
/* return matcher indices */ &kMatcherIndices[1],
@@ -13415,87 +13439,63 @@
/* const eval */ &ConstEval::OpComplement,
},
{
- /* [429] */
+ /* [431] */
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[10],
- /* template numbers */ &kTemplateNumbers[6],
+ /* template types */ &kTemplateTypes[25],
+ /* template numbers */ &kTemplateNumbers[5],
/* parameters */ &kParameters[872],
/* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ &ConstEval::OpComplement,
},
{
- /* [430] */
- /* num parameters */ 1,
- /* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[11],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[851],
- /* return matcher indices */ &kMatcherIndices[1],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [431] */
- /* num parameters */ 1,
- /* num template types */ 1,
- /* num template numbers */ 1,
- /* template types */ &kTemplateTypes[11],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[850],
- /* return matcher indices */ &kMatcherIndices[30],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
/* [432] */
/* num parameters */ 1,
- /* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[14],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[908],
- /* return matcher indices */ &kMatcherIndices[1],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [433] */
- /* num parameters */ 1,
- /* num template types */ 1,
- /* num template numbers */ 1,
- /* template types */ &kTemplateTypes[14],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[907],
- /* return matcher indices */ &kMatcherIndices[30],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [434] */
- /* num parameters */ 1,
/* num template types */ 0,
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[843],
- /* return matcher indices */ &kMatcherIndices[135],
+ /* parameters */ &kParameters[807],
+ /* return matcher indices */ &kMatcherIndices[12],
+ /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::OpNot,
+ },
+ {
+ /* [433] */
+ /* num parameters */ 1,
+ /* num template types */ 0,
+ /* num template numbers */ 1,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[870],
+ /* return matcher indices */ &kMatcherIndices[33],
+ /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::OpNot,
+ },
+ {
+ /* [434] */
+ /* num parameters */ 2,
+ /* num template types */ 1,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[13],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[797],
+ /* return matcher indices */ &kMatcherIndices[123],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
/* [435] */
- /* num parameters */ 2,
- /* num template types */ 1,
- /* num template numbers */ 1,
- /* template types */ &kTemplateTypes[14],
- /* template numbers */ &kTemplateNumbers[9],
- /* parameters */ &kParameters[649],
- /* return matcher indices */ &kMatcherIndices[1],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num parameters */ 1,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[866],
+ /* return matcher indices */ &kMatcherIndices[44],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
@@ -13505,33 +13505,33 @@
/* num template numbers */ 1,
/* template types */ &kTemplateTypes[14],
/* template numbers */ &kTemplateNumbers[9],
- /* parameters */ &kParameters[645],
+ /* parameters */ &kParameters[765],
/* return matcher indices */ &kMatcherIndices[1],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
/* [437] */
- /* num parameters */ 2,
+ /* num parameters */ 1,
/* num template types */ 1,
- /* num template numbers */ 1,
- /* template types */ &kTemplateTypes[14],
- /* template numbers */ &kTemplateNumbers[9],
- /* parameters */ &kParameters[641],
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[18],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[868],
/* return matcher indices */ &kMatcherIndices[1],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ &ConstEval::Identity,
},
{
/* [438] */
/* num parameters */ 2,
- /* num template types */ 1,
- /* num template numbers */ 1,
- /* template types */ &kTemplateTypes[14],
- /* template numbers */ &kTemplateNumbers[9],
- /* parameters */ &kParameters[637],
- /* return matcher indices */ &kMatcherIndices[1],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[805],
+ /* return matcher indices */ &kMatcherIndices[53],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
@@ -13539,11 +13539,11 @@
/* num parameters */ 2,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[14],
- /* template numbers */ &kTemplateNumbers[9],
- /* parameters */ &kParameters[633],
+ /* template types */ &kTemplateTypes[15],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[803],
/* return matcher indices */ &kMatcherIndices[1],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
@@ -13553,7 +13553,7 @@
/* num template numbers */ 1,
/* template types */ &kTemplateTypes[14],
/* template numbers */ &kTemplateNumbers[9],
- /* parameters */ &kParameters[621],
+ /* parameters */ &kParameters[767],
/* return matcher indices */ &kMatcherIndices[1],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
@@ -13565,21 +13565,21 @@
/* num template numbers */ 1,
/* template types */ &kTemplateTypes[14],
/* template numbers */ &kTemplateNumbers[9],
- /* parameters */ &kParameters[617],
+ /* parameters */ &kParameters[769],
/* return matcher indices */ &kMatcherIndices[1],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
/* [442] */
- /* num parameters */ 2,
+ /* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[14],
- /* template numbers */ &kTemplateNumbers[9],
- /* parameters */ &kParameters[615],
+ /* template types */ &kTemplateTypes[13],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[841],
/* return matcher indices */ &kMatcherIndices[1],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
@@ -13589,8 +13589,8 @@
/* num template numbers */ 1,
/* template types */ &kTemplateTypes[14],
/* template numbers */ &kTemplateNumbers[9],
- /* parameters */ &kParameters[611],
- /* return matcher indices */ nullptr,
+ /* parameters */ &kParameters[771],
+ /* return matcher indices */ &kMatcherIndices[1],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
@@ -13601,8 +13601,8 @@
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[697],
- /* return matcher indices */ &kMatcherIndices[20],
+ /* parameters */ &kParameters[679],
+ /* return matcher indices */ &kMatcherIndices[12],
/* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
@@ -13613,13 +13613,73 @@
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[699],
- /* return matcher indices */ &kMatcherIndices[20],
+ /* parameters */ &kParameters[677],
+ /* return matcher indices */ &kMatcherIndices[12],
/* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
/* [446] */
+ /* num parameters */ 2,
+ /* num template types */ 1,
+ /* num template numbers */ 1,
+ /* template types */ &kTemplateTypes[14],
+ /* template numbers */ &kTemplateNumbers[9],
+ /* parameters */ &kParameters[781],
+ /* return matcher indices */ &kMatcherIndices[1],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [447] */
+ /* num parameters */ 2,
+ /* num template types */ 1,
+ /* num template numbers */ 1,
+ /* template types */ &kTemplateTypes[14],
+ /* template numbers */ &kTemplateNumbers[9],
+ /* parameters */ &kParameters[783],
+ /* return matcher indices */ &kMatcherIndices[1],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [448] */
+ /* num parameters */ 2,
+ /* num template types */ 1,
+ /* num template numbers */ 1,
+ /* template types */ &kTemplateTypes[14],
+ /* template numbers */ &kTemplateNumbers[9],
+ /* parameters */ &kParameters[785],
+ /* return matcher indices */ &kMatcherIndices[1],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [449] */
+ /* num parameters */ 2,
+ /* num template types */ 1,
+ /* num template numbers */ 1,
+ /* template types */ &kTemplateTypes[14],
+ /* template numbers */ &kTemplateNumbers[9],
+ /* parameters */ &kParameters[787],
+ /* return matcher indices */ &kMatcherIndices[1],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [450] */
+ /* num parameters */ 2,
+ /* num template types */ 1,
+ /* num template numbers */ 1,
+ /* template types */ &kTemplateTypes[14],
+ /* template numbers */ &kTemplateNumbers[9],
+ /* parameters */ &kParameters[789],
+ /* return matcher indices */ nullptr,
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [451] */
/* num parameters */ 1,
/* num template types */ 1,
/* num template numbers */ 1,
@@ -13631,98 +13691,38 @@
/* const eval */ nullptr,
},
{
- /* [447] */
- /* num parameters */ 1,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[880],
- /* return matcher indices */ &kMatcherIndices[35],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [448] */
- /* num parameters */ 0,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[1017],
- /* return matcher indices */ nullptr,
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [449] */
- /* num parameters */ 1,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[840],
- /* return matcher indices */ &kMatcherIndices[131],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [450] */
- /* num parameters */ 1,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[841],
- /* return matcher indices */ &kMatcherIndices[131],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [451] */
- /* num parameters */ 1,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[842],
- /* return matcher indices */ &kMatcherIndices[135],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
/* [452] */
+ /* num parameters */ 2,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[599],
+ /* return matcher indices */ &kMatcherIndices[44],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [453] */
/* num parameters */ 3,
/* num template types */ 1,
/* num template numbers */ 1,
/* template types */ &kTemplateTypes[14],
/* template numbers */ &kTemplateNumbers[9],
- /* parameters */ &kParameters[528],
- /* return matcher indices */ &kMatcherIndices[213],
+ /* parameters */ &kParameters[465],
+ /* return matcher indices */ &kMatcherIndices[231],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
- /* [453] */
- /* num parameters */ 1,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[844],
- /* return matcher indices */ &kMatcherIndices[135],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
/* [454] */
/* num parameters */ 1,
- /* num template types */ 1,
- /* num template numbers */ 2,
- /* template types */ &kTemplateTypes[11],
- /* template numbers */ &kTemplateNumbers[5],
- /* parameters */ &kParameters[847],
- /* return matcher indices */ &kMatcherIndices[22],
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[961],
+ /* return matcher indices */ &kMatcherIndices[133],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
@@ -13740,25 +13740,25 @@
},
{
/* [456] */
- /* num parameters */ 3,
- /* num template types */ 1,
- /* num template numbers */ 1,
- /* template types */ &kTemplateTypes[11],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[525],
- /* return matcher indices */ &kMatcherIndices[30],
+ /* num parameters */ 1,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[971],
+ /* return matcher indices */ &kMatcherIndices[133],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
/* [457] */
- /* num parameters */ 2,
- /* num template types */ 1,
- /* num template numbers */ 1,
- /* template types */ &kTemplateTypes[11],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[803],
- /* return matcher indices */ &kMatcherIndices[30],
+ /* num parameters */ 1,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[972],
+ /* return matcher indices */ &kMatcherIndices[105],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
@@ -13769,8 +13769,8 @@
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[878],
- /* return matcher indices */ &kMatcherIndices[35],
+ /* parameters */ &kParameters[974],
+ /* return matcher indices */ &kMatcherIndices[105],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
@@ -13781,43 +13781,43 @@
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[879],
- /* return matcher indices */ &kMatcherIndices[35],
+ /* parameters */ &kParameters[975],
+ /* return matcher indices */ &kMatcherIndices[105],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
/* [460] */
/* num parameters */ 1,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[881],
- /* return matcher indices */ &kMatcherIndices[35],
+ /* num template types */ 1,
+ /* num template numbers */ 2,
+ /* template types */ &kTemplateTypes[13],
+ /* template numbers */ &kTemplateNumbers[6],
+ /* parameters */ &kParameters[991],
+ /* return matcher indices */ &kMatcherIndices[14],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
/* [461] */
- /* num parameters */ 1,
+ /* num parameters */ 0,
/* num template types */ 0,
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[882],
- /* return matcher indices */ &kMatcherIndices[35],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* parameters */ &kParameters[1017],
+ /* return matcher indices */ nullptr,
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
/* [462] */
- /* num parameters */ 1,
+ /* num parameters */ 3,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[11],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[883],
+ /* template types */ &kTemplateTypes[13],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[525],
/* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
@@ -13826,83 +13826,83 @@
/* [463] */
/* num parameters */ 2,
/* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[11],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[743],
- /* return matcher indices */ &kMatcherIndices[113],
- /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ nullptr,
- },
- {
- /* [464] */
- /* num parameters */ 3,
- /* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[11],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[516],
+ /* template types */ &kTemplateTypes[13],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[747],
/* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
- /* [465] */
- /* num parameters */ 2,
+ /* [464] */
+ /* num parameters */ 1,
/* num template types */ 0,
/* num template numbers */ 0,
/* template types */ &kTemplateTypes[27],
/* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[727],
- /* return matcher indices */ &kMatcherIndices[35],
+ /* parameters */ &kParameters[878],
+ /* return matcher indices */ &kMatcherIndices[44],
+ /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
+ /* const eval */ nullptr,
+ },
+ {
+ /* [465] */
+ /* num parameters */ 1,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[877],
+ /* return matcher indices */ &kMatcherIndices[44],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
/* [466] */
- /* num parameters */ 2,
- /* num template types */ 0,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[27],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[729],
- /* return matcher indices */ &kMatcherIndices[34],
+ /* num parameters */ 1,
+ /* num template types */ 1,
+ /* num template numbers */ 1,
+ /* template types */ &kTemplateTypes[18],
+ /* template numbers */ &kTemplateNumbers[8],
+ /* parameters */ &kParameters[1008],
+ /* return matcher indices */ &kMatcherIndices[44],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
/* [467] */
- /* num parameters */ 2,
- /* num template types */ 1,
- /* num template numbers */ 1,
- /* template types */ &kTemplateTypes[15],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[731],
- /* return matcher indices */ &kMatcherIndices[1],
+ /* num parameters */ 1,
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[876],
+ /* return matcher indices */ &kMatcherIndices[44],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
/* [468] */
/* num parameters */ 1,
- /* num template types */ 1,
- /* num template numbers */ 1,
- /* template types */ &kTemplateTypes[11],
- /* template numbers */ &kTemplateNumbers[6],
- /* parameters */ &kParameters[927],
- /* return matcher indices */ &kMatcherIndices[1],
+ /* num template types */ 0,
+ /* num template numbers */ 0,
+ /* template types */ &kTemplateTypes[27],
+ /* template numbers */ &kTemplateNumbers[10],
+ /* parameters */ &kParameters[875],
+ /* return matcher indices */ &kMatcherIndices[44],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
{
/* [469] */
- /* num parameters */ 1,
+ /* num parameters */ 3,
/* num template types */ 1,
/* num template numbers */ 1,
- /* template types */ &kTemplateTypes[19],
- /* template numbers */ &kTemplateNumbers[8],
- /* parameters */ &kParameters[1014],
- /* return matcher indices */ &kMatcherIndices[35],
+ /* template types */ &kTemplateTypes[13],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[555],
+ /* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* const eval */ nullptr,
},
@@ -13910,13 +13910,13 @@
/* [470] */
/* num parameters */ 1,
/* num template types */ 1,
- /* num template numbers */ 0,
- /* template types */ &kTemplateTypes[19],
- /* template numbers */ &kTemplateNumbers[10],
- /* parameters */ &kParameters[868],
- /* return matcher indices */ &kMatcherIndices[1],
+ /* num template numbers */ 1,
+ /* template types */ &kTemplateTypes[13],
+ /* template numbers */ &kTemplateNumbers[5],
+ /* parameters */ &kParameters[865],
+ /* return matcher indices */ &kMatcherIndices[30],
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
- /* const eval */ &ConstEval::Identity,
+ /* const eval */ nullptr,
},
};
@@ -13926,294 +13926,294 @@
/* fn abs<T : fiu32_f16>(T) -> T */
/* fn abs<N : num, T : fiu32_f16>(vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[382],
+ /* overloads */ &kOverloads[358],
},
{
/* [1] */
/* fn acos<T : f32_f16>(T) -> T */
/* fn acos<N : num, T : f32_f16>(vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[424],
+ /* overloads */ &kOverloads[316],
},
{
/* [2] */
/* fn acosh<T : f32_f16>(T) -> T */
/* fn acosh<N : num, T : f32_f16>(vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[422],
+ /* overloads */ &kOverloads[318],
},
{
/* [3] */
/* fn all(bool) -> bool */
/* fn all<N : num>(vec<N, bool>) -> bool */
/* num overloads */ 2,
- /* overloads */ &kOverloads[420],
+ /* overloads */ &kOverloads[320],
},
{
/* [4] */
/* fn any(bool) -> bool */
/* fn any<N : num>(vec<N, bool>) -> bool */
/* num overloads */ 2,
- /* overloads */ &kOverloads[418],
+ /* overloads */ &kOverloads[322],
},
{
/* [5] */
/* fn arrayLength<T, A : access>(ptr<storage, array<T>, A>) -> u32 */
/* num overloads */ 1,
- /* overloads */ &kOverloads[469],
+ /* overloads */ &kOverloads[466],
},
{
/* [6] */
/* fn asin<T : f32_f16>(T) -> T */
/* fn asin<N : num, T : f32_f16>(vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[416],
+ /* overloads */ &kOverloads[324],
},
{
/* [7] */
/* fn asinh<T : f32_f16>(T) -> T */
/* fn asinh<N : num, T : f32_f16>(vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[412],
+ /* overloads */ &kOverloads[326],
},
{
/* [8] */
/* fn atan<T : f32_f16>(T) -> T */
/* fn atan<N : num, T : f32_f16>(vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[410],
+ /* overloads */ &kOverloads[332],
},
{
/* [9] */
/* fn atan2<T : fa_f32_f16>(T, T) -> T */
/* fn atan2<T : fa_f32_f16, N : num>(vec<N, T>, vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[406],
+ /* overloads */ &kOverloads[334],
},
{
/* [10] */
/* fn atanh<T : f32_f16>(T) -> T */
/* fn atanh<N : num, T : f32_f16>(vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[404],
+ /* overloads */ &kOverloads[356],
},
{
/* [11] */
/* fn ceil<T : f32_f16>(T) -> T */
/* fn ceil<N : num, T : f32_f16>(vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[400],
+ /* overloads */ &kOverloads[362],
},
{
/* [12] */
/* fn clamp<T : fia_fiu32_f16>(T, T, T) -> T */
/* fn clamp<T : fia_fiu32_f16, N : num>(vec<N, T>, vec<N, T>, vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[398],
+ /* overloads */ &kOverloads[366],
},
{
/* [13] */
/* fn cos<T : f32_f16>(T) -> T */
/* fn cos<N : num, T : f32_f16>(vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[396],
+ /* overloads */ &kOverloads[368],
},
{
/* [14] */
/* fn cosh<T : f32_f16>(T) -> T */
/* fn cosh<N : num, T : f32_f16>(vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[392],
+ /* overloads */ &kOverloads[370],
},
{
/* [15] */
/* fn countLeadingZeros<T : iu32>(T) -> T */
/* fn countLeadingZeros<N : num, T : iu32>(vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[390],
+ /* overloads */ &kOverloads[372],
},
{
/* [16] */
/* fn countOneBits<T : iu32>(T) -> T */
/* fn countOneBits<N : num, T : iu32>(vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[386],
+ /* overloads */ &kOverloads[374],
},
{
/* [17] */
/* fn countTrailingZeros<T : iu32>(T) -> T */
/* fn countTrailingZeros<N : num, T : iu32>(vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[384],
+ /* overloads */ &kOverloads[376],
},
{
/* [18] */
/* fn cross<T : f32_f16>(vec3<T>, vec3<T>) -> vec3<T> */
/* num overloads */ 1,
- /* overloads */ &kOverloads[463],
+ /* overloads */ &kOverloads[434],
},
{
/* [19] */
/* fn degrees<T : f32_f16>(T) -> T */
/* fn degrees<N : num, T : f32_f16>(vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[380],
+ /* overloads */ &kOverloads[420],
},
{
/* [20] */
/* fn determinant<N : num, T : f32_f16>(mat<N, N, T>) -> T */
/* num overloads */ 1,
- /* overloads */ &kOverloads[468],
+ /* overloads */ &kOverloads[442],
},
{
/* [21] */
/* fn distance<T : f32_f16>(T, T) -> T */
/* fn distance<N : num, T : f32_f16>(vec<N, T>, vec<N, T>) -> T */
/* num overloads */ 2,
- /* overloads */ &kOverloads[378],
+ /* overloads */ &kOverloads[424],
},
{
/* [22] */
/* fn dot<N : num, T : fiu32_f16>(vec<N, T>, vec<N, T>) -> T */
/* num overloads */ 1,
- /* overloads */ &kOverloads[467],
+ /* overloads */ &kOverloads[439],
},
{
/* [23] */
/* fn dot4I8Packed(u32, u32) -> i32 */
/* num overloads */ 1,
- /* overloads */ &kOverloads[466],
+ /* overloads */ &kOverloads[438],
},
{
/* [24] */
/* fn dot4U8Packed(u32, u32) -> u32 */
/* num overloads */ 1,
- /* overloads */ &kOverloads[465],
+ /* overloads */ &kOverloads[452],
},
{
/* [25] */
/* fn dpdx(f32) -> f32 */
/* fn dpdx<N : num>(vec<N, f32>) -> vec<N, f32> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[368],
+ /* overloads */ &kOverloads[426],
},
{
/* [26] */
/* fn dpdxCoarse(f32) -> f32 */
/* fn dpdxCoarse<N : num>(vec<N, f32>) -> vec<N, f32> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[362],
+ /* overloads */ &kOverloads[406],
},
{
/* [27] */
/* fn dpdxFine(f32) -> f32 */
/* fn dpdxFine<N : num>(vec<N, f32>) -> vec<N, f32> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[358],
+ /* overloads */ &kOverloads[404],
},
{
/* [28] */
/* fn dpdy(f32) -> f32 */
/* fn dpdy<N : num>(vec<N, f32>) -> vec<N, f32> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[356],
+ /* overloads */ &kOverloads[400],
},
{
/* [29] */
/* fn dpdyCoarse(f32) -> f32 */
/* fn dpdyCoarse<N : num>(vec<N, f32>) -> vec<N, f32> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[342],
+ /* overloads */ &kOverloads[290],
},
{
/* [30] */
/* fn dpdyFine(f32) -> f32 */
/* fn dpdyFine<N : num>(vec<N, f32>) -> vec<N, f32> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[334],
+ /* overloads */ &kOverloads[396],
},
{
/* [31] */
/* fn exp<T : f32_f16>(T) -> T */
/* fn exp<N : num, T : f32_f16>(vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[332],
+ /* overloads */ &kOverloads[394],
},
{
/* [32] */
/* fn exp2<T : f32_f16>(T) -> T */
/* fn exp2<N : num, T : f32_f16>(vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[326],
+ /* overloads */ &kOverloads[392],
},
{
/* [33] */
/* fn extractBits<T : iu32>(T, u32, u32) -> T */
/* fn extractBits<N : num, T : iu32>(vec<N, T>, u32, u32) -> vec<N, T> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[324],
+ /* overloads */ &kOverloads[390],
},
{
/* [34] */
/* fn faceForward<N : num, T : f32_f16>(vec<N, T>, vec<N, T>, vec<N, T>) -> vec<N, T> */
/* num overloads */ 1,
- /* overloads */ &kOverloads[464],
+ /* overloads */ &kOverloads[469],
},
{
/* [35] */
/* fn firstLeadingBit<T : iu32>(T) -> T */
/* fn firstLeadingBit<N : num, T : iu32>(vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[322],
+ /* overloads */ &kOverloads[384],
},
{
/* [36] */
/* fn firstTrailingBit<T : iu32>(T) -> T */
/* fn firstTrailingBit<N : num, T : iu32>(vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[432],
+ /* overloads */ &kOverloads[382],
},
{
/* [37] */
/* fn floor<T : f32_f16>(T) -> T */
/* fn floor<N : num, T : f32_f16>(vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[320],
+ /* overloads */ &kOverloads[380],
},
{
/* [38] */
/* fn fma<T : f32_f16>(T, T, T) -> T */
/* fn fma<N : num, T : f32_f16>(vec<N, T>, vec<N, T>, vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[316],
+ /* overloads */ &kOverloads[378],
},
{
/* [39] */
/* fn fract<T : f32_f16>(T) -> T */
/* fn fract<N : num, T : f32_f16>(vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[312],
+ /* overloads */ &kOverloads[342],
},
{
/* [40] */
/* fn frexp<T : f32_f16>(T) -> __frexp_result<T> */
/* fn frexp<N : num, T : f32_f16>(vec<N, T>) -> __frexp_result_vec<N, T> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[292],
+ /* overloads */ &kOverloads[312],
},
{
/* [41] */
/* fn fwidth(f32) -> f32 */
/* fn fwidth<N : num>(vec<N, f32>) -> vec<N, f32> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[290],
+ /* overloads */ &kOverloads[398],
},
{
/* [42] */
/* fn fwidthCoarse(f32) -> f32 */
/* fn fwidthCoarse<N : num>(vec<N, f32>) -> vec<N, f32> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[318],
+ /* overloads */ &kOverloads[292],
},
{
/* [43] */
@@ -14284,7 +14284,7 @@
/* fn mix<N : num, T : f32_f16>(vec<N, T>, vec<N, T>, vec<N, T>) -> vec<N, T> */
/* fn mix<N : num, T : f32_f16>(vec<N, T>, vec<N, T>, T) -> vec<N, T> */
/* num overloads */ 3,
- /* overloads */ &kOverloads[285],
+ /* overloads */ &kOverloads[267],
},
{
/* [53] */
@@ -14297,37 +14297,37 @@
/* [54] */
/* fn normalize<N : num, T : f32_f16>(vec<N, T>) -> vec<N, T> */
/* num overloads */ 1,
- /* overloads */ &kOverloads[462],
+ /* overloads */ &kOverloads[470],
},
{
/* [55] */
/* fn pack2x16float(vec2<f32>) -> u32 */
/* num overloads */ 1,
- /* overloads */ &kOverloads[461],
+ /* overloads */ &kOverloads[435],
},
{
/* [56] */
/* fn pack2x16snorm(vec2<f32>) -> u32 */
/* num overloads */ 1,
- /* overloads */ &kOverloads[460],
+ /* overloads */ &kOverloads[468],
},
{
/* [57] */
/* fn pack2x16unorm(vec2<f32>) -> u32 */
/* num overloads */ 1,
- /* overloads */ &kOverloads[447],
+ /* overloads */ &kOverloads[467],
},
{
/* [58] */
/* fn pack4x8snorm(vec4<f32>) -> u32 */
/* num overloads */ 1,
- /* overloads */ &kOverloads[459],
+ /* overloads */ &kOverloads[465],
},
{
/* [59] */
/* fn pack4x8unorm(vec4<f32>) -> u32 */
/* num overloads */ 1,
- /* overloads */ &kOverloads[458],
+ /* overloads */ &kOverloads[464],
},
{
/* [60] */
@@ -14347,13 +14347,13 @@
/* [62] */
/* fn reflect<N : num, T : f32_f16>(vec<N, T>, vec<N, T>) -> vec<N, T> */
/* num overloads */ 1,
- /* overloads */ &kOverloads[457],
+ /* overloads */ &kOverloads[463],
},
{
/* [63] */
/* fn refract<N : num, T : f32_f16>(vec<N, T>, vec<N, T>, T) -> vec<N, T> */
/* num overloads */ 1,
- /* overloads */ &kOverloads[456],
+ /* overloads */ &kOverloads[462],
},
{
/* [64] */
@@ -14382,7 +14382,7 @@
/* fn select<T : scalar, N : num>(vec<N, T>, vec<N, T>, bool) -> vec<N, T> */
/* fn select<N : num, T : scalar>(vec<N, T>, vec<N, T>, vec<N, bool>) -> vec<N, T> */
/* num overloads */ 3,
- /* overloads */ &kOverloads[276],
+ /* overloads */ &kOverloads[285],
},
{
/* [68] */
@@ -14430,14 +14430,14 @@
/* [74] */
/* fn storageBarrier() */
/* num overloads */ 1,
- /* overloads */ &kOverloads[455],
+ /* overloads */ &kOverloads[461],
},
{
/* [75] */
/* fn tan<T : f32_f16>(T) -> T */
/* fn tan<N : num, T : f32_f16>(vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[430],
+ /* overloads */ &kOverloads[288],
},
{
/* [76] */
@@ -14450,7 +14450,7 @@
/* [77] */
/* fn transpose<M : num, N : num, T : f32_f16>(mat<M, N, T>) -> mat<N, M, T> */
/* num overloads */ 1,
- /* overloads */ &kOverloads[454],
+ /* overloads */ &kOverloads[460],
},
{
/* [78] */
@@ -14463,37 +14463,37 @@
/* [79] */
/* fn unpack2x16float(u32) -> vec2<f32> */
/* num overloads */ 1,
- /* overloads */ &kOverloads[453],
+ /* overloads */ &kOverloads[459],
},
{
/* [80] */
/* fn unpack2x16snorm(u32) -> vec2<f32> */
/* num overloads */ 1,
- /* overloads */ &kOverloads[434],
+ /* overloads */ &kOverloads[458],
},
{
/* [81] */
/* fn unpack2x16unorm(u32) -> vec2<f32> */
/* num overloads */ 1,
- /* overloads */ &kOverloads[451],
+ /* overloads */ &kOverloads[457],
},
{
/* [82] */
/* fn unpack4x8snorm(u32) -> vec4<f32> */
/* num overloads */ 1,
- /* overloads */ &kOverloads[450],
+ /* overloads */ &kOverloads[456],
},
{
/* [83] */
/* fn unpack4x8unorm(u32) -> vec4<f32> */
/* num overloads */ 1,
- /* overloads */ &kOverloads[449],
+ /* overloads */ &kOverloads[454],
},
{
/* [84] */
/* fn workgroupBarrier() */
/* num overloads */ 1,
- /* overloads */ &kOverloads[448],
+ /* overloads */ &kOverloads[455],
},
{
/* [85] */
@@ -14542,7 +14542,7 @@
/* fn textureGather(texture: texture_depth_cube, sampler: sampler, coords: vec3<f32>) -> vec4<f32> */
/* fn textureGather(texture: texture_depth_cube_array, sampler: sampler, coords: vec3<f32>, array_index: i32) -> vec4<f32> */
/* num overloads */ 12,
- /* overloads */ &kOverloads[72],
+ /* overloads */ &kOverloads[84],
},
{
/* [87] */
@@ -14553,7 +14553,7 @@
/* fn textureGatherCompare(texture: texture_depth_cube, sampler: sampler_comparison, coords: vec3<f32>, depth_ref: f32) -> vec4<f32> */
/* fn textureGatherCompare(texture: texture_depth_cube_array, sampler: sampler_comparison, coords: vec3<f32>, array_index: i32, depth_ref: f32) -> vec4<f32> */
/* num overloads */ 6,
- /* overloads */ &kOverloads[190],
+ /* overloads */ &kOverloads[184],
},
{
/* [88] */
@@ -14605,7 +14605,7 @@
/* fn textureSample(texture: texture_depth_cube, sampler: sampler, coords: vec3<f32>) -> f32 */
/* fn textureSample(texture: texture_depth_cube_array, sampler: sampler, coords: vec3<f32>, array_index: i32) -> f32 */
/* num overloads */ 15,
- /* overloads */ &kOverloads[57],
+ /* overloads */ &kOverloads[27],
},
{
/* [92] */
@@ -14618,7 +14618,7 @@
/* fn textureSampleBias(texture: texture_cube<f32>, sampler: sampler, coords: vec3<f32>, bias: f32) -> vec4<f32> */
/* fn textureSampleBias(texture: texture_cube_array<f32>, sampler: sampler, coords: vec3<f32>, array_index: i32, bias: f32) -> vec4<f32> */
/* num overloads */ 8,
- /* overloads */ &kOverloads[144],
+ /* overloads */ &kOverloads[152],
},
{
/* [93] */
@@ -14629,7 +14629,7 @@
/* fn textureSampleCompare(texture: texture_depth_cube, sampler: sampler_comparison, coords: vec3<f32>, depth_ref: f32) -> f32 */
/* fn textureSampleCompare(texture: texture_depth_cube_array, sampler: sampler_comparison, coords: vec3<f32>, array_index: i32, depth_ref: f32) -> f32 */
/* num overloads */ 6,
- /* overloads */ &kOverloads[178],
+ /* overloads */ &kOverloads[202],
},
{
/* [94] */
@@ -14640,7 +14640,7 @@
/* fn textureSampleCompareLevel(texture: texture_depth_cube, sampler: sampler_comparison, coords: vec3<f32>, depth_ref: f32) -> f32 */
/* fn textureSampleCompareLevel(texture: texture_depth_cube_array, sampler: sampler_comparison, coords: vec3<f32>, array_index: i32, depth_ref: f32) -> f32 */
/* num overloads */ 6,
- /* overloads */ &kOverloads[166],
+ /* overloads */ &kOverloads[160],
},
{
/* [95] */
@@ -14653,7 +14653,7 @@
/* fn textureSampleGrad(texture: texture_cube<f32>, sampler: sampler, coords: vec3<f32>, ddx: vec3<f32>, ddy: vec3<f32>) -> vec4<f32> */
/* fn textureSampleGrad(texture: texture_cube_array<f32>, sampler: sampler, coords: vec3<f32>, array_index: i32, ddx: vec3<f32>, ddy: vec3<f32>) -> vec4<f32> */
/* num overloads */ 8,
- /* overloads */ &kOverloads[152],
+ /* overloads */ &kOverloads[144],
},
{
/* [96] */
@@ -14673,7 +14673,7 @@
/* fn textureSampleLevel(texture: texture_depth_cube_array, sampler: sampler, coords: vec3<f32>, array_index: i32, level: i32) -> f32 */
/* fn textureSampleLevel(texture: texture_external, sampler: sampler, coords: vec2<f32>) -> vec4<f32> */
/* num overloads */ 15,
- /* overloads */ &kOverloads[27],
+ /* overloads */ &kOverloads[57],
},
{
/* [97] */
@@ -14697,7 +14697,7 @@
/* fn textureStore(texture: texture_storage_2d_array<u32_texel_format, write>, coords: vec2<i32>, array_index: i32, value: vec4<u32>) */
/* fn textureStore(texture: texture_storage_3d<u32_texel_format, write>, coords: vec3<i32>, value: vec4<u32>) */
/* num overloads */ 12,
- /* overloads */ &kOverloads[84],
+ /* overloads */ &kOverloads[72],
},
{
/* [99] */
@@ -14711,79 +14711,79 @@
/* fn textureLoad(texture: texture_depth_multisampled_2d, coords: vec2<i32>, sample_index: i32) -> f32 */
/* fn textureLoad(texture: texture_external, coords: vec2<i32>) -> vec4<f32> */
/* num overloads */ 9,
- /* overloads */ &kOverloads[135],
+ /* overloads */ &kOverloads[117],
},
{
/* [100] */
/* fn atomicLoad<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>) -> T */
/* num overloads */ 1,
- /* overloads */ &kOverloads[446],
+ /* overloads */ &kOverloads[451],
},
{
/* [101] */
/* fn atomicStore<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) */
/* num overloads */ 1,
- /* overloads */ &kOverloads[443],
+ /* overloads */ &kOverloads[450],
},
{
/* [102] */
/* fn atomicAdd<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
/* num overloads */ 1,
- /* overloads */ &kOverloads[442],
+ /* overloads */ &kOverloads[449],
},
{
/* [103] */
/* fn atomicSub<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
/* num overloads */ 1,
- /* overloads */ &kOverloads[441],
+ /* overloads */ &kOverloads[448],
},
{
/* [104] */
/* fn atomicMax<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
/* num overloads */ 1,
- /* overloads */ &kOverloads[440],
+ /* overloads */ &kOverloads[447],
},
{
/* [105] */
/* fn atomicMin<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
/* num overloads */ 1,
- /* overloads */ &kOverloads[439],
+ /* overloads */ &kOverloads[446],
},
{
/* [106] */
/* fn atomicAnd<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
/* num overloads */ 1,
- /* overloads */ &kOverloads[438],
+ /* overloads */ &kOverloads[443],
},
{
/* [107] */
/* fn atomicOr<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
/* num overloads */ 1,
- /* overloads */ &kOverloads[437],
+ /* overloads */ &kOverloads[441],
},
{
/* [108] */
/* fn atomicXor<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
/* num overloads */ 1,
- /* overloads */ &kOverloads[436],
+ /* overloads */ &kOverloads[440],
},
{
/* [109] */
/* fn atomicExchange<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
/* num overloads */ 1,
- /* overloads */ &kOverloads[435],
+ /* overloads */ &kOverloads[436],
},
{
/* [110] */
/* fn atomicCompareExchangeWeak<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T, T) -> __atomic_compare_exchange_result<T> */
/* num overloads */ 1,
- /* overloads */ &kOverloads[452],
+ /* overloads */ &kOverloads[453],
},
{
/* [111] */
/* fn _tint_materialize<T>(T) -> T */
/* num overloads */ 1,
- /* overloads */ &kOverloads[470],
+ /* overloads */ &kOverloads[437],
},
};
@@ -14793,21 +14793,21 @@
/* op !(bool) -> bool */
/* op !<N : num>(vec<N, bool>) -> vec<N, bool> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[288],
+ /* overloads */ &kOverloads[432],
},
{
/* [1] */
/* op ~<T : ia_iu32>(T) -> T */
/* op ~<T : ia_iu32, N : num>(vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[428],
+ /* overloads */ &kOverloads[430],
},
{
/* [2] */
/* op -<T : fia_fi32_f16>(T) -> T */
/* op -<T : fia_fi32_f16, N : num>(vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[426],
+ /* overloads */ &kOverloads[428],
},
};
constexpr uint8_t kUnaryOperatorNot = 0;
@@ -14847,7 +14847,7 @@
/* op *<T : fa_f32_f16, C : num, R : num>(vec<R, T>, mat<C, R, T>) -> vec<C, T> */
/* op *<T : fa_f32_f16, K : num, C : num, R : num>(mat<K, R, T>, mat<C, K, T>) -> mat<C, R, T> */
/* num overloads */ 9,
- /* overloads */ &kOverloads[117],
+ /* overloads */ &kOverloads[126],
},
{
/* [3] */
@@ -14865,14 +14865,14 @@
/* op %<T : fiu32_f16, N : num>(vec<N, T>, T) -> vec<N, T> */
/* op %<T : fiu32_f16, N : num>(T, vec<N, T>) -> vec<N, T> */
/* num overloads */ 4,
- /* overloads */ &kOverloads[259],
+ /* overloads */ &kOverloads[251],
},
{
/* [5] */
/* op ^<T : ia_iu32>(T, T) -> T */
/* op ^<T : ia_iu32, N : num>(vec<N, T>, vec<N, T>) -> vec<N, T> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[414],
+ /* overloads */ &kOverloads[422],
},
{
/* [6] */
@@ -14881,7 +14881,7 @@
/* op &<T : ia_iu32>(T, T) -> T */
/* op &<T : ia_iu32, N : num>(vec<N, T>, vec<N, T>) -> vec<N, T> */
/* num overloads */ 4,
- /* overloads */ &kOverloads[263],
+ /* overloads */ &kOverloads[247],
},
{
/* [7] */
@@ -14890,7 +14890,7 @@
/* op |<T : ia_iu32>(T, T) -> T */
/* op |<T : ia_iu32, N : num>(vec<N, T>, vec<N, T>) -> vec<N, T> */
/* num overloads */ 4,
- /* overloads */ &kOverloads[247],
+ /* overloads */ &kOverloads[259],
},
{
/* [8] */
@@ -14909,42 +14909,42 @@
/* op ==<T : scalar>(T, T) -> bool */
/* op ==<T : scalar, N : num>(vec<N, T>, vec<N, T>) -> vec<N, bool> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[408],
+ /* overloads */ &kOverloads[418],
},
{
/* [11] */
/* op !=<T : scalar>(T, T) -> bool */
/* op !=<T : scalar, N : num>(vec<N, T>, vec<N, T>) -> vec<N, bool> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[394],
+ /* overloads */ &kOverloads[416],
},
{
/* [12] */
/* op <<T : fia_fiu32_f16>(T, T) -> bool */
/* op <<T : fia_fiu32_f16, N : num>(vec<N, T>, vec<N, T>) -> vec<N, bool> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[376],
+ /* overloads */ &kOverloads[414],
},
{
/* [13] */
/* op ><T : fia_fiu32_f16>(T, T) -> bool */
/* op ><T : fia_fiu32_f16, N : num>(vec<N, T>, vec<N, T>) -> vec<N, bool> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[374],
+ /* overloads */ &kOverloads[412],
},
{
/* [14] */
/* op <=<T : fia_fiu32_f16>(T, T) -> bool */
/* op <=<T : fia_fiu32_f16, N : num>(vec<N, T>, vec<N, T>) -> vec<N, bool> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[372],
+ /* overloads */ &kOverloads[410],
},
{
/* [15] */
/* op >=<T : fia_fiu32_f16>(T, T) -> bool */
/* op >=<T : fiu32_f16, N : num>(vec<N, T>, vec<N, T>) -> vec<N, bool> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[370],
+ /* overloads */ &kOverloads[408],
},
{
/* [16] */
@@ -14953,14 +14953,14 @@
/* op <<<T : ia>(T, ia) -> T */
/* op <<<T : ia, N : num>(vec<N, T>, vec<N, ia>) -> vec<N, T> */
/* num overloads */ 4,
- /* overloads */ &kOverloads[251],
+ /* overloads */ &kOverloads[263],
},
{
/* [17] */
/* op >><T : iu32>(T, u32) -> T */
/* op >><T : iu32, N : num>(vec<N, T>, vec<N, u32>) -> vec<N, T> */
/* num overloads */ 2,
- /* overloads */ &kOverloads[366],
+ /* overloads */ &kOverloads[386],
},
};
constexpr uint8_t kBinaryOperatorPlus = 0;
@@ -14982,69 +14982,69 @@
constexpr uint8_t kBinaryOperatorShiftLeft = 16;
constexpr uint8_t kBinaryOperatorShiftRight = 17;
-constexpr IntrinsicInfo kConstructorsAndConverters[] = {
+constexpr IntrinsicInfo kInitializersAndConverters[] = {
{
/* [0] */
- /* ctor i32() -> i32 */
- /* ctor i32(i32) -> i32 */
+ /* init i32() -> i32 */
+ /* init i32(i32) -> i32 */
/* conv i32<T : scalar_no_i32>(T) -> i32 */
/* num overloads */ 3,
- /* overloads */ &kOverloads[282],
+ /* overloads */ &kOverloads[276],
},
{
/* [1] */
- /* ctor u32() -> u32 */
- /* ctor u32(u32) -> u32 */
+ /* init u32() -> u32 */
+ /* init u32(u32) -> u32 */
/* conv u32<T : scalar_no_u32>(T) -> u32 */
/* num overloads */ 3,
/* overloads */ &kOverloads[279],
},
{
/* [2] */
- /* ctor f32() -> f32 */
- /* ctor f32(f32) -> f32 */
+ /* init f32() -> f32 */
+ /* init f32(f32) -> f32 */
/* conv f32<T : scalar_no_f32>(T) -> f32 */
/* num overloads */ 3,
- /* overloads */ &kOverloads[273],
+ /* overloads */ &kOverloads[282],
},
{
/* [3] */
- /* ctor f16() -> f16 */
- /* ctor f16(f16) -> f16 */
+ /* init f16() -> f16 */
+ /* init f16(f16) -> f16 */
/* conv f16<T : scalar_no_f16>(T) -> f16 */
/* num overloads */ 3,
/* overloads */ &kOverloads[270],
},
{
/* [4] */
- /* ctor bool() -> bool */
- /* ctor bool(bool) -> bool */
+ /* init bool() -> bool */
+ /* init bool(bool) -> bool */
/* conv bool<T : scalar_no_bool>(T) -> bool */
/* num overloads */ 3,
- /* overloads */ &kOverloads[267],
+ /* overloads */ &kOverloads[273],
},
{
/* [5] */
- /* ctor vec2<T : concrete_scalar>() -> vec2<T> */
- /* ctor vec2<T : concrete_scalar>(vec2<T>) -> vec2<T> */
- /* ctor vec2<T : scalar>(T) -> vec2<T> */
- /* ctor vec2<T : scalar>(x: T, y: T) -> vec2<T> */
+ /* init vec2<T : concrete_scalar>() -> vec2<T> */
+ /* init vec2<T : concrete_scalar>(vec2<T>) -> vec2<T> */
+ /* init vec2<T : scalar>(T) -> vec2<T> */
+ /* init vec2<T : scalar>(x: T, y: T) -> vec2<T> */
/* conv vec2<T : f32, U : scalar_no_f32>(vec2<U>) -> vec2<f32> */
/* conv vec2<T : f16, U : scalar_no_f16>(vec2<U>) -> vec2<f16> */
/* conv vec2<T : i32, U : scalar_no_i32>(vec2<U>) -> vec2<i32> */
/* conv vec2<T : u32, U : scalar_no_u32>(vec2<U>) -> vec2<u32> */
/* conv vec2<T : bool, U : scalar_no_bool>(vec2<U>) -> vec2<bool> */
/* num overloads */ 9,
- /* overloads */ &kOverloads[126],
+ /* overloads */ &kOverloads[135],
},
{
/* [6] */
- /* ctor vec3<T : concrete_scalar>() -> vec3<T> */
- /* ctor vec3<T : concrete_scalar>(vec3<T>) -> vec3<T> */
- /* ctor vec3<T : scalar>(T) -> vec3<T> */
- /* ctor vec3<T : scalar>(x: T, y: T, z: T) -> vec3<T> */
- /* ctor vec3<T : scalar>(xy: vec2<T>, z: T) -> vec3<T> */
- /* ctor vec3<T : scalar>(x: T, yz: vec2<T>) -> vec3<T> */
+ /* init vec3<T : concrete_scalar>() -> vec3<T> */
+ /* init vec3<T : concrete_scalar>(vec3<T>) -> vec3<T> */
+ /* init vec3<T : scalar>(T) -> vec3<T> */
+ /* init vec3<T : scalar>(x: T, y: T, z: T) -> vec3<T> */
+ /* init vec3<T : scalar>(xy: vec2<T>, z: T) -> vec3<T> */
+ /* init vec3<T : scalar>(x: T, yz: vec2<T>) -> vec3<T> */
/* conv vec3<T : f32, U : scalar_no_f32>(vec3<U>) -> vec3<f32> */
/* conv vec3<T : f16, U : scalar_no_f16>(vec3<U>) -> vec3<f16> */
/* conv vec3<T : i32, U : scalar_no_i32>(vec3<U>) -> vec3<i32> */
@@ -15055,16 +15055,16 @@
},
{
/* [7] */
- /* ctor vec4<T : concrete_scalar>() -> vec4<T> */
- /* ctor vec4<T : concrete_scalar>(vec4<T>) -> vec4<T> */
- /* ctor vec4<T : scalar>(T) -> vec4<T> */
- /* ctor vec4<T : scalar>(x: T, y: T, z: T, w: T) -> vec4<T> */
- /* ctor vec4<T : scalar>(xy: vec2<T>, z: T, w: T) -> vec4<T> */
- /* ctor vec4<T : scalar>(x: T, yz: vec2<T>, w: T) -> vec4<T> */
- /* ctor vec4<T : scalar>(x: T, y: T, zw: vec2<T>) -> vec4<T> */
- /* ctor vec4<T : scalar>(xy: vec2<T>, zw: vec2<T>) -> vec4<T> */
- /* ctor vec4<T : scalar>(xyz: vec3<T>, w: T) -> vec4<T> */
- /* ctor vec4<T : scalar>(x: T, zyw: vec3<T>) -> vec4<T> */
+ /* init vec4<T : concrete_scalar>() -> vec4<T> */
+ /* init vec4<T : concrete_scalar>(vec4<T>) -> vec4<T> */
+ /* init vec4<T : scalar>(T) -> vec4<T> */
+ /* init vec4<T : scalar>(x: T, y: T, z: T, w: T) -> vec4<T> */
+ /* init vec4<T : scalar>(xy: vec2<T>, z: T, w: T) -> vec4<T> */
+ /* init vec4<T : scalar>(x: T, yz: vec2<T>, w: T) -> vec4<T> */
+ /* init vec4<T : scalar>(x: T, y: T, zw: vec2<T>) -> vec4<T> */
+ /* init vec4<T : scalar>(xy: vec2<T>, zw: vec2<T>) -> vec4<T> */
+ /* init vec4<T : scalar>(xyz: vec3<T>, w: T) -> vec4<T> */
+ /* init vec4<T : scalar>(x: T, zyw: vec3<T>) -> vec4<T> */
/* conv vec4<T : f32, U : scalar_no_f32>(vec4<U>) -> vec4<f32> */
/* conv vec4<T : f16, U : scalar_no_f16>(vec4<U>) -> vec4<f16> */
/* conv vec4<T : i32, U : scalar_no_i32>(vec4<U>) -> vec4<i32> */
@@ -15075,102 +15075,102 @@
},
{
/* [8] */
- /* ctor mat2x2<T : f32_f16>() -> mat2x2<T> */
- /* ctor mat2x2<T : f32_f16>(mat2x2<T>) -> mat2x2<T> */
- /* ctor mat2x2<T : fa_f32_f16>(T, T, T, T) -> mat2x2<T> */
- /* ctor mat2x2<T : fa_f32_f16>(vec2<T>, vec2<T>) -> mat2x2<T> */
+ /* init mat2x2<T : f32_f16>() -> mat2x2<T> */
+ /* init mat2x2<T : f32_f16>(mat2x2<T>) -> mat2x2<T> */
+ /* init mat2x2<T : fa_f32_f16>(T, T, T, T) -> mat2x2<T> */
+ /* init mat2x2<T : fa_f32_f16>(vec2<T>, vec2<T>) -> mat2x2<T> */
/* conv mat2x2<T : f16>(mat2x2<f32>) -> mat2x2<f16> */
/* conv mat2x2<T : f32>(mat2x2<f16>) -> mat2x2<f32> */
/* num overloads */ 6,
- /* overloads */ &kOverloads[208],
- },
- {
- /* [9] */
- /* ctor mat2x3<T : f32_f16>() -> mat2x3<T> */
- /* ctor mat2x3<T : f32_f16>(mat2x3<T>) -> mat2x3<T> */
- /* ctor mat2x3<T : fa_f32_f16>(T, T, T, T, T, T) -> mat2x3<T> */
- /* ctor mat2x3<T : fa_f32_f16>(vec3<T>, vec3<T>) -> mat2x3<T> */
- /* conv mat2x3<T : f16>(mat2x3<f32>) -> mat2x3<f16> */
- /* conv mat2x3<T : f32>(mat2x3<f16>) -> mat2x3<f32> */
- /* num overloads */ 6,
- /* overloads */ &kOverloads[202],
- },
- {
- /* [10] */
- /* ctor mat2x4<T : f32_f16>() -> mat2x4<T> */
- /* ctor mat2x4<T : f32_f16>(mat2x4<T>) -> mat2x4<T> */
- /* ctor mat2x4<T : fa_f32_f16>(T, T, T, T, T, T, T, T) -> mat2x4<T> */
- /* ctor mat2x4<T : fa_f32_f16>(vec4<T>, vec4<T>) -> mat2x4<T> */
- /* conv mat2x4<T : f16>(mat2x4<f32>) -> mat2x4<f16> */
- /* conv mat2x4<T : f32>(mat2x4<f16>) -> mat2x4<f32> */
- /* num overloads */ 6,
- /* overloads */ &kOverloads[172],
- },
- {
- /* [11] */
- /* ctor mat3x2<T : f32_f16>() -> mat3x2<T> */
- /* ctor mat3x2<T : f32_f16>(mat3x2<T>) -> mat3x2<T> */
- /* ctor mat3x2<T : fa_f32_f16>(T, T, T, T, T, T) -> mat3x2<T> */
- /* ctor mat3x2<T : fa_f32_f16>(vec2<T>, vec2<T>, vec2<T>) -> mat3x2<T> */
- /* conv mat3x2<T : f16>(mat3x2<f32>) -> mat3x2<f16> */
- /* conv mat3x2<T : f32>(mat3x2<f16>) -> mat3x2<f32> */
- /* num overloads */ 6,
- /* overloads */ &kOverloads[160],
- },
- {
- /* [12] */
- /* ctor mat3x3<T : f32_f16>() -> mat3x3<T> */
- /* ctor mat3x3<T : f32_f16>(mat3x3<T>) -> mat3x3<T> */
- /* ctor mat3x3<T : fa_f32_f16>(T, T, T, T, T, T, T, T, T) -> mat3x3<T> */
- /* ctor mat3x3<T : fa_f32_f16>(vec3<T>, vec3<T>, vec3<T>) -> mat3x3<T> */
- /* conv mat3x3<T : f16>(mat3x3<f32>) -> mat3x3<f16> */
- /* conv mat3x3<T : f32>(mat3x3<f16>) -> mat3x3<f32> */
- /* num overloads */ 6,
- /* overloads */ &kOverloads[220],
- },
- {
- /* [13] */
- /* ctor mat3x4<T : f32_f16>() -> mat3x4<T> */
- /* ctor mat3x4<T : f32_f16>(mat3x4<T>) -> mat3x4<T> */
- /* ctor mat3x4<T : fa_f32_f16>(T, T, T, T, T, T, T, T, T, T, T, T) -> mat3x4<T> */
- /* ctor mat3x4<T : fa_f32_f16>(vec4<T>, vec4<T>, vec4<T>) -> mat3x4<T> */
- /* conv mat3x4<T : f16>(mat3x4<f32>) -> mat3x4<f16> */
- /* conv mat3x4<T : f32>(mat3x4<f16>) -> mat3x4<f32> */
- /* num overloads */ 6,
- /* overloads */ &kOverloads[214],
- },
- {
- /* [14] */
- /* ctor mat4x2<T : f32_f16>() -> mat4x2<T> */
- /* ctor mat4x2<T : f32_f16>(mat4x2<T>) -> mat4x2<T> */
- /* ctor mat4x2<T : fa_f32_f16>(T, T, T, T, T, T, T, T) -> mat4x2<T> */
- /* ctor mat4x2<T : fa_f32_f16>(vec2<T>, vec2<T>, vec2<T>, vec2<T>) -> mat4x2<T> */
- /* conv mat4x2<T : f16>(mat4x2<f32>) -> mat4x2<f16> */
- /* conv mat4x2<T : f32>(mat4x2<f16>) -> mat4x2<f32> */
- /* num overloads */ 6,
/* overloads */ &kOverloads[226],
},
{
- /* [15] */
- /* ctor mat4x3<T : f32_f16>() -> mat4x3<T> */
- /* ctor mat4x3<T : f32_f16>(mat4x3<T>) -> mat4x3<T> */
- /* ctor mat4x3<T : fa_f32_f16>(T, T, T, T, T, T, T, T, T, T, T, T) -> mat4x3<T> */
- /* ctor mat4x3<T : fa_f32_f16>(vec3<T>, vec3<T>, vec3<T>, vec3<T>) -> mat4x3<T> */
- /* conv mat4x3<T : f16>(mat4x3<f32>) -> mat4x3<f16> */
- /* conv mat4x3<T : f32>(mat4x3<f16>) -> mat4x3<f32> */
+ /* [9] */
+ /* init mat2x3<T : f32_f16>() -> mat2x3<T> */
+ /* init mat2x3<T : f32_f16>(mat2x3<T>) -> mat2x3<T> */
+ /* init mat2x3<T : fa_f32_f16>(T, T, T, T, T, T) -> mat2x3<T> */
+ /* init mat2x3<T : fa_f32_f16>(vec3<T>, vec3<T>) -> mat2x3<T> */
+ /* conv mat2x3<T : f16>(mat2x3<f32>) -> mat2x3<f16> */
+ /* conv mat2x3<T : f32>(mat2x3<f16>) -> mat2x3<f32> */
+ /* num overloads */ 6,
+ /* overloads */ &kOverloads[220],
+ },
+ {
+ /* [10] */
+ /* init mat2x4<T : f32_f16>() -> mat2x4<T> */
+ /* init mat2x4<T : f32_f16>(mat2x4<T>) -> mat2x4<T> */
+ /* init mat2x4<T : fa_f32_f16>(T, T, T, T, T, T, T, T) -> mat2x4<T> */
+ /* init mat2x4<T : fa_f32_f16>(vec4<T>, vec4<T>) -> mat2x4<T> */
+ /* conv mat2x4<T : f16>(mat2x4<f32>) -> mat2x4<f16> */
+ /* conv mat2x4<T : f32>(mat2x4<f16>) -> mat2x4<f32> */
+ /* num overloads */ 6,
+ /* overloads */ &kOverloads[214],
+ },
+ {
+ /* [11] */
+ /* init mat3x2<T : f32_f16>() -> mat3x2<T> */
+ /* init mat3x2<T : f32_f16>(mat3x2<T>) -> mat3x2<T> */
+ /* init mat3x2<T : fa_f32_f16>(T, T, T, T, T, T) -> mat3x2<T> */
+ /* init mat3x2<T : fa_f32_f16>(vec2<T>, vec2<T>, vec2<T>) -> mat3x2<T> */
+ /* conv mat3x2<T : f16>(mat3x2<f32>) -> mat3x2<f16> */
+ /* conv mat3x2<T : f32>(mat3x2<f16>) -> mat3x2<f32> */
+ /* num overloads */ 6,
+ /* overloads */ &kOverloads[208],
+ },
+ {
+ /* [12] */
+ /* init mat3x3<T : f32_f16>() -> mat3x3<T> */
+ /* init mat3x3<T : f32_f16>(mat3x3<T>) -> mat3x3<T> */
+ /* init mat3x3<T : fa_f32_f16>(T, T, T, T, T, T, T, T, T) -> mat3x3<T> */
+ /* init mat3x3<T : fa_f32_f16>(vec3<T>, vec3<T>, vec3<T>) -> mat3x3<T> */
+ /* conv mat3x3<T : f16>(mat3x3<f32>) -> mat3x3<f16> */
+ /* conv mat3x3<T : f32>(mat3x3<f16>) -> mat3x3<f32> */
+ /* num overloads */ 6,
+ /* overloads */ &kOverloads[166],
+ },
+ {
+ /* [13] */
+ /* init mat3x4<T : f32_f16>() -> mat3x4<T> */
+ /* init mat3x4<T : f32_f16>(mat3x4<T>) -> mat3x4<T> */
+ /* init mat3x4<T : fa_f32_f16>(T, T, T, T, T, T, T, T, T, T, T, T) -> mat3x4<T> */
+ /* init mat3x4<T : fa_f32_f16>(vec4<T>, vec4<T>, vec4<T>) -> mat3x4<T> */
+ /* conv mat3x4<T : f16>(mat3x4<f32>) -> mat3x4<f16> */
+ /* conv mat3x4<T : f32>(mat3x4<f16>) -> mat3x4<f32> */
/* num overloads */ 6,
/* overloads */ &kOverloads[196],
},
{
+ /* [14] */
+ /* init mat4x2<T : f32_f16>() -> mat4x2<T> */
+ /* init mat4x2<T : f32_f16>(mat4x2<T>) -> mat4x2<T> */
+ /* init mat4x2<T : fa_f32_f16>(T, T, T, T, T, T, T, T) -> mat4x2<T> */
+ /* init mat4x2<T : fa_f32_f16>(vec2<T>, vec2<T>, vec2<T>, vec2<T>) -> mat4x2<T> */
+ /* conv mat4x2<T : f16>(mat4x2<f32>) -> mat4x2<f16> */
+ /* conv mat4x2<T : f32>(mat4x2<f16>) -> mat4x2<f32> */
+ /* num overloads */ 6,
+ /* overloads */ &kOverloads[190],
+ },
+ {
+ /* [15] */
+ /* init mat4x3<T : f32_f16>() -> mat4x3<T> */
+ /* init mat4x3<T : f32_f16>(mat4x3<T>) -> mat4x3<T> */
+ /* init mat4x3<T : fa_f32_f16>(T, T, T, T, T, T, T, T, T, T, T, T) -> mat4x3<T> */
+ /* init mat4x3<T : fa_f32_f16>(vec3<T>, vec3<T>, vec3<T>, vec3<T>) -> mat4x3<T> */
+ /* conv mat4x3<T : f16>(mat4x3<f32>) -> mat4x3<f16> */
+ /* conv mat4x3<T : f32>(mat4x3<f16>) -> mat4x3<f32> */
+ /* num overloads */ 6,
+ /* overloads */ &kOverloads[178],
+ },
+ {
/* [16] */
- /* ctor mat4x4<T : f32_f16>() -> mat4x4<T> */
- /* ctor mat4x4<T : f32_f16>(mat4x4<T>) -> mat4x4<T> */
- /* ctor mat4x4<T : fa_f32_f16>(T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T) -> mat4x4<T> */
- /* ctor mat4x4<T : fa_f32_f16>(vec4<T>, vec4<T>, vec4<T>, vec4<T>) -> mat4x4<T> */
+ /* init mat4x4<T : f32_f16>() -> mat4x4<T> */
+ /* init mat4x4<T : f32_f16>(mat4x4<T>) -> mat4x4<T> */
+ /* init mat4x4<T : fa_f32_f16>(T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T) -> mat4x4<T> */
+ /* init mat4x4<T : fa_f32_f16>(vec4<T>, vec4<T>, vec4<T>, vec4<T>) -> mat4x4<T> */
/* conv mat4x4<T : f16>(mat4x4<f32>) -> mat4x4<f16> */
/* conv mat4x4<T : f32>(mat4x4<f16>) -> mat4x4<f32> */
/* num overloads */ 6,
- /* overloads */ &kOverloads[184],
+ /* overloads */ &kOverloads[172],
},
};
diff --git a/src/tint/resolver/intrinsic_table.inl.tmpl b/src/tint/resolver/intrinsic_table.inl.tmpl
index 7b69df0..834d300 100644
--- a/src/tint/resolver/intrinsic_table.inl.tmpl
+++ b/src/tint/resolver/intrinsic_table.inl.tmpl
@@ -160,8 +160,8 @@
constexpr uint8_t kBinaryOperator{{ template "ExpandName" $o.Name}} = {{$i}};
{{- end }}
-constexpr IntrinsicInfo kConstructorsAndConverters[] = {
-{{- range $i, $o := .ConstructorsAndConverters }}
+constexpr IntrinsicInfo kInitializersAndConverters[] = {
+{{- range $i, $o := .InitializersAndConverters }}
{
/* [{{$i}}] */
{{- range $o.OverloadDescriptions }}
diff --git a/src/tint/resolver/intrinsic_table_test.cc b/src/tint/resolver/intrinsic_table_test.cc
index 57a6731..a4f6ce6 100644
--- a/src/tint/resolver/intrinsic_table_test.cc
+++ b/src/tint/resolver/intrinsic_table_test.cc
@@ -28,8 +28,8 @@
#include "src/tint/sem/sampled_texture.h"
#include "src/tint/sem/storage_texture.h"
#include "src/tint/sem/test_helper.h"
-#include "src/tint/sem/type_constructor.h"
#include "src/tint/sem/type_conversion.h"
+#include "src/tint/sem/type_initializer.h"
namespace tint::resolver {
namespace {
@@ -745,14 +745,14 @@
)");
}
-TEST_F(IntrinsicTableTest, MatchTypeConstructorImplicit) {
+TEST_F(IntrinsicTableTest, MatchTypeInitializerImplicit) {
auto* i32 = create<sem::I32>();
auto* vec3_i32 = create<sem::Vector>(i32, 3u);
- auto result = table->Lookup(CtorConvIntrinsic::kVec3, nullptr, utils::Vector{i32, i32, i32},
+ auto result = table->Lookup(InitConvIntrinsic::kVec3, nullptr, utils::Vector{i32, i32, i32},
Source{{12, 34}});
ASSERT_NE(result.target, nullptr);
EXPECT_EQ(result.target->ReturnType(), vec3_i32);
- EXPECT_TRUE(result.target->Is<sem::TypeConstructor>());
+ EXPECT_TRUE(result.target->Is<sem::TypeInitializer>());
ASSERT_EQ(result.target->Parameters().Length(), 3u);
EXPECT_EQ(result.target->Parameters()[0]->Type(), i32);
EXPECT_EQ(result.target->Parameters()[1]->Type(), i32);
@@ -760,14 +760,14 @@
EXPECT_NE(result.const_eval_fn, nullptr);
}
-TEST_F(IntrinsicTableTest, MatchTypeConstructorExplicit) {
+TEST_F(IntrinsicTableTest, MatchTypeInitializerExplicit) {
auto* i32 = create<sem::I32>();
auto* vec3_i32 = create<sem::Vector>(i32, 3u);
- auto result = table->Lookup(CtorConvIntrinsic::kVec3, i32, utils::Vector{i32, i32, i32},
+ auto result = table->Lookup(InitConvIntrinsic::kVec3, i32, utils::Vector{i32, i32, i32},
Source{{12, 34}});
ASSERT_NE(result.target, nullptr);
EXPECT_EQ(result.target->ReturnType(), vec3_i32);
- EXPECT_TRUE(result.target->Is<sem::TypeConstructor>());
+ EXPECT_TRUE(result.target->Is<sem::TypeInitializer>());
ASSERT_EQ(result.target->Parameters().Length(), 3u);
EXPECT_EQ(result.target->Parameters()[0]->Type(), i32);
EXPECT_EQ(result.target->Parameters()[1]->Type(), i32);
@@ -775,16 +775,16 @@
EXPECT_NE(result.const_eval_fn, nullptr);
}
-TEST_F(IntrinsicTableTest, MismatchTypeConstructorImplicit) {
+TEST_F(IntrinsicTableTest, MismatchTypeInitializerImplicit) {
auto* i32 = create<sem::I32>();
auto* f32 = create<sem::F32>();
- auto result = table->Lookup(CtorConvIntrinsic::kVec3, nullptr, utils::Vector{i32, f32, i32},
+ auto result = table->Lookup(InitConvIntrinsic::kVec3, nullptr, utils::Vector{i32, f32, i32},
Source{{12, 34}});
ASSERT_EQ(result.target, nullptr);
EXPECT_EQ(Diagnostics().str(),
- R"(12:34 error: no matching constructor for vec3(i32, f32, i32)
+ R"(12:34 error: no matching initializer for vec3(i32, f32, i32)
-6 candidate constructors:
+6 candidate initializers:
vec3(x: T, y: T, z: T) -> vec3<T> where: T is abstract-int, abstract-float, f32, f16, i32, u32 or bool
vec3(xy: vec2<T>, z: T) -> vec3<T> where: T is abstract-int, abstract-float, f32, f16, i32, u32 or bool
vec3(x: T, yz: vec2<T>) -> vec3<T> where: T is abstract-int, abstract-float, f32, f16, i32, u32 or bool
@@ -801,16 +801,16 @@
)");
}
-TEST_F(IntrinsicTableTest, MismatchTypeConstructorExplicit) {
+TEST_F(IntrinsicTableTest, MismatchTypeInitializerExplicit) {
auto* i32 = create<sem::I32>();
auto* f32 = create<sem::F32>();
- auto result = table->Lookup(CtorConvIntrinsic::kVec3, i32, utils::Vector{i32, f32, i32},
+ auto result = table->Lookup(InitConvIntrinsic::kVec3, i32, utils::Vector{i32, f32, i32},
Source{{12, 34}});
ASSERT_EQ(result.target, nullptr);
EXPECT_EQ(Diagnostics().str(),
- R"(12:34 error: no matching constructor for vec3<i32>(i32, f32, i32)
+ R"(12:34 error: no matching initializer for vec3<i32>(i32, f32, i32)
-6 candidate constructors:
+6 candidate initializers:
vec3(x: T, y: T, z: T) -> vec3<T> where: T is abstract-int, abstract-float, f32, f16, i32, u32 or bool
vec3(x: T, yz: vec2<T>) -> vec3<T> where: T is abstract-int, abstract-float, f32, f16, i32, u32 or bool
vec3(T) -> vec3<T> where: T is abstract-int, abstract-float, f32, f16, i32, u32 or bool
@@ -827,16 +827,16 @@
)");
}
-TEST_F(IntrinsicTableTest, MatchTypeConstructorImplicitMatFromVec) {
+TEST_F(IntrinsicTableTest, MatchTypeInitializerImplicitMatFromVec) {
auto* af = create<sem::AbstractFloat>();
auto* vec2_ai = create<sem::Vector>(create<sem::AbstractInt>(), 2u);
auto* vec2_af = create<sem::Vector>(af, 2u);
auto* mat2x2_af = create<sem::Matrix>(vec2_af, 2u);
- auto result = table->Lookup(CtorConvIntrinsic::kMat2x2, nullptr,
+ auto result = table->Lookup(InitConvIntrinsic::kMat2x2, nullptr,
utils::Vector{vec2_ai, vec2_ai}, Source{{12, 34}});
ASSERT_NE(result.target, nullptr);
EXPECT_TYPE(result.target->ReturnType(), mat2x2_af);
- EXPECT_TRUE(result.target->Is<sem::TypeConstructor>());
+ EXPECT_TRUE(result.target->Is<sem::TypeInitializer>());
ASSERT_EQ(result.target->Parameters().Length(), 2u);
EXPECT_TYPE(result.target->Parameters()[0]->Type(), vec2_af);
EXPECT_TYPE(result.target->Parameters()[1]->Type(), vec2_af);
@@ -849,7 +849,7 @@
auto* f32 = create<sem::F32>();
auto* vec3_f32 = create<sem::Vector>(f32, 3u);
auto result =
- table->Lookup(CtorConvIntrinsic::kVec3, i32, utils::Vector{vec3_f32}, Source{{12, 34}});
+ table->Lookup(InitConvIntrinsic::kVec3, i32, utils::Vector{vec3_f32}, Source{{12, 34}});
ASSERT_NE(result.target, nullptr);
EXPECT_EQ(result.target->ReturnType(), vec3_i32);
EXPECT_TRUE(result.target->Is<sem::TypeConversion>());
@@ -861,12 +861,12 @@
auto* arr = create<sem::Array>(create<sem::U32>(), sem::RuntimeArrayCount{}, 4u, 4u, 4u, 4u);
auto* f32 = create<sem::F32>();
auto result =
- table->Lookup(CtorConvIntrinsic::kVec3, f32, utils::Vector{arr}, Source{{12, 34}});
+ table->Lookup(InitConvIntrinsic::kVec3, f32, utils::Vector{arr}, Source{{12, 34}});
ASSERT_EQ(result.target, nullptr);
EXPECT_EQ(Diagnostics().str(),
- R"(12:34 error: no matching constructor for vec3<f32>(array<u32>)
+ R"(12:34 error: no matching initializer for vec3<f32>(array<u32>)
-6 candidate constructors:
+6 candidate initializers:
vec3(vec3<T>) -> vec3<T> where: T is f32, f16, i32, u32 or bool
vec3(T) -> vec3<T> where: T is abstract-int, abstract-float, f32, f16, i32, u32 or bool
vec3() -> vec3<T> where: T is f32, f16, i32, u32 or bool
@@ -900,7 +900,7 @@
// The first should win overload resolution.
auto* ai = create<sem::AbstractInt>();
auto* i32 = create<sem::I32>();
- auto result = table->Lookup(CtorConvIntrinsic::kI32, nullptr, utils::Vector{ai}, Source{});
+ auto result = table->Lookup(InitConvIntrinsic::kI32, nullptr, utils::Vector{ai}, Source{});
ASSERT_NE(result.target, nullptr);
EXPECT_EQ(result.target->ReturnType(), i32);
EXPECT_EQ(result.target->Parameters().Length(), 1u);
diff --git a/src/tint/resolver/materialize_test.cc b/src/tint/resolver/materialize_test.cc
index 251fe82..3b24010 100644
--- a/src/tint/resolver/materialize_test.cc
+++ b/src/tint/resolver/materialize_test.cc
@@ -356,26 +356,30 @@
WrapInFunction(Add(target_expr(), abstract_expr));
break;
case Method::kSwitchCond:
- WrapInFunction(Switch(abstract_expr, //
- Case(target_expr()->As<ast::IntLiteralExpression>()), //
- DefaultCase()));
+ WrapInFunction(
+ Switch(abstract_expr, //
+ Case(CaseSelector(target_expr()->As<ast::IntLiteralExpression>())), //
+ DefaultCase()));
break;
case Method::kSwitchCase:
- WrapInFunction(Switch(target_expr(), //
- Case(abstract_expr->As<ast::IntLiteralExpression>()), //
- DefaultCase()));
+ WrapInFunction(
+ Switch(target_expr(), //
+ Case(CaseSelector(abstract_expr->As<ast::IntLiteralExpression>())), //
+ DefaultCase()));
break;
case Method::kSwitchCondWithAbstractCase:
- WrapInFunction(Switch(abstract_expr, //
- Case(Expr(123_a)), //
- Case(target_expr()->As<ast::IntLiteralExpression>()), //
- DefaultCase()));
+ WrapInFunction(
+ Switch(abstract_expr, //
+ Case(CaseSelector(123_a)), //
+ Case(CaseSelector(target_expr()->As<ast::IntLiteralExpression>())), //
+ DefaultCase()));
break;
case Method::kSwitchCaseWithAbstractCase:
- WrapInFunction(Switch(target_expr(), //
- Case(Expr(123_a)), //
- Case(abstract_expr->As<ast::IntLiteralExpression>()), //
- DefaultCase()));
+ WrapInFunction(
+ Switch(target_expr(), //
+ Case(CaseSelector(123_a)), //
+ Case(CaseSelector(abstract_expr->As<ast::IntLiteralExpression>())), //
+ DefaultCase()));
break;
case Method::kWorkgroupSize:
Func("f", utils::Empty, ty.void_(), utils::Empty,
@@ -903,9 +907,10 @@
break;
}
case Method::kSwitch: {
- WrapInFunction(Switch(abstract_expr(),
- Case(abstract_expr()->As<ast::IntLiteralExpression>()),
- DefaultCase()));
+ WrapInFunction(
+ Switch(abstract_expr(),
+ Case(CaseSelector(abstract_expr()->As<ast::IntLiteralExpression>())),
+ DefaultCase()));
break;
}
case Method::kWorkgroupSize: {
@@ -1210,7 +1215,7 @@
using MaterializeAbstractNumericToUnrelatedType = resolver::ResolverTest;
-TEST_F(MaterializeAbstractNumericToUnrelatedType, AIntToStructVarCtor) {
+TEST_F(MaterializeAbstractNumericToUnrelatedType, AIntToStructVarInit) {
Structure("S", utils::Vector{Member("a", ty.i32())});
WrapInFunction(Decl(Var("v", ty.type_name("S"), Expr(Source{{12, 34}}, 1_a))));
EXPECT_FALSE(r()->Resolve());
@@ -1219,7 +1224,7 @@
testing::HasSubstr("error: cannot convert value of type 'abstract-int' to type 'S'"));
}
-TEST_F(MaterializeAbstractNumericToUnrelatedType, AIntToStructLetCtor) {
+TEST_F(MaterializeAbstractNumericToUnrelatedType, AIntToStructLetInit) {
Structure("S", utils::Vector{Member("a", ty.i32())});
WrapInFunction(Decl(Let("v", ty.type_name("S"), Expr(Source{{12, 34}}, 1_a))));
EXPECT_FALSE(r()->Resolve());
diff --git a/src/tint/resolver/resolver.cc b/src/tint/resolver/resolver.cc
index c252473..f4f4c98 100644
--- a/src/tint/resolver/resolver.cc
+++ b/src/tint/resolver/resolver.cc
@@ -57,6 +57,7 @@
#include "src/tint/sem/abstract_int.h"
#include "src/tint/sem/array.h"
#include "src/tint/sem/atomic.h"
+#include "src/tint/sem/break_if_statement.h"
#include "src/tint/sem/call.h"
#include "src/tint/sem/depth_multisampled_texture.h"
#include "src/tint/sem/depth_texture.h"
@@ -77,8 +78,8 @@
#include "src/tint/sem/storage_texture.h"
#include "src/tint/sem/struct.h"
#include "src/tint/sem/switch_statement.h"
-#include "src/tint/sem/type_constructor.h"
#include "src/tint/sem/type_conversion.h"
+#include "src/tint/sem/type_initializer.h"
#include "src/tint/sem/variable.h"
#include "src/tint/sem/while_statement.h"
#include "src/tint/utils/defer.h"
@@ -358,12 +359,12 @@
}
}
- if (!v->constructor) {
+ if (!v->initializer) {
AddError("'let' declaration must have an initializer", v->source);
return nullptr;
}
- auto* rhs = Materialize(Expression(v->constructor), ty);
+ auto* rhs = Materialize(Expression(v->initializer), ty);
if (!rhs) {
return nullptr;
}
@@ -396,7 +397,7 @@
/* constant_value */ nullptr);
}
- sem->SetConstructor(rhs);
+ sem->SetInitializer(rhs);
builder_->Sem().Add(v, sem);
return sem;
}
@@ -414,11 +415,11 @@
const sem::Expression* rhs = nullptr;
- // Does the variable have a constructor?
- if (v->constructor) {
+ // Does the variable have a initializer?
+ if (v->initializer) {
ExprEvalStageConstraint constraint{sem::EvaluationStage::kOverride, "override initializer"};
TINT_SCOPED_ASSIGNMENT(expr_eval_stage_constraint_, constraint);
- rhs = Materialize(Expression(v->constructor), ty);
+ rhs = Materialize(Expression(v->initializer), ty);
if (!rhs) {
return nullptr;
}
@@ -446,7 +447,7 @@
auto* sem = builder_->create<sem::GlobalVariable>(
v, ty, sem::EvaluationStage::kOverride, ast::AddressSpace::kNone, ast::Access::kUndefined,
/* constant_value */ nullptr, sem::BindingPoint{}, std::nullopt);
- sem->SetConstructor(rhs);
+ sem->SetInitializer(rhs);
if (auto* id_attr = ast::GetAttribute<ast::IdAttribute>(v->attributes)) {
ExprEvalStageConstraint constraint{sem::EvaluationStage::kConstant, "@id"};
@@ -496,7 +497,7 @@
}
}
- if (!c->constructor) {
+ if (!c->initializer) {
AddError("'const' declaration must have an initializer", c->source);
return nullptr;
}
@@ -505,7 +506,7 @@
{
ExprEvalStageConstraint constraint{sem::EvaluationStage::kConstant, "const initializer"};
TINT_SCOPED_ASSIGNMENT(expr_eval_stage_constraint_, constraint);
- rhs = Expression(c->constructor);
+ rhs = Expression(c->initializer);
if (!rhs) {
return nullptr;
}
@@ -540,7 +541,7 @@
c, ty, sem::EvaluationStage::kConstant, ast::AddressSpace::kNone,
ast::Access::kUndefined, current_statement_, value));
- sem->SetConstructor(rhs);
+ sem->SetInitializer(rhs);
builder_->Sem().Add(c, sem);
return sem;
}
@@ -558,15 +559,15 @@
const sem::Expression* rhs = nullptr;
- // Does the variable have a constructor?
- if (var->constructor) {
+ // Does the variable have a initializer?
+ if (var->initializer) {
ExprEvalStageConstraint constraint{
is_global ? sem::EvaluationStage::kOverride : sem::EvaluationStage::kRuntime,
"var initializer",
};
TINT_SCOPED_ASSIGNMENT(expr_eval_stage_constraint_, constraint);
- rhs = Materialize(Expression(var->constructor), storage_ty);
+ rhs = Materialize(Expression(var->initializer), storage_ty);
if (!rhs) {
return nullptr;
}
@@ -703,7 +704,7 @@
/* constant_value */ nullptr);
}
- sem->SetConstructor(rhs);
+ sem->SetInitializer(rhs);
builder_->Sem().Add(var, sem);
return sem;
}
@@ -1213,6 +1214,7 @@
// Non-Compound statements
[&](const ast::AssignmentStatement* a) { return AssignmentStatement(a); },
[&](const ast::BreakStatement* b) { return BreakStatement(b); },
+ [&](const ast::BreakIfStatement* b) { return BreakIfStatement(b); },
[&](const ast::CallStatement* c) { return CallStatement(c); },
[&](const ast::CompoundAssignmentStatement* c) { return CompoundAssignmentStatement(c); },
[&](const ast::ContinueStatement* c) { return ContinueStatement(c); },
@@ -1234,18 +1236,39 @@
});
}
-sem::CaseStatement* Resolver::CaseStatement(const ast::CaseStatement* stmt) {
+sem::CaseStatement* Resolver::CaseStatement(const ast::CaseStatement* stmt, const sem::Type* ty) {
auto* sem =
builder_->create<sem::CaseStatement>(stmt, current_compound_statement_, current_function_);
return StatementScope(stmt, sem, [&] {
sem->Selectors().reserve(stmt->selectors.Length());
for (auto* sel : stmt->selectors) {
- auto* expr = Expression(sel);
- if (!expr) {
- return false;
+ Mark(sel);
+
+ ExprEvalStageConstraint constraint{sem::EvaluationStage::kConstant, "case selector"};
+ TINT_SCOPED_ASSIGNMENT(expr_eval_stage_constraint_, constraint);
+
+ const sem::Constant* const_value = nullptr;
+ if (!sel->IsDefault()) {
+ // The sem statement was created in the switch when attempting to determine the
+ // common type.
+ auto* materialized = Materialize(sem_.Get(sel->expr), ty);
+ if (!materialized) {
+ return false;
+ }
+ if (!materialized->Type()->IsAnyOf<sem::I32, sem::U32>()) {
+ AddError("case selector must be an i32 or u32 value", sel->source);
+ return false;
+ }
+ const_value = materialized->ConstantValue();
+ if (!const_value) {
+ AddError("case selector must be a constant expression", sel->source);
+ return false;
+ }
}
- sem->Selectors().emplace_back(expr);
+
+ sem->Selectors().emplace_back(builder_->create<sem::CaseSelector>(sel, const_value));
}
+
Mark(stmt->body);
auto* body = BlockStatement(stmt->body);
if (!body) {
@@ -1729,7 +1752,7 @@
// A CallExpression can resolve to one of:
// * A function call.
// * A builtin call.
- // * A type constructor.
+ // * A type initializer.
// * A type conversion.
// Resolve all of the arguments, their types and the set of behaviors.
@@ -1752,9 +1775,9 @@
bool has_side_effects =
std::any_of(args.begin(), args.end(), [](auto* e) { return e->HasSideEffects(); });
- // ct_ctor_or_conv is a helper for building either a sem::TypeConstructor or sem::TypeConversion
- // call for a CtorConvIntrinsic with an optional template argument type.
- auto ct_ctor_or_conv = [&](CtorConvIntrinsic ty, const sem::Type* template_arg) -> sem::Call* {
+ // ct_init_or_conv is a helper for building either a sem::TypeInitializer or sem::TypeConversion
+ // call for a InitConvIntrinsic with an optional template argument type.
+ auto ct_init_or_conv = [&](InitConvIntrinsic ty, const sem::Type* template_arg) -> sem::Call* {
auto arg_tys = utils::Transform(args, [](auto* arg) { return arg->Type(); });
auto ctor_or_conv = intrinsic_table_->Lookup(ty, template_arg, arg_tys, expr->source);
if (!ctor_or_conv.target) {
@@ -1781,9 +1804,9 @@
current_statement_, value, has_side_effects);
};
- // arr_or_str_ctor is a helper for building a sem::TypeConstructor for an array or structure
- // constructor call target.
- auto arr_or_str_ctor = [&](const sem::Type* ty,
+ // arr_or_str_init is a helper for building a sem::TypeInitializer for an array or structure
+ // initializer call target.
+ auto arr_or_str_init = [&](const sem::Type* ty,
const sem::CallTarget* call_target) -> sem::Call* {
if (!MaybeMaterializeArguments(args, call_target)) {
return nullptr;
@@ -1792,7 +1815,7 @@
auto stage = args_stage; // The evaluation stage of the call
const sem::Constant* value = nullptr; // The constant value for the call
if (stage == sem::EvaluationStage::kConstant) {
- if (auto r = const_eval_.ArrayOrStructCtor(ty, args)) {
+ if (auto r = const_eval_.ArrayOrStructInit(ty, args)) {
value = r.Get();
} else {
return nullptr;
@@ -1801,7 +1824,7 @@
// Constant evaluation failed.
// Can happen for expressions that will fail validation (later).
// Use the kRuntime EvaluationStage, as kConstant will trigger an assertion in the
- // sem::Expression constructor, which checks that kConstant is paired with a
+ // sem::Expression initializer, which checks that kConstant is paired with a
// constant value.
stage = sem::EvaluationStage::kRuntime;
}
@@ -1811,26 +1834,26 @@
current_statement_, value, has_side_effects);
};
- // ty_ctor_or_conv is a helper for building either a sem::TypeConstructor or sem::TypeConversion
+ // ty_init_or_conv is a helper for building either a sem::TypeInitializer or sem::TypeConversion
// call for the given semantic type.
- auto ty_ctor_or_conv = [&](const sem::Type* ty) {
+ auto ty_init_or_conv = [&](const sem::Type* ty) {
return Switch(
ty, //
[&](const sem::Vector* v) {
- return ct_ctor_or_conv(VectorCtorConvIntrinsic(v->Width()), v->type());
+ return ct_init_or_conv(VectorInitConvIntrinsic(v->Width()), v->type());
},
[&](const sem::Matrix* m) {
- return ct_ctor_or_conv(MatrixCtorConvIntrinsic(m->columns(), m->rows()), m->type());
+ return ct_init_or_conv(MatrixInitConvIntrinsic(m->columns(), m->rows()), m->type());
},
- [&](const sem::I32*) { return ct_ctor_or_conv(CtorConvIntrinsic::kI32, nullptr); },
- [&](const sem::U32*) { return ct_ctor_or_conv(CtorConvIntrinsic::kU32, nullptr); },
- [&](const sem::F16*) { return ct_ctor_or_conv(CtorConvIntrinsic::kF16, nullptr); },
- [&](const sem::F32*) { return ct_ctor_or_conv(CtorConvIntrinsic::kF32, nullptr); },
- [&](const sem::Bool*) { return ct_ctor_or_conv(CtorConvIntrinsic::kBool, nullptr); },
+ [&](const sem::I32*) { return ct_init_or_conv(InitConvIntrinsic::kI32, nullptr); },
+ [&](const sem::U32*) { return ct_init_or_conv(InitConvIntrinsic::kU32, nullptr); },
+ [&](const sem::F16*) { return ct_init_or_conv(InitConvIntrinsic::kF16, nullptr); },
+ [&](const sem::F32*) { return ct_init_or_conv(InitConvIntrinsic::kF32, nullptr); },
+ [&](const sem::Bool*) { return ct_init_or_conv(InitConvIntrinsic::kBool, nullptr); },
[&](const sem::Array* arr) -> sem::Call* {
auto* call_target = utils::GetOrCreate(
- array_ctors_, ArrayConstructorSig{{arr, args.Length(), args_stage}},
- [&]() -> sem::TypeConstructor* {
+ array_inits_, ArrayInitializerSig{{arr, args.Length(), args_stage}},
+ [&]() -> sem::TypeInitializer* {
auto params = utils::Transform(args, [&](auto, size_t i) {
return builder_->create<sem::Parameter>(
nullptr, // declaration
@@ -1839,25 +1862,25 @@
ast::AddressSpace::kNone, // address_space
ast::Access::kUndefined);
});
- return builder_->create<sem::TypeConstructor>(arr, std::move(params),
+ return builder_->create<sem::TypeInitializer>(arr, std::move(params),
args_stage);
});
- auto* call = arr_or_str_ctor(arr, call_target);
+ auto* call = arr_or_str_init(arr, call_target);
if (!call) {
return nullptr;
}
- // Validation must occur after argument materialization in arr_or_str_ctor().
- if (!validator_.ArrayConstructor(expr, arr)) {
+ // Validation must occur after argument materialization in arr_or_str_init().
+ if (!validator_.ArrayInitializer(expr, arr)) {
return nullptr;
}
return call;
},
[&](const sem::Struct* str) -> sem::Call* {
auto* call_target = utils::GetOrCreate(
- struct_ctors_, StructConstructorSig{{str, args.Length(), args_stage}},
- [&]() -> sem::TypeConstructor* {
+ struct_inits_, StructInitializerSig{{str, args.Length(), args_stage}},
+ [&]() -> sem::TypeInitializer* {
utils::Vector<const sem::Parameter*, 8> params;
params.Resize(std::min(args.Length(), str->Members().size()));
for (size_t i = 0, n = params.Length(); i < n; i++) {
@@ -1868,17 +1891,17 @@
ast::AddressSpace::kNone, // address_space
ast::Access::kUndefined); // access
}
- return builder_->create<sem::TypeConstructor>(str, std::move(params),
+ return builder_->create<sem::TypeInitializer>(str, std::move(params),
args_stage);
});
- auto* call = arr_or_str_ctor(str, call_target);
+ auto* call = arr_or_str_init(str, call_target);
if (!call) {
return nullptr;
}
- // Validation must occur after argument materialization in arr_or_str_ctor().
- if (!validator_.StructureConstructor(expr, str)) {
+ // Validation must occur after argument materialization in arr_or_str_init().
+ if (!validator_.StructureInitializer(expr, str)) {
return nullptr;
}
return call;
@@ -1893,7 +1916,7 @@
sem::Call* call = nullptr;
if (expr->target.type) {
// ast::CallExpression has an ast::Type as the target.
- // This call is either a type constructor or type conversion.
+ // This call is either a type initializer or type conversion.
call = Switch(
expr->target.type,
[&](const ast::Vector* v) -> sem::Call* {
@@ -1906,7 +1929,7 @@
return nullptr;
}
}
- if (auto* c = ct_ctor_or_conv(VectorCtorConvIntrinsic(v->width), template_arg)) {
+ if (auto* c = ct_init_or_conv(VectorInitConvIntrinsic(v->width), template_arg)) {
builder_->Sem().Add(expr->target.type, c->Target()->ReturnType());
return c;
}
@@ -1922,7 +1945,7 @@
return nullptr;
}
}
- if (auto* c = ct_ctor_or_conv(MatrixCtorConvIntrinsic(m->columns, m->rows),
+ if (auto* c = ct_init_or_conv(MatrixInitConvIntrinsic(m->columns, m->rows),
template_arg)) {
builder_->Sem().Add(expr->target.type, c->Target()->ReturnType());
return c;
@@ -1950,14 +1973,14 @@
return nullptr;
}
// Note: validation later will detect any mismatches between explicit array
- // size and number of constructor expressions.
+ // size and number of initializer expressions.
} else {
auto arg_tys =
utils::Transform(args, [](auto* arg) { return arg->Type()->UnwrapRef(); });
el_ty = sem::Type::Common(arg_tys);
if (!el_ty) {
AddError(
- "cannot infer common array element type from constructor arguments",
+ "cannot infer common array element type from initializer arguments",
expr->source);
std::unordered_set<const sem::Type*> types;
for (size_t i = 0; i < args.Length(); i++) {
@@ -1983,12 +2006,12 @@
}
builder_->Sem().Add(a, arr);
- return ty_ctor_or_conv(arr);
+ return ty_init_or_conv(arr);
},
[&](const ast::Type* ast) -> sem::Call* {
// Handler for AST types that do not have an optional element type.
if (auto* ty = Type(ast)) {
- return ty_ctor_or_conv(ty);
+ return ty_init_or_conv(ty);
}
return nullptr;
},
@@ -2001,18 +2024,18 @@
});
} else {
// ast::CallExpression has an ast::IdentifierExpression as the target.
- // This call is either a function call, builtin call, type constructor or type conversion.
+ // This call is either a function call, builtin call, type initializer or type conversion.
auto* ident = expr->target.name;
Mark(ident);
auto* resolved = sem_.ResolvedSymbol(ident);
call = Switch<sem::Call*>(
resolved, //
[&](sem::Type* ty) {
- // A type constructor or conversions.
+ // A type initializer or conversions.
// Note: Unlike the code path where we're resolving the call target from an
// ast::Type, all types must already have the element type explicitly specified, so
// there's no need to infer element types.
- return ty_ctor_or_conv(ty);
+ return ty_init_or_conv(ty);
},
[&](sem::Function* func) { return FunctionCall(expr, func, args, arg_behaviors); },
[&](sem::Variable* var) {
@@ -2328,7 +2351,7 @@
}
if (resolved->Is<sem::Type>()) {
- AddError("missing '(' for type constructor or cast", expr->source.End());
+ AddError("missing '(' for type initializer or cast", expr->source.End());
return nullptr;
}
@@ -3082,27 +3105,22 @@
auto* cond_ty = cond->Type()->UnwrapRef();
- utils::Vector<const sem::Type*, 8> types;
- types.Push(cond_ty);
-
- utils::Vector<sem::CaseStatement*, 4> cases;
- cases.Reserve(stmt->body.Length());
- for (auto* case_stmt : stmt->body) {
- Mark(case_stmt);
- auto* c = CaseStatement(case_stmt);
- if (!c) {
- return false;
- }
- for (auto* expr : c->Selectors()) {
- types.Push(expr->Type()->UnwrapRef());
- }
- cases.Push(c);
- behaviors.Add(c->Behaviors());
- sem->Cases().emplace_back(c);
- }
-
// Determine the common type across all selectors and the switch expression
// This must materialize to an integer scalar (non-abstract).
+ utils::Vector<const sem::Type*, 8> types;
+ types.Push(cond_ty);
+ for (auto* case_stmt : stmt->body) {
+ for (auto* sel : case_stmt->selectors) {
+ if (sel->IsDefault()) {
+ continue;
+ }
+ auto* sem_expr = Expression(sel->expr);
+ if (!sem_expr) {
+ return false;
+ }
+ types.Push(sem_expr->Type()->UnwrapRef());
+ }
+ }
auto* common_ty = sem::Type::Common(types);
if (!common_ty || !common_ty->is_integer_scalar()) {
// No common type found or the common type was abstract.
@@ -3113,13 +3131,18 @@
if (!cond) {
return false;
}
- for (auto* c : cases) {
- for (auto*& sel : c->Selectors()) { // Note: pointer reference
- sel = Materialize(sel, common_ty);
- if (!sel) {
- return false;
- }
+
+ utils::Vector<sem::CaseStatement*, 4> cases;
+ cases.Reserve(stmt->body.Length());
+ for (auto* case_stmt : stmt->body) {
+ Mark(case_stmt);
+ auto* c = CaseStatement(case_stmt, common_ty);
+ if (!c) {
+ return false;
}
+ cases.Push(c);
+ behaviors.Add(c->Behaviors());
+ sem->Cases().emplace_back(c);
}
if (behaviors.Contains(sem::Behavior::kBreak)) {
@@ -3152,7 +3175,7 @@
current_compound_statement_->AddDecl(variable->As<sem::LocalVariable>());
- if (auto* ctor = variable->Constructor()) {
+ if (auto* ctor = variable->Initializer()) {
sem->Behaviors() = ctor->Behaviors();
}
@@ -3203,6 +3226,22 @@
});
}
+sem::Statement* Resolver::BreakIfStatement(const ast::BreakIfStatement* stmt) {
+ auto* sem = builder_->create<sem::BreakIfStatement>(stmt, current_compound_statement_,
+ current_function_);
+ return StatementScope(stmt, sem, [&] {
+ auto* cond = Expression(stmt->condition);
+ if (!cond) {
+ return false;
+ }
+ sem->SetCondition(cond);
+ sem->Behaviors() = cond->Behaviors();
+ sem->Behaviors().Add(sem::Behavior::kBreak);
+
+ return validator_.BreakIfStatement(sem, current_statement_);
+ });
+}
+
sem::Statement* Resolver::CallStatement(const ast::CallStatement* stmt) {
auto* sem =
builder_->create<sem::Statement>(stmt, current_compound_statement_, current_function_);
diff --git a/src/tint/resolver/resolver.h b/src/tint/resolver/resolver.h
index c25b48e..bd7edf7 100644
--- a/src/tint/resolver/resolver.h
+++ b/src/tint/resolver/resolver.h
@@ -69,7 +69,7 @@
class Statement;
class StructMember;
class SwitchStatement;
-class TypeConstructor;
+class TypeInitializer;
class WhileStatement;
} // namespace tint::sem
@@ -208,8 +208,9 @@
sem::Statement* AssignmentStatement(const ast::AssignmentStatement*);
sem::BlockStatement* BlockStatement(const ast::BlockStatement*);
sem::Statement* BreakStatement(const ast::BreakStatement*);
+ sem::Statement* BreakIfStatement(const ast::BreakIfStatement*);
sem::Statement* CallStatement(const ast::CallStatement*);
- sem::CaseStatement* CaseStatement(const ast::CaseStatement*);
+ sem::CaseStatement* CaseStatement(const ast::CaseStatement*, const sem::Type*);
sem::Statement* CompoundAssignmentStatement(const ast::CompoundAssignmentStatement*);
sem::Statement* ContinueStatement(const ast::ContinueStatement*);
sem::Statement* DiscardStatement(const ast::DiscardStatement*);
@@ -400,15 +401,15 @@
/// @returns true if the symbol is the name of a builtin function.
bool IsBuiltin(Symbol) const;
- // ArrayConstructorSig represents a unique array constructor signature.
+ // ArrayInitializerSig represents a unique array initializer signature.
// It is a tuple of the array type, number of arguments provided and earliest evaluation stage.
- using ArrayConstructorSig =
+ using ArrayInitializerSig =
utils::UnorderedKeyWrapper<std::tuple<const sem::Array*, size_t, sem::EvaluationStage>>;
- // StructConstructorSig represents a unique structure constructor signature.
+ // StructInitializerSig represents a unique structure initializer signature.
// It is a tuple of the structure type, number of arguments provided and earliest evaluation
// stage.
- using StructConstructorSig =
+ using StructInitializerSig =
utils::UnorderedKeyWrapper<std::tuple<const sem::Struct*, size_t, sem::EvaluationStage>>;
/// ExprEvalStageConstraint describes a constraint on when expressions can be evaluated.
@@ -433,8 +434,8 @@
utils::Bitset<0> marked_;
ExprEvalStageConstraint expr_eval_stage_constraint_;
std::unordered_map<OverrideId, const sem::Variable*> override_ids_;
- std::unordered_map<ArrayConstructorSig, sem::CallTarget*> array_ctors_;
- std::unordered_map<StructConstructorSig, sem::CallTarget*> struct_ctors_;
+ std::unordered_map<ArrayInitializerSig, sem::CallTarget*> array_inits_;
+ std::unordered_map<StructInitializerSig, sem::CallTarget*> struct_inits_;
sem::Function* current_function_ = nullptr;
sem::Statement* current_statement_ = nullptr;
sem::CompoundStatement* current_compound_statement_ = nullptr;
diff --git a/src/tint/resolver/resolver_behavior_test.cc b/src/tint/resolver/resolver_behavior_test.cc
index 5002857..150512a 100644
--- a/src/tint/resolver/resolver_behavior_test.cc
+++ b/src/tint/resolver/resolver_behavior_test.cc
@@ -569,6 +569,16 @@
EXPECT_EQ(sem->Behaviors(), sem::Behavior::kNext);
}
+TEST_F(ResolverBehaviorTest, StmtLoopEmpty_BreakIf) {
+ auto* stmt = Loop(Block(), Block(BreakIf(true)));
+ WrapInFunction(stmt);
+
+ ASSERT_TRUE(r()->Resolve()) << r()->error();
+
+ auto* sem = Sem().Get(stmt);
+ EXPECT_EQ(sem->Behaviors(), sem::Behavior::kNext);
+}
+
TEST_F(ResolverBehaviorTest, StmtReturn) {
auto* stmt = Return();
WrapInFunction(stmt);
@@ -633,7 +643,7 @@
}
TEST_F(ResolverBehaviorTest, StmtSwitch_CondLiteral_Case0Empty_DefaultEmpty) {
- auto* stmt = Switch(1_i, Case(Expr(0_i), Block()), DefaultCase(Block()));
+ auto* stmt = Switch(1_i, Case(CaseSelector(0_i), Block()), DefaultCase(Block()));
WrapInFunction(stmt);
ASSERT_TRUE(r()->Resolve()) << r()->error();
@@ -643,7 +653,7 @@
}
TEST_F(ResolverBehaviorTest, StmtSwitch_CondLiteral_Case0Empty_DefaultDiscard) {
- auto* stmt = Switch(1_i, Case(Expr(0_i), Block()), DefaultCase(Block(Discard())));
+ auto* stmt = Switch(1_i, Case(CaseSelector(0_i), Block()), DefaultCase(Block(Discard())));
Func("F", utils::Empty, ty.void_(), utils::Vector{stmt},
utils::Vector{Stage(ast::PipelineStage::kFragment)});
@@ -655,7 +665,7 @@
}
TEST_F(ResolverBehaviorTest, StmtSwitch_CondLiteral_Case0Empty_DefaultReturn) {
- auto* stmt = Switch(1_i, Case(Expr(0_i), Block()), DefaultCase(Block(Return())));
+ auto* stmt = Switch(1_i, Case(CaseSelector(0_i), Block()), DefaultCase(Block(Return())));
WrapInFunction(stmt);
ASSERT_TRUE(r()->Resolve()) << r()->error();
@@ -665,7 +675,7 @@
}
TEST_F(ResolverBehaviorTest, StmtSwitch_CondLiteral_Case0Discard_DefaultEmpty) {
- auto* stmt = Switch(1_i, Case(Expr(0_i), Block(Discard())), DefaultCase(Block()));
+ auto* stmt = Switch(1_i, Case(CaseSelector(0_i), Block(Discard())), DefaultCase(Block()));
Func("F", utils::Empty, ty.void_(), utils::Vector{stmt},
utils::Vector{Stage(ast::PipelineStage::kFragment)});
@@ -677,7 +687,8 @@
}
TEST_F(ResolverBehaviorTest, StmtSwitch_CondLiteral_Case0Discard_DefaultDiscard) {
- auto* stmt = Switch(1_i, Case(Expr(0_i), Block(Discard())), DefaultCase(Block(Discard())));
+ auto* stmt =
+ Switch(1_i, Case(CaseSelector(0_i), Block(Discard())), DefaultCase(Block(Discard())));
Func("F", utils::Empty, ty.void_(), utils::Vector{stmt},
utils::Vector{Stage(ast::PipelineStage::kFragment)});
@@ -689,7 +700,8 @@
}
TEST_F(ResolverBehaviorTest, StmtSwitch_CondLiteral_Case0Discard_DefaultReturn) {
- auto* stmt = Switch(1_i, Case(Expr(0_i), Block(Discard())), DefaultCase(Block(Return())));
+ auto* stmt =
+ Switch(1_i, Case(CaseSelector(0_i), Block(Discard())), DefaultCase(Block(Return())));
Func("F", utils::Empty, ty.void_(), utils::Vector{stmt},
utils::Vector{Stage(ast::PipelineStage::kFragment)});
@@ -701,9 +713,9 @@
}
TEST_F(ResolverBehaviorTest, StmtSwitch_CondLiteral_Case0Discard_Case1Return_DefaultEmpty) {
- auto* stmt = Switch(1_i, //
- Case(Expr(0_i), Block(Discard())), //
- Case(Expr(1_i), Block(Return())), //
+ auto* stmt = Switch(1_i, //
+ Case(CaseSelector(0_i), Block(Discard())), //
+ Case(CaseSelector(1_i), Block(Return())), //
DefaultCase(Block()));
Func("F", utils::Empty, ty.void_(), utils::Vector{stmt},
diff --git a/src/tint/resolver/resolver_test.cc b/src/tint/resolver/resolver_test.cc
index 5e4494c..1955c9d 100644
--- a/src/tint/resolver/resolver_test.cc
+++ b/src/tint/resolver/resolver_test.cc
@@ -112,7 +112,7 @@
auto* assign = Assign(lhs, rhs);
auto* block = Block(assign);
- auto* sel = Expr(3_i);
+ auto* sel = CaseSelector(3_i);
auto* cse = Case(sel, block);
auto* def = DefaultCase();
auto* cond_var = Var("c", ty.i32());
@@ -132,9 +132,15 @@
ASSERT_EQ(sem->Cases().size(), 2u);
EXPECT_EQ(sem->Cases()[0]->Declaration(), cse);
ASSERT_EQ(sem->Cases()[0]->Selectors().size(), 1u);
- EXPECT_EQ(sem->Cases()[0]->Selectors()[0]->Declaration(), sel);
- EXPECT_EQ(sem->Cases()[1]->Declaration(), def);
- EXPECT_EQ(sem->Cases()[1]->Selectors().size(), 0u);
+ EXPECT_EQ(sem->Cases()[1]->Selectors().size(), 1u);
+}
+
+TEST_F(ResolverTest, Stmt_Case_AddressOf_Invalid) {
+ auto* cond_var = Var("i", ty.i32());
+ WrapInFunction(cond_var, Switch("i", Case(CaseSelector(AddressOf(1_a)), Block())));
+
+ EXPECT_FALSE(r()->Resolve());
+ EXPECT_EQ(r()->error(), "error: cannot take the address of expression");
}
TEST_F(ResolverTest, Stmt_Block) {
@@ -209,7 +215,8 @@
auto* continuing_lhs = Expr("v");
auto* continuing_rhs = Expr(2.3_f);
- auto* continuing = Block(Assign(continuing_lhs, continuing_rhs));
+ auto* break_if = BreakIf(false);
+ auto* continuing = Block(Assign(continuing_lhs, continuing_rhs), break_if);
auto* stmt = Loop(body, continuing);
WrapInFunction(v, stmt);
@@ -227,6 +234,7 @@
EXPECT_EQ(BlockOf(body_rhs), body);
EXPECT_EQ(BlockOf(continuing_lhs), continuing);
EXPECT_EQ(BlockOf(continuing_rhs), continuing);
+ EXPECT_EQ(BlockOf(break_if), continuing);
}
TEST_F(ResolverTest, Stmt_Return) {
@@ -253,7 +261,7 @@
auto* lhs = Expr("v");
auto* rhs = Expr(2.3_f);
auto* case_block = Block(Assign(lhs, rhs));
- auto* stmt = Switch(Expr(2_i), Case(Expr(3_i), case_block), DefaultCase());
+ auto* stmt = Switch(Expr(2_i), Case(CaseSelector(3_i), case_block), DefaultCase());
WrapInFunction(v, stmt);
EXPECT_TRUE(r()->Resolve()) << r()->error();
@@ -289,7 +297,7 @@
TEST_F(ResolverTest, Stmt_VariableDecl) {
auto* var = Var("my_var", ty.i32(), Expr(2_i));
- auto* init = var->constructor;
+ auto* init = var->initializer;
auto* decl = Decl(var);
WrapInFunction(decl);
@@ -303,7 +311,7 @@
TEST_F(ResolverTest, Stmt_VariableDecl_Alias) {
auto* my_int = Alias("MyInt", ty.i32());
auto* var = Var("my_var", ty.Of(my_int), Expr(2_i));
- auto* init = var->constructor;
+ auto* init = var->initializer;
auto* decl = Decl(var);
WrapInFunction(decl);
@@ -337,24 +345,24 @@
// Declare i32 "foo" inside a block
auto* foo_i32 = Var("foo", ty.i32(), Expr(2_i));
- auto* foo_i32_init = foo_i32->constructor;
+ auto* foo_i32_init = foo_i32->initializer;
auto* foo_i32_decl = Decl(foo_i32);
// Reference "foo" inside the block
auto* bar_i32 = Var("bar", ty.i32(), Expr("foo"));
- auto* bar_i32_init = bar_i32->constructor;
+ auto* bar_i32_init = bar_i32->initializer;
auto* bar_i32_decl = Decl(bar_i32);
auto* inner = Block(foo_i32_decl, bar_i32_decl);
// Declare f32 "foo" at function scope
auto* foo_f32 = Var("foo", ty.f32(), Expr(2_f));
- auto* foo_f32_init = foo_f32->constructor;
+ auto* foo_f32_init = foo_f32->initializer;
auto* foo_f32_decl = Decl(foo_f32);
// Reference "foo" at function scope
auto* bar_f32 = Var("bar", ty.f32(), Expr("foo"));
- auto* bar_f32_init = bar_f32->constructor;
+ auto* bar_f32_init = bar_f32->initializer;
auto* bar_f32_decl = Decl(bar_f32);
Func("func", utils::Empty, ty.void_(), utils::Vector{inner, foo_f32_decl, bar_f32_decl});
@@ -372,12 +380,12 @@
EXPECT_EQ(StmtOf(bar_i32_init), bar_i32_decl);
EXPECT_EQ(StmtOf(foo_f32_init), foo_f32_decl);
EXPECT_EQ(StmtOf(bar_f32_init), bar_f32_decl);
- EXPECT_TRUE(CheckVarUsers(foo_i32, utils::Vector{bar_i32->constructor}));
- EXPECT_TRUE(CheckVarUsers(foo_f32, utils::Vector{bar_f32->constructor}));
- ASSERT_NE(VarOf(bar_i32->constructor), nullptr);
- EXPECT_EQ(VarOf(bar_i32->constructor)->Declaration(), foo_i32);
- ASSERT_NE(VarOf(bar_f32->constructor), nullptr);
- EXPECT_EQ(VarOf(bar_f32->constructor)->Declaration(), foo_f32);
+ EXPECT_TRUE(CheckVarUsers(foo_i32, utils::Vector{bar_i32->initializer}));
+ EXPECT_TRUE(CheckVarUsers(foo_f32, utils::Vector{bar_f32->initializer}));
+ ASSERT_NE(VarOf(bar_i32->initializer), nullptr);
+ EXPECT_EQ(VarOf(bar_i32->initializer)->Declaration(), foo_i32);
+ ASSERT_NE(VarOf(bar_f32->initializer), nullptr);
+ EXPECT_EQ(VarOf(bar_f32->initializer)->Declaration(), foo_f32);
}
TEST_F(ResolverTest, Stmt_VariableDecl_ModuleScopeAfterFunctionScope) {
@@ -391,18 +399,18 @@
// Declare i32 "foo" inside a function
auto* fn_i32 = Var("foo", ty.i32(), Expr(2_i));
- auto* fn_i32_init = fn_i32->constructor;
+ auto* fn_i32_init = fn_i32->initializer;
auto* fn_i32_decl = Decl(fn_i32);
Func("func_i32", utils::Empty, ty.void_(), utils::Vector{fn_i32_decl});
// Declare f32 "foo" at module scope
auto* mod_f32 = Var("foo", ty.f32(), ast::AddressSpace::kPrivate, Expr(2_f));
- auto* mod_init = mod_f32->constructor;
+ auto* mod_init = mod_f32->initializer;
AST().AddGlobalVariable(mod_f32);
// Reference "foo" in another function
auto* fn_f32 = Var("bar", ty.f32(), Expr("foo"));
- auto* fn_f32_init = fn_f32->constructor;
+ auto* fn_f32_init = fn_f32->initializer;
auto* fn_f32_decl = Decl(fn_f32);
Func("func_f32", utils::Empty, ty.void_(), utils::Vector{fn_f32_decl});
@@ -417,9 +425,9 @@
EXPECT_EQ(StmtOf(mod_init), nullptr);
EXPECT_EQ(StmtOf(fn_f32_init), fn_f32_decl);
EXPECT_TRUE(CheckVarUsers(fn_i32, utils::Empty));
- EXPECT_TRUE(CheckVarUsers(mod_f32, utils::Vector{fn_f32->constructor}));
- ASSERT_NE(VarOf(fn_f32->constructor), nullptr);
- EXPECT_EQ(VarOf(fn_f32->constructor)->Declaration(), mod_f32);
+ EXPECT_TRUE(CheckVarUsers(mod_f32, utils::Vector{fn_f32->initializer}));
+ ASSERT_NE(VarOf(fn_f32->initializer), nullptr);
+ EXPECT_EQ(VarOf(fn_f32->initializer)->Declaration(), mod_f32);
}
TEST_F(ResolverTest, ArraySize_UnsignedLiteral) {
@@ -597,7 +605,7 @@
EXPECT_TRUE(TypeOf(cast)->Is<sem::F32>());
}
-TEST_F(ResolverTest, Expr_Constructor_Scalar) {
+TEST_F(ResolverTest, Expr_Initializer_Scalar) {
auto* s = Expr(1_f);
WrapInFunction(s);
@@ -607,7 +615,7 @@
EXPECT_TRUE(TypeOf(s)->Is<sem::F32>());
}
-TEST_F(ResolverTest, Expr_Constructor_Type_Vec2) {
+TEST_F(ResolverTest, Expr_Initializer_Type_Vec2) {
auto* tc = vec2<f32>(1_f, 1_f);
WrapInFunction(tc);
@@ -619,7 +627,7 @@
EXPECT_EQ(TypeOf(tc)->As<sem::Vector>()->Width(), 2u);
}
-TEST_F(ResolverTest, Expr_Constructor_Type_Vec3) {
+TEST_F(ResolverTest, Expr_Initializer_Type_Vec3) {
auto* tc = vec3<f32>(1_f, 1_f, 1_f);
WrapInFunction(tc);
@@ -631,7 +639,7 @@
EXPECT_EQ(TypeOf(tc)->As<sem::Vector>()->Width(), 3u);
}
-TEST_F(ResolverTest, Expr_Constructor_Type_Vec4) {
+TEST_F(ResolverTest, Expr_Initializer_Type_Vec4) {
auto* tc = vec4<f32>(1_f, 1_f, 1_f, 1_f);
WrapInFunction(tc);
diff --git a/src/tint/resolver/side_effects_test.cc b/src/tint/resolver/side_effects_test.cc
index 8c3d387..46727e2 100644
--- a/src/tint/resolver/side_effects_test.cc
+++ b/src/tint/resolver/side_effects_test.cc
@@ -383,7 +383,7 @@
EXPECT_TRUE(sem->HasSideEffects());
}
-TEST_F(SideEffectsTest, Call_TypeConstructor_NoSE) {
+TEST_F(SideEffectsTest, Call_TypeInitializer_NoSE) {
auto* var = Decl(Var("a", ty.f32()));
auto* expr = Construct(ty.f32(), "a");
WrapInFunction(var, expr);
@@ -395,7 +395,7 @@
EXPECT_FALSE(sem->HasSideEffects());
}
-TEST_F(SideEffectsTest, Call_TypeConstructor_SE) {
+TEST_F(SideEffectsTest, Call_TypeInitializer_SE) {
MakeSideEffectFunc<f32>("se");
auto* expr = Construct(ty.f32(), Call("se"));
WrapInFunction(expr);
diff --git a/src/tint/resolver/type_constructor_validation_test.cc b/src/tint/resolver/type_initializer_validation_test.cc
similarity index 84%
rename from src/tint/resolver/type_constructor_validation_test.cc
rename to src/tint/resolver/type_initializer_validation_test.cc
index 353e517..61f9a58 100644
--- a/src/tint/resolver/type_constructor_validation_test.cc
+++ b/src/tint/resolver/type_initializer_validation_test.cc
@@ -15,8 +15,8 @@
#include "gmock/gmock.h"
#include "src/tint/resolver/resolver_test_helper.h"
#include "src/tint/sem/reference.h"
-#include "src/tint/sem/type_constructor.h"
#include "src/tint/sem/type_conversion.h"
+#include "src/tint/sem/type_initializer.h"
using namespace tint::number_suffixes; // NOLINT
@@ -42,7 +42,7 @@
using builder::vec3;
using builder::vec4;
-class ResolverTypeConstructorValidationTest : public resolver::TestHelper, public testing::Test {};
+class ResolverTypeInitializerValidationTest : public resolver::TestHelper, public testing::Test {};
namespace InferTypeTest {
struct Params {
@@ -56,7 +56,7 @@
return Params{DataType<T>::AST, DataType<T>::ExprFromDouble, DataType<T>::Sem};
}
-TEST_F(ResolverTypeConstructorValidationTest, InferTypeTest_Simple) {
+TEST_F(ResolverTypeInitializerValidationTest, InferTypeTest_Simple) {
// var a = 1i;
// var b = a;
auto* a = Var("a", Expr(1_i));
@@ -75,8 +75,8 @@
EXPECT_EQ(TypeOf(b_ident)->As<sem::Reference>()->AddressSpace(), ast::AddressSpace::kFunction);
}
-using InferTypeTest_FromConstructorExpression = ResolverTestWithParam<Params>;
-TEST_P(InferTypeTest_FromConstructorExpression, All) {
+using InferTypeTest_FromInitializerExpression = ResolverTestWithParam<Params>;
+TEST_P(InferTypeTest_FromInitializerExpression, All) {
// e.g. for vec3<f32>
// {
// var a = vec3<f32>(0.0, 0.0, 0.0)
@@ -85,9 +85,9 @@
Enable(ast::Extension::kF16);
- auto* constructor_expr = params.create_rhs_ast_value(*this, 0);
+ auto* initializer_expr = params.create_rhs_ast_value(*this, 0);
- auto* a = Var("a", constructor_expr);
+ auto* a = Var("a", initializer_expr);
// Self-assign 'a' to force the expression to be resolved so we can test its
// type below
auto* a_ident = Expr("a");
@@ -101,7 +101,7 @@
<< "expected: " << FriendlyName(expected) << "\n";
}
-static constexpr Params from_constructor_expression_cases[] = {
+static constexpr Params from_initializer_expression_cases[] = {
ParamsFor<bool>(),
ParamsFor<i32>(),
ParamsFor<u32>(),
@@ -125,9 +125,9 @@
ParamsFor<alias<mat3x3<f32>>>(),
ParamsFor<alias<mat3x3<f16>>>(),
};
-INSTANTIATE_TEST_SUITE_P(ResolverTypeConstructorValidationTest,
- InferTypeTest_FromConstructorExpression,
- testing::ValuesIn(from_constructor_expression_cases));
+INSTANTIATE_TEST_SUITE_P(ResolverTypeInitializerValidationTest,
+ InferTypeTest_FromInitializerExpression,
+ testing::ValuesIn(from_initializer_expression_cases));
using InferTypeTest_FromArithmeticExpression = ResolverTestWithParam<Params>;
TEST_P(InferTypeTest_FromArithmeticExpression, All) {
@@ -139,9 +139,9 @@
auto* arith_lhs_expr = params.create_rhs_ast_value(*this, 2);
auto* arith_rhs_expr = params.create_rhs_ast_value(*this, 3);
- auto* constructor_expr = Mul(arith_lhs_expr, arith_rhs_expr);
+ auto* initializer_expr = Mul(arith_lhs_expr, arith_rhs_expr);
- auto* a = Var("a", constructor_expr);
+ auto* a = Var("a", initializer_expr);
// Self-assign 'a' to force the expression to be resolved so we can test its
// type below
auto* a_ident = Expr("a");
@@ -166,7 +166,7 @@
ParamsFor<alias<vec3<f32>>>(),
ParamsFor<alias<mat3x3<f32>>>(),
};
-INSTANTIATE_TEST_SUITE_P(ResolverTypeConstructorValidationTest,
+INSTANTIATE_TEST_SUITE_P(ResolverTypeInitializerValidationTest,
InferTypeTest_FromArithmeticExpression,
testing::ValuesIn(from_arithmetic_expression_cases));
@@ -226,7 +226,7 @@
ParamsFor<alias<mat3x3<f32>>>(),
ParamsFor<alias<mat3x3<f16>>>(),
};
-INSTANTIATE_TEST_SUITE_P(ResolverTypeConstructorValidationTest,
+INSTANTIATE_TEST_SUITE_P(ResolverTypeInitializerValidationTest,
InferTypeTest_FromCallExpression,
testing::ValuesIn(from_call_expression_cases));
@@ -337,8 +337,8 @@
ParamsFor<mat3x2<f32>, mat3x2<f16>>(Kind::Conversion), //
};
-using ConversionConstructorValidTest = ResolverTestWithParam<Params>;
-TEST_P(ConversionConstructorValidTest, All) {
+using ConversionInitializerValidTest = ResolverTestWithParam<Params>;
+TEST_P(ConversionInitializerValidTest, All) {
auto& params = GetParam();
Enable(ast::Extension::kF16);
@@ -369,7 +369,7 @@
ASSERT_NE(call, nullptr);
switch (params.kind) {
case Kind::Construct: {
- auto* ctor = call->Target()->As<sem::TypeConstructor>();
+ auto* ctor = call->Target()->As<sem::TypeInitializer>();
ASSERT_NE(ctor, nullptr);
EXPECT_EQ(call->Type(), ctor->ReturnType());
ASSERT_EQ(ctor->Parameters().Length(), 1u);
@@ -386,8 +386,8 @@
}
}
}
-INSTANTIATE_TEST_SUITE_P(ResolverTypeConstructorValidationTest,
- ConversionConstructorValidTest,
+INSTANTIATE_TEST_SUITE_P(ResolverTypeInitializerValidationTest,
+ ConversionInitializerValidTest,
testing::ValuesIn(valid_cases));
constexpr CreatePtrs all_types[] = {
@@ -415,10 +415,10 @@
CreatePtrsFor<mat3x2<f16>>(), //
};
-using ConversionConstructorInvalidTest = ResolverTestWithParam<std::tuple<CreatePtrs, // lhs
+using ConversionInitializerInvalidTest = ResolverTestWithParam<std::tuple<CreatePtrs, // lhs
CreatePtrs // rhs
>>;
-TEST_P(ConversionConstructorInvalidTest, All) {
+TEST_P(ConversionInitializerInvalidTest, All) {
auto& params = GetParam();
auto& lhs_params = std::get<0>(params);
@@ -458,34 +458,34 @@
ASSERT_FALSE(r()->Resolve());
}
-INSTANTIATE_TEST_SUITE_P(ResolverTypeConstructorValidationTest,
- ConversionConstructorInvalidTest,
+INSTANTIATE_TEST_SUITE_P(ResolverTypeInitializerValidationTest,
+ ConversionInitializerInvalidTest,
testing::Combine(testing::ValuesIn(all_types),
testing::ValuesIn(all_types)));
-TEST_F(ResolverTypeConstructorValidationTest, ConversionConstructorInvalid_TooManyInitializers) {
+TEST_F(ResolverTypeInitializerValidationTest, ConversionInitializerInvalid_TooManyInitializers) {
auto* a = Var("a", ty.f32(), Construct(Source{{12, 34}}, ty.f32(), Expr(1_f), Expr(2_f)));
WrapInFunction(a);
ASSERT_FALSE(r()->Resolve());
- EXPECT_THAT(r()->error(), HasSubstr("12:34 error: no matching constructor for f32(f32, f32)"));
+ EXPECT_THAT(r()->error(), HasSubstr("12:34 error: no matching initializer for f32(f32, f32)"));
}
-TEST_F(ResolverTypeConstructorValidationTest, ConversionConstructorInvalid_InvalidInitializer) {
+TEST_F(ResolverTypeInitializerValidationTest, ConversionInitializerInvalid_InvalidInitializer) {
auto* a =
Var("a", ty.f32(), Construct(Source{{12, 34}}, ty.f32(), Construct(ty.array<f32, 4>())));
WrapInFunction(a);
ASSERT_FALSE(r()->Resolve());
EXPECT_THAT(r()->error(),
- HasSubstr("12:34 error: no matching constructor for f32(array<f32, 4>)"));
+ HasSubstr("12:34 error: no matching initializer for f32(array<f32, 4>)"));
}
} // namespace ConversionConstructTest
-namespace ArrayConstructor {
+namespace ArrayInitializer {
-TEST_F(ResolverTypeConstructorValidationTest, Array_ZeroValue_Pass) {
+TEST_F(ResolverTypeInitializerValidationTest, Array_ZeroValue_Pass) {
// array<u32, 10u>();
auto* tc = array<u32, 10>();
WrapInFunction(tc);
@@ -495,13 +495,13 @@
auto* call = Sem().Get<sem::Call>(tc);
ASSERT_NE(call, nullptr);
EXPECT_TRUE(call->Type()->Is<sem::Array>());
- auto* ctor = call->Target()->As<sem::TypeConstructor>();
+ auto* ctor = call->Target()->As<sem::TypeInitializer>();
ASSERT_NE(ctor, nullptr);
EXPECT_EQ(call->Type(), ctor->ReturnType());
ASSERT_EQ(ctor->Parameters().Length(), 0u);
}
-TEST_F(ResolverTypeConstructorValidationTest, Array_U32U32U32) {
+TEST_F(ResolverTypeInitializerValidationTest, Array_U32U32U32) {
// array<u32, 3u>(0u, 10u, 20u);
auto* tc = array<u32, 3>(0_u, 10_u, 20_u);
WrapInFunction(tc);
@@ -511,7 +511,7 @@
auto* call = Sem().Get<sem::Call>(tc);
ASSERT_NE(call, nullptr);
EXPECT_TRUE(call->Type()->Is<sem::Array>());
- auto* ctor = call->Target()->As<sem::TypeConstructor>();
+ auto* ctor = call->Target()->As<sem::TypeInitializer>();
ASSERT_NE(ctor, nullptr);
EXPECT_EQ(call->Type(), ctor->ReturnType());
ASSERT_EQ(ctor->Parameters().Length(), 3u);
@@ -520,7 +520,7 @@
EXPECT_TRUE(ctor->Parameters()[2]->Type()->Is<sem::U32>());
}
-TEST_F(ResolverTypeConstructorValidationTest, InferredArray_U32U32U32) {
+TEST_F(ResolverTypeInitializerValidationTest, InferredArray_U32U32U32) {
// array(0u, 10u, 20u);
auto* tc = array(Source{{12, 34}}, nullptr, nullptr, 0_u, 10_u, 20_u);
WrapInFunction(tc);
@@ -530,7 +530,7 @@
auto* call = Sem().Get<sem::Call>(tc);
ASSERT_NE(call, nullptr);
EXPECT_TRUE(call->Type()->Is<sem::Array>());
- auto* ctor = call->Target()->As<sem::TypeConstructor>();
+ auto* ctor = call->Target()->As<sem::TypeInitializer>();
ASSERT_NE(ctor, nullptr);
EXPECT_EQ(call->Type(), ctor->ReturnType());
ASSERT_EQ(ctor->Parameters().Length(), 3u);
@@ -539,7 +539,7 @@
EXPECT_TRUE(ctor->Parameters()[2]->Type()->Is<sem::U32>());
}
-TEST_F(ResolverTypeConstructorValidationTest, Array_U32AIU32) {
+TEST_F(ResolverTypeInitializerValidationTest, Array_U32AIU32) {
// array<u32, 3u>(0u, 10, 20u);
auto* tc = array<u32, 3>(0_u, 10_a, 20_u);
WrapInFunction(tc);
@@ -549,7 +549,7 @@
auto* call = Sem().Get<sem::Call>(tc);
ASSERT_NE(call, nullptr);
EXPECT_TRUE(call->Type()->Is<sem::Array>());
- auto* ctor = call->Target()->As<sem::TypeConstructor>();
+ auto* ctor = call->Target()->As<sem::TypeInitializer>();
ASSERT_NE(ctor, nullptr);
EXPECT_EQ(call->Type(), ctor->ReturnType());
ASSERT_EQ(ctor->Parameters().Length(), 3u);
@@ -558,7 +558,7 @@
EXPECT_TRUE(ctor->Parameters()[2]->Type()->Is<sem::U32>());
}
-TEST_F(ResolverTypeConstructorValidationTest, InferredArray_U32AIU32) {
+TEST_F(ResolverTypeInitializerValidationTest, InferredArray_U32AIU32) {
// array(0u, 10u, 20u);
auto* tc = array(Source{{12, 34}}, nullptr, nullptr, 0_u, 10_a, 20_u);
WrapInFunction(tc);
@@ -568,7 +568,7 @@
auto* call = Sem().Get<sem::Call>(tc);
ASSERT_NE(call, nullptr);
EXPECT_TRUE(call->Type()->Is<sem::Array>());
- auto* ctor = call->Target()->As<sem::TypeConstructor>();
+ auto* ctor = call->Target()->As<sem::TypeInitializer>();
ASSERT_NE(ctor, nullptr);
EXPECT_EQ(call->Type(), ctor->ReturnType());
ASSERT_EQ(ctor->Parameters().Length(), 3u);
@@ -577,7 +577,7 @@
EXPECT_TRUE(ctor->Parameters()[2]->Type()->Is<sem::U32>());
}
-TEST_F(ResolverTypeConstructorValidationTest, ArrayU32_AIAIAI) {
+TEST_F(ResolverTypeInitializerValidationTest, ArrayU32_AIAIAI) {
// array<u32, 3u>(0, 10, 20);
auto* tc = array<u32, 3>(0_a, 10_a, 20_a);
WrapInFunction(tc);
@@ -587,7 +587,7 @@
auto* call = Sem().Get<sem::Call>(tc);
ASSERT_NE(call, nullptr);
EXPECT_TRUE(call->Type()->Is<sem::Array>());
- auto* ctor = call->Target()->As<sem::TypeConstructor>();
+ auto* ctor = call->Target()->As<sem::TypeInitializer>();
ASSERT_NE(ctor, nullptr);
EXPECT_EQ(call->Type(), ctor->ReturnType());
ASSERT_EQ(ctor->Parameters().Length(), 3u);
@@ -596,7 +596,7 @@
EXPECT_TRUE(ctor->Parameters()[2]->Type()->Is<sem::U32>());
}
-TEST_F(ResolverTypeConstructorValidationTest, InferredArray_AIAIAI) {
+TEST_F(ResolverTypeInitializerValidationTest, InferredArray_AIAIAI) {
// const c = array(0, 10, 20);
auto* tc = array(Source{{12, 34}}, nullptr, nullptr, 0_a, 10_a, 20_a);
WrapInFunction(Decl(Const("C", tc)));
@@ -606,7 +606,7 @@
auto* call = Sem().Get<sem::Call>(tc);
ASSERT_NE(call, nullptr);
EXPECT_TRUE(call->Type()->Is<sem::Array>());
- auto* ctor = call->Target()->As<sem::TypeConstructor>();
+ auto* ctor = call->Target()->As<sem::TypeInitializer>();
ASSERT_NE(ctor, nullptr);
EXPECT_EQ(call->Type(), ctor->ReturnType());
ASSERT_EQ(ctor->Parameters().Length(), 3u);
@@ -615,7 +615,7 @@
EXPECT_TRUE(ctor->Parameters()[2]->Type()->Is<sem::AbstractInt>());
}
-TEST_F(ResolverTypeConstructorValidationTest, InferredArrayU32_VecI32_VecAI) {
+TEST_F(ResolverTypeInitializerValidationTest, InferredArrayU32_VecI32_VecAI) {
// array(vec2(10i), vec2(20));
auto* tc = array(Source{{12, 34}}, nullptr, nullptr, //
Construct(ty.vec(nullptr, 2), 20_i), //
@@ -627,7 +627,7 @@
auto* call = Sem().Get<sem::Call>(tc);
ASSERT_NE(call, nullptr);
EXPECT_TRUE(call->Type()->Is<sem::Array>());
- auto* ctor = call->Target()->As<sem::TypeConstructor>();
+ auto* ctor = call->Target()->As<sem::TypeInitializer>();
ASSERT_NE(ctor, nullptr);
EXPECT_EQ(call->Type(), ctor->ReturnType());
ASSERT_EQ(ctor->Parameters().Length(), 2u);
@@ -637,7 +637,7 @@
EXPECT_TRUE(ctor->Parameters()[1]->Type()->As<sem::Vector>()->type()->Is<sem::I32>());
}
-TEST_F(ResolverTypeConstructorValidationTest, InferredArrayU32_VecAI_VecF32) {
+TEST_F(ResolverTypeInitializerValidationTest, InferredArrayU32_VecAI_VecF32) {
// array(vec2(20), vec2(10f));
auto* tc = array(Source{{12, 34}}, nullptr, nullptr, //
Construct(ty.vec(nullptr, 2), 20_a), //
@@ -649,7 +649,7 @@
auto* call = Sem().Get<sem::Call>(tc);
ASSERT_NE(call, nullptr);
EXPECT_TRUE(call->Type()->Is<sem::Array>());
- auto* ctor = call->Target()->As<sem::TypeConstructor>();
+ auto* ctor = call->Target()->As<sem::TypeInitializer>();
ASSERT_NE(ctor, nullptr);
EXPECT_EQ(call->Type(), ctor->ReturnType());
ASSERT_EQ(ctor->Parameters().Length(), 2u);
@@ -659,7 +659,7 @@
EXPECT_TRUE(ctor->Parameters()[1]->Type()->As<sem::Vector>()->type()->Is<sem::F32>());
}
-TEST_F(ResolverTypeConstructorValidationTest, ArrayArgumentTypeMismatch_U32F32) {
+TEST_F(ResolverTypeInitializerValidationTest, ArrayArgumentTypeMismatch_U32F32) {
// array<u32, 3u>(0u, 1.0f, 20u);
auto* tc = array<u32, 3>(0_u, Expr(Source{{12, 34}}, 1_f), 20_u);
WrapInFunction(tc);
@@ -668,19 +668,19 @@
EXPECT_EQ(r()->error(), R"(12:34 error: 'f32' cannot be used to construct an array of 'u32')");
}
-TEST_F(ResolverTypeConstructorValidationTest, InferredArrayArgumentTypeMismatch_U32F32) {
+TEST_F(ResolverTypeInitializerValidationTest, InferredArrayArgumentTypeMismatch_U32F32) {
// array(0u, 1.0f, 20u);
auto* tc = array(Source{{12, 34}}, nullptr, nullptr, 0_u, 1_f, 20_u);
WrapInFunction(tc);
EXPECT_FALSE(r()->Resolve());
EXPECT_EQ(r()->error(),
- R"(12:34 error: cannot infer common array element type from constructor arguments
+ R"(12:34 error: cannot infer common array element type from initializer arguments
note: argument 0 is of type 'u32'
note: argument 1 is of type 'f32')");
}
-TEST_F(ResolverTypeConstructorValidationTest, ArrayArgumentTypeMismatch_F32I32) {
+TEST_F(ResolverTypeInitializerValidationTest, ArrayArgumentTypeMismatch_F32I32) {
// array<f32, 1u>(1i);
auto* tc = array<f32, 1>(Expr(Source{{12, 34}}, 1_i));
WrapInFunction(tc);
@@ -689,19 +689,19 @@
EXPECT_EQ(r()->error(), R"(12:34 error: 'i32' cannot be used to construct an array of 'f32')");
}
-TEST_F(ResolverTypeConstructorValidationTest, InferredArrayArgumentTypeMismatch_F32I32) {
+TEST_F(ResolverTypeInitializerValidationTest, InferredArrayArgumentTypeMismatch_F32I32) {
// array(1f, 1i);
auto* tc = array(Source{{12, 34}}, nullptr, nullptr, 1_f, 1_i);
WrapInFunction(tc);
EXPECT_FALSE(r()->Resolve());
EXPECT_EQ(r()->error(),
- R"(12:34 error: cannot infer common array element type from constructor arguments
+ R"(12:34 error: cannot infer common array element type from initializer arguments
note: argument 0 is of type 'f32'
note: argument 1 is of type 'i32')");
}
-TEST_F(ResolverTypeConstructorValidationTest, ArrayArgumentTypeMismatch_U32I32) {
+TEST_F(ResolverTypeInitializerValidationTest, ArrayArgumentTypeMismatch_U32I32) {
// array<u32, 1u>(1i, 0u, 0u, 0u, 0u, 0u);
auto* tc = array<u32, 1>(Expr(Source{{12, 34}}, 1_i), 0_u, 0_u, 0_u, 0_u);
WrapInFunction(tc);
@@ -710,19 +710,19 @@
EXPECT_EQ(r()->error(), R"(12:34 error: 'i32' cannot be used to construct an array of 'u32')");
}
-TEST_F(ResolverTypeConstructorValidationTest, InferredArrayArgumentTypeMismatch_U32I32) {
+TEST_F(ResolverTypeInitializerValidationTest, InferredArrayArgumentTypeMismatch_U32I32) {
// array(1i, 0u, 0u, 0u, 0u, 0u);
auto* tc = array(Source{{12, 34}}, nullptr, nullptr, 1_i, 0_u, 0_u, 0_u, 0_u);
WrapInFunction(tc);
EXPECT_FALSE(r()->Resolve());
EXPECT_EQ(r()->error(),
- R"(12:34 error: cannot infer common array element type from constructor arguments
+ R"(12:34 error: cannot infer common array element type from initializer arguments
note: argument 0 is of type 'i32'
note: argument 1 is of type 'u32')");
}
-TEST_F(ResolverTypeConstructorValidationTest, ArrayArgumentTypeMismatch_I32Vec2) {
+TEST_F(ResolverTypeInitializerValidationTest, ArrayArgumentTypeMismatch_I32Vec2) {
// array<i32, 3u>(1i, vec2<i32>());
auto* tc = array<i32, 3>(1_i, vec2<i32>(Source{{12, 34}}));
WrapInFunction(tc);
@@ -731,18 +731,18 @@
R"(12:34 error: 'vec2<i32>' cannot be used to construct an array of 'i32')");
}
-TEST_F(ResolverTypeConstructorValidationTest, InferredArrayArgumentTypeMismatch_I32Vec2) {
+TEST_F(ResolverTypeInitializerValidationTest, InferredArrayArgumentTypeMismatch_I32Vec2) {
// array(1i, vec2<i32>());
auto* tc = array(Source{{12, 34}}, nullptr, nullptr, 1_i, vec2<i32>());
WrapInFunction(tc);
EXPECT_FALSE(r()->Resolve());
EXPECT_EQ(r()->error(),
- R"(12:34 error: cannot infer common array element type from constructor arguments
+ R"(12:34 error: cannot infer common array element type from initializer arguments
note: argument 0 is of type 'i32'
note: argument 1 is of type 'vec2<i32>')");
}
-TEST_F(ResolverTypeConstructorValidationTest, ArrayArgumentTypeMismatch_Vec3i32_Vec3u32) {
+TEST_F(ResolverTypeInitializerValidationTest, ArrayArgumentTypeMismatch_Vec3i32_Vec3u32) {
// array<vec3<i32>, 2u>(vec3<u32>(), vec3<u32>());
auto* t = array(ty.vec3<i32>(), 2_u, vec3<u32>(Source{{12, 34}}), vec3<u32>());
WrapInFunction(t);
@@ -752,19 +752,19 @@
R"(12:34 error: 'vec3<u32>' cannot be used to construct an array of 'vec3<i32>')");
}
-TEST_F(ResolverTypeConstructorValidationTest, InferredArrayArgumentTypeMismatch_Vec3i32_Vec3u32) {
+TEST_F(ResolverTypeInitializerValidationTest, InferredArrayArgumentTypeMismatch_Vec3i32_Vec3u32) {
// array(vec3<i32>(), vec3<u32>());
auto* t = array(Source{{12, 34}}, nullptr, nullptr, vec3<i32>(), vec3<u32>());
WrapInFunction(t);
EXPECT_FALSE(r()->Resolve());
EXPECT_EQ(r()->error(),
- R"(12:34 error: cannot infer common array element type from constructor arguments
+ R"(12:34 error: cannot infer common array element type from initializer arguments
note: argument 0 is of type 'vec3<i32>'
note: argument 1 is of type 'vec3<u32>')");
}
-TEST_F(ResolverTypeConstructorValidationTest, InferredArrayArgumentTypeMismatch_Vec3i32_Vec3AF) {
+TEST_F(ResolverTypeInitializerValidationTest, InferredArrayArgumentTypeMismatch_Vec3i32_Vec3AF) {
// array(vec3<i32>(), vec3(1.0));
auto* t =
array(Source{{12, 34}}, nullptr, nullptr, vec3<i32>(), Construct(ty.vec3(nullptr), 1._a));
@@ -772,12 +772,12 @@
EXPECT_FALSE(r()->Resolve());
EXPECT_EQ(r()->error(),
- R"(12:34 error: cannot infer common array element type from constructor arguments
+ R"(12:34 error: cannot infer common array element type from initializer arguments
note: argument 0 is of type 'vec3<i32>'
note: argument 1 is of type 'vec3<abstract-float>')");
}
-TEST_F(ResolverTypeConstructorValidationTest, ArrayArgumentTypeMismatch_Vec3i32_Vec3bool) {
+TEST_F(ResolverTypeInitializerValidationTest, ArrayArgumentTypeMismatch_Vec3i32_Vec3bool) {
// array<vec3<i32>, 2u>(vec3<i32>(), vec3<bool>());
auto* t = array(ty.vec3<i32>(), 2_u, vec3<i32>(), vec3<bool>());
WrapInFunction(t);
@@ -787,19 +787,19 @@
R"(error: 'vec3<bool>' cannot be used to construct an array of 'vec3<i32>')");
}
-TEST_F(ResolverTypeConstructorValidationTest, InferredArrayArgumentTypeMismatch_Vec3i32_Vec3bool) {
+TEST_F(ResolverTypeInitializerValidationTest, InferredArrayArgumentTypeMismatch_Vec3i32_Vec3bool) {
// array(vec3<i32>(), vec3<bool>());
auto* t = array(Source{{12, 34}}, nullptr, nullptr, vec3<i32>(), vec3<bool>());
WrapInFunction(t);
EXPECT_FALSE(r()->Resolve());
EXPECT_EQ(r()->error(),
- R"(12:34 error: cannot infer common array element type from constructor arguments
+ R"(12:34 error: cannot infer common array element type from initializer arguments
note: argument 0 is of type 'vec3<i32>'
note: argument 1 is of type 'vec3<bool>')");
}
-TEST_F(ResolverTypeConstructorValidationTest, ArrayOfArray_SubElemSizeMismatch) {
+TEST_F(ResolverTypeInitializerValidationTest, ArrayOfArray_SubElemSizeMismatch) {
// array<array<i32, 2u>, 2u>(array<i32, 3u>(), array<i32, 2u>());
auto* t = array(Source{{12, 34}}, ty.array<i32, 2>(), 2_i, array<i32, 3>(), array<i32, 2>());
WrapInFunction(t);
@@ -809,19 +809,19 @@
R"(error: 'array<i32, 3>' cannot be used to construct an array of 'array<i32, 2>')");
}
-TEST_F(ResolverTypeConstructorValidationTest, InferredArrayOfArray_SubElemSizeMismatch) {
+TEST_F(ResolverTypeInitializerValidationTest, InferredArrayOfArray_SubElemSizeMismatch) {
// array<array<i32, 2u>, 2u>(array<i32, 3u>(), array<i32, 2u>());
auto* t = array(Source{{12, 34}}, nullptr, nullptr, array<i32, 3>(), array<i32, 2>());
WrapInFunction(t);
EXPECT_FALSE(r()->Resolve());
EXPECT_EQ(r()->error(),
- R"(12:34 error: cannot infer common array element type from constructor arguments
+ R"(12:34 error: cannot infer common array element type from initializer arguments
note: argument 0 is of type 'array<i32, 3>'
note: argument 1 is of type 'array<i32, 2>')");
}
-TEST_F(ResolverTypeConstructorValidationTest, ArrayOfArray_SubElemTypeMismatch) {
+TEST_F(ResolverTypeInitializerValidationTest, ArrayOfArray_SubElemTypeMismatch) {
// array<array<i32, 2u>, 2u>(array<i32, 2u>(), array<u32, 2u>());
auto* t = array(Source{{12, 34}}, ty.array<i32, 2>(), 2_i, array<i32, 2>(), array<u32, 2>());
WrapInFunction(t);
@@ -831,19 +831,19 @@
R"(error: 'array<u32, 2>' cannot be used to construct an array of 'array<i32, 2>')");
}
-TEST_F(ResolverTypeConstructorValidationTest, InferredArrayOfArray_SubElemTypeMismatch) {
+TEST_F(ResolverTypeInitializerValidationTest, InferredArrayOfArray_SubElemTypeMismatch) {
// array<array<i32, 2u>, 2u>(array<i32, 2u>(), array<u32, 2u>());
auto* t = array(Source{{12, 34}}, nullptr, nullptr, array<i32, 2>(), array<u32, 2>());
WrapInFunction(t);
EXPECT_FALSE(r()->Resolve());
EXPECT_EQ(r()->error(),
- R"(12:34 error: cannot infer common array element type from constructor arguments
+ R"(12:34 error: cannot infer common array element type from initializer arguments
note: argument 0 is of type 'array<i32, 2>'
note: argument 1 is of type 'array<u32, 2>')");
}
-TEST_F(ResolverTypeConstructorValidationTest, Array_TooFewElements) {
+TEST_F(ResolverTypeInitializerValidationTest, Array_TooFewElements) {
// array<i32, 4u>(1i, 2i, 3i);
SetSource(Source::Location({12, 34}));
auto* tc = array<i32, 4>(Expr(1_i), Expr(2_i), Expr(3_i));
@@ -851,10 +851,10 @@
EXPECT_FALSE(r()->Resolve());
EXPECT_EQ(r()->error(),
- "12:34 error: array constructor has too few elements: expected 4, found 3");
+ "12:34 error: array initializer has too few elements: expected 4, found 3");
}
-TEST_F(ResolverTypeConstructorValidationTest, Array_TooManyElements) {
+TEST_F(ResolverTypeInitializerValidationTest, Array_TooManyElements) {
// array<i32, 4u>(1i, 2i, 3i, 4i, 5i);
SetSource(Source::Location({12, 34}));
auto* tc = array<i32, 4>(Expr(1_i), Expr(2_i), Expr(3_i), Expr(4_i), Expr(5_i));
@@ -862,12 +862,12 @@
EXPECT_FALSE(r()->Resolve());
EXPECT_EQ(r()->error(),
- "12:34 error: array constructor has too many "
+ "12:34 error: array initializer has too many "
"elements: expected 4, "
"found 5");
}
-TEST_F(ResolverTypeConstructorValidationTest, Array_Runtime) {
+TEST_F(ResolverTypeInitializerValidationTest, Array_Runtime) {
// array<i32>(1i);
auto* tc = array(Source{{12, 34}}, ty.i32(), nullptr, Expr(1_i));
WrapInFunction(tc);
@@ -876,7 +876,7 @@
EXPECT_EQ(r()->error(), "12:34 error: cannot construct a runtime-sized array");
}
-TEST_F(ResolverTypeConstructorValidationTest, Array_RuntimeZeroValue) {
+TEST_F(ResolverTypeInitializerValidationTest, Array_RuntimeZeroValue) {
// array<i32>();
auto* tc = array(Source{{12, 34}}, ty.i32(), nullptr);
WrapInFunction(tc);
@@ -885,11 +885,11 @@
EXPECT_EQ(r()->error(), "12:34 error: cannot construct a runtime-sized array");
}
-} // namespace ArrayConstructor
+} // namespace ArrayInitializer
-namespace ScalarConstructor {
+namespace ScalarInitializer {
-TEST_F(ResolverTypeConstructorValidationTest, I32_Success) {
+TEST_F(ResolverTypeInitializerValidationTest, I32_Success) {
auto* expr = Construct<i32>(Expr(123_i));
WrapInFunction(expr);
@@ -900,14 +900,14 @@
auto* call = Sem().Get<sem::Call>(expr);
ASSERT_NE(call, nullptr);
- auto* ctor = call->Target()->As<sem::TypeConstructor>();
+ auto* ctor = call->Target()->As<sem::TypeInitializer>();
ASSERT_NE(ctor, nullptr);
EXPECT_EQ(call->Type(), ctor->ReturnType());
ASSERT_EQ(ctor->Parameters().Length(), 1u);
EXPECT_TRUE(ctor->Parameters()[0]->Type()->Is<sem::I32>());
}
-TEST_F(ResolverTypeConstructorValidationTest, U32_Success) {
+TEST_F(ResolverTypeInitializerValidationTest, U32_Success) {
auto* expr = Construct<u32>(Expr(123_u));
WrapInFunction(expr);
@@ -918,14 +918,14 @@
auto* call = Sem().Get<sem::Call>(expr);
ASSERT_NE(call, nullptr);
- auto* ctor = call->Target()->As<sem::TypeConstructor>();
+ auto* ctor = call->Target()->As<sem::TypeInitializer>();
ASSERT_NE(ctor, nullptr);
EXPECT_EQ(call->Type(), ctor->ReturnType());
ASSERT_EQ(ctor->Parameters().Length(), 1u);
EXPECT_TRUE(ctor->Parameters()[0]->Type()->Is<sem::U32>());
}
-TEST_F(ResolverTypeConstructorValidationTest, F32_Success) {
+TEST_F(ResolverTypeInitializerValidationTest, F32_Success) {
auto* expr = Construct<f32>(Expr(1.23_f));
WrapInFunction(expr);
@@ -936,14 +936,14 @@
auto* call = Sem().Get<sem::Call>(expr);
ASSERT_NE(call, nullptr);
- auto* ctor = call->Target()->As<sem::TypeConstructor>();
+ auto* ctor = call->Target()->As<sem::TypeInitializer>();
ASSERT_NE(ctor, nullptr);
EXPECT_EQ(call->Type(), ctor->ReturnType());
ASSERT_EQ(ctor->Parameters().Length(), 1u);
EXPECT_TRUE(ctor->Parameters()[0]->Type()->Is<sem::F32>());
}
-TEST_F(ResolverTypeConstructorValidationTest, F16_Success) {
+TEST_F(ResolverTypeInitializerValidationTest, F16_Success) {
Enable(ast::Extension::kF16);
auto* expr = Construct<f16>(Expr(1.5_h));
@@ -956,14 +956,14 @@
auto* call = Sem().Get<sem::Call>(expr);
ASSERT_NE(call, nullptr);
- auto* ctor = call->Target()->As<sem::TypeConstructor>();
+ auto* ctor = call->Target()->As<sem::TypeInitializer>();
ASSERT_NE(ctor, nullptr);
EXPECT_EQ(call->Type(), ctor->ReturnType());
ASSERT_EQ(ctor->Parameters().Length(), 1u);
EXPECT_TRUE(ctor->Parameters()[0]->Type()->Is<sem::F16>());
}
-TEST_F(ResolverTypeConstructorValidationTest, Convert_f32_to_i32_Success) {
+TEST_F(ResolverTypeInitializerValidationTest, Convert_f32_to_i32_Success) {
auto* expr = Construct<i32>(1.23_f);
WrapInFunction(expr);
@@ -981,7 +981,7 @@
EXPECT_TRUE(ctor->Parameters()[0]->Type()->Is<sem::F32>());
}
-TEST_F(ResolverTypeConstructorValidationTest, Convert_i32_to_u32_Success) {
+TEST_F(ResolverTypeInitializerValidationTest, Convert_i32_to_u32_Success) {
auto* expr = Construct<u32>(123_i);
WrapInFunction(expr);
@@ -999,7 +999,7 @@
EXPECT_TRUE(ctor->Parameters()[0]->Type()->Is<sem::I32>());
}
-TEST_F(ResolverTypeConstructorValidationTest, Convert_u32_to_f16_Success) {
+TEST_F(ResolverTypeInitializerValidationTest, Convert_u32_to_f16_Success) {
Enable(ast::Extension::kF16);
auto* expr = Construct<f16>(123_u);
@@ -1019,7 +1019,7 @@
EXPECT_TRUE(ctor->Parameters()[0]->Type()->Is<sem::U32>());
}
-TEST_F(ResolverTypeConstructorValidationTest, Convert_f16_to_f32_Success) {
+TEST_F(ResolverTypeInitializerValidationTest, Convert_f16_to_f32_Success) {
Enable(ast::Extension::kF16);
auto* expr = Construct<f32>(123_h);
@@ -1039,102 +1039,102 @@
EXPECT_TRUE(ctor->Parameters()[0]->Type()->Is<sem::F16>());
}
-} // namespace ScalarConstructor
+} // namespace ScalarInitializer
-namespace VectorConstructor {
+namespace VectorInitializer {
-TEST_F(ResolverTypeConstructorValidationTest, Vec2F32_Error_ScalarArgumentTypeMismatch) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec2F32_Error_ScalarArgumentTypeMismatch) {
WrapInFunction(vec2<f32>(Source{{12, 34}}, 1_i, 2_f));
EXPECT_FALSE(r()->Resolve());
EXPECT_THAT(r()->error(),
- HasSubstr("12:34 error: no matching constructor for vec2<f32>(i32, f32)"));
+ HasSubstr("12:34 error: no matching initializer for vec2<f32>(i32, f32)"));
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec2F16_Error_ScalarArgumentTypeMismatch) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec2F16_Error_ScalarArgumentTypeMismatch) {
Enable(ast::Extension::kF16);
WrapInFunction(vec2<f16>(Source{{12, 34}}, 1_h, 2_f));
EXPECT_FALSE(r()->Resolve());
EXPECT_THAT(r()->error(),
- HasSubstr("12:34 error: no matching constructor for vec2<f16>(f16, f32)"));
+ HasSubstr("12:34 error: no matching initializer for vec2<f16>(f16, f32)"));
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec2U32_Error_ScalarArgumentTypeMismatch) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec2U32_Error_ScalarArgumentTypeMismatch) {
WrapInFunction(vec2<u32>(Source{{12, 34}}, 1_u, 2_i));
EXPECT_FALSE(r()->Resolve());
EXPECT_THAT(r()->error(),
- HasSubstr("12:34 error: no matching constructor for vec2<u32>(u32, i32)"));
+ HasSubstr("12:34 error: no matching initializer for vec2<u32>(u32, i32)"));
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec2I32_Error_ScalarArgumentTypeMismatch) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec2I32_Error_ScalarArgumentTypeMismatch) {
WrapInFunction(vec2<i32>(Source{{12, 34}}, 1_u, 2_i));
EXPECT_FALSE(r()->Resolve());
EXPECT_THAT(r()->error(),
- HasSubstr("12:34 error: no matching constructor for vec2<i32>(u32, i32)"));
+ HasSubstr("12:34 error: no matching initializer for vec2<i32>(u32, i32)"));
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec2Bool_Error_ScalarArgumentTypeMismatch) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec2Bool_Error_ScalarArgumentTypeMismatch) {
WrapInFunction(vec2<bool>(Source{{12, 34}}, true, 1_i));
EXPECT_FALSE(r()->Resolve());
EXPECT_THAT(r()->error(),
- HasSubstr("12:34 error: no matching constructor for vec2<bool>(bool, i32)"));
+ HasSubstr("12:34 error: no matching initializer for vec2<bool>(bool, i32)"));
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec2_Error_Vec3ArgumentCardinalityTooLarge) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec2_Error_Vec3ArgumentCardinalityTooLarge) {
WrapInFunction(vec2<f32>(Source{{12, 34}}, vec3<f32>()));
EXPECT_FALSE(r()->Resolve());
EXPECT_THAT(r()->error(),
- HasSubstr("12:34 error: no matching constructor for vec2<f32>(vec3<f32>)"));
+ HasSubstr("12:34 error: no matching initializer for vec2<f32>(vec3<f32>)"));
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec2_Error_Vec4ArgumentCardinalityTooLarge) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec2_Error_Vec4ArgumentCardinalityTooLarge) {
WrapInFunction(vec2<f32>(Source{{12, 34}}, vec4<f32>()));
EXPECT_FALSE(r()->Resolve());
EXPECT_THAT(r()->error(),
- HasSubstr("12:34 error: no matching constructor for vec2<f32>(vec4<f32>)"));
+ HasSubstr("12:34 error: no matching initializer for vec2<f32>(vec4<f32>)"));
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec2_Error_TooManyArgumentsScalar) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec2_Error_TooManyArgumentsScalar) {
WrapInFunction(vec2<f32>(Source{{12, 34}}, 1_f, 2_f, 3_f));
EXPECT_FALSE(r()->Resolve());
EXPECT_THAT(r()->error(),
- HasSubstr("12:34 error: no matching constructor for vec2<f32>(f32, f32, f32)"));
+ HasSubstr("12:34 error: no matching initializer for vec2<f32>(f32, f32, f32)"));
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec2_Error_TooManyArgumentsVector) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec2_Error_TooManyArgumentsVector) {
WrapInFunction(vec2<f32>(Source{{12, 34}}, vec2<f32>(), vec2<f32>()));
EXPECT_FALSE(r()->Resolve());
EXPECT_THAT(
r()->error(),
- HasSubstr("12:34 error: no matching constructor for vec2<f32>(vec2<f32>, vec2<f32>)"));
+ HasSubstr("12:34 error: no matching initializer for vec2<f32>(vec2<f32>, vec2<f32>)"));
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec2_Error_TooManyArgumentsVectorAndScalar) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec2_Error_TooManyArgumentsVectorAndScalar) {
WrapInFunction(vec2<f32>(Source{{12, 34}}, vec2<f32>(), 1_f));
EXPECT_FALSE(r()->Resolve());
EXPECT_THAT(r()->error(),
- HasSubstr("12:34 error: no matching constructor for vec2<f32>(vec2<f32>, f32)"));
+ HasSubstr("12:34 error: no matching initializer for vec2<f32>(vec2<f32>, f32)"));
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec2_Error_InvalidArgumentType) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec2_Error_InvalidArgumentType) {
WrapInFunction(vec2<f32>(Source{{12, 34}}, mat2x2<f32>()));
EXPECT_FALSE(r()->Resolve());
EXPECT_THAT(r()->error(),
- HasSubstr("12:34 error: no matching constructor for vec2<f32>(mat2x2<f32>)"));
+ HasSubstr("12:34 error: no matching initializer for vec2<f32>(mat2x2<f32>)"));
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec2_Success_ZeroValue) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec2_Success_ZeroValue) {
auto* tc = vec2<f32>();
WrapInFunction(tc);
@@ -1147,13 +1147,13 @@
auto* call = Sem().Get<sem::Call>(tc);
ASSERT_NE(call, nullptr);
- auto* ctor = call->Target()->As<sem::TypeConstructor>();
+ auto* ctor = call->Target()->As<sem::TypeInitializer>();
ASSERT_NE(ctor, nullptr);
EXPECT_EQ(call->Type(), ctor->ReturnType());
ASSERT_EQ(ctor->Parameters().Length(), 0u);
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec2F32_Success_Scalar) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec2F32_Success_Scalar) {
auto* tc = vec2<f32>(1_f, 1_f);
WrapInFunction(tc);
@@ -1166,7 +1166,7 @@
auto* call = Sem().Get<sem::Call>(tc);
ASSERT_NE(call, nullptr);
- auto* ctor = call->Target()->As<sem::TypeConstructor>();
+ auto* ctor = call->Target()->As<sem::TypeInitializer>();
ASSERT_NE(ctor, nullptr);
EXPECT_EQ(call->Type(), ctor->ReturnType());
ASSERT_EQ(ctor->Parameters().Length(), 2u);
@@ -1174,7 +1174,7 @@
EXPECT_TRUE(ctor->Parameters()[1]->Type()->Is<sem::F32>());
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec2F16_Success_Scalar) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec2F16_Success_Scalar) {
Enable(ast::Extension::kF16);
auto* tc = vec2<f16>(1_h, 1_h);
@@ -1189,7 +1189,7 @@
auto* call = Sem().Get<sem::Call>(tc);
ASSERT_NE(call, nullptr);
- auto* ctor = call->Target()->As<sem::TypeConstructor>();
+ auto* ctor = call->Target()->As<sem::TypeInitializer>();
ASSERT_NE(ctor, nullptr);
EXPECT_EQ(call->Type(), ctor->ReturnType());
ASSERT_EQ(ctor->Parameters().Length(), 2u);
@@ -1197,7 +1197,7 @@
EXPECT_TRUE(ctor->Parameters()[1]->Type()->Is<sem::F16>());
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec2U32_Success_Scalar) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec2U32_Success_Scalar) {
auto* tc = vec2<u32>(1_u, 1_u);
WrapInFunction(tc);
@@ -1210,7 +1210,7 @@
auto* call = Sem().Get<sem::Call>(tc);
ASSERT_NE(call, nullptr);
- auto* ctor = call->Target()->As<sem::TypeConstructor>();
+ auto* ctor = call->Target()->As<sem::TypeInitializer>();
ASSERT_NE(ctor, nullptr);
EXPECT_EQ(call->Type(), ctor->ReturnType());
ASSERT_EQ(ctor->Parameters().Length(), 2u);
@@ -1218,7 +1218,7 @@
EXPECT_TRUE(ctor->Parameters()[1]->Type()->Is<sem::U32>());
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec2I32_Success_Scalar) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec2I32_Success_Scalar) {
auto* tc = vec2<i32>(1_i, 1_i);
WrapInFunction(tc);
@@ -1231,7 +1231,7 @@
auto* call = Sem().Get<sem::Call>(tc);
ASSERT_NE(call, nullptr);
- auto* ctor = call->Target()->As<sem::TypeConstructor>();
+ auto* ctor = call->Target()->As<sem::TypeInitializer>();
ASSERT_NE(ctor, nullptr);
EXPECT_EQ(call->Type(), ctor->ReturnType());
ASSERT_EQ(ctor->Parameters().Length(), 2u);
@@ -1239,7 +1239,7 @@
EXPECT_TRUE(ctor->Parameters()[1]->Type()->Is<sem::I32>());
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec2Bool_Success_Scalar) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec2Bool_Success_Scalar) {
auto* tc = vec2<bool>(true, false);
WrapInFunction(tc);
@@ -1252,7 +1252,7 @@
auto* call = Sem().Get<sem::Call>(tc);
ASSERT_NE(call, nullptr);
- auto* ctor = call->Target()->As<sem::TypeConstructor>();
+ auto* ctor = call->Target()->As<sem::TypeInitializer>();
ASSERT_NE(ctor, nullptr);
EXPECT_EQ(call->Type(), ctor->ReturnType());
ASSERT_EQ(ctor->Parameters().Length(), 2u);
@@ -1260,7 +1260,7 @@
EXPECT_TRUE(ctor->Parameters()[1]->Type()->Is<sem::Bool>());
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec2_Success_Identity) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec2_Success_Identity) {
auto* tc = vec2<f32>(vec2<f32>());
WrapInFunction(tc);
@@ -1273,14 +1273,14 @@
auto* call = Sem().Get<sem::Call>(tc);
ASSERT_NE(call, nullptr);
- auto* ctor = call->Target()->As<sem::TypeConstructor>();
+ auto* ctor = call->Target()->As<sem::TypeInitializer>();
ASSERT_NE(ctor, nullptr);
EXPECT_EQ(call->Type(), ctor->ReturnType());
ASSERT_EQ(ctor->Parameters().Length(), 1u);
EXPECT_TRUE(ctor->Parameters()[0]->Type()->Is<sem::Vector>());
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec2_Success_Vec2TypeConversion) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec2_Success_Vec2TypeConversion) {
auto* tc = vec2<f32>(vec2<i32>());
WrapInFunction(tc);
@@ -1300,116 +1300,116 @@
EXPECT_TRUE(ctor->Parameters()[0]->Type()->Is<sem::Vector>());
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec3F32_Error_ScalarArgumentTypeMismatch) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec3F32_Error_ScalarArgumentTypeMismatch) {
WrapInFunction(vec3<f32>(Source{{12, 34}}, 1_f, 2_f, 3_i));
EXPECT_FALSE(r()->Resolve());
EXPECT_THAT(r()->error(),
- HasSubstr("12:34 error: no matching constructor for vec3<f32>(f32, f32, i32)"));
+ HasSubstr("12:34 error: no matching initializer for vec3<f32>(f32, f32, i32)"));
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec3F16_Error_ScalarArgumentTypeMismatch) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec3F16_Error_ScalarArgumentTypeMismatch) {
Enable(ast::Extension::kF16);
WrapInFunction(vec3<f16>(Source{{12, 34}}, 1_h, 2_h, 3_f));
EXPECT_FALSE(r()->Resolve());
EXPECT_THAT(r()->error(),
- HasSubstr("12:34 error: no matching constructor for vec3<f16>(f16, f16, f32)"));
+ HasSubstr("12:34 error: no matching initializer for vec3<f16>(f16, f16, f32)"));
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec3U32_Error_ScalarArgumentTypeMismatch) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec3U32_Error_ScalarArgumentTypeMismatch) {
WrapInFunction(vec3<u32>(Source{{12, 34}}, 1_u, 2_i, 3_u));
EXPECT_FALSE(r()->Resolve());
EXPECT_THAT(r()->error(),
- HasSubstr("12:34 error: no matching constructor for vec3<u32>(u32, i32, u32)"));
+ HasSubstr("12:34 error: no matching initializer for vec3<u32>(u32, i32, u32)"));
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec3I32_Error_ScalarArgumentTypeMismatch) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec3I32_Error_ScalarArgumentTypeMismatch) {
WrapInFunction(vec3<i32>(Source{{12, 34}}, 1_i, 2_u, 3_i));
EXPECT_FALSE(r()->Resolve());
EXPECT_THAT(r()->error(),
- HasSubstr("12:34 error: no matching constructor for vec3<i32>(i32, u32, i32)"));
+ HasSubstr("12:34 error: no matching initializer for vec3<i32>(i32, u32, i32)"));
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec3Bool_Error_ScalarArgumentTypeMismatch) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec3Bool_Error_ScalarArgumentTypeMismatch) {
WrapInFunction(vec3<bool>(Source{{12, 34}}, false, 1_i, true));
EXPECT_FALSE(r()->Resolve());
EXPECT_THAT(r()->error(),
- HasSubstr("12:34 error: no matching constructor for vec3<bool>(bool, i32, bool)"));
+ HasSubstr("12:34 error: no matching initializer for vec3<bool>(bool, i32, bool)"));
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec3_Error_Vec4ArgumentCardinalityTooLarge) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec3_Error_Vec4ArgumentCardinalityTooLarge) {
WrapInFunction(vec3<f32>(Source{{12, 34}}, vec4<f32>()));
EXPECT_FALSE(r()->Resolve());
EXPECT_THAT(r()->error(),
- HasSubstr("12:34 error: no matching constructor for vec3<f32>(vec4<f32>)"));
+ HasSubstr("12:34 error: no matching initializer for vec3<f32>(vec4<f32>)"));
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec3_Error_TooFewArgumentsScalar) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec3_Error_TooFewArgumentsScalar) {
WrapInFunction(vec3<f32>(Source{{12, 34}}, 1_f, 2_f));
EXPECT_FALSE(r()->Resolve());
EXPECT_THAT(r()->error(),
- HasSubstr("12:34 error: no matching constructor for vec3<f32>(f32, f32)"));
+ HasSubstr("12:34 error: no matching initializer for vec3<f32>(f32, f32)"));
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec3_Error_TooManyArgumentsScalar) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec3_Error_TooManyArgumentsScalar) {
WrapInFunction(vec3<f32>(Source{{12, 34}}, 1_f, 2_f, 3_f, 4_f));
EXPECT_FALSE(r()->Resolve());
EXPECT_THAT(
r()->error(),
- HasSubstr("12:34 error: no matching constructor for vec3<f32>(f32, f32, f32, f32)"));
+ HasSubstr("12:34 error: no matching initializer for vec3<f32>(f32, f32, f32, f32)"));
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec3_Error_TooFewArgumentsVec2) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec3_Error_TooFewArgumentsVec2) {
WrapInFunction(vec3<f32>(Source{{12, 34}}, vec2<f32>()));
EXPECT_FALSE(r()->Resolve());
EXPECT_THAT(r()->error(),
- HasSubstr("12:34 error: no matching constructor for vec3<f32>(vec2<f32>)"));
+ HasSubstr("12:34 error: no matching initializer for vec3<f32>(vec2<f32>)"));
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec3_Error_TooManyArgumentsVec2) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec3_Error_TooManyArgumentsVec2) {
WrapInFunction(vec3<f32>(Source{{12, 34}}, vec2<f32>(), vec2<f32>()));
EXPECT_FALSE(r()->Resolve());
EXPECT_THAT(
r()->error(),
- HasSubstr("12:34 error: no matching constructor for vec3<f32>(vec2<f32>, vec2<f32>)"));
+ HasSubstr("12:34 error: no matching initializer for vec3<f32>(vec2<f32>, vec2<f32>)"));
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec3_Error_TooManyArgumentsVec2AndScalar) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec3_Error_TooManyArgumentsVec2AndScalar) {
WrapInFunction(vec3<f32>(Source{{12, 34}}, vec2<f32>(), 1_f, 1_f));
EXPECT_FALSE(r()->Resolve());
EXPECT_THAT(
r()->error(),
- HasSubstr("12:34 error: no matching constructor for vec3<f32>(vec2<f32>, f32, f32)"));
+ HasSubstr("12:34 error: no matching initializer for vec3<f32>(vec2<f32>, f32, f32)"));
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec3_Error_TooManyArgumentsVec3) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec3_Error_TooManyArgumentsVec3) {
WrapInFunction(vec3<f32>(Source{{12, 34}}, vec3<f32>(), 1_f));
EXPECT_FALSE(r()->Resolve());
EXPECT_THAT(r()->error(),
- HasSubstr("12:34 error: no matching constructor for vec3<f32>(vec3<f32>, f32)"));
+ HasSubstr("12:34 error: no matching initializer for vec3<f32>(vec3<f32>, f32)"));
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec3_Error_InvalidArgumentType) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec3_Error_InvalidArgumentType) {
WrapInFunction(vec3<f32>(Source{{12, 34}}, mat2x2<f32>()));
EXPECT_FALSE(r()->Resolve());
EXPECT_THAT(r()->error(),
- HasSubstr("12:34 error: no matching constructor for vec3<f32>(mat2x2<f32>)"));
+ HasSubstr("12:34 error: no matching initializer for vec3<f32>(mat2x2<f32>)"));
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec3_Success_ZeroValue) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec3_Success_ZeroValue) {
auto* tc = vec3<f32>();
WrapInFunction(tc);
@@ -1422,13 +1422,13 @@
auto* call = Sem().Get<sem::Call>(tc);
ASSERT_NE(call, nullptr);
- auto* ctor = call->Target()->As<sem::TypeConstructor>();
+ auto* ctor = call->Target()->As<sem::TypeInitializer>();
ASSERT_NE(ctor, nullptr);
EXPECT_EQ(call->Type(), ctor->ReturnType());
ASSERT_EQ(ctor->Parameters().Length(), 0u);
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec3F32_Success_Scalar) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec3F32_Success_Scalar) {
auto* tc = vec3<f32>(1_f, 1_f, 1_f);
WrapInFunction(tc);
@@ -1441,7 +1441,7 @@
auto* call = Sem().Get<sem::Call>(tc);
ASSERT_NE(call, nullptr);
- auto* ctor = call->Target()->As<sem::TypeConstructor>();
+ auto* ctor = call->Target()->As<sem::TypeInitializer>();
ASSERT_NE(ctor, nullptr);
EXPECT_EQ(call->Type(), ctor->ReturnType());
ASSERT_EQ(ctor->Parameters().Length(), 3u);
@@ -1450,7 +1450,7 @@
EXPECT_TRUE(ctor->Parameters()[2]->Type()->Is<sem::F32>());
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec3F16_Success_Scalar) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec3F16_Success_Scalar) {
Enable(ast::Extension::kF16);
auto* tc = vec3<f16>(1_h, 1_h, 1_h);
@@ -1465,7 +1465,7 @@
auto* call = Sem().Get<sem::Call>(tc);
ASSERT_NE(call, nullptr);
- auto* ctor = call->Target()->As<sem::TypeConstructor>();
+ auto* ctor = call->Target()->As<sem::TypeInitializer>();
ASSERT_NE(ctor, nullptr);
EXPECT_EQ(call->Type(), ctor->ReturnType());
ASSERT_EQ(ctor->Parameters().Length(), 3u);
@@ -1474,7 +1474,7 @@
EXPECT_TRUE(ctor->Parameters()[2]->Type()->Is<sem::F16>());
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec3U32_Success_Scalar) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec3U32_Success_Scalar) {
auto* tc = vec3<u32>(1_u, 1_u, 1_u);
WrapInFunction(tc);
@@ -1487,7 +1487,7 @@
auto* call = Sem().Get<sem::Call>(tc);
ASSERT_NE(call, nullptr);
- auto* ctor = call->Target()->As<sem::TypeConstructor>();
+ auto* ctor = call->Target()->As<sem::TypeInitializer>();
ASSERT_NE(ctor, nullptr);
EXPECT_EQ(call->Type(), ctor->ReturnType());
ASSERT_EQ(ctor->Parameters().Length(), 3u);
@@ -1496,7 +1496,7 @@
EXPECT_TRUE(ctor->Parameters()[2]->Type()->Is<sem::U32>());
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec3I32_Success_Scalar) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec3I32_Success_Scalar) {
auto* tc = vec3<i32>(1_i, 1_i, 1_i);
WrapInFunction(tc);
@@ -1509,7 +1509,7 @@
auto* call = Sem().Get<sem::Call>(tc);
ASSERT_NE(call, nullptr);
- auto* ctor = call->Target()->As<sem::TypeConstructor>();
+ auto* ctor = call->Target()->As<sem::TypeInitializer>();
ASSERT_NE(ctor, nullptr);
EXPECT_EQ(call->Type(), ctor->ReturnType());
ASSERT_EQ(ctor->Parameters().Length(), 3u);
@@ -1518,7 +1518,7 @@
EXPECT_TRUE(ctor->Parameters()[2]->Type()->Is<sem::I32>());
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec3Bool_Success_Scalar) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec3Bool_Success_Scalar) {
auto* tc = vec3<bool>(true, false, true);
WrapInFunction(tc);
@@ -1531,7 +1531,7 @@
auto* call = Sem().Get<sem::Call>(tc);
ASSERT_NE(call, nullptr);
- auto* ctor = call->Target()->As<sem::TypeConstructor>();
+ auto* ctor = call->Target()->As<sem::TypeInitializer>();
ASSERT_NE(ctor, nullptr);
EXPECT_EQ(call->Type(), ctor->ReturnType());
ASSERT_EQ(ctor->Parameters().Length(), 3u);
@@ -1540,7 +1540,7 @@
EXPECT_TRUE(ctor->Parameters()[2]->Type()->Is<sem::Bool>());
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec3_Success_Vec2AndScalar) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec3_Success_Vec2AndScalar) {
auto* tc = vec3<f32>(vec2<f32>(), 1_f);
WrapInFunction(tc);
@@ -1553,7 +1553,7 @@
auto* call = Sem().Get<sem::Call>(tc);
ASSERT_NE(call, nullptr);
- auto* ctor = call->Target()->As<sem::TypeConstructor>();
+ auto* ctor = call->Target()->As<sem::TypeInitializer>();
ASSERT_NE(ctor, nullptr);
EXPECT_EQ(call->Type(), ctor->ReturnType());
ASSERT_EQ(ctor->Parameters().Length(), 2u);
@@ -1561,7 +1561,7 @@
EXPECT_TRUE(ctor->Parameters()[1]->Type()->Is<sem::F32>());
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec3_Success_ScalarAndVec2) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec3_Success_ScalarAndVec2) {
auto* tc = vec3<f32>(1_f, vec2<f32>());
WrapInFunction(tc);
@@ -1574,7 +1574,7 @@
auto* call = Sem().Get<sem::Call>(tc);
ASSERT_NE(call, nullptr);
- auto* ctor = call->Target()->As<sem::TypeConstructor>();
+ auto* ctor = call->Target()->As<sem::TypeInitializer>();
ASSERT_NE(ctor, nullptr);
EXPECT_EQ(call->Type(), ctor->ReturnType());
ASSERT_EQ(ctor->Parameters().Length(), 2u);
@@ -1582,7 +1582,7 @@
EXPECT_TRUE(ctor->Parameters()[1]->Type()->Is<sem::Vector>());
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec3_Success_Identity) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec3_Success_Identity) {
auto* tc = vec3<f32>(vec3<f32>());
WrapInFunction(tc);
@@ -1595,14 +1595,14 @@
auto* call = Sem().Get<sem::Call>(tc);
ASSERT_NE(call, nullptr);
- auto* ctor = call->Target()->As<sem::TypeConstructor>();
+ auto* ctor = call->Target()->As<sem::TypeInitializer>();
ASSERT_NE(ctor, nullptr);
EXPECT_EQ(call->Type(), ctor->ReturnType());
ASSERT_EQ(ctor->Parameters().Length(), 1u);
EXPECT_TRUE(ctor->Parameters()[0]->Type()->Is<sem::Vector>());
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec3_Success_Vec3TypeConversion) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec3_Success_Vec3TypeConversion) {
auto* tc = vec3<f32>(vec3<i32>());
WrapInFunction(tc);
@@ -1622,16 +1622,16 @@
EXPECT_TRUE(ctor->Parameters()[0]->Type()->Is<sem::Vector>());
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec4F32_Error_ScalarArgumentTypeMismatch) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec4F32_Error_ScalarArgumentTypeMismatch) {
WrapInFunction(vec4<f32>(Source{{12, 34}}, 1_f, 1_f, 1_i, 1_f));
EXPECT_FALSE(r()->Resolve());
EXPECT_THAT(
r()->error(),
- HasSubstr("12:34 error: no matching constructor for vec4<f32>(f32, f32, i32, f32)"));
+ HasSubstr("12:34 error: no matching initializer for vec4<f32>(f32, f32, i32, f32)"));
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec4F16_Error_ScalarArgumentTypeMismatch) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec4F16_Error_ScalarArgumentTypeMismatch) {
Enable(ast::Extension::kF16);
WrapInFunction(vec4<f16>(Source{{12, 34}}, 1_h, 1_h, 1_f, 1_h));
@@ -1639,142 +1639,142 @@
EXPECT_FALSE(r()->Resolve());
EXPECT_THAT(
r()->error(),
- HasSubstr("12:34 error: no matching constructor for vec4<f16>(f16, f16, f32, f16)"));
+ HasSubstr("12:34 error: no matching initializer for vec4<f16>(f16, f16, f32, f16)"));
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec4U32_Error_ScalarArgumentTypeMismatch) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec4U32_Error_ScalarArgumentTypeMismatch) {
WrapInFunction(vec4<u32>(Source{{12, 34}}, 1_u, 1_u, 1_i, 1_u));
EXPECT_FALSE(r()->Resolve());
EXPECT_THAT(
r()->error(),
- HasSubstr("12:34 error: no matching constructor for vec4<u32>(u32, u32, i32, u32)"));
+ HasSubstr("12:34 error: no matching initializer for vec4<u32>(u32, u32, i32, u32)"));
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec4I32_Error_ScalarArgumentTypeMismatch) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec4I32_Error_ScalarArgumentTypeMismatch) {
WrapInFunction(vec4<i32>(Source{{12, 34}}, 1_i, 1_i, 1_u, 1_i));
EXPECT_FALSE(r()->Resolve());
EXPECT_THAT(
r()->error(),
- HasSubstr("12:34 error: no matching constructor for vec4<i32>(i32, i32, u32, i32)"));
+ HasSubstr("12:34 error: no matching initializer for vec4<i32>(i32, i32, u32, i32)"));
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec4Bool_Error_ScalarArgumentTypeMismatch) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec4Bool_Error_ScalarArgumentTypeMismatch) {
WrapInFunction(vec4<bool>(Source{{12, 34}}, true, false, 1_i, true));
EXPECT_FALSE(r()->Resolve());
EXPECT_THAT(
r()->error(),
- HasSubstr("12:34 error: no matching constructor for vec4<bool>(bool, bool, i32, bool)"));
+ HasSubstr("12:34 error: no matching initializer for vec4<bool>(bool, bool, i32, bool)"));
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec4_Error_TooFewArgumentsScalar) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec4_Error_TooFewArgumentsScalar) {
WrapInFunction(vec4<f32>(Source{{12, 34}}, 1_f, 2_f, 3_f));
EXPECT_FALSE(r()->Resolve());
EXPECT_THAT(r()->error(),
- HasSubstr("12:34 error: no matching constructor for vec4<f32>(f32, f32, f32)"));
+ HasSubstr("12:34 error: no matching initializer for vec4<f32>(f32, f32, f32)"));
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec4_Error_TooManyArgumentsScalar) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec4_Error_TooManyArgumentsScalar) {
WrapInFunction(vec4<f32>(Source{{12, 34}}, 1_f, 2_f, 3_f, 4_f, 5_f));
EXPECT_FALSE(r()->Resolve());
EXPECT_THAT(
r()->error(),
- HasSubstr("12:34 error: no matching constructor for vec4<f32>(f32, f32, f32, f32, f32)"));
+ HasSubstr("12:34 error: no matching initializer for vec4<f32>(f32, f32, f32, f32, f32)"));
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec4_Error_TooFewArgumentsVec2AndScalar) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec4_Error_TooFewArgumentsVec2AndScalar) {
WrapInFunction(vec4<f32>(Source{{12, 34}}, vec2<f32>(), 1_f));
EXPECT_FALSE(r()->Resolve());
EXPECT_THAT(r()->error(),
- HasSubstr("12:34 error: no matching constructor for vec4<f32>(vec2<f32>, f32)"));
+ HasSubstr("12:34 error: no matching initializer for vec4<f32>(vec2<f32>, f32)"));
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec4_Error_TooManyArgumentsVec2AndScalars) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec4_Error_TooManyArgumentsVec2AndScalars) {
WrapInFunction(vec4<f32>(Source{{12, 34}}, vec2<f32>(), 1_f, 2_f, 3_f));
EXPECT_FALSE(r()->Resolve());
EXPECT_THAT(
r()->error(),
- HasSubstr("12:34 error: no matching constructor for vec4<f32>(vec2<f32>, f32, f32, f32)"));
+ HasSubstr("12:34 error: no matching initializer for vec4<f32>(vec2<f32>, f32, f32, f32)"));
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec4_Error_TooManyArgumentsVec2Vec2Scalar) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec4_Error_TooManyArgumentsVec2Vec2Scalar) {
WrapInFunction(vec4<f32>(Source{{12, 34}}, vec2<f32>(), vec2<f32>(), 1_f));
EXPECT_FALSE(r()->Resolve());
EXPECT_THAT(
r()->error(),
- HasSubstr("12:34 error: no matching constructor for vec4<f32>(vec2<f32>, vec2<f32>, f32)"));
+ HasSubstr("12:34 error: no matching initializer for vec4<f32>(vec2<f32>, vec2<f32>, f32)"));
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec4_Error_TooManyArgumentsVec2Vec2Vec2) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec4_Error_TooManyArgumentsVec2Vec2Vec2) {
WrapInFunction(vec4<f32>(Source{{12, 34}}, vec2<f32>(), vec2<f32>(), vec2<f32>()));
EXPECT_FALSE(r()->Resolve());
EXPECT_THAT(
r()->error(),
HasSubstr(
- "12:34 error: no matching constructor for vec4<f32>(vec2<f32>, vec2<f32>, vec2<f32>)"));
+ "12:34 error: no matching initializer for vec4<f32>(vec2<f32>, vec2<f32>, vec2<f32>)"));
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec4_Error_TooFewArgumentsVec3) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec4_Error_TooFewArgumentsVec3) {
WrapInFunction(vec4<f32>(Source{{12, 34}}, vec3<f32>()));
EXPECT_FALSE(r()->Resolve());
EXPECT_THAT(r()->error(),
- HasSubstr("12:34 error: no matching constructor for vec4<f32>(vec3<f32>)"));
+ HasSubstr("12:34 error: no matching initializer for vec4<f32>(vec3<f32>)"));
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec4_Error_TooManyArgumentsVec3AndScalars) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec4_Error_TooManyArgumentsVec3AndScalars) {
WrapInFunction(vec4<f32>(Source{{12, 34}}, vec3<f32>(), 1_f, 2_f));
EXPECT_FALSE(r()->Resolve());
EXPECT_THAT(
r()->error(),
- HasSubstr("12:34 error: no matching constructor for vec4<f32>(vec3<f32>, f32, f32)"));
+ HasSubstr("12:34 error: no matching initializer for vec4<f32>(vec3<f32>, f32, f32)"));
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec4_Error_TooManyArgumentsVec3AndVec2) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec4_Error_TooManyArgumentsVec3AndVec2) {
WrapInFunction(vec4<f32>(Source{{12, 34}}, vec3<f32>(), vec2<f32>()));
EXPECT_FALSE(r()->Resolve());
EXPECT_THAT(
r()->error(),
- HasSubstr("12:34 error: no matching constructor for vec4<f32>(vec3<f32>, vec2<f32>)"));
+ HasSubstr("12:34 error: no matching initializer for vec4<f32>(vec3<f32>, vec2<f32>)"));
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec4_Error_TooManyArgumentsVec2AndVec3) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec4_Error_TooManyArgumentsVec2AndVec3) {
WrapInFunction(vec4<f32>(Source{{12, 34}}, vec2<f32>(), vec3<f32>()));
EXPECT_FALSE(r()->Resolve());
EXPECT_THAT(
r()->error(),
- HasSubstr("12:34 error: no matching constructor for vec4<f32>(vec2<f32>, vec3<f32>)"));
+ HasSubstr("12:34 error: no matching initializer for vec4<f32>(vec2<f32>, vec3<f32>)"));
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec4_Error_TooManyArgumentsVec3AndVec3) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec4_Error_TooManyArgumentsVec3AndVec3) {
WrapInFunction(vec4<f32>(Source{{12, 34}}, vec3<f32>(), vec3<f32>()));
EXPECT_FALSE(r()->Resolve());
EXPECT_THAT(
r()->error(),
- HasSubstr("12:34 error: no matching constructor for vec4<f32>(vec3<f32>, vec3<f32>)"));
+ HasSubstr("12:34 error: no matching initializer for vec4<f32>(vec3<f32>, vec3<f32>)"));
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec4_Error_InvalidArgumentType) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec4_Error_InvalidArgumentType) {
WrapInFunction(vec4<f32>(Source{{12, 34}}, mat2x2<f32>()));
EXPECT_FALSE(r()->Resolve());
EXPECT_THAT(r()->error(),
- HasSubstr("12:34 error: no matching constructor for vec4<f32>(mat2x2<f32>)"));
+ HasSubstr("12:34 error: no matching initializer for vec4<f32>(mat2x2<f32>)"));
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec4_Success_ZeroValue) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec4_Success_ZeroValue) {
auto* tc = vec4<f32>();
WrapInFunction(tc);
@@ -1786,7 +1786,7 @@
EXPECT_EQ(TypeOf(tc)->As<sem::Vector>()->Width(), 4u);
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec4F32_Success_Scalar) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec4F32_Success_Scalar) {
auto* tc = vec4<f32>(1_f, 1_f, 1_f, 1_f);
WrapInFunction(tc);
@@ -1798,7 +1798,7 @@
EXPECT_EQ(TypeOf(tc)->As<sem::Vector>()->Width(), 4u);
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec4F16_Success_Scalar) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec4F16_Success_Scalar) {
Enable(ast::Extension::kF16);
auto* tc = vec4<f16>(1_h, 1_h, 1_h, 1_h);
@@ -1812,7 +1812,7 @@
EXPECT_EQ(TypeOf(tc)->As<sem::Vector>()->Width(), 4u);
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec4U32_Success_Scalar) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec4U32_Success_Scalar) {
auto* tc = vec4<u32>(1_u, 1_u, 1_u, 1_u);
WrapInFunction(tc);
@@ -1824,7 +1824,7 @@
EXPECT_EQ(TypeOf(tc)->As<sem::Vector>()->Width(), 4u);
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec4I32_Success_Scalar) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec4I32_Success_Scalar) {
auto* tc = vec4<i32>(1_i, 1_i, 1_i, 1_i);
WrapInFunction(tc);
@@ -1836,7 +1836,7 @@
EXPECT_EQ(TypeOf(tc)->As<sem::Vector>()->Width(), 4u);
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec4Bool_Success_Scalar) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec4Bool_Success_Scalar) {
auto* tc = vec4<bool>(true, false, true, false);
WrapInFunction(tc);
@@ -1848,7 +1848,7 @@
EXPECT_EQ(TypeOf(tc)->As<sem::Vector>()->Width(), 4u);
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec4_Success_Vec2ScalarScalar) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec4_Success_Vec2ScalarScalar) {
auto* tc = vec4<f32>(vec2<f32>(), 1_f, 1_f);
WrapInFunction(tc);
@@ -1860,7 +1860,7 @@
EXPECT_EQ(TypeOf(tc)->As<sem::Vector>()->Width(), 4u);
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec4_Success_ScalarVec2Scalar) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec4_Success_ScalarVec2Scalar) {
auto* tc = vec4<f32>(1_f, vec2<f32>(), 1_f);
WrapInFunction(tc);
@@ -1872,7 +1872,7 @@
EXPECT_EQ(TypeOf(tc)->As<sem::Vector>()->Width(), 4u);
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec4_Success_ScalarScalarVec2) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec4_Success_ScalarScalarVec2) {
auto* tc = vec4<f32>(1_f, 1_f, vec2<f32>());
WrapInFunction(tc);
@@ -1884,7 +1884,7 @@
EXPECT_EQ(TypeOf(tc)->As<sem::Vector>()->Width(), 4u);
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec4_Success_Vec2AndVec2) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec4_Success_Vec2AndVec2) {
auto* tc = vec4<f32>(vec2<f32>(), vec2<f32>());
WrapInFunction(tc);
@@ -1896,7 +1896,7 @@
EXPECT_EQ(TypeOf(tc)->As<sem::Vector>()->Width(), 4u);
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec4_Success_Vec3AndScalar) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec4_Success_Vec3AndScalar) {
auto* tc = vec4<f32>(vec3<f32>(), 1_f);
WrapInFunction(tc);
@@ -1908,7 +1908,7 @@
EXPECT_EQ(TypeOf(tc)->As<sem::Vector>()->Width(), 4u);
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec4_Success_ScalarAndVec3) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec4_Success_ScalarAndVec3) {
auto* tc = vec4<f32>(1_f, vec3<f32>());
WrapInFunction(tc);
@@ -1920,7 +1920,7 @@
EXPECT_EQ(TypeOf(tc)->As<sem::Vector>()->Width(), 4u);
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec4_Success_Identity) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec4_Success_Identity) {
auto* tc = vec4<f32>(vec4<f32>());
WrapInFunction(tc);
@@ -1932,7 +1932,7 @@
EXPECT_EQ(TypeOf(tc)->As<sem::Vector>()->Width(), 4u);
}
-TEST_F(ResolverTypeConstructorValidationTest, Vec4_Success_Vec4TypeConversion) {
+TEST_F(ResolverTypeInitializerValidationTest, Vec4_Success_Vec4TypeConversion) {
auto* tc = vec4<f32>(vec4<i32>());
WrapInFunction(tc);
@@ -1944,17 +1944,17 @@
EXPECT_EQ(TypeOf(tc)->As<sem::Vector>()->Width(), 4u);
}
-TEST_F(ResolverTypeConstructorValidationTest, NestedVectorConstructors_InnerError) {
+TEST_F(ResolverTypeInitializerValidationTest, NestedVectorInitializers_InnerError) {
WrapInFunction(vec4<f32>(vec4<f32>(1_f, 1_f, //
vec3<f32>(Source{{12, 34}}, 1_f, 1_f)),
1_f));
EXPECT_FALSE(r()->Resolve());
EXPECT_THAT(r()->error(),
- HasSubstr("12:34 error: no matching constructor for vec3<f32>(f32, f32)"));
+ HasSubstr("12:34 error: no matching initializer for vec3<f32>(f32, f32)"));
}
-TEST_F(ResolverTypeConstructorValidationTest, NestedVectorConstructors_Success) {
+TEST_F(ResolverTypeInitializerValidationTest, NestedVectorInitializers_Success) {
auto* tc = vec4<f32>(vec3<f32>(vec2<f32>(1_f, 1_f), 1_f), 1_f);
WrapInFunction(tc);
@@ -1966,7 +1966,7 @@
EXPECT_EQ(TypeOf(tc)->As<sem::Vector>()->Width(), 4u);
}
-TEST_F(ResolverTypeConstructorValidationTest, Vector_Alias_Argument_Error) {
+TEST_F(ResolverTypeInitializerValidationTest, Vector_Alias_Argument_Error) {
auto* alias = Alias("UnsignedInt", ty.u32());
GlobalVar("uint_var", ty.Of(alias), ast::AddressSpace::kPrivate);
@@ -1974,10 +1974,10 @@
WrapInFunction(tc);
EXPECT_FALSE(r()->Resolve());
- EXPECT_THAT(r()->error(), HasSubstr("12:34 error: no matching constructor for vec2<f32>(u32)"));
+ EXPECT_THAT(r()->error(), HasSubstr("12:34 error: no matching initializer for vec2<f32>(u32)"));
}
-TEST_F(ResolverTypeConstructorValidationTest, Vector_Alias_Argument_Success) {
+TEST_F(ResolverTypeInitializerValidationTest, Vector_Alias_Argument_Success) {
auto* f32_alias = Alias("Float32", ty.f32());
auto* vec2_alias = Alias("VectorFloat2", ty.vec2<f32>());
GlobalVar("my_f32", ty.Of(f32_alias), ast::AddressSpace::kPrivate);
@@ -1988,7 +1988,7 @@
ASSERT_TRUE(r()->Resolve()) << r()->error();
}
-TEST_F(ResolverTypeConstructorValidationTest, Vector_ElementTypeAlias_Error) {
+TEST_F(ResolverTypeInitializerValidationTest, Vector_ElementTypeAlias_Error) {
auto* f32_alias = Alias("Float32", ty.f32());
// vec2<Float32>(1.0f, 1u)
@@ -1997,10 +1997,10 @@
EXPECT_FALSE(r()->Resolve());
EXPECT_THAT(r()->error(),
- HasSubstr("12:34 error: no matching constructor for vec2<f32>(f32, u32)"));
+ HasSubstr("12:34 error: no matching initializer for vec2<f32>(f32, u32)"));
}
-TEST_F(ResolverTypeConstructorValidationTest, Vector_ElementTypeAlias_Success) {
+TEST_F(ResolverTypeInitializerValidationTest, Vector_ElementTypeAlias_Success) {
auto* f32_alias = Alias("Float32", ty.f32());
// vec2<Float32>(1.0f, 1.0f)
@@ -2011,7 +2011,7 @@
ASSERT_TRUE(r()->Resolve()) << r()->error();
}
-TEST_F(ResolverTypeConstructorValidationTest, Vector_ArgumentElementTypeAlias_Error) {
+TEST_F(ResolverTypeInitializerValidationTest, Vector_ArgumentElementTypeAlias_Error) {
auto* f32_alias = Alias("Float32", ty.f32());
// vec3<u32>(vec<Float32>(), 1.0f)
@@ -2020,10 +2020,10 @@
EXPECT_FALSE(r()->Resolve());
EXPECT_THAT(r()->error(),
- HasSubstr("12:34 error: no matching constructor for vec3<u32>(vec2<f32>, f32)"));
+ HasSubstr("12:34 error: no matching initializer for vec3<u32>(vec2<f32>, f32)"));
}
-TEST_F(ResolverTypeConstructorValidationTest, Vector_ArgumentElementTypeAlias_Success) {
+TEST_F(ResolverTypeInitializerValidationTest, Vector_ArgumentElementTypeAlias_Success) {
auto* f32_alias = Alias("Float32", ty.f32());
// vec3<f32>(vec<Float32>(), 1.0f)
@@ -2034,7 +2034,7 @@
ASSERT_TRUE(r()->Resolve()) << r()->error();
}
-TEST_F(ResolverTypeConstructorValidationTest, InferVec2ElementTypeFromScalars) {
+TEST_F(ResolverTypeInitializerValidationTest, InferVec2ElementTypeFromScalars) {
Enable(ast::Extension::kF16);
auto* vec2_bool = Construct(create<ast::Vector>(nullptr, 2u), Expr(true), Expr(false));
@@ -2068,7 +2068,7 @@
EXPECT_EQ(TypeOf(vec2_f16), TypeOf(vec2_f16->target.type));
}
-TEST_F(ResolverTypeConstructorValidationTest, InferVec2ElementTypeFromVec2) {
+TEST_F(ResolverTypeInitializerValidationTest, InferVec2ElementTypeFromVec2) {
Enable(ast::Extension::kF16);
auto* vec2_bool = Construct(create<ast::Vector>(nullptr, 2u), vec2<bool>(true, false));
@@ -2102,7 +2102,7 @@
EXPECT_EQ(TypeOf(vec2_f16), TypeOf(vec2_f16->target.type));
}
-TEST_F(ResolverTypeConstructorValidationTest, InferVec3ElementTypeFromScalars) {
+TEST_F(ResolverTypeInitializerValidationTest, InferVec3ElementTypeFromScalars) {
Enable(ast::Extension::kF16);
auto* vec3_bool =
@@ -2137,7 +2137,7 @@
EXPECT_EQ(TypeOf(vec3_f16), TypeOf(vec3_f16->target.type));
}
-TEST_F(ResolverTypeConstructorValidationTest, InferVec3ElementTypeFromVec3) {
+TEST_F(ResolverTypeInitializerValidationTest, InferVec3ElementTypeFromVec3) {
Enable(ast::Extension::kF16);
auto* vec3_bool = Construct(create<ast::Vector>(nullptr, 3u), vec3<bool>(true, false, true));
@@ -2171,7 +2171,7 @@
EXPECT_EQ(TypeOf(vec3_f16), TypeOf(vec3_f16->target.type));
}
-TEST_F(ResolverTypeConstructorValidationTest, InferVec3ElementTypeFromScalarAndVec2) {
+TEST_F(ResolverTypeInitializerValidationTest, InferVec3ElementTypeFromScalarAndVec2) {
Enable(ast::Extension::kF16);
auto* vec3_bool =
@@ -2206,7 +2206,7 @@
EXPECT_EQ(TypeOf(vec3_f16), TypeOf(vec3_f16->target.type));
}
-TEST_F(ResolverTypeConstructorValidationTest, InferVec4ElementTypeFromScalars) {
+TEST_F(ResolverTypeInitializerValidationTest, InferVec4ElementTypeFromScalars) {
Enable(ast::Extension::kF16);
auto* vec4_bool = Construct(create<ast::Vector>(nullptr, 4u), Expr(true), Expr(false),
@@ -2245,7 +2245,7 @@
EXPECT_EQ(TypeOf(vec4_f16), TypeOf(vec4_f16->target.type));
}
-TEST_F(ResolverTypeConstructorValidationTest, InferVec4ElementTypeFromVec4) {
+TEST_F(ResolverTypeInitializerValidationTest, InferVec4ElementTypeFromVec4) {
Enable(ast::Extension::kF16);
auto* vec4_bool =
@@ -2280,7 +2280,7 @@
EXPECT_EQ(TypeOf(vec4_f16), TypeOf(vec4_f16->target.type));
}
-TEST_F(ResolverTypeConstructorValidationTest, InferVec4ElementTypeFromScalarAndVec3) {
+TEST_F(ResolverTypeInitializerValidationTest, InferVec4ElementTypeFromScalarAndVec3) {
Enable(ast::Extension::kF16);
auto* vec4_bool =
@@ -2319,7 +2319,7 @@
EXPECT_EQ(TypeOf(vec4_f16), TypeOf(vec4_f16->target.type));
}
-TEST_F(ResolverTypeConstructorValidationTest, InferVec4ElementTypeFromVec2AndVec2) {
+TEST_F(ResolverTypeInitializerValidationTest, InferVec4ElementTypeFromVec2AndVec2) {
Enable(ast::Extension::kF16);
auto* vec4_bool = Construct(create<ast::Vector>(nullptr, 4u), vec2<bool>(true, false),
@@ -2358,23 +2358,23 @@
EXPECT_EQ(TypeOf(vec4_f16), TypeOf(vec4_f16->target.type));
}
-TEST_F(ResolverTypeConstructorValidationTest, CannotInferVectorElementTypeWithoutArgs) {
+TEST_F(ResolverTypeInitializerValidationTest, CannotInferVectorElementTypeWithoutArgs) {
WrapInFunction(Construct(Source{{12, 34}}, create<ast::Vector>(nullptr, 3u)));
EXPECT_FALSE(r()->Resolve());
- EXPECT_THAT(r()->error(), HasSubstr("12:34 error: no matching constructor for vec3()"));
+ EXPECT_THAT(r()->error(), HasSubstr("12:34 error: no matching initializer for vec3()"));
}
-TEST_F(ResolverTypeConstructorValidationTest, CannotInferVec2ElementTypeFromScalarsMismatch) {
+TEST_F(ResolverTypeInitializerValidationTest, CannotInferVec2ElementTypeFromScalarsMismatch) {
WrapInFunction(Construct(Source{{1, 1}}, create<ast::Vector>(nullptr, 2u),
Expr(Source{{1, 2}}, 1_i), //
Expr(Source{{1, 3}}, 2_u)));
EXPECT_FALSE(r()->Resolve());
- EXPECT_THAT(r()->error(), HasSubstr("1:1 error: no matching constructor for vec2(i32, u32)"));
+ EXPECT_THAT(r()->error(), HasSubstr("1:1 error: no matching initializer for vec2(i32, u32)"));
}
-TEST_F(ResolverTypeConstructorValidationTest, CannotInferVec3ElementTypeFromScalarsMismatch) {
+TEST_F(ResolverTypeInitializerValidationTest, CannotInferVec3ElementTypeFromScalarsMismatch) {
WrapInFunction(Construct(Source{{1, 1}}, create<ast::Vector>(nullptr, 3u),
Expr(Source{{1, 2}}, 1_i), //
Expr(Source{{1, 3}}, 2_u), //
@@ -2382,20 +2382,20 @@
EXPECT_FALSE(r()->Resolve());
EXPECT_THAT(r()->error(),
- HasSubstr("1:1 error: no matching constructor for vec3(i32, u32, i32)"));
+ HasSubstr("1:1 error: no matching initializer for vec3(i32, u32, i32)"));
}
-TEST_F(ResolverTypeConstructorValidationTest, CannotInferVec3ElementTypeFromScalarAndVec2Mismatch) {
+TEST_F(ResolverTypeInitializerValidationTest, CannotInferVec3ElementTypeFromScalarAndVec2Mismatch) {
WrapInFunction(Construct(Source{{1, 1}}, create<ast::Vector>(nullptr, 3u),
Expr(Source{{1, 2}}, 1_i), //
Construct(Source{{1, 3}}, ty.vec2<f32>(), 2_f, 3_f)));
EXPECT_FALSE(r()->Resolve());
EXPECT_THAT(r()->error(),
- HasSubstr("1:1 error: no matching constructor for vec3(i32, vec2<f32>)"));
+ HasSubstr("1:1 error: no matching initializer for vec3(i32, vec2<f32>)"));
}
-TEST_F(ResolverTypeConstructorValidationTest, CannotInferVec4ElementTypeFromScalarsMismatch) {
+TEST_F(ResolverTypeInitializerValidationTest, CannotInferVec4ElementTypeFromScalarsMismatch) {
WrapInFunction(Construct(Source{{1, 1}}, create<ast::Vector>(nullptr, 4u),
Expr(Source{{1, 2}}, 1_i), //
Expr(Source{{1, 3}}, 2_i), //
@@ -2404,32 +2404,32 @@
EXPECT_FALSE(r()->Resolve());
EXPECT_THAT(r()->error(),
- HasSubstr("1:1 error: no matching constructor for vec4(i32, i32, f32, i32)"));
+ HasSubstr("1:1 error: no matching initializer for vec4(i32, i32, f32, i32)"));
}
-TEST_F(ResolverTypeConstructorValidationTest, CannotInferVec4ElementTypeFromScalarAndVec3Mismatch) {
+TEST_F(ResolverTypeInitializerValidationTest, CannotInferVec4ElementTypeFromScalarAndVec3Mismatch) {
WrapInFunction(Construct(Source{{1, 1}}, create<ast::Vector>(nullptr, 4u),
Expr(Source{{1, 2}}, 1_i), //
Construct(Source{{1, 3}}, ty.vec3<u32>(), 2_u, 3_u, 4_u)));
EXPECT_FALSE(r()->Resolve());
EXPECT_THAT(r()->error(),
- HasSubstr("1:1 error: no matching constructor for vec4(i32, vec3<u32>)"));
+ HasSubstr("1:1 error: no matching initializer for vec4(i32, vec3<u32>)"));
}
-TEST_F(ResolverTypeConstructorValidationTest, CannotInferVec4ElementTypeFromVec2AndVec2Mismatch) {
+TEST_F(ResolverTypeInitializerValidationTest, CannotInferVec4ElementTypeFromVec2AndVec2Mismatch) {
WrapInFunction(Construct(Source{{1, 1}}, create<ast::Vector>(nullptr, 4u),
Construct(Source{{1, 2}}, ty.vec2<i32>(), 3_i, 4_i), //
Construct(Source{{1, 3}}, ty.vec2<u32>(), 3_u, 4_u)));
EXPECT_FALSE(r()->Resolve());
EXPECT_THAT(r()->error(),
- HasSubstr("1:1 error: no matching constructor for vec4(vec2<i32>, vec2<u32>)"));
+ HasSubstr("1:1 error: no matching initializer for vec4(vec2<i32>, vec2<u32>)"));
}
-} // namespace VectorConstructor
+} // namespace VectorInitializer
-namespace MatrixConstructor {
+namespace MatrixInitializer {
struct MatrixParams {
using name_func_ptr = std::string (*)();
@@ -2461,9 +2461,9 @@
param.get_element_type_name() + ">";
}
-using MatrixConstructorTest = ResolverTestWithParam<MatrixParams>;
+using MatrixInitializerTest = ResolverTestWithParam<MatrixParams>;
-TEST_P(MatrixConstructorTest, ColumnConstructor_Error_TooFewArguments) {
+TEST_P(MatrixInitializerTest, ColumnInitializer_Error_TooFewArguments) {
// matNxM<f32>(vecM<f32>(), ...); with N - 1 arguments
// matNxM<f16>(vecM<f16>(), ...); with N - 1 arguments
@@ -2488,11 +2488,11 @@
WrapInFunction(tc);
EXPECT_FALSE(r()->Resolve());
- EXPECT_THAT(r()->error(), HasSubstr("12:34 error: no matching constructor for " +
+ EXPECT_THAT(r()->error(), HasSubstr("12:34 error: no matching initializer for " +
MatrixStr(param) + "(" + args_tys.str() + ")"));
}
-TEST_P(MatrixConstructorTest, ElementConstructor_Error_TooFewArguments) {
+TEST_P(MatrixInitializerTest, ElementInitializer_Error_TooFewArguments) {
// matNxM<f32>(f32,...,f32); with N*M - 1 arguments
// matNxM<f16>(f16,...,f16); with N*M - 1 arguments
@@ -2516,11 +2516,11 @@
WrapInFunction(tc);
EXPECT_FALSE(r()->Resolve());
- EXPECT_THAT(r()->error(), HasSubstr("12:34 error: no matching constructor for " +
+ EXPECT_THAT(r()->error(), HasSubstr("12:34 error: no matching initializer for " +
MatrixStr(param) + "(" + args_tys.str() + ")"));
}
-TEST_P(MatrixConstructorTest, ColumnConstructor_Error_TooManyArguments) {
+TEST_P(MatrixInitializerTest, ColumnInitializer_Error_TooManyArguments) {
// matNxM<f32>(vecM<f32>(), ...); with N + 1 arguments
// matNxM<f16>(vecM<f16>(), ...); with N + 1 arguments
@@ -2545,11 +2545,11 @@
WrapInFunction(tc);
EXPECT_FALSE(r()->Resolve());
- EXPECT_THAT(r()->error(), HasSubstr("12:34 error: no matching constructor for " +
+ EXPECT_THAT(r()->error(), HasSubstr("12:34 error: no matching initializer for " +
MatrixStr(param) + "(" + args_tys.str() + ")"));
}
-TEST_P(MatrixConstructorTest, ElementConstructor_Error_TooManyArguments) {
+TEST_P(MatrixInitializerTest, ElementInitializer_Error_TooManyArguments) {
// matNxM<f32>(f32,...,f32); with N*M + 1 arguments
// matNxM<f16>(f16,...,f16); with N*M + 1 arguments
@@ -2573,11 +2573,11 @@
WrapInFunction(tc);
EXPECT_FALSE(r()->Resolve());
- EXPECT_THAT(r()->error(), HasSubstr("12:34 error: no matching constructor for " +
+ EXPECT_THAT(r()->error(), HasSubstr("12:34 error: no matching initializer for " +
MatrixStr(param) + "(" + args_tys.str() + ")"));
}
-TEST_P(MatrixConstructorTest, ColumnConstructor_Error_InvalidArgumentType) {
+TEST_P(MatrixInitializerTest, ColumnInitializer_Error_InvalidArgumentType) {
// matNxM<f32>(vec<u32>, vec<u32>, ...); N arguments
// matNxM<f16>(vec<u32>, vec<u32>, ...); N arguments
@@ -2601,11 +2601,11 @@
WrapInFunction(tc);
EXPECT_FALSE(r()->Resolve());
- EXPECT_THAT(r()->error(), HasSubstr("12:34 error: no matching constructor for " +
+ EXPECT_THAT(r()->error(), HasSubstr("12:34 error: no matching initializer for " +
MatrixStr(param) + "(" + args_tys.str() + ")"));
}
-TEST_P(MatrixConstructorTest, ElementConstructor_Error_InvalidArgumentType) {
+TEST_P(MatrixInitializerTest, ElementInitializer_Error_InvalidArgumentType) {
// matNxM<f32>(u32, u32, ...); N*M arguments
// matNxM<f16>(u32, u32, ...); N*M arguments
@@ -2628,11 +2628,11 @@
WrapInFunction(tc);
EXPECT_FALSE(r()->Resolve());
- EXPECT_THAT(r()->error(), HasSubstr("12:34 error: no matching constructor for " +
+ EXPECT_THAT(r()->error(), HasSubstr("12:34 error: no matching initializer for " +
MatrixStr(param) + "(" + args_tys.str() + ")"));
}
-TEST_P(MatrixConstructorTest, ColumnConstructor_Error_TooFewRowsInVectorArgument) {
+TEST_P(MatrixInitializerTest, ColumnInitializer_Error_TooFewRowsInVectorArgument) {
// matNxM<f32>(vecM<f32>(),...,vecM-1<f32>());
// matNxM<f16>(vecM<f16>(),...,vecM-1<f32>());
@@ -2666,11 +2666,11 @@
WrapInFunction(tc);
EXPECT_FALSE(r()->Resolve());
- EXPECT_THAT(r()->error(), HasSubstr("12:34 error: no matching constructor for " +
+ EXPECT_THAT(r()->error(), HasSubstr("12:34 error: no matching initializer for " +
MatrixStr(param) + "(" + args_tys.str() + ")"));
}
-TEST_P(MatrixConstructorTest, ColumnConstructor_Error_TooManyRowsInVectorArgument) {
+TEST_P(MatrixInitializerTest, ColumnInitializer_Error_TooManyRowsInVectorArgument) {
// matNxM<f32>(vecM<f32>(),...,vecM+1<f32>());
// matNxM<f16>(vecM<f16>(),...,vecM+1<f16>());
@@ -2703,11 +2703,11 @@
WrapInFunction(tc);
EXPECT_FALSE(r()->Resolve());
- EXPECT_THAT(r()->error(), HasSubstr("12:34 error: no matching constructor for " +
+ EXPECT_THAT(r()->error(), HasSubstr("12:34 error: no matching initializer for " +
MatrixStr(param) + "(" + args_tys.str() + ")"));
}
-TEST_P(MatrixConstructorTest, ZeroValue_Success) {
+TEST_P(MatrixInitializerTest, ZeroValue_Success) {
// matNxM<f32>();
// matNxM<f16>();
@@ -2722,7 +2722,7 @@
ASSERT_TRUE(r()->Resolve()) << r()->error();
}
-TEST_P(MatrixConstructorTest, WithColumns_Success) {
+TEST_P(MatrixInitializerTest, WithColumns_Success) {
// matNxM<f32>(vecM<f32>(), ...); with N arguments
// matNxM<f16>(vecM<f16>(), ...); with N arguments
@@ -2743,7 +2743,7 @@
ASSERT_TRUE(r()->Resolve()) << r()->error();
}
-TEST_P(MatrixConstructorTest, WithElements_Success) {
+TEST_P(MatrixInitializerTest, WithElements_Success) {
// matNxM<f32>(f32,...,f32); with N*M arguments
// matNxM<f16>(f16,...,f16); with N*M arguments
@@ -2763,7 +2763,7 @@
ASSERT_TRUE(r()->Resolve()) << r()->error();
}
-TEST_P(MatrixConstructorTest, ElementTypeAlias_Error) {
+TEST_P(MatrixInitializerTest, ElementTypeAlias_Error) {
// matNxM<Float32>(vecM<u32>(), ...); with N arguments
// matNxM<Float16>(vecM<u32>(), ...); with N arguments
@@ -2789,11 +2789,11 @@
WrapInFunction(tc);
EXPECT_FALSE(r()->Resolve());
- EXPECT_THAT(r()->error(), HasSubstr("12:34 error: no matching constructor for " +
+ EXPECT_THAT(r()->error(), HasSubstr("12:34 error: no matching initializer for " +
MatrixStr(param) + "(" + args_tys.str() + ")"));
}
-TEST_P(MatrixConstructorTest, ElementTypeAlias_Success) {
+TEST_P(MatrixInitializerTest, ElementTypeAlias_Success) {
// matNxM<Float32>(vecM<f32>(), ...); with N arguments
// matNxM<Float16>(vecM<f16>(), ...); with N arguments
@@ -2816,7 +2816,7 @@
ASSERT_TRUE(r()->Resolve()) << r()->error();
}
-TEST_F(ResolverTypeConstructorValidationTest, MatrixConstructor_ArgumentTypeAlias_Error) {
+TEST_F(ResolverTypeInitializerValidationTest, MatrixInitializer_ArgumentTypeAlias_Error) {
auto* alias = Alias("VectorUnsigned2", ty.vec2<u32>());
auto* tc = Construct(Source{{12, 34}}, ty.mat2x2<f32>(), Construct(ty.Of(alias)), vec2<f32>());
WrapInFunction(tc);
@@ -2824,10 +2824,10 @@
EXPECT_FALSE(r()->Resolve());
EXPECT_THAT(
r()->error(),
- HasSubstr("12:34 error: no matching constructor for mat2x2<f32>(vec2<u32>, vec2<f32>)"));
+ HasSubstr("12:34 error: no matching initializer for mat2x2<f32>(vec2<u32>, vec2<f32>)"));
}
-TEST_P(MatrixConstructorTest, ArgumentTypeAlias_Success) {
+TEST_P(MatrixInitializerTest, ArgumentTypeAlias_Success) {
const auto param = GetParam();
Enable(ast::Extension::kF16);
@@ -2847,7 +2847,7 @@
ASSERT_TRUE(r()->Resolve()) << r()->error();
}
-TEST_P(MatrixConstructorTest, ArgumentElementTypeAlias_Error) {
+TEST_P(MatrixInitializerTest, ArgumentElementTypeAlias_Error) {
const auto param = GetParam();
Enable(ast::Extension::kF16);
@@ -2870,11 +2870,11 @@
WrapInFunction(tc);
EXPECT_FALSE(r()->Resolve());
- EXPECT_THAT(r()->error(), HasSubstr("12:34 error: no matching constructor for " +
+ EXPECT_THAT(r()->error(), HasSubstr("12:34 error: no matching initializer for " +
MatrixStr(param) + "(" + args_tys.str() + ")"));
}
-TEST_P(MatrixConstructorTest, ArgumentElementTypeAlias_Success) {
+TEST_P(MatrixInitializerTest, ArgumentElementTypeAlias_Success) {
const auto param = GetParam();
Enable(ast::Extension::kF16);
@@ -2894,7 +2894,7 @@
ASSERT_TRUE(r()->Resolve()) << r()->error();
}
-TEST_P(MatrixConstructorTest, InferElementTypeFromVectors) {
+TEST_P(MatrixInitializerTest, InferElementTypeFromVectors) {
const auto param = GetParam();
Enable(ast::Extension::kF16);
@@ -2911,7 +2911,7 @@
ASSERT_TRUE(r()->Resolve()) << r()->error();
}
-TEST_P(MatrixConstructorTest, InferElementTypeFromScalars) {
+TEST_P(MatrixInitializerTest, InferElementTypeFromScalars) {
const auto param = GetParam();
Enable(ast::Extension::kF16);
@@ -2927,13 +2927,13 @@
ASSERT_TRUE(r()->Resolve()) << r()->error();
}
-TEST_P(MatrixConstructorTest, CannotInferElementTypeFromVectors_Mismatch) {
+TEST_P(MatrixInitializerTest, CannotInferElementTypeFromVectors_Mismatch) {
const auto param = GetParam();
Enable(ast::Extension::kF16);
std::stringstream err;
- err << "12:34 error: no matching constructor for mat" << param.columns << "x" << param.rows
+ err << "12:34 error: no matching initializer for mat" << param.columns << "x" << param.rows
<< "(";
utils::Vector<const ast::Expression*, 8> args;
@@ -2958,13 +2958,13 @@
EXPECT_THAT(r()->error(), HasSubstr(err.str()));
}
-TEST_P(MatrixConstructorTest, CannotInferElementTypeFromScalars_Mismatch) {
+TEST_P(MatrixInitializerTest, CannotInferElementTypeFromScalars_Mismatch) {
const auto param = GetParam();
Enable(ast::Extension::kF16);
std::stringstream err;
- err << "12:34 error: no matching constructor for mat" << param.columns << "x" << param.rows
+ err << "12:34 error: no matching initializer for mat" << param.columns << "x" << param.rows
<< "(";
utils::Vector<const ast::Expression*, 16> args;
@@ -2990,8 +2990,8 @@
EXPECT_THAT(r()->error(), HasSubstr(err.str()));
}
-INSTANTIATE_TEST_SUITE_P(ResolverTypeConstructorValidationTest,
- MatrixConstructorTest,
+INSTANTIATE_TEST_SUITE_P(ResolverTypeInitializerValidationTest,
+ MatrixInitializerTest,
testing::Values(MatrixParamsFor<f32, 2, 2>(),
MatrixParamsFor<f32, 3, 2>(),
MatrixParamsFor<f32, 4, 2>(),
@@ -3010,9 +3010,9 @@
MatrixParamsFor<f16, 2, 4>(),
MatrixParamsFor<f16, 3, 4>(),
MatrixParamsFor<f16, 4, 4>()));
-} // namespace MatrixConstructor
+} // namespace MatrixInitializer
-namespace StructConstructor {
+namespace StructInitializer {
using builder::CreatePtrs;
using builder::CreatePtrsFor;
using builder::mat2x2;
@@ -3043,10 +3043,10 @@
auto number_of_members = testing::Values(2u, 32u, 64u);
-using StructConstructorInputsTest =
+using StructInitializerInputsTest =
ResolverTestWithParam<std::tuple<CreatePtrs, // struct member type
uint32_t>>; // number of struct members
-TEST_P(StructConstructorInputsTest, TooFew) {
+TEST_P(StructInitializerInputsTest, TooFew) {
auto& param = GetParam();
auto& str_params = std::get<0>(param);
uint32_t N = std::get<1>(param);
@@ -3067,11 +3067,11 @@
auto* tc = Construct(Source{{12, 34}}, ty.Of(s), values);
WrapInFunction(tc);
EXPECT_FALSE(r()->Resolve());
- EXPECT_EQ(r()->error(), "12:34 error: struct constructor has too few inputs: expected " +
+ EXPECT_EQ(r()->error(), "12:34 error: struct initializer has too few inputs: expected " +
std::to_string(N) + ", found " + std::to_string(N - 1));
}
-TEST_P(StructConstructorInputsTest, TooMany) {
+TEST_P(StructInitializerInputsTest, TooMany) {
auto& param = GetParam();
auto& str_params = std::get<0>(param);
uint32_t N = std::get<1>(param);
@@ -3092,18 +3092,18 @@
auto* tc = Construct(Source{{12, 34}}, ty.Of(s), values);
WrapInFunction(tc);
EXPECT_FALSE(r()->Resolve());
- EXPECT_EQ(r()->error(), "12:34 error: struct constructor has too many inputs: expected " +
+ EXPECT_EQ(r()->error(), "12:34 error: struct initializer has too many inputs: expected " +
std::to_string(N) + ", found " + std::to_string(N + 1));
}
-INSTANTIATE_TEST_SUITE_P(ResolverTypeConstructorValidationTest,
- StructConstructorInputsTest,
+INSTANTIATE_TEST_SUITE_P(ResolverTypeInitializerValidationTest,
+ StructInitializerInputsTest,
testing::Combine(testing::ValuesIn(all_types), number_of_members));
-using StructConstructorTypeTest =
+using StructInitializerTypeTest =
ResolverTestWithParam<std::tuple<CreatePtrs, // struct member type
- CreatePtrs, // constructor value type
+ CreatePtrs, // initializer value type
uint32_t>>; // number of struct members
-TEST_P(StructConstructorTypeTest, AllTypes) {
+TEST_P(StructInitializerTypeTest, AllTypes) {
auto& param = GetParam();
auto& str_params = std::get<0>(param);
auto& ctor_params = std::get<1>(param);
@@ -3117,12 +3117,12 @@
utils::Vector<const ast::StructMember*, 16> members;
utils::Vector<const ast::Expression*, 8> values;
- // make the last value of the constructor to have a different type
- uint32_t constructor_value_with_different_type = N - 1;
+ // make the last value of the initializer to have a different type
+ uint32_t initializer_value_with_different_type = N - 1;
for (uint32_t i = 0; i < N; i++) {
auto* struct_type = str_params.ast(*this);
members.Push(Member("member_" + std::to_string(i), struct_type));
- auto* ctor_value_expr = (i == constructor_value_with_different_type)
+ auto* ctor_value_expr = (i == initializer_value_with_different_type)
? ctor_params.expr_from_double(*this, 0)
: str_params.expr_from_double(*this, 0);
values.Push(ctor_value_expr);
@@ -3134,19 +3134,19 @@
std::string found = FriendlyName(ctor_params.ast(*this));
std::string expected = FriendlyName(str_params.ast(*this));
std::stringstream err;
- err << "error: type in struct constructor does not match struct member ";
+ err << "error: type in struct initializer does not match struct member ";
err << "type: expected '" << expected << "', found '" << found << "'";
EXPECT_FALSE(r()->Resolve());
EXPECT_EQ(r()->error(), err.str());
}
-INSTANTIATE_TEST_SUITE_P(ResolverTypeConstructorValidationTest,
- StructConstructorTypeTest,
+INSTANTIATE_TEST_SUITE_P(ResolverTypeInitializerValidationTest,
+ StructInitializerTypeTest,
testing::Combine(testing::ValuesIn(all_types),
testing::ValuesIn(all_types),
number_of_members));
-TEST_F(ResolverTypeConstructorValidationTest, Struct_Nested) {
+TEST_F(ResolverTypeInitializerValidationTest, Struct_Nested) {
auto* inner_m = Member("m", ty.i32());
auto* inner_s = Structure("inner_s", utils::Vector{inner_m});
@@ -3159,11 +3159,11 @@
WrapInFunction(tc);
EXPECT_FALSE(r()->Resolve());
EXPECT_EQ(r()->error(),
- "error: type in struct constructor does not match struct member "
+ "error: type in struct initializer does not match struct member "
"type: expected 'inner_s', found 'i32'");
}
-TEST_F(ResolverTypeConstructorValidationTest, Struct) {
+TEST_F(ResolverTypeInitializerValidationTest, Struct) {
auto* m = Member("m", ty.i32());
auto* s = Structure("MyInputs", utils::Vector{m});
auto* tc = Construct(Source{{12, 34}}, ty.Of(s));
@@ -3171,7 +3171,7 @@
ASSERT_TRUE(r()->Resolve()) << r()->error();
}
-TEST_F(ResolverTypeConstructorValidationTest, Struct_Empty) {
+TEST_F(ResolverTypeInitializerValidationTest, Struct_Empty) {
auto* str = Structure("S", utils::Vector{
Member("a", ty.i32()),
Member("b", ty.f32()),
@@ -3181,32 +3181,32 @@
WrapInFunction(Construct(ty.Of(str)));
ASSERT_TRUE(r()->Resolve()) << r()->error();
}
-} // namespace StructConstructor
+} // namespace StructInitializer
-TEST_F(ResolverTypeConstructorValidationTest, NonConstructibleType_Atomic) {
+TEST_F(ResolverTypeInitializerValidationTest, NonConstructibleType_Atomic) {
WrapInFunction(Assign(Phony(), Construct(Source{{12, 34}}, ty.atomic(ty.i32()))));
EXPECT_FALSE(r()->Resolve());
EXPECT_EQ(r()->error(), "12:34 error: type is not constructible");
}
-TEST_F(ResolverTypeConstructorValidationTest, NonConstructibleType_AtomicArray) {
+TEST_F(ResolverTypeInitializerValidationTest, NonConstructibleType_AtomicArray) {
WrapInFunction(
Assign(Phony(), Construct(Source{{12, 34}}, ty.array(ty.atomic(ty.i32()), 4_i))));
EXPECT_FALSE(r()->Resolve());
- EXPECT_EQ(r()->error(), "12:34 error: array constructor has non-constructible element type");
+ EXPECT_EQ(r()->error(), "12:34 error: array initializer has non-constructible element type");
}
-TEST_F(ResolverTypeConstructorValidationTest, NonConstructibleType_AtomicStructMember) {
+TEST_F(ResolverTypeInitializerValidationTest, NonConstructibleType_AtomicStructMember) {
auto* str = Structure("S", utils::Vector{Member("a", ty.atomic(ty.i32()))});
WrapInFunction(Assign(Phony(), Construct(Source{{12, 34}}, ty.Of(str))));
EXPECT_FALSE(r()->Resolve());
- EXPECT_EQ(r()->error(), "12:34 error: struct constructor has non-constructible type");
+ EXPECT_EQ(r()->error(), "12:34 error: struct initializer has non-constructible type");
}
-TEST_F(ResolverTypeConstructorValidationTest, NonConstructibleType_Sampler) {
+TEST_F(ResolverTypeInitializerValidationTest, NonConstructibleType_Sampler) {
WrapInFunction(
Assign(Phony(), Construct(Source{{12, 34}}, ty.sampler(ast::SamplerKind::kSampler))));
@@ -3214,14 +3214,14 @@
EXPECT_EQ(r()->error(), "12:34 error: type is not constructible");
}
-TEST_F(ResolverTypeConstructorValidationTest, TypeConstructorAsStatement) {
+TEST_F(ResolverTypeInitializerValidationTest, TypeInitializerAsStatement) {
WrapInFunction(CallStmt(vec2<f32>(Source{{12, 34}}, 1_f, 2_f)));
EXPECT_FALSE(r()->Resolve());
- EXPECT_EQ(r()->error(), "12:34 error: type constructor evaluated but not used");
+ EXPECT_EQ(r()->error(), "12:34 error: type initializer evaluated but not used");
}
-TEST_F(ResolverTypeConstructorValidationTest, TypeConversionAsStatement) {
+TEST_F(ResolverTypeInitializerValidationTest, TypeConversionAsStatement) {
WrapInFunction(CallStmt(Construct(Source{{12, 34}}, ty.f32(), 1_i)));
EXPECT_FALSE(r()->Resolve());
diff --git a/src/tint/resolver/type_validation_test.cc b/src/tint/resolver/type_validation_test.cc
index 7cc5cef..d2587c5 100644
--- a/src/tint/resolver/type_validation_test.cc
+++ b/src/tint/resolver/type_validation_test.cc
@@ -55,7 +55,7 @@
class ResolverTypeValidationTest : public resolver::TestHelper, public testing::Test {};
-TEST_F(ResolverTypeValidationTest, VariableDeclNoConstructor_Pass) {
+TEST_F(ResolverTypeValidationTest, VariableDeclNoInitializer_Pass) {
// {
// var a :i32;
// a = 2;
@@ -73,7 +73,7 @@
ASSERT_NE(TypeOf(rhs), nullptr);
}
-TEST_F(ResolverTypeValidationTest, GlobalOverrideNoConstructor_Pass) {
+TEST_F(ResolverTypeValidationTest, GlobalOverrideNoInitializer_Pass) {
// @id(0) override a :i32;
Override(Source{{12, 34}}, "a", ty.i32(), Id(0_u));
diff --git a/src/tint/resolver/uniformity.cc b/src/tint/resolver/uniformity.cc
index 84c42da..e8f1bb9 100644
--- a/src/tint/resolver/uniformity.cc
+++ b/src/tint/resolver/uniformity.cc
@@ -32,8 +32,8 @@
#include "src/tint/sem/loop_statement.h"
#include "src/tint/sem/statement.h"
#include "src/tint/sem/switch_statement.h"
-#include "src/tint/sem/type_constructor.h"
#include "src/tint/sem/type_conversion.h"
+#include "src/tint/sem/type_initializer.h"
#include "src/tint/sem/variable.h"
#include "src/tint/sem/while_statement.h"
#include "src/tint/utils/block_allocator.h"
@@ -537,6 +537,51 @@
return cf;
},
+ [&](const ast::BreakIfStatement* b) {
+ // This works very similar to the IfStatement uniformity below, execpt instead of
+ // processing the body, we directly inline the BreakStatement uniformity from
+ // above.
+
+ auto [_, v_cond] = ProcessExpression(cf, b->condition);
+
+ // Add a diagnostic node to capture the control flow change.
+ auto* v = current_function_->CreateNode("break_if_stmt", b);
+ v->affects_control_flow = true;
+ v->AddEdge(v_cond);
+
+ {
+ auto* parent = sem_.Get(b)->FindFirstParent<sem::LoopStatement>();
+ TINT_ASSERT(Resolver, current_function_->loop_switch_infos.count(parent));
+ auto& info = current_function_->loop_switch_infos.at(parent);
+
+ // Propagate variable values to the loop exit nodes.
+ for (auto* var : current_function_->local_var_decls) {
+ // Skip variables that were declared inside this loop.
+ if (auto* lv = var->As<sem::LocalVariable>();
+ lv && lv->Statement()->FindFirstParent(
+ [&](auto* s) { return s == parent; })) {
+ continue;
+ }
+
+ // Add an edge from the variable exit node to its value at this point.
+ auto* exit_node = utils::GetOrCreate(info.var_exit_nodes, var, [&]() {
+ auto name = builder_->Symbols().NameFor(var->Declaration()->symbol);
+ return CreateNode(name + "_value_" + info.type + "_exit");
+ });
+
+ exit_node->AddEdge(current_function_->variables.Get(var));
+ }
+ }
+
+ auto* sem_break_if = sem_.Get(b);
+ if (sem_break_if->Behaviors() != sem::Behaviors{sem::Behavior::kNext}) {
+ auto* cf_end = CreateNode("break_if_CFend");
+ cf_end->AddEdge(v);
+ return cf_end;
+ }
+ return cf;
+ },
+
[&](const ast::CallStatement* c) {
auto [cf1, _] = ProcessCall(cf, c->expr);
return cf1;
@@ -831,7 +876,7 @@
// Create input nodes for any variables declared before this loop.
for (auto* v : current_function_->local_var_decls) {
auto name = builder_->Symbols().NameFor(v->Declaration()->symbol);
- auto* in_node = CreateNode(name + "_value_loop_in");
+ auto* in_node = CreateNode(name + "_value_loop_in", v->Declaration());
in_node->AddEdge(current_function_->variables.Get(v));
info.var_in_nodes[v] = in_node;
current_function_->variables.Set(v, in_node);
@@ -965,14 +1010,14 @@
[&](const ast::VariableDeclStatement* decl) {
Node* node;
auto* sem_var = sem_.Get(decl->variable);
- if (decl->variable->constructor) {
- auto [cf1, v] = ProcessExpression(cf, decl->variable->constructor);
+ if (decl->variable->initializer) {
+ auto [cf1, v] = ProcessExpression(cf, decl->variable->initializer);
cf = cf1;
node = v;
// Store if lhs is a partial pointer
if (sem_var->Type()->Is<sem::Pointer>()) {
- auto* init = sem_.Get(decl->variable->constructor);
+ auto* init = sem_.Get(decl->variable->initializer);
if (auto* unary_init = init->Declaration()->As<ast::UnaryOpExpression>()) {
auto* e = UnwrapIndirectAndAddressOfChain(unary_init);
if (e->IsAnyOf<ast::IndexAccessorExpression,
@@ -1111,7 +1156,7 @@
} else {
auto [cf1, v1] = ProcessExpression(cf, b->lhs);
auto [cf2, v2] = ProcessExpression(cf1, b->rhs);
- auto* result = CreateNode("binary_expr_result");
+ auto* result = CreateNode("binary_expr_result", b);
result->AddEdge(v1);
result->AddEdge(v2);
return std::pair<Node*, Node*>(cf2, result);
@@ -1333,7 +1378,7 @@
function_tag = info.function_tag;
func_info = &info;
},
- [&](const sem::TypeConstructor*) {
+ [&](const sem::TypeInitializer*) {
callsite_tag = CallSiteNoRestriction;
function_tag = NoRestriction;
},
@@ -1404,7 +1449,7 @@
}
} else {
// All builtin function parameters are RequiredToBeUniformForReturnValue, as are
- // parameters for type constructors and type conversions.
+ // parameters for type initializers and type conversions.
// The arrayLength() builtin is a special case, as there is currently no way for it
// to have a non-uniform return value.
auto* builtin = sem->Target()->As<sem::Builtin>();
@@ -1527,40 +1572,49 @@
// the actual cause of divergence.
}
+ auto get_var_type = [&](const sem::Variable* var) {
+ switch (var->AddressSpace()) {
+ case ast::AddressSpace::kStorage:
+ return "read_write storage buffer ";
+ case ast::AddressSpace::kWorkgroup:
+ return "workgroup storage variable ";
+ case ast::AddressSpace::kPrivate:
+ return "module-scope private variable ";
+ default:
+ if (ast::HasAttribute<ast::BuiltinAttribute>(var->Declaration()->attributes)) {
+ return "builtin ";
+ } else if (ast::HasAttribute<ast::LocationAttribute>(
+ var->Declaration()->attributes)) {
+ return "user-defined input ";
+ } else {
+ // TODO(jrprice): Provide more info for this case.
+ }
+ break;
+ }
+ return "";
+ };
+
// Show the source of the non-uniform value.
Switch(
non_uniform_source->ast,
[&](const ast::IdentifierExpression* ident) {
- std::string var_type = "";
auto* var = sem_.Get<sem::VariableUser>(ident)->Variable();
- switch (var->AddressSpace()) {
- case ast::AddressSpace::kStorage:
- var_type = "read_write storage buffer ";
- break;
- case ast::AddressSpace::kWorkgroup:
- var_type = "workgroup storage variable ";
- break;
- case ast::AddressSpace::kPrivate:
- var_type = "module-scope private variable ";
- break;
- default:
- if (ast::HasAttribute<ast::BuiltinAttribute>(
- var->Declaration()->attributes)) {
- var_type = "builtin ";
- } else if (ast::HasAttribute<ast::LocationAttribute>(
- var->Declaration()->attributes)) {
- var_type = "user-defined input ";
- } else {
- // TODO(jrprice): Provide more info for this case.
- }
- break;
- }
+ std::string var_type = get_var_type(var);
diagnostics_.add_note(diag::System::Resolver,
"reading from " + var_type + "'" +
builder_->Symbols().NameFor(ident->symbol) +
"' may result in a non-uniform value",
ident->source);
},
+ [&](const ast::Variable* v) {
+ auto* var = sem_.Get(v);
+ std::string var_type = get_var_type(var);
+ diagnostics_.add_note(diag::System::Resolver,
+ "reading from " + var_type + "'" +
+ builder_->Symbols().NameFor(v->symbol) +
+ "' may result in a non-uniform value",
+ v->source);
+ },
[&](const ast::CallExpression* c) {
auto target_name = builder_->Symbols().NameFor(
c->target.name->As<ast::IdentifierExpression>()->symbol);
@@ -1600,6 +1654,10 @@
}
}
},
+ [&](const ast::Expression* e) {
+ diagnostics_.add_note(diag::System::Resolver,
+ "result of expression may be non-uniform", e->source);
+ },
[&](Default) {
TINT_ICE(Resolver, diagnostics_) << "unhandled source of non-uniformity";
});
diff --git a/src/tint/resolver/uniformity_test.cc b/src/tint/resolver/uniformity_test.cc
index efff223..249db64 100644
--- a/src/tint/resolver/uniformity_test.cc
+++ b/src/tint/resolver/uniformity_test.cc
@@ -1125,9 +1125,7 @@
workgroupBarrier();
continuing {
i = i + 1;
- if (i == n) {
- break;
- }
+ break if (i == n);
}
}
}
@@ -1146,9 +1144,7 @@
workgroupBarrier();
continuing {
i = i + 1;
- if (i == n) {
- break;
- }
+ break if (i == n);
}
}
}
@@ -1161,12 +1157,12 @@
^^^^^^^^^^^^^^^^
test:10:7 note: control flow depends on non-uniform value
- if (i == n) {
- ^^
+ break if (i == n);
+ ^^^^^
-test:10:16 note: reading from read_write storage buffer 'n' may result in a non-uniform value
- if (i == n) {
- ^
+test:10:22 note: reading from read_write storage buffer 'n' may result in a non-uniform value
+ break if (i == n);
+ ^
)");
}
@@ -1180,9 +1176,7 @@
continuing {
workgroupBarrier();
i = i + 1;
- if (i == n) {
- break;
- }
+ break if (i == n);
}
}
}
@@ -1201,9 +1195,7 @@
continuing {
workgroupBarrier();
i = i + 1;
- if (i == n) {
- break;
- }
+ break if (i == n);
}
}
}
@@ -1216,12 +1208,12 @@
^^^^^^^^^^^^^^^^
test:10:7 note: control flow depends on non-uniform value
- if (i == n) {
- ^^
+ break if (i == n);
+ ^^^^^
-test:10:16 note: reading from read_write storage buffer 'n' may result in a non-uniform value
- if (i == n) {
- ^
+test:10:22 note: reading from read_write storage buffer 'n' may result in a non-uniform value
+ break if (i == n);
+ ^
)");
}
@@ -1249,9 +1241,7 @@
continuing {
// Pretend that this isn't an infinite loop, in case the interrupt is a
// continue statement.
- if (false) {
- break;
- }
+ break if (false);
}
}
}
@@ -1597,9 +1587,7 @@
if (v == 0) {
workgroupBarrier();
}
- if (true) {
- break;
- }
+ break if (true);
}
}
}
@@ -3423,7 +3411,7 @@
RunTest(src, false);
EXPECT_EQ(
error_,
- R"(test:11:7 warning: use of deprecated language feature: fallthrough is set to be removed from WGSL. Case can accept multiple selectors if the existing case bodies are empty. default is not yet supported in a case selector list.
+ R"(test:11:7 warning: use of deprecated language feature: fallthrough is set to be removed from WGSL. Case can accept multiple selectors if the existing case bodies are empty. (e.g. `case 1, 2, 3:`) `default` is a valid case selector value. (e.g. `case 1, default:`)
fallthrough;
^^^^^^^^^^^
@@ -3493,7 +3481,7 @@
RunTest(src, false);
EXPECT_EQ(
error_,
- R"(test:10:7 warning: use of deprecated language feature: fallthrough is set to be removed from WGSL. Case can accept multiple selectors if the existing case bodies are empty. default is not yet supported in a case selector list.
+ R"(test:10:7 warning: use of deprecated language feature: fallthrough is set to be removed from WGSL. Case can accept multiple selectors if the existing case bodies are empty. (e.g. `case 1, 2, 3:`) `default` is a valid case selector value. (e.g. `case 1, default:`)
fallthrough;
^^^^^^^^^^^
@@ -7194,7 +7182,7 @@
RunTest(src, true);
}
-TEST_F(UniformityAnalysisTest, TypeConstructor) {
+TEST_F(UniformityAnalysisTest, TypeInitializer) {
std::string src = R"(
@group(0) @binding(0) var<storage, read_write> non_uniform_global : i32;
@@ -7962,6 +7950,99 @@
)");
}
+TEST_F(UniformityAnalysisTest,
+ Error_ParameterRequiredToBeUniformForSubsequentControlFlow_ViaPointer) {
+ // Make sure we correctly identify the function call as the source of non-uniform control flow
+ // and not the if statement with the uniform condition.
+ std::string src = R"(
+@group(0) @binding(1) var<storage, read_write> non_uniform_value : vec4<f32>;
+
+fn foo(limit : ptr<function, f32>) -> f32 {
+ var i : i32;
+ if (f32(i) > *limit) {
+ return 0.0;
+ }
+ return 1.0f;
+}
+
+fn main() {
+ var param : f32 = non_uniform_value.y;
+ let i = foo(¶m);
+ let y = dpdx(vec3<f32>());
+}
+)";
+
+ RunTest(src, false);
+ EXPECT_EQ(error_,
+ R"(test:15:11 error: 'dpdx' must only be called from uniform control flow
+ let y = dpdx(vec3<f32>());
+ ^^^^
+
+test:14:15 note: non-uniform function call argument causes subsequent control flow to be non-uniform
+ let i = foo(¶m);
+ ^
+
+test:6:3 note: control flow depends on non-uniform value
+ if (f32(i) > *limit) {
+ ^^
+
+test:6:14 note: result of expression may be non-uniform
+ if (f32(i) > *limit) {
+ ^
+
+test:13:21 note: reading from read_write storage buffer 'non_uniform_value' may result in a non-uniform value
+ var param : f32 = non_uniform_value.y;
+ ^^^^^^^^^^^^^^^^^
+)");
+}
+
+TEST_F(UniformityAnalysisTest,
+ Error_ParameterRequiredToBeUniformForSubsequentControlFlow_ViaPointer_InLoop) {
+ // Make sure we correctly identify the function call as the source of non-uniform control flow
+ // and not the if statement with the uniform condition.
+ std::string src = R"(
+@group(0) @binding(1) var<storage, read_write> non_uniform_value : vec4<f32>;
+
+fn foo(limit : ptr<function, f32>) -> f32 {
+ var i : i32;
+ loop {
+ if (f32(i) > *limit) {
+ return 0.0;
+ }
+ }
+}
+
+fn main() {
+ var param : f32 = non_uniform_value.y;
+ let i = foo(¶m);
+ let y = dpdx(vec3<f32>());
+}
+)";
+
+ RunTest(src, false);
+ EXPECT_EQ(error_,
+ R"(test:16:11 error: 'dpdx' must only be called from uniform control flow
+ let y = dpdx(vec3<f32>());
+ ^^^^
+
+test:15:15 note: non-uniform function call argument causes subsequent control flow to be non-uniform
+ let i = foo(¶m);
+ ^
+
+test:7:5 note: control flow depends on non-uniform value
+ if (f32(i) > *limit) {
+ ^^
+
+test:4:8 note: reading from 'limit' may result in a non-uniform value
+fn foo(limit : ptr<function, f32>) -> f32 {
+ ^^^^^
+
+test:14:21 note: reading from read_write storage buffer 'non_uniform_value' may result in a non-uniform value
+ var param : f32 = non_uniform_value.y;
+ ^^^^^^^^^^^^^^^^^
+)");
+}
+
TEST_F(UniformityAnalysisTest, Error_ShortCircuitingExprCausesNonUniformControlFlow) {
// Make sure we correctly identify the short-circuit as the source of non-uniform control flow
// and not the if statement with the uniform condition.
diff --git a/src/tint/resolver/validation_test.cc b/src/tint/resolver/validation_test.cc
index fb210c0..c86a040 100644
--- a/src/tint/resolver/validation_test.cc
+++ b/src/tint/resolver/validation_test.cc
@@ -177,7 +177,7 @@
WrapInFunction(Expr(Source{{{3, 3}, {3, 8}}}, "T"));
EXPECT_FALSE(r()->Resolve());
- EXPECT_EQ(r()->error(), "3:8 error: missing '(' for type constructor or cast");
+ EXPECT_EQ(r()->error(), "3:8 error: missing '(' for type initializer or cast");
}
TEST_F(ResolverValidationTest, AssignmentStmt_InvalidLHS_BuiltinFunctionName) {
@@ -870,6 +870,75 @@
EXPECT_TRUE(r()->Resolve()) << r()->error();
}
+TEST_F(ResolverValidationTest, Stmt_Loop_Continuing_BreakIf) {
+ // loop {
+ // continuing {
+ // break if true;
+ // }
+ // }
+
+ auto* body = Block();
+ auto* continuing = Block(BreakIf(true));
+ auto* loop_stmt = Loop(body, continuing);
+ WrapInFunction(loop_stmt);
+
+ ASSERT_TRUE(r()->Resolve()) << r()->error();
+}
+
+TEST_F(ResolverValidationTest, Stmt_Loop_Continuing_BreakIf_Not_Last) {
+ // loop {
+ // var z : i32;
+ // continuing {
+ // break if true;
+ // z = 2i;
+ // }
+ // }
+
+ auto* body = Block(Decl(Var("z", ty.i32())));
+ auto* continuing =
+ Block(Source{{10, 9}}, BreakIf(Source{{12, 23}}, true), Assign(Expr("z"), 2_i));
+ auto* loop_stmt = Loop(body, continuing);
+ WrapInFunction(loop_stmt);
+
+ EXPECT_FALSE(r()->Resolve());
+ EXPECT_EQ(r()->error(), R"(12:23 error: break-if must be last statement in a continuing block
+10:9 note: see continuing block here)");
+}
+
+TEST_F(ResolverValidationTest, Stmt_Loop_Continuing_BreakIf_Duplicate) {
+ // loop {
+ // continuing {
+ // break if true;
+ // break if false;
+ // }
+ // }
+
+ auto* body = Block();
+ auto* continuing = Block(Source{{10, 9}}, BreakIf(Source{{12, 23}}, true), BreakIf(false));
+ auto* loop_stmt = Loop(body, continuing);
+ WrapInFunction(loop_stmt);
+
+ EXPECT_FALSE(r()->Resolve());
+ EXPECT_EQ(r()->error(), R"(12:23 error: break-if must be last statement in a continuing block
+10:9 note: see continuing block here)");
+}
+
+TEST_F(ResolverValidationTest, Stmt_Loop_Continuing_BreakIf_NonBool) {
+ // loop {
+ // continuing {
+ // break if 1i;
+ // }
+ // }
+
+ auto* body = Block();
+ auto* continuing = Block(BreakIf(Expr(Source{{12, 23}}, 1_i)));
+ auto* loop_stmt = Loop(body, continuing);
+ WrapInFunction(loop_stmt);
+
+ EXPECT_FALSE(r()->Resolve());
+ EXPECT_EQ(r()->error(), R"(12:23 error: break-if statement condition must be bool, got i32)");
+}
+
TEST_F(ResolverTest, Stmt_ForLoop_ReturnInContinuing_Direct) {
// for(;; return) {
// break;
@@ -1039,11 +1108,11 @@
}
TEST_F(ResolverValidationTest, Stmt_BreakInSwitch) {
- WrapInFunction(Loop(Block(Switch(Expr(1_i), //
- Case(Expr(1_i), //
- Block(Break())), //
- DefaultCase()), //
- Break()))); //
+ WrapInFunction(Loop(Block(Switch(Expr(1_i), //
+ Case(CaseSelector(1_i), //
+ Block(Break())), //
+ DefaultCase()), //
+ Break()))); //
EXPECT_TRUE(r()->Resolve()) << r()->error();
}
@@ -1055,6 +1124,9 @@
// }
WrapInFunction(Loop(Block(), cont));
EXPECT_TRUE(r()->Resolve()) << r()->error();
+ EXPECT_EQ(r()->error(),
+ "12:34 warning: use of deprecated language feature: `break` must not be used to exit "
+ "from a continuing block. Use break-if instead.");
}
TEST_F(ResolverValidationTest, Stmt_BreakInIfElseInContinuing) {
@@ -1066,6 +1138,9 @@
// }
WrapInFunction(Loop(Block(), cont));
EXPECT_TRUE(r()->Resolve()) << r()->error();
+ EXPECT_EQ(r()->error(),
+ "12:34 warning: use of deprecated language feature: `break` must not be used to exit "
+ "from a continuing block. Use break-if instead.");
}
TEST_F(ResolverValidationTest, Stmt_BreakInContinuing) {
@@ -1075,6 +1150,8 @@
WrapInFunction(Loop(Block(), cont));
EXPECT_FALSE(r()->Resolve());
EXPECT_EQ(r()->error(),
+ "12:34 warning: use of deprecated language feature: `break` must not be used to exit "
+ "from a continuing block. Use break-if instead.\n"
"12:34 error: break statement in a continuing block must be the single "
"statement of an if statement's true or false block, and that if "
"statement must be the last statement of the continuing block\n"
@@ -1092,6 +1169,8 @@
WrapInFunction(Loop(Block(), cont));
EXPECT_FALSE(r()->Resolve());
EXPECT_EQ(r()->error(),
+ "12:34 warning: use of deprecated language feature: `break` must not be used to exit "
+ "from a continuing block. Use break-if instead.\n"
"12:34 error: break statement in a continuing block must be the single "
"statement of an if statement's true or false block, and that if "
"statement must be the last statement of the continuing block\n"
@@ -1109,6 +1188,8 @@
WrapInFunction(Loop(Block(), cont));
EXPECT_FALSE(r()->Resolve());
EXPECT_EQ(r()->error(),
+ "12:34 warning: use of deprecated language feature: `break` must not be used to exit "
+ "from a continuing block. Use break-if instead.\n"
"12:34 error: break statement in a continuing block must be the single "
"statement of an if statement's true or false block, and that if "
"statement must be the last statement of the continuing block\n"
@@ -1126,6 +1207,8 @@
WrapInFunction(Loop(Block(), cont));
EXPECT_FALSE(r()->Resolve());
EXPECT_EQ(r()->error(),
+ "12:34 warning: use of deprecated language feature: `break` must not be used to exit "
+ "from a continuing block. Use break-if instead.\n"
"12:34 error: break statement in a continuing block must be the single "
"statement of an if statement's true or false block, and that if "
"statement must be the last statement of the continuing block\n"
@@ -1142,6 +1225,8 @@
WrapInFunction(Loop(Block(), cont));
EXPECT_FALSE(r()->Resolve());
EXPECT_EQ(r()->error(),
+ "12:34 warning: use of deprecated language feature: `break` must not be used to exit "
+ "from a continuing block. Use break-if instead.\n"
"12:34 error: break statement in a continuing block must be the single "
"statement of an if statement's true or false block, and that if "
"statement must be the last statement of the continuing block\n"
@@ -1159,6 +1244,8 @@
WrapInFunction(Loop(Block(), cont));
EXPECT_FALSE(r()->Resolve());
EXPECT_EQ(r()->error(),
+ "12:34 warning: use of deprecated language feature: `break` must not be used to exit "
+ "from a continuing block. Use break-if instead.\n"
"12:34 error: break statement in a continuing block must be the single "
"statement of an if statement's true or false block, and that if "
"statement must be the last statement of the continuing block\n"
@@ -1176,6 +1263,8 @@
WrapInFunction(Loop(Block(), cont));
EXPECT_FALSE(r()->Resolve());
EXPECT_EQ(r()->error(),
+ "12:34 warning: use of deprecated language feature: `break` must not be used to exit "
+ "from a continuing block. Use break-if instead.\n"
"12:34 error: break statement in a continuing block must be the single "
"statement of an if statement's true or false block, and that if "
"statement must be the last statement of the continuing block\n"
@@ -1192,6 +1281,8 @@
WrapInFunction(Loop(Block(), cont));
EXPECT_FALSE(r()->Resolve());
EXPECT_EQ(r()->error(),
+ "12:34 warning: use of deprecated language feature: `break` must not be used to exit "
+ "from a continuing block. Use break-if instead.\n"
"12:34 error: break statement in a continuing block must be the single "
"statement of an if statement's true or false block, and that if "
"statement must be the last statement of the continuing block\n"
@@ -1303,7 +1394,7 @@
EXPECT_EQ(r()->error(), "12:34 error: @offset cannot be used with @align or @size");
}
-TEST_F(ResolverTest, Expr_Constructor_Cast_Pointer) {
+TEST_F(ResolverTest, Expr_Initializer_Cast_Pointer) {
auto* vf = Var("vf", ty.f32());
auto* c =
Construct(Source{{12, 34}}, ty.pointer<i32>(ast::AddressSpace::kFunction), ExprList(vf));
diff --git a/src/tint/resolver/validator.cc b/src/tint/resolver/validator.cc
index e14cdd6..2355b6a 100644
--- a/src/tint/resolver/validator.cc
+++ b/src/tint/resolver/validator.cc
@@ -51,6 +51,7 @@
#include "src/tint/sem/abstract_numeric.h"
#include "src/tint/sem/array.h"
#include "src/tint/sem/atomic.h"
+#include "src/tint/sem/break_if_statement.h"
#include "src/tint/sem/call.h"
#include "src/tint/sem/depth_multisampled_texture.h"
#include "src/tint/sem/depth_texture.h"
@@ -69,8 +70,8 @@
#include "src/tint/sem/storage_texture.h"
#include "src/tint/sem/struct.h"
#include "src/tint/sem/switch_statement.h"
-#include "src/tint/sem/type_constructor.h"
#include "src/tint/sem/type_conversion.h"
+#include "src/tint/sem/type_initializer.h"
#include "src/tint/sem/variable.h"
#include "src/tint/sem/while_statement.h"
#include "src/tint/utils/defer.h"
@@ -551,7 +552,7 @@
auto* decl = local->Declaration();
if (IsArrayWithOverrideCount(local->Type())) {
RaiseArrayWithOverrideCountError(decl->type ? decl->type->source
- : decl->constructor->source);
+ : decl->initializer->source);
return false;
}
return Switch(
@@ -585,13 +586,13 @@
if (global->AddressSpace() != ast::AddressSpace::kWorkgroup &&
IsArrayWithOverrideCount(global->Type())) {
RaiseArrayWithOverrideCountError(decl->type ? decl->type->source
- : decl->constructor->source);
+ : decl->initializer->source);
return false;
}
bool ok = Switch(
decl, //
[&](const ast::Var* var) {
- if (auto* init = global->Constructor();
+ if (auto* init = global->Initializer();
init && init->Stage() > sem::EvaluationStage::kOverride) {
AddError("module-scope 'var' initializer must be a constant or override-expression",
init->Declaration()->source);
@@ -794,7 +795,7 @@
auto* decl = v->Declaration();
auto* storage_ty = v->Type()->UnwrapRef();
- if (auto* init = v->Constructor(); init && init->Stage() > sem::EvaluationStage::kOverride) {
+ if (auto* init = v->Initializer(); init && init->Stage() > sem::EvaluationStage::kOverride) {
AddError("'override' initializer must be an override-expression",
init->Declaration()->source);
return false;
@@ -1462,6 +1463,11 @@
return false;
}
if (auto* continuing = ClosestContinuing(/*stop_at_loop*/ true, current_statement)) {
+ AddWarning(
+ "use of deprecated language feature: `break` must not be used to exit from "
+ "a continuing block. Use break-if instead.",
+ stmt->Declaration()->source);
+
auto fail = [&](const char* note_msg, const Source& note_src) {
constexpr const char* kErrorMsg =
"break statement in a continuing block must be the single statement of an if "
@@ -1549,8 +1555,8 @@
AddError("type conversion evaluated but not used", call->Declaration()->source);
return false;
},
- [&](const sem::TypeConstructor*) {
- AddError("type constructor evaluated but not used", call->Declaration()->source);
+ [&](const sem::TypeInitializer*) {
+ AddError("type initializer evaluated but not used", call->Declaration()->source);
return false;
},
[&](Default) { return true; });
@@ -1632,6 +1638,35 @@
return true;
}
+bool Validator::BreakIfStatement(const sem::BreakIfStatement* stmt,
+ sem::Statement* current_statement) const {
+ auto* cond_ty = stmt->Condition()->Type()->UnwrapRef();
+ if (!cond_ty->Is<sem::Bool>()) {
+ AddError("break-if statement condition must be bool, got " + sem_.TypeNameOf(cond_ty),
+ stmt->Condition()->Declaration()->source);
+ return false;
+ }
+
+ for (const auto* s = current_statement; s != nullptr; s = s->Parent()) {
+ if (s->Is<sem::LoopStatement>()) {
+ break;
+ }
+ if (s->Is<sem::LoopContinuingBlockStatement>()) {
+ if (s->Declaration()->As<ast::BlockStatement>()->statements.Back() !=
+ stmt->Declaration()) {
+ AddError("break-if must be last statement in a continuing block",
+ stmt->Declaration()->source);
+ AddNote("see continuing block here", s->Declaration()->source);
+ return false;
+ }
+ return true;
+ }
+ }
+
+ AddError("break-if must in a continuing block", stmt->Declaration()->source);
+ return false;
+}
+
bool Validator::IfStatement(const sem::IfStatement* stmt) const {
auto* cond_ty = stmt->Condition()->Type()->UnwrapRef();
if (!cond_ty->Is<sem::Bool>()) {
@@ -1852,17 +1887,17 @@
return true;
}
-bool Validator::StructureConstructor(const ast::CallExpression* ctor,
+bool Validator::StructureInitializer(const ast::CallExpression* ctor,
const sem::Struct* struct_type) const {
if (!struct_type->IsConstructible()) {
- AddError("struct constructor has non-constructible type", ctor->source);
+ AddError("struct initializer has non-constructible type", ctor->source);
return false;
}
if (ctor->args.Length() > 0) {
if (ctor->args.Length() != struct_type->Members().size()) {
std::string fm = ctor->args.Length() < struct_type->Members().size() ? "few" : "many";
- AddError("struct constructor has too " + fm + " inputs: expected " +
+ AddError("struct initializer has too " + fm + " inputs: expected " +
std::to_string(struct_type->Members().size()) + ", found " +
std::to_string(ctor->args.Length()),
ctor->source);
@@ -1873,7 +1908,7 @@
auto* value_ty = sem_.TypeOf(value);
if (member->Type() != value_ty->UnwrapRef()) {
AddError(
- "type in struct constructor does not match struct member type: expected '" +
+ "type in struct initializer does not match struct member type: expected '" +
sem_.TypeNameOf(member->Type()) + "', found '" + sem_.TypeNameOf(value_ty) +
"'",
value->source);
@@ -1884,7 +1919,7 @@
return true;
}
-bool Validator::ArrayConstructor(const ast::CallExpression* ctor,
+bool Validator::ArrayInitializer(const ast::CallExpression* ctor,
const sem::Array* array_type) const {
auto& values = ctor->args;
auto* elem_ty = array_type->ElemType();
@@ -1910,14 +1945,14 @@
}
if (!elem_ty->IsConstructible()) {
- AddError("array constructor has non-constructible element type", ctor->source);
+ AddError("array initializer has non-constructible element type", ctor->source);
return false;
}
const auto count = std::get<sem::ConstantArrayCount>(array_type->Count()).value;
if (!values.IsEmpty() && (values.Length() != count)) {
std::string fm = values.Length() < count ? "few" : "many";
- AddError("array constructor has too " + fm + " elements: expected " +
+ AddError("array initializer has too " + fm + " elements: expected " +
std::to_string(count) + ", found " + std::to_string(values.Length()),
ctor->source);
return false;
@@ -2324,40 +2359,50 @@
return false;
}
- bool has_default = false;
+ const sem::CaseSelector* default_selector = nullptr;
std::unordered_map<int64_t, Source> selectors;
for (auto* case_stmt : s->body) {
- if (case_stmt->IsDefault()) {
- if (has_default) {
- // More than one default clause
- AddError("switch statement must have exactly one default clause",
- case_stmt->source);
- return false;
- }
- has_default = true;
- }
+ auto* case_sem = sem_.Get<sem::CaseStatement>(case_stmt);
+ for (auto* selector : case_sem->Selectors()) {
+ if (selector->IsDefault()) {
+ if (default_selector != nullptr) {
+ // More than one default clause
+ AddError("switch statement must have exactly one default clause",
+ selector->Declaration()->source);
- for (auto* selector : case_stmt->selectors) {
- if (cond_ty != sem_.TypeOf(selector)) {
+ AddNote("previous default case", default_selector->Declaration()->source);
+ return false;
+ }
+ default_selector = selector;
+ continue;
+ }
+
+ auto* decl_ty = selector->Value()->Type();
+ if (cond_ty != decl_ty) {
AddError(
"the case selector values must have the same type as the selector expression.",
- case_stmt->source);
+ selector->Declaration()->source);
return false;
}
- auto it = selectors.find(selector->value);
+ auto value = selector->Value()->As<uint32_t>();
+ auto it = selectors.find(value);
if (it != selectors.end()) {
- auto val = std::to_string(selector->value);
- AddError("duplicate switch case '" + val + "'", selector->source);
+ AddError("duplicate switch case '" +
+ (decl_ty->IsAnyOf<sem::I32, sem::AbstractNumeric>()
+ ? std::to_string(i32(value))
+ : std::to_string(value)) +
+ "'",
+ selector->Declaration()->source);
AddNote("previous case declared here", it->second);
return false;
}
- selectors.emplace(selector->value, selector->source);
+ selectors.emplace(value, selector->Declaration()->source);
}
}
- if (!has_default) {
+ if (default_selector == nullptr) {
// No default clause
AddError("switch statement must have a default clause", s->source);
return false;
diff --git a/src/tint/resolver/validator.h b/src/tint/resolver/validator.h
index 1297a9a..efc3842 100644
--- a/src/tint/resolver/validator.h
+++ b/src/tint/resolver/validator.h
@@ -51,6 +51,7 @@
class Array;
class Atomic;
class BlockStatement;
+class BreakIfStatement;
class Builtin;
class Call;
class CaseStatement;
@@ -60,7 +61,7 @@
class Materialize;
class Statement;
class SwitchStatement;
-class TypeConstructor;
+class TypeInitializer;
class WhileStatement;
} // namespace tint::sem
@@ -256,6 +257,13 @@
const std::unordered_map<OverrideId, const sem::Variable*>& override_id,
const std::unordered_map<const sem::Type*, const Source&>& atomic_composite_info) const;
+ /// Validates a break-if statement
+ /// @param stmt the statement to validate
+ /// @param current_statement the current statement being resolved
+ /// @returns true on success, false otherwise
+ bool BreakIfStatement(const sem::BreakIfStatement* stmt,
+ sem::Statement* current_statement) const;
+
/// Validates an if statement
/// @param stmt the statement to validate
/// @returns true on success, false otherwise
@@ -363,11 +371,11 @@
/// @returns true on success, false otherwise.
bool Structure(const sem::Struct* str, ast::PipelineStage stage) const;
- /// Validates a structure constructor
+ /// Validates a structure initializer
/// @param ctor the call expression to validate
/// @param struct_type the type of the structure
/// @returns true on success, false otherwise
- bool StructureConstructor(const ast::CallExpression* ctor,
+ bool StructureInitializer(const ast::CallExpression* ctor,
const sem::Struct* struct_type) const;
/// Validates a switch statement
@@ -414,11 +422,11 @@
/// @returns true on success, false otherwise
bool Vector(const sem::Vector* ty, const Source& source) const;
- /// Validates an array constructor
+ /// Validates an array initializer
/// @param ctor the call expresion to validate
/// @param arr_type the type of the array
/// @returns true on success, false otherwise
- bool ArrayConstructor(const ast::CallExpression* ctor, const sem::Array* arr_type) const;
+ bool ArrayInitializer(const ast::CallExpression* ctor, const sem::Array* arr_type) const;
/// Validates a texture builtin function
/// @param call the builtin call to validate
diff --git a/src/tint/resolver/variable_test.cc b/src/tint/resolver/variable_test.cc
index e2d3a77..acdadf9 100644
--- a/src/tint/resolver/variable_test.cc
+++ b/src/tint/resolver/variable_test.cc
@@ -28,7 +28,7 @@
////////////////////////////////////////////////////////////////////////////////////////////////////
// Function-scope 'var'
////////////////////////////////////////////////////////////////////////////////////////////////////
-TEST_F(ResolverVariableTest, LocalVar_NoConstructor) {
+TEST_F(ResolverVariableTest, LocalVar_NoInitializer) {
// struct S { i : i32; }
// alias A = S;
// fn F(){
@@ -84,16 +84,16 @@
EXPECT_TRUE(TypeOf(s)->As<sem::Reference>()->StoreType()->Is<sem::Struct>());
EXPECT_TRUE(TypeOf(a)->As<sem::Reference>()->StoreType()->Is<sem::Struct>());
- EXPECT_EQ(Sem().Get(i)->Constructor(), nullptr);
- EXPECT_EQ(Sem().Get(u)->Constructor(), nullptr);
- EXPECT_EQ(Sem().Get(f)->Constructor(), nullptr);
- EXPECT_EQ(Sem().Get(h)->Constructor(), nullptr);
- EXPECT_EQ(Sem().Get(b)->Constructor(), nullptr);
- EXPECT_EQ(Sem().Get(s)->Constructor(), nullptr);
- EXPECT_EQ(Sem().Get(a)->Constructor(), nullptr);
+ EXPECT_EQ(Sem().Get(i)->Initializer(), nullptr);
+ EXPECT_EQ(Sem().Get(u)->Initializer(), nullptr);
+ EXPECT_EQ(Sem().Get(f)->Initializer(), nullptr);
+ EXPECT_EQ(Sem().Get(h)->Initializer(), nullptr);
+ EXPECT_EQ(Sem().Get(b)->Initializer(), nullptr);
+ EXPECT_EQ(Sem().Get(s)->Initializer(), nullptr);
+ EXPECT_EQ(Sem().Get(a)->Initializer(), nullptr);
}
-TEST_F(ResolverVariableTest, LocalVar_WithConstructor) {
+TEST_F(ResolverVariableTest, LocalVar_WithInitializer) {
// struct S { i : i32; }
// alias A = S;
// fn F(){
@@ -164,13 +164,13 @@
EXPECT_TRUE(TypeOf(s)->As<sem::Reference>()->StoreType()->Is<sem::Struct>());
EXPECT_TRUE(TypeOf(a)->As<sem::Reference>()->StoreType()->Is<sem::Struct>());
- EXPECT_EQ(Sem().Get(i)->Constructor()->Declaration(), i_c);
- EXPECT_EQ(Sem().Get(u)->Constructor()->Declaration(), u_c);
- EXPECT_EQ(Sem().Get(f)->Constructor()->Declaration(), f_c);
- EXPECT_EQ(Sem().Get(h)->Constructor()->Declaration(), h_c);
- EXPECT_EQ(Sem().Get(b)->Constructor()->Declaration(), b_c);
- EXPECT_EQ(Sem().Get(s)->Constructor()->Declaration(), s_c);
- EXPECT_EQ(Sem().Get(a)->Constructor()->Declaration(), a_c);
+ EXPECT_EQ(Sem().Get(i)->Initializer()->Declaration(), i_c);
+ EXPECT_EQ(Sem().Get(u)->Initializer()->Declaration(), u_c);
+ EXPECT_EQ(Sem().Get(f)->Initializer()->Declaration(), f_c);
+ EXPECT_EQ(Sem().Get(h)->Initializer()->Declaration(), h_c);
+ EXPECT_EQ(Sem().Get(b)->Initializer()->Declaration(), b_c);
+ EXPECT_EQ(Sem().Get(s)->Initializer()->Declaration(), s_c);
+ EXPECT_EQ(Sem().Get(a)->Initializer()->Declaration(), a_c);
}
TEST_F(ResolverVariableTest, LocalVar_ShadowsAlias) {
@@ -249,7 +249,7 @@
ASSERT_NE(local, nullptr);
EXPECT_EQ(local->Shadows(), global);
- auto* user_v = Sem().Get<sem::VariableUser>(local->Declaration()->constructor);
+ auto* user_v = Sem().Get<sem::VariableUser>(local->Declaration()->initializer);
ASSERT_NE(user_v, nullptr);
EXPECT_EQ(user_v->Variable(), global);
}
@@ -272,7 +272,7 @@
ASSERT_NE(local, nullptr);
EXPECT_EQ(local->Shadows(), global);
- auto* user_v = Sem().Get<sem::VariableUser>(local->Declaration()->constructor);
+ auto* user_v = Sem().Get<sem::VariableUser>(local->Declaration()->initializer);
ASSERT_NE(user_v, nullptr);
EXPECT_EQ(user_v->Variable(), global);
}
@@ -298,7 +298,7 @@
ASSERT_NE(local_y, nullptr);
EXPECT_EQ(local_y->Shadows(), local_x);
- auto* user_y = Sem().Get<sem::VariableUser>(local_y->Declaration()->constructor);
+ auto* user_y = Sem().Get<sem::VariableUser>(local_y->Declaration()->initializer);
ASSERT_NE(user_y, nullptr);
EXPECT_EQ(user_y->Variable(), local_x);
}
@@ -324,7 +324,7 @@
ASSERT_NE(local_v, nullptr);
EXPECT_EQ(local_v->Shadows(), local_c);
- auto* user_v = Sem().Get<sem::VariableUser>(local_v->Declaration()->constructor);
+ auto* user_v = Sem().Get<sem::VariableUser>(local_v->Declaration()->initializer);
ASSERT_NE(user_v, nullptr);
EXPECT_EQ(user_v->Variable(), local_c);
}
@@ -350,7 +350,7 @@
ASSERT_NE(local_v, nullptr);
EXPECT_EQ(local_v->Shadows(), local_l);
- auto* user_v = Sem().Get<sem::VariableUser>(local_v->Declaration()->constructor);
+ auto* user_v = Sem().Get<sem::VariableUser>(local_v->Declaration()->initializer);
ASSERT_NE(user_v, nullptr);
EXPECT_EQ(user_v->Variable(), local_l);
}
@@ -375,7 +375,7 @@
ASSERT_NE(local, nullptr);
EXPECT_EQ(local->Shadows(), param);
- auto* user_v = Sem().Get<sem::VariableUser>(local->Declaration()->constructor);
+ auto* user_v = Sem().Get<sem::VariableUser>(local->Declaration()->initializer);
ASSERT_NE(user_v, nullptr);
EXPECT_EQ(user_v->Variable(), param);
}
@@ -447,14 +447,14 @@
ASSERT_TRUE(TypeOf(p)->Is<sem::Pointer>());
ASSERT_TRUE(TypeOf(p)->As<sem::Pointer>()->StoreType()->Is<sem::I32>());
- EXPECT_EQ(Sem().Get(i)->Constructor()->Declaration(), i_c);
- EXPECT_EQ(Sem().Get(u)->Constructor()->Declaration(), u_c);
- EXPECT_EQ(Sem().Get(f)->Constructor()->Declaration(), f_c);
- EXPECT_EQ(Sem().Get(h)->Constructor()->Declaration(), h_c);
- EXPECT_EQ(Sem().Get(b)->Constructor()->Declaration(), b_c);
- EXPECT_EQ(Sem().Get(s)->Constructor()->Declaration(), s_c);
- EXPECT_EQ(Sem().Get(a)->Constructor()->Declaration(), a_c);
- EXPECT_EQ(Sem().Get(p)->Constructor()->Declaration(), p_c);
+ EXPECT_EQ(Sem().Get(i)->Initializer()->Declaration(), i_c);
+ EXPECT_EQ(Sem().Get(u)->Initializer()->Declaration(), u_c);
+ EXPECT_EQ(Sem().Get(f)->Initializer()->Declaration(), f_c);
+ EXPECT_EQ(Sem().Get(h)->Initializer()->Declaration(), h_c);
+ EXPECT_EQ(Sem().Get(b)->Initializer()->Declaration(), b_c);
+ EXPECT_EQ(Sem().Get(s)->Initializer()->Declaration(), s_c);
+ EXPECT_EQ(Sem().Get(a)->Initializer()->Declaration(), a_c);
+ EXPECT_EQ(Sem().Get(p)->Initializer()->Declaration(), p_c);
}
TEST_F(ResolverVariableTest, LocalLet_InheritsAccessFromOriginatingVariable) {
@@ -563,7 +563,7 @@
ASSERT_NE(local, nullptr);
EXPECT_EQ(local->Shadows(), global);
- auto* user = Sem().Get<sem::VariableUser>(local->Declaration()->constructor);
+ auto* user = Sem().Get<sem::VariableUser>(local->Declaration()->initializer);
ASSERT_NE(user, nullptr);
EXPECT_EQ(user->Variable(), global);
}
@@ -586,7 +586,7 @@
ASSERT_NE(local, nullptr);
EXPECT_EQ(local->Shadows(), global);
- auto* user = Sem().Get<sem::VariableUser>(local->Declaration()->constructor);
+ auto* user = Sem().Get<sem::VariableUser>(local->Declaration()->initializer);
ASSERT_NE(user, nullptr);
EXPECT_EQ(user->Variable(), global);
}
@@ -612,7 +612,7 @@
ASSERT_NE(local_l, nullptr);
EXPECT_EQ(local_l->Shadows(), local_v);
- auto* user = Sem().Get<sem::VariableUser>(local_l->Declaration()->constructor);
+ auto* user = Sem().Get<sem::VariableUser>(local_l->Declaration()->initializer);
ASSERT_NE(user, nullptr);
EXPECT_EQ(user->Variable(), local_v);
}
@@ -638,7 +638,7 @@
ASSERT_NE(local_y, nullptr);
EXPECT_EQ(local_y->Shadows(), local_x);
- auto* user = Sem().Get<sem::VariableUser>(local_y->Declaration()->constructor);
+ auto* user = Sem().Get<sem::VariableUser>(local_y->Declaration()->initializer);
ASSERT_NE(user, nullptr);
EXPECT_EQ(user->Variable(), local_x);
}
@@ -664,7 +664,7 @@
ASSERT_NE(local_y, nullptr);
EXPECT_EQ(local_y->Shadows(), local_x);
- auto* user = Sem().Get<sem::VariableUser>(local_y->Declaration()->constructor);
+ auto* user = Sem().Get<sem::VariableUser>(local_y->Declaration()->initializer);
ASSERT_NE(user, nullptr);
EXPECT_EQ(user->Variable(), local_x);
}
@@ -689,7 +689,7 @@
ASSERT_NE(local, nullptr);
EXPECT_EQ(local->Shadows(), param);
- auto* user = Sem().Get<sem::VariableUser>(local->Declaration()->constructor);
+ auto* user = Sem().Get<sem::VariableUser>(local->Declaration()->initializer);
ASSERT_NE(user, nullptr);
EXPECT_EQ(user->Variable(), param);
}
@@ -792,7 +792,7 @@
ASSERT_NE(local, nullptr);
EXPECT_EQ(local->Shadows(), global);
- auto* user = Sem().Get<sem::VariableUser>(local->Declaration()->constructor);
+ auto* user = Sem().Get<sem::VariableUser>(local->Declaration()->initializer);
ASSERT_NE(user, nullptr);
EXPECT_EQ(user->Variable(), global);
}
@@ -840,7 +840,7 @@
ASSERT_NE(local_y, nullptr);
EXPECT_EQ(local_y->Shadows(), local_x);
- auto* user = Sem().Get<sem::VariableUser>(local_y->Declaration()->constructor);
+ auto* user = Sem().Get<sem::VariableUser>(local_y->Declaration()->initializer);
ASSERT_NE(user, nullptr);
EXPECT_EQ(user->Variable(), local_x);
}
diff --git a/src/tint/resolver/variable_validation_test.cc b/src/tint/resolver/variable_validation_test.cc
index 65cfd51..d302264 100644
--- a/src/tint/resolver/variable_validation_test.cc
+++ b/src/tint/resolver/variable_validation_test.cc
@@ -148,7 +148,7 @@
EXPECT_EQ(r()->error(), "56:78 error: vec3<f32> cannot be used as the type of a 'override'");
}
-TEST_F(ResolverVariableValidationTest, ConstConstructorWrongType) {
+TEST_F(ResolverVariableValidationTest, ConstInitializerWrongType) {
// const c : i32 = 2u
WrapInFunction(Const(Source{{3, 3}}, "c", ty.i32(), Expr(2_u)));
@@ -157,7 +157,7 @@
R"(3:3 error: cannot initialize const of type 'i32' with value of type 'u32')");
}
-TEST_F(ResolverVariableValidationTest, LetConstructorWrongType) {
+TEST_F(ResolverVariableValidationTest, LetInitializerWrongType) {
// var v : i32 = 2u
WrapInFunction(Let(Source{{3, 3}}, "v", ty.i32(), Expr(2_u)));
@@ -166,7 +166,7 @@
R"(3:3 error: cannot initialize let of type 'i32' with value of type 'u32')");
}
-TEST_F(ResolverVariableValidationTest, VarConstructorWrongType) {
+TEST_F(ResolverVariableValidationTest, VarInitializerWrongType) {
// var v : i32 = 2u
WrapInFunction(Var(Source{{3, 3}}, "v", ty.i32(), Expr(2_u)));
@@ -175,7 +175,7 @@
R"(3:3 error: cannot initialize var of type 'i32' with value of type 'u32')");
}
-TEST_F(ResolverVariableValidationTest, ConstConstructorWrongTypeViaAlias) {
+TEST_F(ResolverVariableValidationTest, ConstInitializerWrongTypeViaAlias) {
auto* a = Alias("I32", ty.i32());
WrapInFunction(Const(Source{{3, 3}}, "v", ty.Of(a), Expr(2_u)));
@@ -184,7 +184,7 @@
R"(3:3 error: cannot initialize const of type 'i32' with value of type 'u32')");
}
-TEST_F(ResolverVariableValidationTest, LetConstructorWrongTypeViaAlias) {
+TEST_F(ResolverVariableValidationTest, LetInitializerWrongTypeViaAlias) {
auto* a = Alias("I32", ty.i32());
WrapInFunction(Let(Source{{3, 3}}, "v", ty.Of(a), Expr(2_u)));
@@ -193,7 +193,7 @@
R"(3:3 error: cannot initialize let of type 'i32' with value of type 'u32')");
}
-TEST_F(ResolverVariableValidationTest, VarConstructorWrongTypeViaAlias) {
+TEST_F(ResolverVariableValidationTest, VarInitializerWrongTypeViaAlias) {
auto* a = Alias("I32", ty.i32());
WrapInFunction(Var(Source{{3, 3}}, "v", ty.Of(a), Expr(2_u)));
diff --git a/src/tint/sem/break_if_statement.cc b/src/tint/sem/break_if_statement.cc
new file mode 100644
index 0000000..c9fc014
--- /dev/null
+++ b/src/tint/sem/break_if_statement.cc
@@ -0,0 +1,34 @@
+// Copyright 2022 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include "src/tint/sem/break_if_statement.h"
+
+#include "src/tint/program_builder.h"
+
+TINT_INSTANTIATE_TYPEINFO(tint::sem::BreakIfStatement);
+
+namespace tint::sem {
+
+BreakIfStatement::BreakIfStatement(const ast::BreakIfStatement* declaration,
+ const CompoundStatement* parent,
+ const sem::Function* function)
+ : Base(declaration, parent, function) {}
+
+BreakIfStatement::~BreakIfStatement() = default;
+
+const ast::BreakIfStatement* BreakIfStatement::Declaration() const {
+ return static_cast<const ast::BreakIfStatement*>(Base::Declaration());
+}
+
+} // namespace tint::sem
diff --git a/src/tint/sem/break_if_statement.h b/src/tint/sem/break_if_statement.h
new file mode 100644
index 0000000..bb1e3e5
--- /dev/null
+++ b/src/tint/sem/break_if_statement.h
@@ -0,0 +1,60 @@
+// Copyright 2022 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0(the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef SRC_TINT_SEM_BREAK_IF_STATEMENT_H_
+#define SRC_TINT_SEM_BREAK_IF_STATEMENT_H_
+
+#include "src/tint/sem/statement.h"
+
+// Forward declarations
+namespace tint::ast {
+class BreakIfStatement;
+} // namespace tint::ast
+namespace tint::sem {
+class Expression;
+} // namespace tint::sem
+
+namespace tint::sem {
+
+/// Holds semantic information about a break-if statement
+class BreakIfStatement final : public Castable<BreakIfStatement, CompoundStatement> {
+ public:
+ /// Constructor
+ /// @param declaration the AST node for this break-if statement
+ /// @param parent the owning statement
+ /// @param function the owning function
+ BreakIfStatement(const ast::BreakIfStatement* declaration,
+ const CompoundStatement* parent,
+ const sem::Function* function);
+
+ /// Destructor
+ ~BreakIfStatement() override;
+
+ /// @returns the AST node
+ const ast::BreakIfStatement* Declaration() const;
+
+ /// @returns the break-if-statement condition expression
+ const Expression* Condition() const { return condition_; }
+
+ /// Sets the break-if-statement condition expression
+ /// @param condition the break-if condition expression
+ void SetCondition(const Expression* condition) { condition_ = condition; }
+
+ private:
+ const Expression* condition_ = nullptr;
+};
+
+} // namespace tint::sem
+
+#endif // SRC_TINT_SEM_BREAK_IF_STATEMENT_H_
diff --git a/src/tint/sem/call_target.h b/src/tint/sem/call_target.h
index 981eabb..55b73ad 100644
--- a/src/tint/sem/call_target.h
+++ b/src/tint/sem/call_target.h
@@ -67,7 +67,7 @@
}
};
-/// CallTarget is the base for callable functions, builtins, type constructors
+/// CallTarget is the base for callable functions, builtins, type initializers
/// and type casts.
class CallTarget : public Castable<CallTarget, Node> {
public:
diff --git a/src/tint/sem/switch_statement.cc b/src/tint/sem/switch_statement.cc
index ed3942d..5eb2f09 100644
--- a/src/tint/sem/switch_statement.cc
+++ b/src/tint/sem/switch_statement.cc
@@ -17,6 +17,7 @@
#include "src/tint/program_builder.h"
TINT_INSTANTIATE_TYPEINFO(tint::sem::CaseStatement);
+TINT_INSTANTIATE_TYPEINFO(tint::sem::CaseSelector);
TINT_INSTANTIATE_TYPEINFO(tint::sem::SwitchStatement);
namespace tint::sem {
@@ -48,4 +49,13 @@
return static_cast<const ast::CaseStatement*>(Base::Declaration());
}
+CaseSelector::CaseSelector(const ast::CaseSelector* decl, const Constant* val)
+ : Base(), decl_(decl), val_(val) {}
+
+CaseSelector::~CaseSelector() = default;
+
+const ast::CaseSelector* CaseSelector::Declaration() const {
+ return decl_;
+}
+
} // namespace tint::sem
diff --git a/src/tint/sem/switch_statement.h b/src/tint/sem/switch_statement.h
index a6b5c00..929f8cf 100644
--- a/src/tint/sem/switch_statement.h
+++ b/src/tint/sem/switch_statement.h
@@ -22,10 +22,13 @@
// Forward declarations
namespace tint::ast {
class CaseStatement;
+class CaseSelector;
class SwitchStatement;
} // namespace tint::ast
namespace tint::sem {
class CaseStatement;
+class CaseSelector;
+class Constant;
class Expression;
} // namespace tint::sem
@@ -82,14 +85,39 @@
const BlockStatement* Body() const { return body_; }
/// @returns the selectors for the case
- std::vector<const Expression*>& Selectors() { return selectors_; }
+ std::vector<const CaseSelector*>& Selectors() { return selectors_; }
/// @returns the selectors for the case
- const std::vector<const Expression*>& Selectors() const { return selectors_; }
+ const std::vector<const CaseSelector*>& Selectors() const { return selectors_; }
private:
const BlockStatement* body_ = nullptr;
- std::vector<const Expression*> selectors_;
+ std::vector<const CaseSelector*> selectors_;
+};
+
+/// Holds semantic information about a switch case selector
+class CaseSelector final : public Castable<CaseSelector, Node> {
+ public:
+ /// Constructor
+ /// @param decl the selector declaration
+ /// @param val the case selector value, nullptr for a default selector
+ explicit CaseSelector(const ast::CaseSelector* decl, const Constant* val = nullptr);
+
+ /// Destructor
+ ~CaseSelector() override;
+
+ /// @returns true if this is a default selector
+ bool IsDefault() const { return val_ == nullptr; }
+
+ /// @returns the case selector declaration
+ const ast::CaseSelector* Declaration() const;
+
+ /// @returns the selector constant value, or nullptr if this is the default selector
+ const Constant* Value() const { return val_; }
+
+ private:
+ const ast::CaseSelector* const decl_;
+ const Constant* const val_;
};
} // namespace tint::sem
diff --git a/src/tint/sem/type_constructor.cc b/src/tint/sem/type_initializer.cc
similarity index 80%
rename from src/tint/sem/type_constructor.cc
rename to src/tint/sem/type_initializer.cc
index 2acf74f..2981064 100644
--- a/src/tint/sem/type_constructor.cc
+++ b/src/tint/sem/type_initializer.cc
@@ -12,19 +12,19 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#include "src/tint/sem/type_constructor.h"
+#include "src/tint/sem/type_initializer.h"
#include <utility>
-TINT_INSTANTIATE_TYPEINFO(tint::sem::TypeConstructor);
+TINT_INSTANTIATE_TYPEINFO(tint::sem::TypeInitializer);
namespace tint::sem {
-TypeConstructor::TypeConstructor(const sem::Type* type,
+TypeInitializer::TypeInitializer(const sem::Type* type,
utils::VectorRef<const Parameter*> parameters,
EvaluationStage stage)
: Base(type, std::move(parameters), stage) {}
-TypeConstructor::~TypeConstructor() = default;
+TypeInitializer::~TypeInitializer() = default;
} // namespace tint::sem
diff --git a/src/tint/sem/type_constructor.h b/src/tint/sem/type_initializer.h
similarity index 72%
rename from src/tint/sem/type_constructor.h
rename to src/tint/sem/type_initializer.h
index 1995db8..c9b123c 100644
--- a/src/tint/sem/type_constructor.h
+++ b/src/tint/sem/type_initializer.h
@@ -12,29 +12,29 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#ifndef SRC_TINT_SEM_TYPE_CONSTRUCTOR_H_
-#define SRC_TINT_SEM_TYPE_CONSTRUCTOR_H_
+#ifndef SRC_TINT_SEM_TYPE_INITIALIZER_H_
+#define SRC_TINT_SEM_TYPE_INITIALIZER_H_
#include "src/tint/sem/call_target.h"
#include "src/tint/utils/vector.h"
namespace tint::sem {
-/// TypeConstructor is the CallTarget for a type constructor.
-class TypeConstructor final : public Castable<TypeConstructor, CallTarget> {
+/// TypeInitializer is the CallTarget for a type initializer.
+class TypeInitializer final : public Castable<TypeInitializer, CallTarget> {
public:
/// Constructor
/// @param type the type that's being constructed
- /// @param parameters the type constructor parameters
+ /// @param parameters the type initializer parameters
/// @param stage the earliest evaluation stage for the expression
- TypeConstructor(const sem::Type* type,
+ TypeInitializer(const sem::Type* type,
utils::VectorRef<const Parameter*> parameters,
EvaluationStage stage);
/// Destructor
- ~TypeConstructor() override;
+ ~TypeInitializer() override;
};
} // namespace tint::sem
-#endif // SRC_TINT_SEM_TYPE_CONSTRUCTOR_H_
+#endif // SRC_TINT_SEM_TYPE_INITIALIZER_H_
diff --git a/src/tint/sem/variable.cc b/src/tint/sem/variable.cc
index 9336947..225e308 100644
--- a/src/tint/sem/variable.cc
+++ b/src/tint/sem/variable.cc
@@ -96,8 +96,8 @@
/* has_side_effects */ false),
variable_(variable) {
auto* type = variable->Type();
- if (type->Is<sem::Pointer>() && variable->Constructor()) {
- source_variable_ = variable->Constructor()->SourceVariable();
+ if (type->Is<sem::Pointer>() && variable->Initializer()) {
+ source_variable_ = variable->Initializer()->SourceVariable();
} else {
source_variable_ = variable;
}
diff --git a/src/tint/sem/variable.h b/src/tint/sem/variable.h
index 1d91e15..8e271d7 100644
--- a/src/tint/sem/variable.h
+++ b/src/tint/sem/variable.h
@@ -80,13 +80,13 @@
/// @return the constant value of this expression
const Constant* ConstantValue() const { return constant_value_; }
- /// @returns the variable constructor expression, or nullptr if the variable
+ /// @returns the variable initializer expression, or nullptr if the variable
/// does not have one.
- const Expression* Constructor() const { return constructor_; }
+ const Expression* Initializer() const { return initializer_; }
- /// Sets the variable constructor expression.
- /// @param constructor the constructor expression to assign to this variable.
- void SetConstructor(const Expression* constructor) { constructor_ = constructor; }
+ /// Sets the variable initializer expression.
+ /// @param initializer the initializer expression to assign to this variable.
+ void SetInitializer(const Expression* initializer) { initializer_ = initializer; }
/// @returns the expressions that use the variable
const std::vector<const VariableUser*>& Users() const { return users_; }
@@ -101,7 +101,7 @@
const ast::AddressSpace address_space_;
const ast::Access access_;
const Constant* constant_value_;
- const Expression* constructor_ = nullptr;
+ const Expression* initializer_ = nullptr;
std::vector<const VariableUser*> users_;
};
diff --git a/src/tint/source_test.cc b/src/tint/source_test.cc
index 5cc0078..b1241fb 100644
--- a/src/tint/source_test.cc
+++ b/src/tint/source_test.cc
@@ -28,7 +28,7 @@
using SourceFileContentTest = testing::Test;
-TEST_F(SourceFileContentTest, Ctor) {
+TEST_F(SourceFileContentTest, Init) {
Source::FileContent fc(kSource);
EXPECT_EQ(fc.data, kSource);
EXPECT_EQ(fc.data_view, kSource);
@@ -38,7 +38,7 @@
EXPECT_EQ(fc.lines[2], "line three");
}
-TEST_F(SourceFileContentTest, CopyCtor) {
+TEST_F(SourceFileContentTest, CopyInit) {
auto src = std::make_unique<Source::FileContent>(kSource);
Source::FileContent fc{*src};
src.reset();
@@ -50,7 +50,7 @@
EXPECT_EQ(fc.lines[2], "line three");
}
-TEST_F(SourceFileContentTest, MoveCtor) {
+TEST_F(SourceFileContentTest, MoveInit) {
auto src = std::make_unique<Source::FileContent>(kSource);
Source::FileContent fc{std::move(*src)};
src.reset();
diff --git a/src/tint/tint.natvis b/src/tint/tint.natvis
index aedd9be..8e000c3 100644
--- a/src/tint/tint.natvis
+++ b/src/tint/tint.natvis
@@ -62,7 +62,7 @@
<!--=================================================================-->
<!-- ast -->
<!--=================================================================-->
-
+
<Type Name="tint::ast::AssignmentStatement">
<DisplayString>{*lhs} = {*rhs};</DisplayString>
<Expand>
@@ -126,15 +126,15 @@
</Type>
<Type Name="tint::ast::Let">
- <DisplayString Condition="!!type">let {symbol} : {*type} = {*constructor}</DisplayString>
- <DisplayString Condition=" !type">let {symbol} = {*constructor}</DisplayString>
+ <DisplayString Condition="!!type">let {symbol} : {*type} = {*initializer}</DisplayString>
+ <DisplayString Condition=" !type">let {symbol} = {*initializer}</DisplayString>
</Type>
<Type Name="tint::ast::Variable">
- <DisplayString Condition="!!type & !!constructor">var {symbol} : {*type} = {*constructor}</DisplayString>
- <DisplayString Condition="!!type & !constructor">var {symbol} : {*type}</DisplayString>
- <DisplayString Condition=" !type & !!constructor">var {symbol} = {*constructor}</DisplayString>
- <DisplayString Condition=" !type & !constructor">var {symbol}</DisplayString>
+ <DisplayString Condition="!!type & !!initializer">var {symbol} : {*type} = {*initializer}</DisplayString>
+ <DisplayString Condition="!!type & !initializer">var {symbol} : {*type}</DisplayString>
+ <DisplayString Condition=" !type & !!initializer">var {symbol} = {*initializer}</DisplayString>
+ <DisplayString Condition=" !type & !initializer">var {symbol}</DisplayString>
</Type>
<Type Name="tint::ast::VariableDeclStatement">
diff --git a/src/tint/transform/binding_remapper.cc b/src/tint/transform/binding_remapper.cc
index 102bb1e..798b228 100644
--- a/src/tint/transform/binding_remapper.cc
+++ b/src/tint/transform/binding_remapper.cc
@@ -139,7 +139,7 @@
const ast::Type* inner_ty = CreateASTTypeFor(ctx, ty);
auto* new_var =
ctx.dst->Var(ctx.Clone(var->source), ctx.Clone(var->symbol), inner_ty,
- var->declared_address_space, ac, ctx.Clone(var->constructor),
+ var->declared_address_space, ac, ctx.Clone(var->initializer),
ctx.Clone(var->attributes));
ctx.Replace(var, new_var);
}
diff --git a/src/tint/transform/clamp_frag_depth.cc b/src/tint/transform/clamp_frag_depth.cc
index 1be231a..e67dda3 100644
--- a/src/tint/transform/clamp_frag_depth.cc
+++ b/src/tint/transform/clamp_frag_depth.cc
@@ -161,17 +161,17 @@
auto fn_sym = b.Symbols().New("clamp_frag_depth_" +
sym.NameFor(return_ty->As<ast::TypeName>()->name));
- utils::Vector<const ast::Expression*, 8u> constructor_args;
+ utils::Vector<const ast::Expression*, 8u> initializer_args;
for (auto* member : struct_ty->members) {
const ast::Expression* arg = b.MemberAccessor("s", ctx.Clone(member->symbol));
if (ContainsFragDepth(member->attributes)) {
arg = b.Call(base_fn_sym, arg);
}
- constructor_args.Push(arg);
+ initializer_args.Push(arg);
}
utils::Vector params{b.Param("s", ctx.Clone(return_ty))};
utils::Vector body{
- b.Return(b.Construct(ctx.Clone(return_ty), std::move(constructor_args))),
+ b.Return(b.Construct(ctx.Clone(return_ty), std::move(initializer_args))),
};
b.Func(fn_sym, params, ctx.Clone(return_ty), body);
return fn_sym;
diff --git a/src/tint/transform/decompose_memory_access.cc b/src/tint/transform/decompose_memory_access.cc
index ffdf88e..68324af 100644
--- a/src/tint/transform/decompose_memory_access.cc
+++ b/src/tint/transform/decompose_memory_access.cc
@@ -832,7 +832,7 @@
//
// Inner-most expression nodes are guaranteed to be visited first because AST
// nodes are fully immutable and require their children to be constructed
- // first so their pointer can be passed to the parent's constructor.
+ // first so their pointer can be passed to the parent's initializer.
for (auto* node : ctx.src->ASTNodes().Objects()) {
if (auto* ident = node->As<ast::IdentifierExpression>()) {
// X
diff --git a/src/tint/transform/decompose_strided_array.cc b/src/tint/transform/decompose_strided_array.cc
index b7fe53c..e9f51a5 100644
--- a/src/tint/transform/decompose_strided_array.cc
+++ b/src/tint/transform/decompose_strided_array.cc
@@ -22,7 +22,7 @@
#include "src/tint/sem/call.h"
#include "src/tint/sem/expression.h"
#include "src/tint/sem/member_accessor_expression.h"
-#include "src/tint/sem/type_constructor.h"
+#include "src/tint/sem/type_initializer.h"
#include "src/tint/transform/simplify_pointers.h"
#include "src/tint/utils/hash.h"
#include "src/tint/utils/map.h"
@@ -107,9 +107,9 @@
return nullptr;
});
- // Find all array type constructor expressions for array types that have had
- // their element changed to a single field structure. These constructors are
- // adjusted to wrap each of the arguments with an additional constructor for
+ // Find all array type initializer expressions for array types that have had
+ // their element changed to a single field structure. These initializers are
+ // adjusted to wrap each of the arguments with an additional initializer for
// the new element structure type.
// Example:
// `@stride(32) array<i32, 3>(1, 2, 3)`
@@ -118,9 +118,9 @@
ctx.ReplaceAll([&](const ast::CallExpression* expr) -> const ast::Expression* {
if (!expr->args.IsEmpty()) {
if (auto* call = sem.Get(expr)->UnwrapMaterialize()->As<sem::Call>()) {
- if (auto* ctor = call->Target()->As<sem::TypeConstructor>()) {
+ if (auto* ctor = call->Target()->As<sem::TypeInitializer>()) {
if (auto* arr = ctor->ReturnType()->As<sem::Array>()) {
- // Begin by cloning the array constructor type or name
+ // Begin by cloning the array initializer type or name
// If this is an unaliased array, this may add a new entry to
// decomposed.
// If this is an aliased array, decomposed should already be
diff --git a/src/tint/transform/manager.h b/src/tint/transform/manager.h
index 04bf9fe..9d4049f 100644
--- a/src/tint/transform/manager.h
+++ b/src/tint/transform/manager.h
@@ -41,7 +41,7 @@
/// Add pass to the manager of type `T`, constructed with the provided
/// arguments.
- /// @param args the arguments to forward to the `T` constructor
+ /// @param args the arguments to forward to the `T` initializer
template <typename T, typename... ARGS>
void Add(ARGS&&... args) {
transforms_.emplace_back(std::make_unique<T>(std::forward<ARGS>(args)...));
diff --git a/src/tint/transform/module_scope_var_to_entry_point_param.cc b/src/tint/transform/module_scope_var_to_entry_point_param.cc
index 2004c4c..f9c11e5 100644
--- a/src/tint/transform/module_scope_var_to_entry_point_param.cc
+++ b/src/tint/transform/module_scope_var_to_entry_point_param.cc
@@ -187,8 +187,8 @@
// scope. Disable address space validation on this variable.
auto* disable_validation =
ctx.dst->Disable(ast::DisabledValidation::kIgnoreAddressSpace);
- auto* constructor = ctx.Clone(var->Declaration()->constructor);
- auto* local_var = ctx.dst->Var(new_var_symbol, store_type(), sc, constructor,
+ auto* initializer = ctx.Clone(var->Declaration()->initializer);
+ auto* local_var = ctx.dst->Var(new_var_symbol, store_type(), sc, initializer,
utils::Vector{disable_validation});
ctx.InsertFront(func->body->statements, ctx.dst->Decl(local_var));
@@ -400,10 +400,10 @@
// Redeclare the variable at function scope.
auto* disable_validation =
ctx.dst->Disable(ast::DisabledValidation::kIgnoreAddressSpace);
- auto* constructor = ctx.Clone(var->Declaration()->constructor);
+ auto* initializer = ctx.Clone(var->Declaration()->initializer);
auto* local_var = ctx.dst->Var(new_var_symbol,
CreateASTTypeFor(ctx, var->Type()->UnwrapRef()),
- ast::AddressSpace::kPrivate, constructor,
+ ast::AddressSpace::kPrivate, initializer,
utils::Vector{disable_validation});
ctx.InsertFront(func_ast->body->statements, ctx.dst->Decl(local_var));
local_private_vars_.insert(var);
diff --git a/src/tint/transform/module_scope_var_to_entry_point_param_test.cc b/src/tint/transform/module_scope_var_to_entry_point_param_test.cc
index 34058a7..232737b 100644
--- a/src/tint/transform/module_scope_var_to_entry_point_param_test.cc
+++ b/src/tint/transform/module_scope_var_to_entry_point_param_test.cc
@@ -213,7 +213,7 @@
EXPECT_EQ(expect, str(got));
}
-TEST_F(ModuleScopeVarToEntryPointParamTest, Constructors) {
+TEST_F(ModuleScopeVarToEntryPointParamTest, Initializers) {
auto* src = R"(
var<private> a : f32 = 1.0;
var<private> b : f32 = f32();
@@ -238,7 +238,7 @@
EXPECT_EQ(expect, str(got));
}
-TEST_F(ModuleScopeVarToEntryPointParamTest, Constructors_OutOfOrder) {
+TEST_F(ModuleScopeVarToEntryPointParamTest, Initializers_OutOfOrder) {
auto* src = R"(
@compute @workgroup_size(1)
fn main() {
diff --git a/src/tint/transform/multiplanar_external_texture.cc b/src/tint/transform/multiplanar_external_texture.cc
index 83ca3bd..bc0d317 100644
--- a/src/tint/transform/multiplanar_external_texture.cc
+++ b/src/tint/transform/multiplanar_external_texture.cc
@@ -138,11 +138,11 @@
// Replace the original texture_external binding with a texture_2d<f32> binding.
auto cloned_attributes = ctx.Clone(global->attributes);
- const ast::Expression* cloned_constructor = ctx.Clone(global->constructor);
+ const ast::Expression* cloned_initializer = ctx.Clone(global->initializer);
auto* replacement =
b.Var(syms.plane_0, b.ty.sampled_texture(ast::TextureDimension::k2d, b.ty.f32()),
- cloned_constructor, cloned_attributes);
+ cloned_initializer, cloned_attributes);
ctx.Replace(global, replacement);
}
diff --git a/src/tint/transform/pad_structs.cc b/src/tint/transform/pad_structs.cc
index 34aee11..10b0565 100644
--- a/src/tint/transform/pad_structs.cc
+++ b/src/tint/transform/pad_structs.cc
@@ -22,7 +22,7 @@
#include "src/tint/program_builder.h"
#include "src/tint/sem/call.h"
#include "src/tint/sem/module.h"
-#include "src/tint/sem/type_constructor.h"
+#include "src/tint/sem/type_initializer.h"
using namespace tint::number_suffixes; // NOLINT
@@ -112,7 +112,7 @@
if (!call) {
return nullptr;
}
- auto* cons = call->Target()->As<sem::TypeConstructor>();
+ auto* cons = call->Target()->As<sem::TypeInitializer>();
if (!cons) {
return nullptr;
}
diff --git a/src/tint/transform/pad_structs_test.cc b/src/tint/transform/pad_structs_test.cc
index 694175e..6b1a70f 100644
--- a/src/tint/transform/pad_structs_test.cc
+++ b/src/tint/transform/pad_structs_test.cc
@@ -521,8 +521,8 @@
EXPECT_EQ(expect, str(got));
}
-TEST_F(PadStructsTest, Constructor) {
- // Calls to a constructor of a padded struct must be modified to initialize the padding.
+TEST_F(PadStructsTest, Initializer) {
+ // Calls to a initializer of a padded struct must be modified to initialize the padding.
auto* src = R"(
struct S {
a : f32,
@@ -557,8 +557,8 @@
EXPECT_EQ(expect, str(got));
}
-TEST_F(PadStructsTest, ConstructorZeroArgs) {
- // Calls to a zero-argument constructor of a padded struct should not be modified.
+TEST_F(PadStructsTest, InitializerZeroArgs) {
+ // Calls to a zero-argument initializer of a padded struct should not be modified.
auto* src = R"(
struct S {
a : f32,
diff --git a/src/tint/transform/promote_initializers_to_let.cc b/src/tint/transform/promote_initializers_to_let.cc
index ec7ba95..22cdc20 100644
--- a/src/tint/transform/promote_initializers_to_let.cc
+++ b/src/tint/transform/promote_initializers_to_let.cc
@@ -16,7 +16,7 @@
#include "src/tint/program_builder.h"
#include "src/tint/sem/call.h"
#include "src/tint/sem/statement.h"
-#include "src/tint/sem/type_constructor.h"
+#include "src/tint/sem/type_initializer.h"
#include "src/tint/transform/utils/hoist_to_decl_before.h"
TINT_INSTANTIATE_TYPEINFO(tint::transform::PromoteInitializersToLet);
@@ -45,9 +45,9 @@
auto* stmt = sem_stmt->Declaration();
if (auto* src_var_decl = stmt->As<ast::VariableDeclStatement>()) {
- if (src_var_decl->variable->constructor == expr->Declaration()) {
+ if (src_var_decl->variable->initializer == expr->Declaration()) {
// This statement is just a variable declaration with the
- // initializer as the constructor value. This is what we're
+ // initializer as the initializer value. This is what we're
// attempting to transform to, and so ignore.
return true;
}
@@ -68,7 +68,7 @@
[&](const ast::CallExpression* expr) {
if (auto* sem = ctx.src->Sem().Get(expr)) {
auto* ctor = sem->UnwrapMaterialize()->As<sem::Call>();
- if (ctor->Target()->Is<sem::TypeConstructor>()) {
+ if (ctor->Target()->Is<sem::TypeInitializer>()) {
return promote(sem);
}
}
diff --git a/src/tint/transform/promote_initializers_to_let.h b/src/tint/transform/promote_initializers_to_let.h
index 226c7d8..78793c7 100644
--- a/src/tint/transform/promote_initializers_to_let.h
+++ b/src/tint/transform/promote_initializers_to_let.h
@@ -19,7 +19,7 @@
namespace tint::transform {
-/// A transform that hoists array and structure constructors, and identifiers resolving to a
+/// A transform that hoists array and structure initializers, and identifiers resolving to a
/// 'const' array to a 'let' variable, declared just before the statement of usage.
/// This transform is used by backends that do not support expressions that operate on an immediate
/// array or structure. For example, the following is not immediately expressable for HLSL:
diff --git a/src/tint/transform/promote_side_effects_to_decl.cc b/src/tint/transform/promote_side_effects_to_decl.cc
index d1e1cf1..a913838 100644
--- a/src/tint/transform/promote_side_effects_to_decl.cc
+++ b/src/tint/transform/promote_side_effects_to_decl.cc
@@ -396,7 +396,7 @@
},
[&](const ast::SwitchStatement* s) { ProcessStatement(s->condition); },
[&](const ast::VariableDeclStatement* s) {
- ProcessStatement(s->variable->constructor);
+ ProcessStatement(s->variable->initializer);
});
}
@@ -625,11 +625,11 @@
},
[&](const ast::VariableDeclStatement* s) -> const ast::Statement* {
auto* var = s->variable;
- if (!var->constructor || !sem.Get(var->constructor)->HasSideEffects()) {
+ if (!var->initializer || !sem.Get(var->initializer)->HasSideEffects()) {
return nullptr;
}
tint::utils::Vector<const ast::Statement*, 8> stmts;
- ctx.Replace(var->constructor, Decompose(var->constructor, &stmts));
+ ctx.Replace(var->initializer, Decompose(var->initializer, &stmts));
InsertBefore(stmts, s);
return b.Decl(ctx.CloneWithoutTransform(var));
},
diff --git a/src/tint/transform/promote_side_effects_to_decl_test.cc b/src/tint/transform/promote_side_effects_to_decl_test.cc
index 2cd7401..899fcd8 100644
--- a/src/tint/transform/promote_side_effects_to_decl_test.cc
+++ b/src/tint/transform/promote_side_effects_to_decl_test.cc
@@ -614,7 +614,7 @@
EXPECT_EQ(expect, str(got));
}
-TEST_F(PromoteSideEffectsToDeclTest, Binary_Arith_InTypeCtor) {
+TEST_F(PromoteSideEffectsToDeclTest, Binary_Arith_InTypeInit) {
auto* src = R"(
fn a(i : i32) -> i32 {
@@ -1860,7 +1860,7 @@
EXPECT_EQ(expect, str(got));
}
-TEST_F(PromoteSideEffectsToDeclTest, Binary_Logical_InTypeCtor) {
+TEST_F(PromoteSideEffectsToDeclTest, Binary_Logical_InTypeInit) {
auto* src = R"(
fn a(i : i32) -> bool {
@@ -3030,7 +3030,7 @@
EXPECT_EQ(expect, str(got));
}
-TEST_F(PromoteSideEffectsToDeclTest, TypeConstructor_Struct) {
+TEST_F(PromoteSideEffectsToDeclTest, TypeInitializer_Struct) {
auto* src = R"(
fn a(i : i32) -> i32 {
return 1;
@@ -3072,7 +3072,7 @@
EXPECT_EQ(expect, str(got));
}
-TEST_F(PromoteSideEffectsToDeclTest, TypeConstructor_Array1D) {
+TEST_F(PromoteSideEffectsToDeclTest, TypeInitializer_Array1D) {
auto* src = R"(
fn a(i : i32) -> i32 {
return 1;
@@ -3102,7 +3102,7 @@
EXPECT_EQ(expect, str(got));
}
-TEST_F(PromoteSideEffectsToDeclTest, TypeConstructor_Array2D) {
+TEST_F(PromoteSideEffectsToDeclTest, TypeInitializer_Array2D) {
auto* src = R"(
fn a(i : i32) -> i32 {
return 1;
@@ -3809,7 +3809,7 @@
EXPECT_EQ(expect, str(got));
}
-TEST_F(PromoteSideEffectsToDeclTest, TypeCtor_VarPlusI32CtorPlusVar) {
+TEST_F(PromoteSideEffectsToDeclTest, TypeInit_VarPlusI32InitPlusVar) {
auto* src = R"(
fn f() {
var b = 0;
diff --git a/src/tint/transform/remove_phonies.cc b/src/tint/transform/remove_phonies.cc
index c7c2dc5..1f84538 100644
--- a/src/tint/transform/remove_phonies.cc
+++ b/src/tint/transform/remove_phonies.cc
@@ -70,7 +70,7 @@
stmt->rhs, ctx.dst->Diagnostics(),
[&](const ast::CallExpression* expr) {
// ast::CallExpression may map to a function or builtin call
- // (both may have side-effects), or a type constructor or
+ // (both may have side-effects), or a type initializer or
// type conversion (both do not have side effects).
auto* call = sem.Get<sem::Call>(expr);
if (!call) {
diff --git a/src/tint/transform/simplify_pointers.cc b/src/tint/transform/simplify_pointers.cc
index 396a31c..ea35699 100644
--- a/src/tint/transform/simplify_pointers.cc
+++ b/src/tint/transform/simplify_pointers.cc
@@ -112,7 +112,7 @@
if (var->Is<sem::LocalVariable>() && //
var->Declaration()->Is<ast::Let>() && //
var->Type()->Is<sem::Pointer>()) {
- op.expr = var->Declaration()->constructor;
+ op.expr = var->Declaration()->initializer;
continue;
}
}
@@ -176,7 +176,7 @@
// to be hoist to temporary "saved" variables.
std::vector<const ast::VariableDeclStatement*> saved;
CollectSavedArrayIndices(
- var->Declaration()->constructor, [&](const ast::Expression* idx_expr) {
+ var->Declaration()->initializer, [&](const ast::Expression* idx_expr) {
// We have a sub-expression that needs to be saved.
// Create a new variable
auto saved_name = ctx.dst->Symbols().New(
diff --git a/src/tint/transform/spirv_atomic.cc b/src/tint/transform/spirv_atomic.cc
index cafb74c..127c702 100644
--- a/src/tint/transform/spirv_atomic.cc
+++ b/src/tint/transform/spirv_atomic.cc
@@ -163,7 +163,7 @@
if (v->type && atomic_variables.emplace(user->Variable()).second) {
ctx.Replace(v->type, AtomicTypeFor(user->Variable()->Type()));
}
- if (auto* ctor = user->Variable()->Constructor()) {
+ if (auto* ctor = user->Variable()->Initializer()) {
atomic_expressions.Add(ctor);
}
},
@@ -266,10 +266,10 @@
},
[&](const ast::VariableDeclStatement* decl) {
auto* var = decl->variable;
- if (auto* sem_ctor = ctx.src->Sem().Get(var->constructor)) {
- if (is_ref_to_atomic_var(sem_ctor)) {
- ctx.Replace(var->constructor, [=] {
- auto* rhs = ctx.CloneWithoutTransform(var->constructor);
+ if (auto* sem_init = ctx.src->Sem().Get(var->initializer)) {
+ if (is_ref_to_atomic_var(sem_init)) {
+ ctx.Replace(var->initializer, [=] {
+ auto* rhs = ctx.CloneWithoutTransform(var->initializer);
return b.Call(sem::str(sem::BuiltinType::kAtomicLoad),
b.AddressOf(rhs));
});
diff --git a/src/tint/transform/std140.cc b/src/tint/transform/std140.cc
index 17f5a5b..920fc69 100644
--- a/src/tint/transform/std140.cc
+++ b/src/tint/transform/std140.cc
@@ -513,7 +513,7 @@
// Found a pointer. As the source variable is a uniform buffer variable,
// this must be a pointer-let. Continue traversing from the let
// initializer.
- expr = user->Variable()->Constructor();
+ expr = user->Variable()->Initializer();
return Action::kContinue;
}
TINT_ICE(Transform, b.Diagnostics())
@@ -944,7 +944,7 @@
ret_ty = ty;
}
- auto* case_sel = b.Expr(u32(column_idx));
+ auto* case_sel = b.CaseSelector(b.Expr(u32(column_idx)));
auto* case_body = b.Block(utils::Vector{b.Return(expr)});
cases.Push(b.Case(case_sel, case_body));
}
diff --git a/src/tint/transform/substitute_override.cc b/src/tint/transform/substitute_override.cc
index bdaa45b..2de04e0 100644
--- a/src/tint/transform/substitute_override.cc
+++ b/src/tint/transform/substitute_override.cc
@@ -57,13 +57,13 @@
// No replacement provided, just clone the override node as a const.
auto iter = data->map.find(sem->OverrideId());
if (iter == data->map.end()) {
- if (!w->constructor) {
+ if (!w->initializer) {
ctx.dst->Diagnostics().add_error(
diag::System::Transform,
"Initializer not provided for override, and override not overridden.");
return nullptr;
}
- return ctx.dst->Const(src, sym, ty, ctx.Clone(w->constructor));
+ return ctx.dst->Const(src, sym, ty, ctx.Clone(w->initializer));
}
auto value = iter->second;
diff --git a/src/tint/transform/test_helper.h b/src/tint/transform/test_helper.h
index 42218a7..bc82fe5 100644
--- a/src/tint/transform/test_helper.h
+++ b/src/tint/transform/test_helper.h
@@ -115,7 +115,12 @@
/// @return true if the transform should be run for the given input.
template <typename TRANSFORM>
bool ShouldRun(Program&& program, const DataMap& data = {}) {
- EXPECT_TRUE(program.IsValid()) << program.Diagnostics().str();
+ if (!program.IsValid()) {
+ ADD_FAILURE() << "ShouldRun() called with invalid program: "
+ << program.Diagnostics().str();
+ return false;
+ }
+
const Transform& t = TRANSFORM();
return t.ShouldRun(&program, data);
}
diff --git a/src/tint/transform/transform.h b/src/tint/transform/transform.h
index de57617..c3e3d1d 100644
--- a/src/tint/transform/transform.h
+++ b/src/tint/transform/transform.h
@@ -77,7 +77,7 @@
/// Creates the data of type `T` with the provided arguments and adds it into
/// DataMap keyed by the ClassID of type T.
- /// @param args the arguments forwarded to the constructor for type T
+ /// @param args the arguments forwarded to the initializer for type T
template <typename T, typename... ARGS>
void Add(ARGS&&... args) {
Put(std::make_unique<T>(std::forward<ARGS>(args)...));
diff --git a/src/tint/transform/unshadow.cc b/src/tint/transform/unshadow.cc
index 1746441..975e2ed 100644
--- a/src/tint/transform/unshadow.cc
+++ b/src/tint/transform/unshadow.cc
@@ -52,19 +52,19 @@
auto source = ctx.Clone(decl->source);
auto* type = ctx.Clone(decl->type);
- auto* constructor = ctx.Clone(decl->constructor);
+ auto* initializer = ctx.Clone(decl->initializer);
auto attributes = ctx.Clone(decl->attributes);
return Switch(
decl, //
[&](const ast::Var* var) {
return ctx.dst->Var(source, symbol, type, var->declared_address_space,
- var->declared_access, constructor, attributes);
+ var->declared_access, initializer, attributes);
},
[&](const ast::Let*) {
- return ctx.dst->Let(source, symbol, type, constructor, attributes);
+ return ctx.dst->Let(source, symbol, type, initializer, attributes);
},
[&](const ast::Const*) {
- return ctx.dst->Const(source, symbol, type, constructor, attributes);
+ return ctx.dst->Const(source, symbol, type, initializer, attributes);
},
[&](const ast::Parameter*) {
return ctx.dst->Param(source, symbol, type, attributes);
diff --git a/src/tint/transform/unwind_discard_functions.cc b/src/tint/transform/unwind_discard_functions.cc
index 7d24e7c..4e20d55 100644
--- a/src/tint/transform/unwind_discard_functions.cc
+++ b/src/tint/transform/unwind_discard_functions.cc
@@ -295,10 +295,10 @@
},
[&](const ast::VariableDeclStatement* s) -> const ast::Statement* {
auto* var = s->variable;
- if (!var->constructor) {
+ if (!var->initializer) {
return nullptr;
}
- auto* sem_expr = sem.Get(var->constructor);
+ auto* sem_expr = sem.Get(var->initializer);
if (!MayDiscard(sem_expr)) {
return nullptr;
}
diff --git a/src/tint/transform/vectorize_matrix_conversions_test.cc b/src/tint/transform/vectorize_matrix_conversions_test.cc
index 8142b58..5e42f08 100644
--- a/src/tint/transform/vectorize_matrix_conversions_test.cc
+++ b/src/tint/transform/vectorize_matrix_conversions_test.cc
@@ -331,8 +331,8 @@
EXPECT_EQ(expect, str(got));
}
-// Test that VectorizeMatrixConversions transform will not run for matrix constructor.
-TEST_P(VectorizeMatrixConversionsTest, NonConversion_ConstructorFromVectors) {
+// Test that VectorizeMatrixConversions transform will not run for matrix initializer.
+TEST_P(VectorizeMatrixConversionsTest, NonConversion_InitializerFromVectors) {
uint32_t cols = GetParam().first;
uint32_t rows = GetParam().second;
std::string mat_type = "mat" + std::to_string(cols) + "x" + std::to_string(rows) + "<f32>";
@@ -362,9 +362,9 @@
EXPECT_EQ(expect, str(got));
}
-// Test that VectorizeMatrixConversions transform will not run for identity matrix constructor,
+// Test that VectorizeMatrixConversions transform will not run for identity matrix initializer,
// which also take a single matrix as input.
-TEST_P(VectorizeMatrixConversionsTest, NonConversion_IdentityConstructor) {
+TEST_P(VectorizeMatrixConversionsTest, NonConversion_IdentityInitializer) {
uint32_t cols = GetParam().first;
uint32_t rows = GetParam().second;
std::string mat_type = "mat" + std::to_string(cols) + "x" + std::to_string(rows) + "<f32>";
diff --git a/src/tint/transform/vectorize_scalar_matrix_constructors.cc b/src/tint/transform/vectorize_scalar_matrix_initializers.cc
similarity index 85%
rename from src/tint/transform/vectorize_scalar_matrix_constructors.cc
rename to src/tint/transform/vectorize_scalar_matrix_initializers.cc
index 113db5f..97b0e4f 100644
--- a/src/tint/transform/vectorize_scalar_matrix_constructors.cc
+++ b/src/tint/transform/vectorize_scalar_matrix_initializers.cc
@@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#include "src/tint/transform/vectorize_scalar_matrix_constructors.h"
+#include "src/tint/transform/vectorize_scalar_matrix_initializers.h"
#include <unordered_map>
#include <utility>
@@ -21,21 +21,21 @@
#include "src/tint/sem/abstract_numeric.h"
#include "src/tint/sem/call.h"
#include "src/tint/sem/expression.h"
-#include "src/tint/sem/type_constructor.h"
+#include "src/tint/sem/type_initializer.h"
#include "src/tint/utils/map.h"
-TINT_INSTANTIATE_TYPEINFO(tint::transform::VectorizeScalarMatrixConstructors);
+TINT_INSTANTIATE_TYPEINFO(tint::transform::VectorizeScalarMatrixInitializers);
namespace tint::transform {
-VectorizeScalarMatrixConstructors::VectorizeScalarMatrixConstructors() = default;
+VectorizeScalarMatrixInitializers::VectorizeScalarMatrixInitializers() = default;
-VectorizeScalarMatrixConstructors::~VectorizeScalarMatrixConstructors() = default;
+VectorizeScalarMatrixInitializers::~VectorizeScalarMatrixInitializers() = default;
-bool VectorizeScalarMatrixConstructors::ShouldRun(const Program* program, const DataMap&) const {
+bool VectorizeScalarMatrixInitializers::ShouldRun(const Program* program, const DataMap&) const {
for (auto* node : program->ASTNodes().Objects()) {
if (auto* call = program->Sem().Get<sem::Call>(node)) {
- if (call->Target()->Is<sem::TypeConstructor>() && call->Type()->Is<sem::Matrix>()) {
+ if (call->Target()->Is<sem::TypeInitializer>() && call->Type()->Is<sem::Matrix>()) {
auto& args = call->Arguments();
if (!args.IsEmpty() && args[0]->Type()->UnwrapRef()->is_scalar()) {
return true;
@@ -46,13 +46,13 @@
return false;
}
-void VectorizeScalarMatrixConstructors::Run(CloneContext& ctx, const DataMap&, DataMap&) const {
- std::unordered_map<const sem::Matrix*, Symbol> scalar_ctors;
+void VectorizeScalarMatrixInitializers::Run(CloneContext& ctx, const DataMap&, DataMap&) const {
+ std::unordered_map<const sem::Matrix*, Symbol> scalar_inits;
ctx.ReplaceAll([&](const ast::CallExpression* expr) -> const ast::CallExpression* {
auto* call = ctx.src->Sem().Get(expr)->UnwrapMaterialize()->As<sem::Call>();
- auto* ty_ctor = call->Target()->As<sem::TypeConstructor>();
- if (!ty_ctor) {
+ auto* ty_init = call->Target()->As<sem::TypeInitializer>();
+ if (!ty_init) {
return nullptr;
}
auto* mat_type = call->Type()->As<sem::Matrix>();
@@ -65,7 +65,7 @@
return nullptr;
}
- // If the argument type is a matrix, then this is an identity / conversion constructor.
+ // If the argument type is a matrix, then this is an identity / conversion initializer.
// If the argument type is a vector, then we're already column vectors.
// If the argument type is abstract, then we're const-expression and there's no need to
// adjust this, as it'll be constant folded by the backend.
@@ -97,7 +97,7 @@
// Generate a helper function for constructing the matrix.
// This is done to ensure that the single argument value is only evaluated once, and
// with the correct expression evaluation order.
- auto fn = utils::GetOrCreate(scalar_ctors, mat_type, [&] {
+ auto fn = utils::GetOrCreate(scalar_inits, mat_type, [&] {
auto name =
ctx.dst->Symbols().New("build_mat" + std::to_string(mat_type->columns()) + "x" +
std::to_string(mat_type->rows()));
@@ -124,7 +124,7 @@
}
TINT_ICE(Transform, ctx.dst->Diagnostics())
- << "matrix constructor has unexpected number of arguments";
+ << "matrix initializer has unexpected number of arguments";
return nullptr;
});
diff --git a/src/tint/transform/vectorize_scalar_matrix_constructors.h b/src/tint/transform/vectorize_scalar_matrix_initializers.h
similarity index 76%
rename from src/tint/transform/vectorize_scalar_matrix_constructors.h
rename to src/tint/transform/vectorize_scalar_matrix_initializers.h
index 31c57f0..342754a 100644
--- a/src/tint/transform/vectorize_scalar_matrix_constructors.h
+++ b/src/tint/transform/vectorize_scalar_matrix_initializers.h
@@ -12,22 +12,22 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#ifndef SRC_TINT_TRANSFORM_VECTORIZE_SCALAR_MATRIX_CONSTRUCTORS_H_
-#define SRC_TINT_TRANSFORM_VECTORIZE_SCALAR_MATRIX_CONSTRUCTORS_H_
+#ifndef SRC_TINT_TRANSFORM_VECTORIZE_SCALAR_MATRIX_INITIALIZERS_H_
+#define SRC_TINT_TRANSFORM_VECTORIZE_SCALAR_MATRIX_INITIALIZERS_H_
#include "src/tint/transform/transform.h"
namespace tint::transform {
-/// A transform that converts scalar matrix constructors to the vector form.
-class VectorizeScalarMatrixConstructors final
- : public Castable<VectorizeScalarMatrixConstructors, Transform> {
+/// A transform that converts scalar matrix initializers to the vector form.
+class VectorizeScalarMatrixInitializers final
+ : public Castable<VectorizeScalarMatrixInitializers, Transform> {
public:
/// Constructor
- VectorizeScalarMatrixConstructors();
+ VectorizeScalarMatrixInitializers();
/// Destructor
- ~VectorizeScalarMatrixConstructors() override;
+ ~VectorizeScalarMatrixInitializers() override;
/// @param program the program to inspect
/// @param data optional extra transform-specific input data
@@ -46,4 +46,4 @@
} // namespace tint::transform
-#endif // SRC_TINT_TRANSFORM_VECTORIZE_SCALAR_MATRIX_CONSTRUCTORS_H_
+#endif // SRC_TINT_TRANSFORM_VECTORIZE_SCALAR_MATRIX_INITIALIZERS_H_
diff --git a/src/tint/transform/vectorize_scalar_matrix_constructors_test.cc b/src/tint/transform/vectorize_scalar_matrix_initializers_test.cc
similarity index 82%
rename from src/tint/transform/vectorize_scalar_matrix_constructors_test.cc
rename to src/tint/transform/vectorize_scalar_matrix_initializers_test.cc
index 017af72..4218b99 100644
--- a/src/tint/transform/vectorize_scalar_matrix_constructors_test.cc
+++ b/src/tint/transform/vectorize_scalar_matrix_initializers_test.cc
@@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#include "src/tint/transform/vectorize_scalar_matrix_constructors.h"
+#include "src/tint/transform/vectorize_scalar_matrix_initializers.h"
#include <string>
#include <utility>
@@ -23,15 +23,15 @@
namespace tint::transform {
namespace {
-using VectorizeScalarMatrixConstructorsTest = TransformTestWithParam<std::pair<uint32_t, uint32_t>>;
+using VectorizeScalarMatrixInitializersTest = TransformTestWithParam<std::pair<uint32_t, uint32_t>>;
-TEST_F(VectorizeScalarMatrixConstructorsTest, ShouldRunEmptyModule) {
+TEST_F(VectorizeScalarMatrixInitializersTest, ShouldRunEmptyModule) {
auto* src = R"()";
- EXPECT_FALSE(ShouldRun<VectorizeScalarMatrixConstructors>(src));
+ EXPECT_FALSE(ShouldRun<VectorizeScalarMatrixInitializers>(src));
}
-TEST_P(VectorizeScalarMatrixConstructorsTest, MultipleScalars) {
+TEST_P(VectorizeScalarMatrixInitializersTest, MultipleScalars) {
uint32_t cols = GetParam().first;
uint32_t rows = GetParam().second;
std::string mat_type = "mat" + std::to_string(cols) + "x" + std::to_string(rows) + "<f32>";
@@ -66,14 +66,14 @@
auto src = utils::ReplaceAll(tmpl, "${values}", scalar_values);
auto expect = utils::ReplaceAll(tmpl, "${values}", vector_values);
- EXPECT_TRUE(ShouldRun<VectorizeScalarMatrixConstructors>(src));
+ EXPECT_TRUE(ShouldRun<VectorizeScalarMatrixInitializers>(src));
- auto got = Run<VectorizeScalarMatrixConstructors>(src);
+ auto got = Run<VectorizeScalarMatrixInitializers>(src);
EXPECT_EQ(expect, str(got));
}
-TEST_P(VectorizeScalarMatrixConstructorsTest, MultipleScalarsReference) {
+TEST_P(VectorizeScalarMatrixInitializersTest, MultipleScalarsReference) {
uint32_t cols = GetParam().first;
uint32_t rows = GetParam().second;
std::string mat_type = "mat" + std::to_string(cols) + "x" + std::to_string(rows) + "<f32>";
@@ -109,14 +109,14 @@
auto src = utils::ReplaceAll(tmpl, "${values}", scalar_values);
auto expect = utils::ReplaceAll(tmpl, "${values}", vector_values);
- EXPECT_TRUE(ShouldRun<VectorizeScalarMatrixConstructors>(src));
+ EXPECT_TRUE(ShouldRun<VectorizeScalarMatrixInitializers>(src));
- auto got = Run<VectorizeScalarMatrixConstructors>(src);
+ auto got = Run<VectorizeScalarMatrixInitializers>(src);
EXPECT_EQ(expect, str(got));
}
-TEST_P(VectorizeScalarMatrixConstructorsTest, NonScalarConstructors) {
+TEST_P(VectorizeScalarMatrixInitializersTest, NonScalarInitializers) {
uint32_t cols = GetParam().first;
uint32_t rows = GetParam().second;
std::string mat_type = "mat" + std::to_string(cols) + "x" + std::to_string(rows) + "<f32>";
@@ -139,15 +139,15 @@
auto src = utils::ReplaceAll(tmpl, "${columns}", columns);
auto expect = src;
- EXPECT_FALSE(ShouldRun<VectorizeScalarMatrixConstructors>(src));
+ EXPECT_FALSE(ShouldRun<VectorizeScalarMatrixInitializers>(src));
- auto got = Run<VectorizeScalarMatrixConstructors>(src);
+ auto got = Run<VectorizeScalarMatrixInitializers>(src);
EXPECT_EQ(expect, str(got));
}
-INSTANTIATE_TEST_SUITE_P(VectorizeScalarMatrixConstructorsTest,
- VectorizeScalarMatrixConstructorsTest,
+INSTANTIATE_TEST_SUITE_P(VectorizeScalarMatrixInitializersTest,
+ VectorizeScalarMatrixInitializersTest,
testing::Values(std::make_pair(2, 2),
std::make_pair(2, 3),
std::make_pair(2, 4),
diff --git a/src/tint/transform/zero_init_workgroup_memory.cc b/src/tint/transform/zero_init_workgroup_memory.cc
index 47a5b99..ea65436 100644
--- a/src/tint/transform/zero_init_workgroup_memory.cc
+++ b/src/tint/transform/zero_init_workgroup_memory.cc
@@ -396,7 +396,7 @@
}
/// @returns true if a variable with store type `ty` can be efficiently zeroed
- /// by assignment of a type constructor without operands. If
+ /// by assignment of a type initializer without operands. If
/// CanTriviallyZero() returns false, then the type needs to be
/// initialized by decomposing the initialization into multiple
/// sub-initializations.
diff --git a/src/tint/writer/append_vector.cc b/src/tint/writer/append_vector.cc
index edf9132..dba28d6 100644
--- a/src/tint/writer/append_vector.cc
+++ b/src/tint/writer/append_vector.cc
@@ -19,8 +19,8 @@
#include "src/tint/sem/call.h"
#include "src/tint/sem/expression.h"
-#include "src/tint/sem/type_constructor.h"
#include "src/tint/sem/type_conversion.h"
+#include "src/tint/sem/type_initializer.h"
#include "src/tint/utils/transform.h"
using namespace tint::number_suffixes; // NOLINT
@@ -28,14 +28,14 @@
namespace tint::writer {
namespace {
-struct VectorConstructorInfo {
+struct VectorInitializerInfo {
const sem::Call* call = nullptr;
- const sem::TypeConstructor* ctor = nullptr;
+ const sem::TypeInitializer* ctor = nullptr;
operator bool() const { return call != nullptr; }
};
-VectorConstructorInfo AsVectorConstructor(const sem::Expression* expr) {
+VectorInitializerInfo AsVectorInitializer(const sem::Expression* expr) {
if (auto* call = expr->As<sem::Call>()) {
- if (auto* ctor = call->Target()->As<sem::TypeConstructor>()) {
+ if (auto* ctor = call->Target()->As<sem::TypeInitializer>()) {
if (ctor->ReturnType()->Is<sem::Vector>()) {
return {call, ctor};
}
@@ -103,20 +103,20 @@
auto* packed_ast_ty = b->create<ast::Vector>(packed_el_ast_ty, packed_size);
auto* packed_sem_ty = b->create<sem::Vector>(packed_el_sem_ty, packed_size);
- // If the coordinates are already passed in a vector constructor, with only
+ // If the coordinates are already passed in a vector initializer, with only
// scalar components supplied, extract the elements into the new vector
// instead of nesting a vector-in-vector.
- // If the coordinates are a zero-constructor of the vector, then expand that
+ // If the coordinates are a zero-initializer of the vector, then expand that
// to scalar zeros.
- // The other cases for a nested vector constructor are when it is used
+ // The other cases for a nested vector initializer are when it is used
// to convert a vector of a different type, e.g. vec2<i32>(vec2<u32>()).
// In that case, preserve the original argument, or you'll get a type error.
utils::Vector<const sem::Expression*, 4> packed;
- if (auto vc = AsVectorConstructor(vector_sem)) {
+ if (auto vc = AsVectorInitializer(vector_sem)) {
const auto num_supplied = vc.call->Arguments().Length();
if (num_supplied == 0) {
- // Zero-value vector constructor. Populate with zeros
+ // Zero-value vector initializer. Populate with zeros
for (uint32_t i = 0; i < packed_size - 1; i++) {
auto* zero = Zero(*b, packed_el_sem_ty, statement);
packed.Push(zero);
@@ -149,10 +149,10 @@
packed.Push(scalar_sem);
}
- auto* constructor_ast = b->Construct(
+ auto* initializer_ast = b->Construct(
packed_ast_ty,
utils::Transform(packed, [&](const sem::Expression* expr) { return expr->Declaration(); }));
- auto* constructor_target = b->create<sem::TypeConstructor>(
+ auto* initializer_target = b->create<sem::TypeInitializer>(
packed_sem_ty,
utils::Transform(packed,
[&](const tint::sem::Expression* arg, size_t i) -> const sem::Parameter* {
@@ -161,13 +161,13 @@
ast::AddressSpace::kNone, ast::Access::kUndefined);
}),
sem::EvaluationStage::kRuntime);
- auto* constructor_sem =
- b->create<sem::Call>(constructor_ast, constructor_target, sem::EvaluationStage::kRuntime,
+ auto* initializer_sem =
+ b->create<sem::Call>(initializer_ast, initializer_target, sem::EvaluationStage::kRuntime,
std::move(packed), statement,
/* constant_value */ nullptr,
/* has_side_effects */ false);
- b->Sem().Add(constructor_ast, constructor_sem);
- return constructor_sem;
+ b->Sem().Add(initializer_ast, initializer_sem);
+ return initializer_sem;
}
} // namespace tint::writer
diff --git a/src/tint/writer/append_vector.h b/src/tint/writer/append_vector.h
index 353e20e..91be10b 100644
--- a/src/tint/writer/append_vector.h
+++ b/src/tint/writer/append_vector.h
@@ -30,7 +30,7 @@
/// A helper function used to append a vector with an additional scalar.
/// If the scalar's type does not match the target vector element type,
-/// then it is value-converted (via TypeConstructor) before being added.
+/// then it is value-converted (via TypeInitializer) before being added.
/// All types must have been assigned to the expressions and their child nodes
/// before calling.
/// @param builder the program builder.
diff --git a/src/tint/writer/append_vector_test.cc b/src/tint/writer/append_vector_test.cc
index 9b78b57..08c1d1c 100644
--- a/src/tint/writer/append_vector_test.cc
+++ b/src/tint/writer/append_vector_test.cc
@@ -15,7 +15,7 @@
#include "src/tint/writer/append_vector.h"
#include "src/tint/program_builder.h"
#include "src/tint/resolver/resolver.h"
-#include "src/tint/sem/type_constructor.h"
+#include "src/tint/sem/type_initializer.h"
#include "gtest/gtest.h"
@@ -53,7 +53,7 @@
EXPECT_EQ(call->Arguments()[1], Sem().Get(scalar_2));
EXPECT_EQ(call->Arguments()[2], Sem().Get(scalar_3));
- auto* ctor = call->Target()->As<sem::TypeConstructor>();
+ auto* ctor = call->Target()->As<sem::TypeInitializer>();
ASSERT_NE(ctor, nullptr);
ASSERT_TRUE(ctor->ReturnType()->Is<sem::Vector>());
EXPECT_EQ(ctor->ReturnType()->As<sem::Vector>()->Width(), 3u);
@@ -97,7 +97,7 @@
EXPECT_EQ(call->Arguments()[1], Sem().Get(scalar_2));
EXPECT_EQ(call->Arguments()[2], Sem().Get(u32_to_i32));
- auto* ctor = call->Target()->As<sem::TypeConstructor>();
+ auto* ctor = call->Target()->As<sem::TypeInitializer>();
ASSERT_NE(ctor, nullptr);
ASSERT_TRUE(ctor->ReturnType()->Is<sem::Vector>());
EXPECT_EQ(ctor->ReturnType()->As<sem::Vector>()->Width(), 3u);
@@ -148,7 +148,7 @@
EXPECT_EQ(call->Arguments()[0], Sem().Get(vec_12));
EXPECT_EQ(call->Arguments()[1], Sem().Get(u32_to_i32));
- auto* ctor = call->Target()->As<sem::TypeConstructor>();
+ auto* ctor = call->Target()->As<sem::TypeInitializer>();
ASSERT_NE(ctor, nullptr);
ASSERT_TRUE(ctor->ReturnType()->Is<sem::Vector>());
EXPECT_EQ(ctor->ReturnType()->As<sem::Vector>()->Width(), 3u);
@@ -191,7 +191,7 @@
EXPECT_EQ(call->Arguments()[1], Sem().Get(scalar_2));
EXPECT_EQ(call->Arguments()[2], Sem().Get(f32_to_i32));
- auto* ctor = call->Target()->As<sem::TypeConstructor>();
+ auto* ctor = call->Target()->As<sem::TypeInitializer>();
ASSERT_NE(ctor, nullptr);
ASSERT_TRUE(ctor->ReturnType()->Is<sem::Vector>());
EXPECT_EQ(ctor->ReturnType()->As<sem::Vector>()->Width(), 3u);
@@ -234,7 +234,7 @@
EXPECT_EQ(call->Arguments()[2], Sem().Get(scalar_3));
EXPECT_EQ(call->Arguments()[3], Sem().Get(scalar_4));
- auto* ctor = call->Target()->As<sem::TypeConstructor>();
+ auto* ctor = call->Target()->As<sem::TypeInitializer>();
ASSERT_NE(ctor, nullptr);
ASSERT_TRUE(ctor->ReturnType()->Is<sem::Vector>());
EXPECT_EQ(ctor->ReturnType()->As<sem::Vector>()->Width(), 4u);
@@ -272,7 +272,7 @@
EXPECT_EQ(call->Arguments()[0], Sem().Get(vec_12));
EXPECT_EQ(call->Arguments()[1], Sem().Get(scalar_3));
- auto* ctor = call->Target()->As<sem::TypeConstructor>();
+ auto* ctor = call->Target()->As<sem::TypeInitializer>();
ASSERT_NE(ctor, nullptr);
ASSERT_TRUE(ctor->ReturnType()->Is<sem::Vector>());
EXPECT_EQ(ctor->ReturnType()->As<sem::Vector>()->Width(), 3u);
@@ -312,7 +312,7 @@
EXPECT_EQ(call->Arguments()[1], Sem().Get(scalar_2));
EXPECT_EQ(call->Arguments()[2], Sem().Get(scalar_3));
- auto* ctor = call->Target()->As<sem::TypeConstructor>();
+ auto* ctor = call->Target()->As<sem::TypeInitializer>();
ASSERT_NE(ctor, nullptr);
ASSERT_TRUE(ctor->ReturnType()->Is<sem::Vector>());
EXPECT_EQ(ctor->ReturnType()->As<sem::Vector>()->Width(), 3u);
@@ -350,7 +350,7 @@
EXPECT_EQ(call->Arguments()[0], Sem().Get(vec_12));
EXPECT_EQ(call->Arguments()[1], Sem().Get(scalar_3));
- auto* ctor = call->Target()->As<sem::TypeConstructor>();
+ auto* ctor = call->Target()->As<sem::TypeInitializer>();
ASSERT_NE(ctor, nullptr);
ASSERT_TRUE(ctor->ReturnType()->Is<sem::Vector>());
EXPECT_EQ(ctor->ReturnType()->As<sem::Vector>()->Width(), 3u);
@@ -391,7 +391,7 @@
EXPECT_EQ(call->Arguments()[0], Sem().Get(vec_12));
EXPECT_EQ(call->Arguments()[1], Sem().Get(f32_to_i32));
- auto* ctor = call->Target()->As<sem::TypeConstructor>();
+ auto* ctor = call->Target()->As<sem::TypeInitializer>();
ASSERT_NE(ctor, nullptr);
ASSERT_TRUE(ctor->ReturnType()->Is<sem::Vector>());
EXPECT_EQ(ctor->ReturnType()->As<sem::Vector>()->Width(), 3u);
@@ -428,7 +428,7 @@
EXPECT_EQ(call->Arguments()[0], Sem().Get(vec_12));
EXPECT_EQ(call->Arguments()[1], Sem().Get(scalar_3));
- auto* ctor = call->Target()->As<sem::TypeConstructor>();
+ auto* ctor = call->Target()->As<sem::TypeInitializer>();
ASSERT_NE(ctor, nullptr);
ASSERT_TRUE(ctor->ReturnType()->Is<sem::Vector>());
EXPECT_EQ(ctor->ReturnType()->As<sem::Vector>()->Width(), 3u);
@@ -469,7 +469,7 @@
EXPECT_EQ(call->Arguments()[2], Sem().Get(vec_0004->args[2]));
EXPECT_EQ(call->Arguments()[3], Sem().Get(scalar));
- auto* ctor = call->Target()->As<sem::TypeConstructor>();
+ auto* ctor = call->Target()->As<sem::TypeInitializer>();
ASSERT_NE(ctor, nullptr);
ASSERT_TRUE(ctor->ReturnType()->Is<sem::Vector>());
EXPECT_EQ(ctor->ReturnType()->As<sem::Vector>()->Width(), 4u);
diff --git a/src/tint/writer/glsl/generator_impl.cc b/src/tint/writer/glsl/generator_impl.cc
index 49da7d6..fc9de73 100644
--- a/src/tint/writer/glsl/generator_impl.cc
+++ b/src/tint/writer/glsl/generator_impl.cc
@@ -43,8 +43,9 @@
#include "src/tint/sem/statement.h"
#include "src/tint/sem/storage_texture.h"
#include "src/tint/sem/struct.h"
-#include "src/tint/sem/type_constructor.h"
+#include "src/tint/sem/switch_statement.h"
#include "src/tint/sem/type_conversion.h"
+#include "src/tint/sem/type_initializer.h"
#include "src/tint/sem/variable.h"
#include "src/tint/transform/add_block_attribute.h"
#include "src/tint/transform/add_empty_entry_point.h"
@@ -711,6 +712,16 @@
return true;
}
+bool GeneratorImpl::EmitBreakIf(const ast::BreakIfStatement* b) {
+ auto out = line();
+ out << "if (";
+ if (!EmitExpression(out, b->condition)) {
+ return false;
+ }
+ out << ") { break; }";
+ return true;
+}
+
bool GeneratorImpl::EmitCall(std::ostream& out, const ast::CallExpression* expr) {
auto* call = builder_.Sem().Get<sem::Call>(expr);
auto* target = call->Target();
@@ -724,8 +735,8 @@
if (auto* cast = target->As<sem::TypeConversion>()) {
return EmitTypeConversion(out, call, cast);
}
- if (auto* ctor = target->As<sem::TypeConstructor>()) {
- return EmitTypeConstructor(out, call, ctor);
+ if (auto* ctor = target->As<sem::TypeInitializer>()) {
+ return EmitTypeInitializer(out, call, ctor);
}
TINT_ICE(Writer, diagnostics_) << "unhandled call target: " << target->TypeInfo().name;
return false;
@@ -851,12 +862,12 @@
return true;
}
-bool GeneratorImpl::EmitTypeConstructor(std::ostream& out,
+bool GeneratorImpl::EmitTypeInitializer(std::ostream& out,
const sem::Call* call,
- const sem::TypeConstructor* ctor) {
+ const sem::TypeInitializer* ctor) {
auto* type = ctor->ReturnType();
- // If the type constructor is empty then we need to construct with the zero
+ // If the type initializer is empty then we need to construct with the zero
// value for all components.
if (call->Arguments().IsEmpty()) {
return EmitZeroValue(out, type);
@@ -1686,19 +1697,21 @@
}
bool GeneratorImpl::EmitCase(const ast::CaseStatement* stmt) {
- if (stmt->IsDefault()) {
- line() << "default: {";
- } else {
- for (auto* selector : stmt->selectors) {
- auto out = line();
+ auto* sem = builder_.Sem().Get<sem::CaseStatement>(stmt);
+ for (auto* selector : sem->Selectors()) {
+ auto out = line();
+
+ if (selector->IsDefault()) {
+ out << "default";
+ } else {
out << "case ";
- if (!EmitLiteral(out, selector)) {
+ if (!EmitConstant(out, selector->Value())) {
return false;
}
- out << ":";
- if (selector == stmt->selectors.Back()) {
- out << " {";
- }
+ }
+ out << ":";
+ if (selector == sem->Selectors().back()) {
+ out << " {";
}
}
@@ -1971,8 +1984,8 @@
}
out << " = ";
- if (auto* constructor = decl->constructor) {
- if (!EmitExpression(out, constructor)) {
+ if (auto* initializer = decl->initializer) {
+ if (!EmitExpression(out, initializer)) {
return false;
}
} else {
@@ -1997,9 +2010,9 @@
return false;
}
- if (auto* constructor = decl->constructor) {
+ if (auto* initializer = decl->initializer) {
out << " = ";
- if (!EmitExpression(out, constructor)) {
+ if (!EmitExpression(out, initializer)) {
return false;
}
}
@@ -2030,9 +2043,9 @@
return false;
}
- if (auto* constructor = decl->constructor) {
+ if (auto* initializer = decl->initializer) {
out << " = ";
- if (!EmitExpression(out, constructor)) {
+ if (!EmitExpression(out, initializer)) {
return false;
}
}
@@ -2613,6 +2626,7 @@
[&](const ast::AssignmentStatement* a) { return EmitAssign(a); },
[&](const ast::BlockStatement* b) { return EmitBlock(b); },
[&](const ast::BreakStatement* b) { return EmitBreak(b); },
+ [&](const ast::BreakIfStatement* b) { return EmitBreakIf(b); },
[&](const ast::CallStatement* c) {
auto out = line();
if (!EmitCall(out, c->expr)) {
@@ -2952,8 +2966,8 @@
out << " = ";
- if (var->constructor) {
- if (!EmitExpression(out, var->constructor)) {
+ if (var->initializer) {
+ if (!EmitExpression(out, var->initializer)) {
return false;
}
} else {
@@ -2979,7 +2993,7 @@
out << " = ";
- if (!EmitExpression(out, let->constructor)) {
+ if (!EmitExpression(out, let->initializer)) {
return false;
}
@@ -2999,7 +3013,7 @@
return false;
}
out << " = ";
- if (!EmitExpression(out, var->constructor)) {
+ if (!EmitExpression(out, var->initializer)) {
return false;
}
out << ";";
diff --git a/src/tint/writer/glsl/generator_impl.h b/src/tint/writer/glsl/generator_impl.h
index f91775e..889b406 100644
--- a/src/tint/writer/glsl/generator_impl.h
+++ b/src/tint/writer/glsl/generator_impl.h
@@ -45,7 +45,7 @@
class Call;
class Constant;
class Builtin;
-class TypeConstructor;
+class TypeInitializer;
class TypeConversion;
} // namespace tint::sem
@@ -139,6 +139,10 @@
/// @param stmt the statement to emit
/// @returns true if the statement was emitted successfully
bool EmitBreak(const ast::BreakStatement* stmt);
+ /// Handles a break-if statement
+ /// @param stmt the statement to emit
+ /// @returns true if the statement was emitted successfully
+ bool EmitBreakIf(const ast::BreakIfStatement* stmt);
/// Handles generating a call expression
/// @param out the output of the expression stream
/// @param expr the call expression
@@ -163,14 +167,14 @@
bool EmitTypeConversion(std::ostream& out,
const sem::Call* call,
const sem::TypeConversion* conv);
- /// Handles generating a type constructor expression
+ /// Handles generating a type initializer expression
/// @param out the output of the expression stream
/// @param call the call expression
- /// @param ctor the type constructor
+ /// @param ctor the type initializer
/// @returns true if the expression is emitted
- bool EmitTypeConstructor(std::ostream& out,
+ bool EmitTypeInitializer(std::ostream& out,
const sem::Call* call,
- const sem::TypeConstructor* ctor);
+ const sem::TypeInitializer* ctor);
/// Handles generating a barrier builtin call
/// @param out the output of the expression stream
/// @param builtin the semantic information for the barrier builtin
diff --git a/src/tint/writer/glsl/generator_impl_case_test.cc b/src/tint/writer/glsl/generator_impl_case_test.cc
index 1f60781..4f1c6f3 100644
--- a/src/tint/writer/glsl/generator_impl_case_test.cc
+++ b/src/tint/writer/glsl/generator_impl_case_test.cc
@@ -23,7 +23,8 @@
using GlslGeneratorImplTest_Case = TestHelper;
TEST_F(GlslGeneratorImplTest_Case, Emit_Case) {
- auto* s = Switch(1_i, Case(Expr(5_i), Block(create<ast::BreakStatement>())), DefaultCase());
+ auto* s =
+ Switch(1_i, Case(CaseSelector(5_i), Block(create<ast::BreakStatement>())), DefaultCase());
WrapInFunction(s);
GeneratorImpl& gen = Build();
@@ -38,7 +39,7 @@
}
TEST_F(GlslGeneratorImplTest_Case, Emit_Case_BreaksByDefault) {
- auto* s = Switch(1_i, Case(Expr(5_i), Block()), DefaultCase());
+ auto* s = Switch(1_i, Case(CaseSelector(5_i), Block()), DefaultCase());
WrapInFunction(s);
GeneratorImpl& gen = Build();
@@ -53,8 +54,8 @@
}
TEST_F(GlslGeneratorImplTest_Case, Emit_Case_WithFallthrough) {
- auto* s =
- Switch(1_i, Case(Expr(5_i), Block(create<ast::FallthroughStatement>())), DefaultCase());
+ auto* s = Switch(1_i, Case(CaseSelector(5_i), Block(create<ast::FallthroughStatement>())),
+ DefaultCase());
WrapInFunction(s);
GeneratorImpl& gen = Build();
@@ -72,8 +73,8 @@
auto* s = Switch(1_i,
Case(
utils::Vector{
- Expr(5_i),
- Expr(6_i),
+ CaseSelector(5_i),
+ CaseSelector(6_i),
},
Block(create<ast::BreakStatement>())),
DefaultCase());
diff --git a/src/tint/writer/glsl/generator_impl_constructor_test.cc b/src/tint/writer/glsl/generator_impl_initializer_test.cc
similarity index 79%
rename from src/tint/writer/glsl/generator_impl_constructor_test.cc
rename to src/tint/writer/glsl/generator_impl_initializer_test.cc
index b987a31..69e58fc 100644
--- a/src/tint/writer/glsl/generator_impl_constructor_test.cc
+++ b/src/tint/writer/glsl/generator_impl_initializer_test.cc
@@ -22,9 +22,9 @@
using ::testing::HasSubstr;
-using GlslGeneratorImplTest_Constructor = TestHelper;
+using GlslGeneratorImplTest_Initializer = TestHelper;
-TEST_F(GlslGeneratorImplTest_Constructor, EmitConstructor_Bool) {
+TEST_F(GlslGeneratorImplTest_Initializer, EmitInitializer_Bool) {
WrapInFunction(Expr(false));
GeneratorImpl& gen = Build();
@@ -33,7 +33,7 @@
EXPECT_THAT(gen.result(), HasSubstr("false"));
}
-TEST_F(GlslGeneratorImplTest_Constructor, EmitConstructor_Int) {
+TEST_F(GlslGeneratorImplTest_Initializer, EmitInitializer_Int) {
WrapInFunction(Expr(-12345_i));
GeneratorImpl& gen = Build();
@@ -42,7 +42,7 @@
EXPECT_THAT(gen.result(), HasSubstr("-12345"));
}
-TEST_F(GlslGeneratorImplTest_Constructor, EmitConstructor_UInt) {
+TEST_F(GlslGeneratorImplTest_Initializer, EmitInitializer_UInt) {
WrapInFunction(Expr(56779_u));
GeneratorImpl& gen = Build();
@@ -51,7 +51,7 @@
EXPECT_THAT(gen.result(), HasSubstr("56779u"));
}
-TEST_F(GlslGeneratorImplTest_Constructor, EmitConstructor_Float) {
+TEST_F(GlslGeneratorImplTest_Initializer, EmitInitializer_Float) {
// Use a number close to 1<<30 but whose decimal representation ends in 0.
WrapInFunction(Expr(f32((1 << 30) - 4)));
@@ -61,7 +61,7 @@
EXPECT_THAT(gen.result(), HasSubstr("1073741824.0f"));
}
-TEST_F(GlslGeneratorImplTest_Constructor, EmitConstructor_F16) {
+TEST_F(GlslGeneratorImplTest_Initializer, EmitInitializer_F16) {
Enable(ast::Extension::kF16);
// Use a number close to 1<<16 but whose decimal representation ends in 0.
@@ -73,7 +73,7 @@
EXPECT_THAT(gen.result(), HasSubstr("32752.0hf"));
}
-TEST_F(GlslGeneratorImplTest_Constructor, EmitConstructor_Type_Float) {
+TEST_F(GlslGeneratorImplTest_Initializer, EmitInitializer_Type_Float) {
WrapInFunction(Construct<f32>(-1.2e-5_f));
GeneratorImpl& gen = Build();
@@ -82,7 +82,7 @@
EXPECT_THAT(gen.result(), HasSubstr("-0.000012f"));
}
-TEST_F(GlslGeneratorImplTest_Constructor, EmitConstructor_Type_F16) {
+TEST_F(GlslGeneratorImplTest_Initializer, EmitInitializer_Type_F16) {
Enable(ast::Extension::kF16);
WrapInFunction(Construct<f16>(-1.2e-3_h));
@@ -93,7 +93,7 @@
EXPECT_THAT(gen.result(), HasSubstr("-0.00119972229hf"));
}
-TEST_F(GlslGeneratorImplTest_Constructor, EmitConstructor_Type_Bool) {
+TEST_F(GlslGeneratorImplTest_Initializer, EmitInitializer_Type_Bool) {
WrapInFunction(Construct<bool>(true));
GeneratorImpl& gen = Build();
@@ -102,7 +102,7 @@
EXPECT_THAT(gen.result(), HasSubstr("true"));
}
-TEST_F(GlslGeneratorImplTest_Constructor, EmitConstructor_Type_Int) {
+TEST_F(GlslGeneratorImplTest_Initializer, EmitInitializer_Type_Int) {
WrapInFunction(Construct<i32>(-12345_i));
GeneratorImpl& gen = Build();
@@ -111,7 +111,7 @@
EXPECT_THAT(gen.result(), HasSubstr("-12345"));
}
-TEST_F(GlslGeneratorImplTest_Constructor, EmitConstructor_Type_Uint) {
+TEST_F(GlslGeneratorImplTest_Initializer, EmitInitializer_Type_Uint) {
WrapInFunction(Construct<u32>(12345_u));
GeneratorImpl& gen = Build();
@@ -120,7 +120,7 @@
EXPECT_THAT(gen.result(), HasSubstr("12345u"));
}
-TEST_F(GlslGeneratorImplTest_Constructor, EmitConstructor_Type_Vec_F32) {
+TEST_F(GlslGeneratorImplTest_Initializer, EmitInitializer_Type_Vec_F32) {
WrapInFunction(vec3<f32>(1_f, 2_f, 3_f));
GeneratorImpl& gen = Build();
@@ -129,7 +129,7 @@
EXPECT_THAT(gen.result(), HasSubstr("vec3(1.0f, 2.0f, 3.0f)"));
}
-TEST_F(GlslGeneratorImplTest_Constructor, EmitConstructor_Type_Vec_F16) {
+TEST_F(GlslGeneratorImplTest_Initializer, EmitInitializer_Type_Vec_F16) {
Enable(ast::Extension::kF16);
WrapInFunction(vec3<f16>(1_h, 2_h, 3_h));
@@ -140,7 +140,7 @@
EXPECT_THAT(gen.result(), HasSubstr("f16vec3(1.0hf, 2.0hf, 3.0hf)"));
}
-TEST_F(GlslGeneratorImplTest_Constructor, EmitConstructor_Type_Vec_Empty_F32) {
+TEST_F(GlslGeneratorImplTest_Initializer, EmitInitializer_Type_Vec_Empty_F32) {
WrapInFunction(vec3<f32>());
GeneratorImpl& gen = Build();
@@ -149,7 +149,7 @@
EXPECT_THAT(gen.result(), HasSubstr("vec3(0.0f)"));
}
-TEST_F(GlslGeneratorImplTest_Constructor, EmitConstructor_Type_Vec_Empty_F16) {
+TEST_F(GlslGeneratorImplTest_Initializer, EmitInitializer_Type_Vec_Empty_F16) {
Enable(ast::Extension::kF16);
WrapInFunction(vec3<f16>());
@@ -160,7 +160,7 @@
EXPECT_THAT(gen.result(), HasSubstr("f16vec3(0.0hf)"));
}
-TEST_F(GlslGeneratorImplTest_Constructor, EmitConstructor_Type_Vec_SingleScalar_F32_Literal) {
+TEST_F(GlslGeneratorImplTest_Initializer, EmitInitializer_Type_Vec_SingleScalar_F32_Literal) {
WrapInFunction(vec3<f32>(2_f));
GeneratorImpl& gen = Build();
@@ -169,7 +169,7 @@
EXPECT_THAT(gen.result(), HasSubstr("vec3(2.0f)"));
}
-TEST_F(GlslGeneratorImplTest_Constructor, EmitConstructor_Type_Vec_SingleScalar_F16_Literal) {
+TEST_F(GlslGeneratorImplTest_Initializer, EmitInitializer_Type_Vec_SingleScalar_F16_Literal) {
Enable(ast::Extension::kF16);
WrapInFunction(vec3<f16>(2_h));
@@ -180,7 +180,7 @@
EXPECT_THAT(gen.result(), HasSubstr("f16vec3(2.0hf)"));
}
-TEST_F(GlslGeneratorImplTest_Constructor, EmitConstructor_Type_Vec_SingleScalar_F32_Var) {
+TEST_F(GlslGeneratorImplTest_Initializer, EmitInitializer_Type_Vec_SingleScalar_F32_Var) {
auto* var = Var("v", Expr(2_f));
auto* cast = vec3<f32>(var);
WrapInFunction(var, cast);
@@ -192,7 +192,7 @@
vec3 tint_symbol = vec3(v);)"));
}
-TEST_F(GlslGeneratorImplTest_Constructor, EmitConstructor_Type_Vec_SingleScalar_F16_Var) {
+TEST_F(GlslGeneratorImplTest_Initializer, EmitInitializer_Type_Vec_SingleScalar_F16_Var) {
Enable(ast::Extension::kF16);
auto* var = Var("v", Expr(2_h));
@@ -206,7 +206,7 @@
f16vec3 tint_symbol = f16vec3(v);)"));
}
-TEST_F(GlslGeneratorImplTest_Constructor, EmitConstructor_Type_Vec_SingleScalar_Bool) {
+TEST_F(GlslGeneratorImplTest_Initializer, EmitInitializer_Type_Vec_SingleScalar_Bool) {
WrapInFunction(vec3<bool>(true));
GeneratorImpl& gen = Build();
@@ -215,7 +215,7 @@
EXPECT_THAT(gen.result(), HasSubstr("bvec3(true)"));
}
-TEST_F(GlslGeneratorImplTest_Constructor, EmitConstructor_Type_Vec_SingleScalar_Int) {
+TEST_F(GlslGeneratorImplTest_Initializer, EmitInitializer_Type_Vec_SingleScalar_Int) {
WrapInFunction(vec3<i32>(2_i));
GeneratorImpl& gen = Build();
@@ -224,7 +224,7 @@
EXPECT_THAT(gen.result(), HasSubstr("ivec3(2)"));
}
-TEST_F(GlslGeneratorImplTest_Constructor, EmitConstructor_Type_Vec_SingleScalar_UInt) {
+TEST_F(GlslGeneratorImplTest_Initializer, EmitInitializer_Type_Vec_SingleScalar_UInt) {
WrapInFunction(vec3<u32>(2_u));
GeneratorImpl& gen = Build();
@@ -233,7 +233,7 @@
EXPECT_THAT(gen.result(), HasSubstr("uvec3(2u)"));
}
-TEST_F(GlslGeneratorImplTest_Constructor, EmitConstructor_Type_Mat_F32) {
+TEST_F(GlslGeneratorImplTest_Initializer, EmitInitializer_Type_Mat_F32) {
WrapInFunction(mat2x3<f32>(vec3<f32>(1_f, 2_f, 3_f), vec3<f32>(3_f, 4_f, 5_f)));
GeneratorImpl& gen = Build();
@@ -243,7 +243,7 @@
EXPECT_THAT(gen.result(), HasSubstr("mat2x3(vec3(1.0f, 2.0f, 3.0f), vec3(3.0f, 4.0f, 5.0f))"));
}
-TEST_F(GlslGeneratorImplTest_Constructor, EmitConstructor_Type_Mat_F16) {
+TEST_F(GlslGeneratorImplTest_Initializer, EmitInitializer_Type_Mat_F16) {
Enable(ast::Extension::kF16);
WrapInFunction(mat2x3<f16>(vec3<f16>(1_h, 2_h, 3_h), vec3<f16>(3_h, 4_h, 5_h)));
@@ -256,7 +256,7 @@
HasSubstr("f16mat2x3(f16vec3(1.0hf, 2.0hf, 3.0hf), f16vec3(3.0hf, 4.0hf, 5.0hf))"));
}
-TEST_F(GlslGeneratorImplTest_Constructor, EmitConstructor_Type_Mat_Complex_F32) {
+TEST_F(GlslGeneratorImplTest_Initializer, EmitInitializer_Type_Mat_Complex_F32) {
// mat4x4<f32>(
// vec4<f32>(2.0f, 3.0f, 4.0f, 8.0f),
// vec4<f32>(),
@@ -265,15 +265,15 @@
// );
auto* vector_literal =
vec4<f32>(Expr(f32(2.0)), Expr(f32(3.0)), Expr(f32(4.0)), Expr(f32(8.0)));
- auto* vector_zero_ctor = vec4<f32>();
- auto* vector_single_scalar_ctor = vec4<f32>(Expr(f32(7.0)));
- auto* vector_identical_ctor =
+ auto* vector_zero_init = vec4<f32>();
+ auto* vector_single_scalar_init = vec4<f32>(Expr(f32(7.0)));
+ auto* vector_identical_init =
vec4<f32>(vec4<f32>(Expr(f32(42.0)), Expr(f32(21.0)), Expr(f32(6.0)), Expr(f32(-5.0))));
- auto* constructor = mat4x4<f32>(vector_literal, vector_zero_ctor, vector_single_scalar_ctor,
- vector_identical_ctor);
+ auto* initializer = mat4x4<f32>(vector_literal, vector_zero_init, vector_single_scalar_init,
+ vector_identical_init);
- WrapInFunction(constructor);
+ WrapInFunction(initializer);
GeneratorImpl& gen = Build();
@@ -283,7 +283,7 @@
"vec4(7.0f), vec4(42.0f, 21.0f, 6.0f, -5.0f))"));
}
-TEST_F(GlslGeneratorImplTest_Constructor, EmitConstructor_Type_Mat_Complex_F16) {
+TEST_F(GlslGeneratorImplTest_Initializer, EmitInitializer_Type_Mat_Complex_F16) {
// mat4x4<f16>(
// vec4<f16>(2.0h, 3.0h, 4.0h, 8.0h),
// vec4<f16>(),
@@ -294,15 +294,15 @@
auto* vector_literal =
vec4<f16>(Expr(f16(2.0)), Expr(f16(3.0)), Expr(f16(4.0)), Expr(f16(8.0)));
- auto* vector_zero_ctor = vec4<f16>();
- auto* vector_single_scalar_ctor = vec4<f16>(Expr(f16(7.0)));
- auto* vector_identical_ctor =
+ auto* vector_zero_init = vec4<f16>();
+ auto* vector_single_scalar_init = vec4<f16>(Expr(f16(7.0)));
+ auto* vector_identical_init =
vec4<f16>(vec4<f16>(Expr(f16(42.0)), Expr(f16(21.0)), Expr(f16(6.0)), Expr(f16(-5.0))));
- auto* constructor = mat4x4<f16>(vector_literal, vector_zero_ctor, vector_single_scalar_ctor,
- vector_identical_ctor);
+ auto* initializer = mat4x4<f16>(vector_literal, vector_zero_init, vector_single_scalar_init,
+ vector_identical_init);
- WrapInFunction(constructor);
+ WrapInFunction(initializer);
GeneratorImpl& gen = Build();
@@ -313,7 +313,7 @@
"f16vec4(7.0hf), f16vec4(42.0hf, 21.0hf, 6.0hf, -5.0hf))"));
}
-TEST_F(GlslGeneratorImplTest_Constructor, EmitConstructor_Type_Mat_Empty_F32) {
+TEST_F(GlslGeneratorImplTest_Initializer, EmitInitializer_Type_Mat_Empty_F32) {
WrapInFunction(mat2x3<f32>());
GeneratorImpl& gen = Build();
@@ -323,7 +323,7 @@
EXPECT_THAT(gen.result(), HasSubstr("mat2x3 tint_symbol = mat2x3(vec3(0.0f), vec3(0.0f))"));
}
-TEST_F(GlslGeneratorImplTest_Constructor, EmitConstructor_Type_Mat_Empty_F16) {
+TEST_F(GlslGeneratorImplTest_Initializer, EmitInitializer_Type_Mat_Empty_F16) {
Enable(ast::Extension::kF16);
WrapInFunction(mat2x3<f16>());
@@ -336,7 +336,7 @@
HasSubstr("f16mat2x3 tint_symbol = f16mat2x3(f16vec3(0.0hf), f16vec3(0.0hf))"));
}
-TEST_F(GlslGeneratorImplTest_Constructor, EmitConstructor_Type_Mat_Identity_F32) {
+TEST_F(GlslGeneratorImplTest_Initializer, EmitInitializer_Type_Mat_Identity_F32) {
// fn f() {
// var m_1: mat4x4<f32> = mat4x4<f32>();
// var m_2: mat4x4<f32> = mat4x4<f32>(m_1);
@@ -354,7 +354,7 @@
EXPECT_THAT(gen.result(), HasSubstr("mat4 m_2 = mat4(m_1);"));
}
-TEST_F(GlslGeneratorImplTest_Constructor, EmitConstructor_Type_Mat_Identity_F16) {
+TEST_F(GlslGeneratorImplTest_Initializer, EmitInitializer_Type_Mat_Identity_F16) {
// fn f() {
// var m_1: mat4x4<f16> = mat4x4<f16>();
// var m_2: mat4x4<f16> = mat4x4<f16>(m_1);
@@ -374,7 +374,7 @@
EXPECT_THAT(gen.result(), HasSubstr("f16mat4 m_2 = f16mat4(m_1);"));
}
-TEST_F(GlslGeneratorImplTest_Constructor, EmitConstructor_Type_Array) {
+TEST_F(GlslGeneratorImplTest_Initializer, EmitInitializer_Type_Array) {
WrapInFunction(Construct(ty.array(ty.vec3<f32>(), 3_u), vec3<f32>(1_f, 2_f, 3_f),
vec3<f32>(4_f, 5_f, 6_f), vec3<f32>(7_f, 8_f, 9_f)));
@@ -386,7 +386,7 @@
"vec3(7.0f, 8.0f, 9.0f))"));
}
-TEST_F(GlslGeneratorImplTest_Constructor, EmitConstructor_Type_Array_Empty) {
+TEST_F(GlslGeneratorImplTest_Initializer, EmitInitializer_Type_Array_Empty) {
WrapInFunction(Construct(ty.array(ty.vec3<f32>(), 3_u)));
GeneratorImpl& gen = Build();
@@ -395,7 +395,7 @@
EXPECT_THAT(gen.result(), HasSubstr("vec3[3](vec3(0.0f), vec3(0.0f), vec3(0.0f))"));
}
-TEST_F(GlslGeneratorImplTest_Constructor, EmitConstructor_Type_Struct) {
+TEST_F(GlslGeneratorImplTest_Initializer, EmitInitializer_Type_Struct) {
auto* str = Structure("S", utils::Vector{
Member("a", ty.i32()),
Member("b", ty.f32()),
@@ -410,7 +410,7 @@
EXPECT_THAT(gen.result(), HasSubstr("S(1, 2.0f, ivec3(3, 4, 5))"));
}
-TEST_F(GlslGeneratorImplTest_Constructor, EmitConstructor_Type_Struct_Empty) {
+TEST_F(GlslGeneratorImplTest_Initializer, EmitInitializer_Type_Struct_Empty) {
auto* str = Structure("S", utils::Vector{
Member("a", ty.i32()),
Member("b", ty.f32()),
diff --git a/src/tint/writer/glsl/generator_impl_loop_test.cc b/src/tint/writer/glsl/generator_impl_loop_test.cc
index e638eb3..7aa94be 100644
--- a/src/tint/writer/glsl/generator_impl_loop_test.cc
+++ b/src/tint/writer/glsl/generator_impl_loop_test.cc
@@ -65,6 +65,31 @@
)");
}
+TEST_F(GlslGeneratorImplTest_Loop, Emit_LoopWithContinuing_BreakIf) {
+ Func("a_statement", {}, ty.void_(), {});
+
+ auto* body = Block(create<ast::DiscardStatement>());
+ auto* continuing = Block(CallStmt(Call("a_statement")), BreakIf(true));
+ auto* l = Loop(body, continuing);
+
+ Func("F", utils::Empty, ty.void_(), utils::Vector{l},
+ utils::Vector{Stage(ast::PipelineStage::kFragment)});
+
+ GeneratorImpl& gen = Build();
+
+ gen.increment_indent();
+
+ ASSERT_TRUE(gen.EmitStatement(l)) << gen.error();
+ EXPECT_EQ(gen.result(), R"( while (true) {
+ discard;
+ {
+ a_statement();
+ if (true) { break; }
+ }
+ }
+)");
+}
+
TEST_F(GlslGeneratorImplTest_Loop, Emit_LoopNestedWithContinuing) {
Func("a_statement", {}, ty.void_(), {});
diff --git a/src/tint/writer/glsl/generator_impl_switch_test.cc b/src/tint/writer/glsl/generator_impl_switch_test.cc
index 7a2c750..ada3c0b 100644
--- a/src/tint/writer/glsl/generator_impl_switch_test.cc
+++ b/src/tint/writer/glsl/generator_impl_switch_test.cc
@@ -25,21 +25,13 @@
GlobalVar("cond", ty.i32(), ast::AddressSpace::kPrivate);
auto* def_body = Block(create<ast::BreakStatement>());
- auto* def = create<ast::CaseStatement>(utils::Empty, def_body);
-
- utils::Vector case_val{Expr(5_i)};
+ auto* def = create<ast::CaseStatement>(utils::Vector{DefaultCaseSelector()}, def_body);
auto* case_body = Block(create<ast::BreakStatement>());
-
- auto* case_stmt = create<ast::CaseStatement>(case_val, case_body);
-
- utils::Vector body{
- case_stmt,
- def,
- };
+ auto* case_stmt = create<ast::CaseStatement>(utils::Vector{CaseSelector(5_i)}, case_body);
auto* cond = Expr("cond");
- auto* s = create<ast::SwitchStatement>(cond, body);
+ auto* s = create<ast::SwitchStatement>(cond, utils::Vector{case_stmt, def});
WrapInFunction(s);
GeneratorImpl& gen = Build();
@@ -58,5 +50,30 @@
)");
}
+TEST_F(GlslGeneratorImplTest_Switch, Emit_Switch_MixedDefault) {
+ GlobalVar("cond", ty.i32(), ast::AddressSpace::kPrivate);
+
+ auto* def_body = Block(create<ast::BreakStatement>());
+ auto* def = create<ast::CaseStatement>(utils::Vector{CaseSelector(5_i), DefaultCaseSelector()},
+ def_body);
+
+ auto* cond = Expr("cond");
+ auto* s = create<ast::SwitchStatement>(cond, utils::Vector{def});
+ WrapInFunction(s);
+
+ GeneratorImpl& gen = Build();
+
+ gen.increment_indent();
+
+ ASSERT_TRUE(gen.EmitStatement(s)) << gen.error();
+ EXPECT_EQ(gen.result(), R"( switch(cond) {
+ case 5:
+ default: {
+ break;
+ }
+ }
+)");
+}
+
} // namespace
} // namespace tint::writer::glsl
diff --git a/src/tint/writer/hlsl/generator_impl.cc b/src/tint/writer/hlsl/generator_impl.cc
index 439f0ee..e42274d 100644
--- a/src/tint/writer/hlsl/generator_impl.cc
+++ b/src/tint/writer/hlsl/generator_impl.cc
@@ -44,8 +44,9 @@
#include "src/tint/sem/statement.h"
#include "src/tint/sem/storage_texture.h"
#include "src/tint/sem/struct.h"
-#include "src/tint/sem/type_constructor.h"
+#include "src/tint/sem/switch_statement.h"
#include "src/tint/sem/type_conversion.h"
+#include "src/tint/sem/type_initializer.h"
#include "src/tint/sem/variable.h"
#include "src/tint/transform/add_empty_entry_point.h"
#include "src/tint/transform/array_length_from_uniform.h"
@@ -65,7 +66,7 @@
#include "src/tint/transform/simplify_pointers.h"
#include "src/tint/transform/unshadow.h"
#include "src/tint/transform/unwind_discard_functions.h"
-#include "src/tint/transform/vectorize_scalar_matrix_constructors.h"
+#include "src/tint/transform/vectorize_scalar_matrix_initializers.h"
#include "src/tint/transform/zero_init_workgroup_memory.h"
#include "src/tint/utils/defer.h"
#include "src/tint/utils/map.h"
@@ -211,7 +212,7 @@
manager.Add<transform::ExpandCompoundAssignment>();
manager.Add<transform::PromoteSideEffectsToDecl>();
manager.Add<transform::UnwindDiscardFunctions>();
- manager.Add<transform::VectorizeScalarMatrixConstructors>();
+ manager.Add<transform::VectorizeScalarMatrixInitializers>();
manager.Add<transform::SimplifyPointers>();
manager.Add<transform::RemovePhonies>();
// ArrayLengthFromUniform must come after InlinePointerLets and Simplify, as
@@ -941,6 +942,16 @@
return true;
}
+bool GeneratorImpl::EmitBreakIf(const ast::BreakIfStatement* b) {
+ auto out = line();
+ out << "if (";
+ if (!EmitExpression(out, b->condition)) {
+ return false;
+ }
+ out << ") { break; }";
+ return true;
+}
+
bool GeneratorImpl::EmitCall(std::ostream& out, const ast::CallExpression* expr) {
auto* call = builder_.Sem().Get<sem::Call>(expr);
auto* target = call->Target();
@@ -948,7 +959,7 @@
target, [&](const sem::Function* func) { return EmitFunctionCall(out, call, func); },
[&](const sem::Builtin* builtin) { return EmitBuiltinCall(out, call, builtin); },
[&](const sem::TypeConversion* conv) { return EmitTypeConversion(out, call, conv); },
- [&](const sem::TypeConstructor* ctor) { return EmitTypeConstructor(out, call, ctor); },
+ [&](const sem::TypeInitializer* ctor) { return EmitTypeInitializer(out, call, ctor); },
[&](Default) {
TINT_ICE(Writer, diagnostics_) << "unhandled call target: " << target->TypeInfo().name;
return false;
@@ -1106,23 +1117,23 @@
return true;
}
-bool GeneratorImpl::EmitTypeConstructor(std::ostream& out,
+bool GeneratorImpl::EmitTypeInitializer(std::ostream& out,
const sem::Call* call,
- const sem::TypeConstructor* ctor) {
+ const sem::TypeInitializer* ctor) {
auto* type = call->Type();
- // If the type constructor is empty then we need to construct with the zero
+ // If the type initializer is empty then we need to construct with the zero
// value for all components.
if (call->Arguments().IsEmpty()) {
return EmitZeroValue(out, type);
}
- // Single parameter matrix initializers must be identity constructor.
+ // Single parameter matrix initializers must be identity initializer.
// It could also be conversions between f16 and f32 matrix when f16 is properly supported.
if (type->Is<sem::Matrix>() && call->Arguments().Length() == 1) {
if (!ctor->Parameters()[0]->Type()->UnwrapRef()->is_float_matrix()) {
TINT_UNREACHABLE(Writer, diagnostics_)
- << "found a single-parameter matrix constructor that is not identity constructor";
+ << "found a single-parameter matrix initializer that is not identity initializer";
return false;
}
}
@@ -2561,19 +2572,20 @@
bool GeneratorImpl::EmitCase(const ast::SwitchStatement* s, size_t case_idx) {
auto* stmt = s->body[case_idx];
- if (stmt->IsDefault()) {
- line() << "default: {";
- } else {
- for (auto* selector : stmt->selectors) {
- auto out = line();
+ auto* sem = builder_.Sem().Get<sem::CaseStatement>(stmt);
+ for (auto* selector : sem->Selectors()) {
+ auto out = line();
+ if (selector->IsDefault()) {
+ out << "default";
+ } else {
out << "case ";
- if (!EmitLiteral(out, selector)) {
+ if (!EmitConstant(out, selector->Value())) {
return false;
}
- out << ":";
- if (selector == stmt->selectors.Back()) {
- out << " {";
- }
+ }
+ out << ":";
+ if (selector == sem->Selectors().back()) {
+ out << " {";
}
}
@@ -2942,8 +2954,8 @@
}
out << " = ";
- if (auto* constructor = decl->constructor) {
- if (!EmitExpression(out, constructor)) {
+ if (auto* initializer = decl->initializer) {
+ if (!EmitExpression(out, initializer)) {
return false;
}
} else {
@@ -2968,9 +2980,9 @@
return false;
}
- if (auto* constructor = decl->constructor) {
+ if (auto* initializer = decl->initializer) {
out << " = ";
- if (!EmitExpression(out, constructor)) {
+ if (!EmitExpression(out, initializer)) {
return false;
}
}
@@ -3589,6 +3601,9 @@
[&](const ast::BreakStatement* b) { //
return EmitBreak(b);
},
+ [&](const ast::BreakIfStatement* b) { //
+ return EmitBreakIf(b);
+ },
[&](const ast::CallStatement* c) { //
auto out = line();
if (!EmitCall(out, c->expr)) {
@@ -3650,7 +3665,7 @@
}
bool GeneratorImpl::EmitDefaultOnlySwitch(const ast::SwitchStatement* stmt) {
- TINT_ASSERT(Writer, stmt->body.Length() == 1 && stmt->body[0]->IsDefault());
+ TINT_ASSERT(Writer, stmt->body.Length() == 1 && stmt->body[0]->ContainsDefault());
// FXC fails to compile a switch with just a default case, ignoring the
// default case body. We work around this here by emitting the default case
@@ -3683,7 +3698,8 @@
bool GeneratorImpl::EmitSwitch(const ast::SwitchStatement* stmt) {
// BUG(crbug.com/tint/1188): work around default-only switches
- if (stmt->body.Length() == 1 && stmt->body[0]->IsDefault()) {
+ if (stmt->body.Length() == 1 && stmt->body[0]->selectors.Length() == 1 &&
+ stmt->body[0]->ContainsDefault()) {
return EmitDefaultOnlySwitch(stmt);
}
@@ -3806,7 +3822,7 @@
// Note: HLSL's matrices are declared as <type>NxM, where N is the
// number of rows and M is the number of columns. Despite HLSL's
// matrices being column-major by default, the index operator and
- // constructors actually operate on row-vectors, where as WGSL operates
+ // initializers actually operate on row-vectors, where as WGSL operates
// on column vectors. To simplify everything we use the transpose of the
// matrices. See:
// https://docs.microsoft.com/en-us/windows/win32/direct3dhlsl/dx-graphics-hlsl-per-component-math#matrix-ordering
@@ -4075,8 +4091,8 @@
out << " = ";
- if (var->constructor) {
- if (!EmitExpression(out, var->constructor)) {
+ if (var->initializer) {
+ if (!EmitExpression(out, var->initializer)) {
return false;
}
} else {
@@ -4100,7 +4116,7 @@
return false;
}
out << " = ";
- if (!EmitExpression(out, let->constructor)) {
+ if (!EmitExpression(out, let->initializer)) {
return false;
}
out << ";";
diff --git a/src/tint/writer/hlsl/generator_impl.h b/src/tint/writer/hlsl/generator_impl.h
index 0f6a668..2742f00 100644
--- a/src/tint/writer/hlsl/generator_impl.h
+++ b/src/tint/writer/hlsl/generator_impl.h
@@ -45,7 +45,7 @@
class Call;
class Constant;
class Builtin;
-class TypeConstructor;
+class TypeInitializer;
class TypeConversion;
} // namespace tint::sem
@@ -125,6 +125,10 @@
/// @param stmt the statement to emit
/// @returns true if the statement was emitted successfully
bool EmitBreak(const ast::BreakStatement* stmt);
+ /// Handles a break-if statement
+ /// @param stmt the statement to emit
+ /// @returns true if the statement was emitted successfully
+ bool EmitBreakIf(const ast::BreakIfStatement* stmt);
/// Handles generating a call expression
/// @param out the output of the expression stream
/// @param expr the call expression
@@ -150,14 +154,14 @@
bool EmitTypeConversion(std::ostream& out,
const sem::Call* call,
const sem::TypeConversion* conv);
- /// Handles generating a type constructor expression
+ /// Handles generating a type initializer expression
/// @param out the output of the expression stream
/// @param call the call expression
- /// @param ctor the type constructor
+ /// @param ctor the type initializer
/// @returns true if the expression is emitted
- bool EmitTypeConstructor(std::ostream& out,
+ bool EmitTypeInitializer(std::ostream& out,
const sem::Call* call,
- const sem::TypeConstructor* ctor);
+ const sem::TypeInitializer* ctor);
/// Handles generating a call expression to a
/// transform::DecomposeMemoryAccess::Intrinsic for a uniform buffer
/// @param out the output of the expression stream
@@ -537,7 +541,7 @@
TextBuffer helpers_; // Helper functions emitted at the top of the output
std::function<bool()> emit_continuing_;
- std::unordered_map<const sem::Matrix*, std::string> matrix_scalar_ctors_;
+ std::unordered_map<const sem::Matrix*, std::string> matrix_scalar_inits_;
std::unordered_map<const sem::Builtin*, std::string> builtins_;
std::unordered_map<const sem::Vector*, std::string> dynamic_vector_write_;
std::unordered_map<const sem::Matrix*, std::string> dynamic_matrix_vector_write_;
diff --git a/src/tint/writer/hlsl/generator_impl_case_test.cc b/src/tint/writer/hlsl/generator_impl_case_test.cc
index c55f14b..bfcbcaf 100644
--- a/src/tint/writer/hlsl/generator_impl_case_test.cc
+++ b/src/tint/writer/hlsl/generator_impl_case_test.cc
@@ -23,7 +23,8 @@
using HlslGeneratorImplTest_Case = TestHelper;
TEST_F(HlslGeneratorImplTest_Case, Emit_Case) {
- auto* s = Switch(1_i, Case(Expr(5_i), Block(create<ast::BreakStatement>())), DefaultCase());
+ auto* s =
+ Switch(1_i, Case(CaseSelector(5_i), Block(create<ast::BreakStatement>())), DefaultCase());
WrapInFunction(s);
GeneratorImpl& gen = Build();
@@ -38,7 +39,7 @@
}
TEST_F(HlslGeneratorImplTest_Case, Emit_Case_BreaksByDefault) {
- auto* s = Switch(1_i, Case(Expr(5_i), Block()), DefaultCase());
+ auto* s = Switch(1_i, Case(CaseSelector(5_i), Block()), DefaultCase());
WrapInFunction(s);
GeneratorImpl& gen = Build();
@@ -53,9 +54,9 @@
}
TEST_F(HlslGeneratorImplTest_Case, Emit_Case_WithFallthrough) {
- auto* s = Switch(1_i, //
- Case(Expr(4_i), Block(create<ast::FallthroughStatement>())), //
- Case(Expr(5_i), Block(create<ast::ReturnStatement>())), //
+ auto* s = Switch(1_i, //
+ Case(CaseSelector(4_i), Block(create<ast::FallthroughStatement>())), //
+ Case(CaseSelector(5_i), Block(create<ast::ReturnStatement>())), //
DefaultCase());
WrapInFunction(s);
@@ -75,9 +76,10 @@
}
TEST_F(HlslGeneratorImplTest_Case, Emit_Case_MultipleSelectors) {
- auto* s =
- Switch(1_i, Case(utils::Vector{Expr(5_i), Expr(6_i)}, Block(create<ast::BreakStatement>())),
- DefaultCase());
+ auto* s = Switch(1_i,
+ Case(utils::Vector{CaseSelector(5_i), CaseSelector(6_i)},
+ Block(create<ast::BreakStatement>())),
+ DefaultCase());
WrapInFunction(s);
GeneratorImpl& gen = Build();
diff --git a/src/tint/writer/hlsl/generator_impl_constructor_test.cc b/src/tint/writer/hlsl/generator_impl_initializer_test.cc
similarity index 80%
rename from src/tint/writer/hlsl/generator_impl_constructor_test.cc
rename to src/tint/writer/hlsl/generator_impl_initializer_test.cc
index e5157d9..7f05ef6 100644
--- a/src/tint/writer/hlsl/generator_impl_constructor_test.cc
+++ b/src/tint/writer/hlsl/generator_impl_initializer_test.cc
@@ -22,9 +22,9 @@
using ::testing::HasSubstr;
-using HlslGeneratorImplTest_Constructor = TestHelper;
+using HlslGeneratorImplTest_Initializer = TestHelper;
-TEST_F(HlslGeneratorImplTest_Constructor, EmitConstructor_Bool) {
+TEST_F(HlslGeneratorImplTest_Initializer, EmitInitializer_Bool) {
WrapInFunction(Expr(false));
GeneratorImpl& gen = Build();
@@ -33,7 +33,7 @@
EXPECT_THAT(gen.result(), HasSubstr("false"));
}
-TEST_F(HlslGeneratorImplTest_Constructor, EmitConstructor_Int) {
+TEST_F(HlslGeneratorImplTest_Initializer, EmitInitializer_Int) {
WrapInFunction(Expr(-12345_i));
GeneratorImpl& gen = Build();
@@ -42,7 +42,7 @@
EXPECT_THAT(gen.result(), HasSubstr("-12345"));
}
-TEST_F(HlslGeneratorImplTest_Constructor, EmitConstructor_UInt) {
+TEST_F(HlslGeneratorImplTest_Initializer, EmitInitializer_UInt) {
WrapInFunction(Expr(56779_u));
GeneratorImpl& gen = Build();
@@ -51,7 +51,7 @@
EXPECT_THAT(gen.result(), HasSubstr("56779u"));
}
-TEST_F(HlslGeneratorImplTest_Constructor, EmitConstructor_Float) {
+TEST_F(HlslGeneratorImplTest_Initializer, EmitInitializer_Float) {
// Use a number close to 1<<30 but whose decimal representation ends in 0.
WrapInFunction(Expr(f32((1 << 30) - 4)));
@@ -61,7 +61,7 @@
EXPECT_THAT(gen.result(), HasSubstr("1073741824.0f"));
}
-TEST_F(HlslGeneratorImplTest_Constructor, EmitConstructor_F16) {
+TEST_F(HlslGeneratorImplTest_Initializer, EmitInitializer_F16) {
Enable(ast::Extension::kF16);
// Use a number close to 1<<16 but whose decimal representation ends in 0.
@@ -73,7 +73,7 @@
EXPECT_THAT(gen.result(), HasSubstr("float16_t(32752.0h)"));
}
-TEST_F(HlslGeneratorImplTest_Constructor, EmitConstructor_Type_Float) {
+TEST_F(HlslGeneratorImplTest_Initializer, EmitInitializer_Type_Float) {
WrapInFunction(Construct<f32>(-1.2e-5_f));
GeneratorImpl& gen = Build();
@@ -82,7 +82,7 @@
EXPECT_THAT(gen.result(), HasSubstr("-0.000012f"));
}
-TEST_F(HlslGeneratorImplTest_Constructor, EmitConstructor_Type_F16) {
+TEST_F(HlslGeneratorImplTest_Initializer, EmitInitializer_Type_F16) {
Enable(ast::Extension::kF16);
WrapInFunction(Construct<f16>(-1.2e-3_h));
@@ -93,7 +93,7 @@
EXPECT_THAT(gen.result(), HasSubstr("float16_t(-0.00119972229h)"));
}
-TEST_F(HlslGeneratorImplTest_Constructor, EmitConstructor_Type_Bool) {
+TEST_F(HlslGeneratorImplTest_Initializer, EmitInitializer_Type_Bool) {
WrapInFunction(Construct<bool>(true));
GeneratorImpl& gen = Build();
@@ -102,7 +102,7 @@
EXPECT_THAT(gen.result(), HasSubstr("true"));
}
-TEST_F(HlslGeneratorImplTest_Constructor, EmitConstructor_Type_Int) {
+TEST_F(HlslGeneratorImplTest_Initializer, EmitInitializer_Type_Int) {
WrapInFunction(Construct<i32>(-12345_i));
GeneratorImpl& gen = Build();
@@ -111,7 +111,7 @@
EXPECT_THAT(gen.result(), HasSubstr("-12345"));
}
-TEST_F(HlslGeneratorImplTest_Constructor, EmitConstructor_Type_Uint) {
+TEST_F(HlslGeneratorImplTest_Initializer, EmitInitializer_Type_Uint) {
WrapInFunction(Construct<u32>(12345_u));
GeneratorImpl& gen = Build();
@@ -120,7 +120,7 @@
EXPECT_THAT(gen.result(), HasSubstr("12345u"));
}
-TEST_F(HlslGeneratorImplTest_Constructor, EmitConstructor_Type_Vec_F32) {
+TEST_F(HlslGeneratorImplTest_Initializer, EmitInitializer_Type_Vec_F32) {
WrapInFunction(vec3<f32>(1_f, 2_f, 3_f));
GeneratorImpl& gen = Build();
@@ -129,7 +129,7 @@
EXPECT_THAT(gen.result(), HasSubstr("float3(1.0f, 2.0f, 3.0f)"));
}
-TEST_F(HlslGeneratorImplTest_Constructor, EmitConstructor_Type_Vec_F16) {
+TEST_F(HlslGeneratorImplTest_Initializer, EmitInitializer_Type_Vec_F16) {
Enable(ast::Extension::kF16);
WrapInFunction(vec3<f16>(1_h, 2_h, 3_h));
@@ -142,7 +142,7 @@
HasSubstr("vector<float16_t, 3>(float16_t(1.0h), float16_t(2.0h), float16_t(3.0h))"));
}
-TEST_F(HlslGeneratorImplTest_Constructor, EmitConstructor_Type_Vec_Empty_F32) {
+TEST_F(HlslGeneratorImplTest_Initializer, EmitInitializer_Type_Vec_Empty_F32) {
WrapInFunction(vec3<f32>());
GeneratorImpl& gen = Build();
@@ -151,7 +151,7 @@
EXPECT_THAT(gen.result(), HasSubstr("0.0f).xxx"));
}
-TEST_F(HlslGeneratorImplTest_Constructor, EmitConstructor_Type_Vec_Empty_F16) {
+TEST_F(HlslGeneratorImplTest_Initializer, EmitInitializer_Type_Vec_Empty_F16) {
Enable(ast::Extension::kF16);
WrapInFunction(vec3<f16>());
@@ -162,7 +162,7 @@
EXPECT_THAT(gen.result(), HasSubstr("(float16_t(0.0h)).xxx"));
}
-TEST_F(HlslGeneratorImplTest_Constructor, EmitConstructor_Type_Vec_SingleScalar_F32_Literal) {
+TEST_F(HlslGeneratorImplTest_Initializer, EmitInitializer_Type_Vec_SingleScalar_F32_Literal) {
WrapInFunction(vec3<f32>(2_f));
GeneratorImpl& gen = Build();
@@ -171,7 +171,7 @@
EXPECT_THAT(gen.result(), HasSubstr("2.0f).xxx"));
}
-TEST_F(HlslGeneratorImplTest_Constructor, EmitConstructor_Type_Vec_SingleScalar_F16_Literal) {
+TEST_F(HlslGeneratorImplTest_Initializer, EmitInitializer_Type_Vec_SingleScalar_F16_Literal) {
Enable(ast::Extension::kF16);
WrapInFunction(vec3<f16>(2_h));
@@ -182,7 +182,7 @@
EXPECT_THAT(gen.result(), HasSubstr("(float16_t(2.0h)).xxx"));
}
-TEST_F(HlslGeneratorImplTest_Constructor, EmitConstructor_Type_Vec_SingleScalar_F32_Var) {
+TEST_F(HlslGeneratorImplTest_Initializer, EmitInitializer_Type_Vec_SingleScalar_F32_Var) {
auto* var = Var("v", Expr(2_f));
auto* cast = vec3<f32>(var);
WrapInFunction(var, cast);
@@ -194,7 +194,7 @@
const float3 tint_symbol = float3((v).xxx);)"));
}
-TEST_F(HlslGeneratorImplTest_Constructor, EmitConstructor_Type_Vec_SingleScalar_F16_Var) {
+TEST_F(HlslGeneratorImplTest_Initializer, EmitInitializer_Type_Vec_SingleScalar_F16_Var) {
Enable(ast::Extension::kF16);
auto* var = Var("v", Expr(2_h));
@@ -208,7 +208,7 @@
const vector<float16_t, 3> tint_symbol = vector<float16_t, 3>((v).xxx);)"));
}
-TEST_F(HlslGeneratorImplTest_Constructor, EmitConstructor_Type_Vec_SingleScalar_Bool_Literal) {
+TEST_F(HlslGeneratorImplTest_Initializer, EmitInitializer_Type_Vec_SingleScalar_Bool_Literal) {
WrapInFunction(vec3<bool>(true));
GeneratorImpl& gen = Build();
@@ -217,7 +217,7 @@
EXPECT_THAT(gen.result(), HasSubstr("(true).xxx"));
}
-TEST_F(HlslGeneratorImplTest_Constructor, EmitConstructor_Type_Vec_SingleScalar_Bool_Var) {
+TEST_F(HlslGeneratorImplTest_Initializer, EmitInitializer_Type_Vec_SingleScalar_Bool_Var) {
auto* var = Var("v", Expr(true));
auto* cast = vec3<bool>(var);
WrapInFunction(var, cast);
@@ -229,7 +229,7 @@
const bool3 tint_symbol = bool3((v).xxx);)"));
}
-TEST_F(HlslGeneratorImplTest_Constructor, EmitConstructor_Type_Vec_SingleScalar_Int) {
+TEST_F(HlslGeneratorImplTest_Initializer, EmitInitializer_Type_Vec_SingleScalar_Int) {
WrapInFunction(vec3<i32>(2_i));
GeneratorImpl& gen = Build();
@@ -238,7 +238,7 @@
EXPECT_THAT(gen.result(), HasSubstr("2).xxx"));
}
-TEST_F(HlslGeneratorImplTest_Constructor, EmitConstructor_Type_Vec_SingleScalar_UInt) {
+TEST_F(HlslGeneratorImplTest_Initializer, EmitInitializer_Type_Vec_SingleScalar_UInt) {
WrapInFunction(vec3<u32>(2_u));
GeneratorImpl& gen = Build();
@@ -247,7 +247,7 @@
EXPECT_THAT(gen.result(), HasSubstr("2u).xxx"));
}
-TEST_F(HlslGeneratorImplTest_Constructor, EmitConstructor_Type_Mat_F32) {
+TEST_F(HlslGeneratorImplTest_Initializer, EmitInitializer_Type_Mat_F32) {
WrapInFunction(mat2x3<f32>(vec3<f32>(1_f, 2_f, 3_f), vec3<f32>(3_f, 4_f, 5_f)));
GeneratorImpl& gen = Build();
@@ -258,7 +258,7 @@
HasSubstr("float2x3(float3(1.0f, 2.0f, 3.0f), float3(3.0f, 4.0f, 5.0f))"));
}
-TEST_F(HlslGeneratorImplTest_Constructor, EmitConstructor_Type_Mat_F16) {
+TEST_F(HlslGeneratorImplTest_Initializer, EmitInitializer_Type_Mat_F16) {
Enable(ast::Extension::kF16);
WrapInFunction(mat2x3<f16>(vec3<f16>(1_h, 2_h, 3_h), vec3<f16>(3_h, 4_h, 5_h)));
@@ -273,7 +273,7 @@
"3>(float16_t(3.0h), float16_t(4.0h), float16_t(5.0h)))"));
}
-TEST_F(HlslGeneratorImplTest_Constructor, EmitConstructor_Type_Mat_Complex_F32) {
+TEST_F(HlslGeneratorImplTest_Initializer, EmitInitializer_Type_Mat_Complex_F32) {
// mat4x4<f32>(
// vec4<f32>(2.0f, 3.0f, 4.0f, 8.0f),
// vec4<f32>(),
@@ -282,15 +282,15 @@
// );
auto* vector_literal =
vec4<f32>(Expr(f32(2.0)), Expr(f32(3.0)), Expr(f32(4.0)), Expr(f32(8.0)));
- auto* vector_zero_ctor = vec4<f32>();
- auto* vector_single_scalar_ctor = vec4<f32>(Expr(f32(7.0)));
- auto* vector_identical_ctor =
+ auto* vector_zero_init = vec4<f32>();
+ auto* vector_single_scalar_init = vec4<f32>(Expr(f32(7.0)));
+ auto* vector_identical_init =
vec4<f32>(vec4<f32>(Expr(f32(42.0)), Expr(f32(21.0)), Expr(f32(6.0)), Expr(f32(-5.0))));
- auto* constructor = mat4x4<f32>(vector_literal, vector_zero_ctor, vector_single_scalar_ctor,
- vector_identical_ctor);
+ auto* initializer = mat4x4<f32>(vector_literal, vector_zero_init, vector_single_scalar_init,
+ vector_identical_init);
- WrapInFunction(constructor);
+ WrapInFunction(initializer);
GeneratorImpl& gen = Build();
@@ -300,7 +300,7 @@
"(7.0f).xxxx, float4(42.0f, 21.0f, 6.0f, -5.0f))"));
}
-TEST_F(HlslGeneratorImplTest_Constructor, EmitConstructor_Type_Mat_Complex_F16) {
+TEST_F(HlslGeneratorImplTest_Initializer, EmitInitializer_Type_Mat_Complex_F16) {
// mat4x4<f16>(
// vec4<f16>(2.0h, 3.0h, 4.0h, 8.0h),
// vec4<f16>(),
@@ -311,15 +311,15 @@
auto* vector_literal =
vec4<f16>(Expr(f16(2.0)), Expr(f16(3.0)), Expr(f16(4.0)), Expr(f16(8.0)));
- auto* vector_zero_ctor = vec4<f16>();
- auto* vector_single_scalar_ctor = vec4<f16>(Expr(f16(7.0)));
- auto* vector_identical_ctor =
+ auto* vector_zero_init = vec4<f16>();
+ auto* vector_single_scalar_init = vec4<f16>(Expr(f16(7.0)));
+ auto* vector_identical_init =
vec4<f16>(vec4<f16>(Expr(f16(42.0)), Expr(f16(21.0)), Expr(f16(6.0)), Expr(f16(-5.0))));
- auto* constructor = mat4x4<f16>(vector_literal, vector_zero_ctor, vector_single_scalar_ctor,
- vector_identical_ctor);
+ auto* initializer = mat4x4<f16>(vector_literal, vector_zero_init, vector_single_scalar_init,
+ vector_identical_init);
- WrapInFunction(constructor);
+ WrapInFunction(initializer);
GeneratorImpl& gen = Build();
@@ -333,7 +333,7 @@
"float16_t(6.0h), float16_t(-5.0h)))"));
}
-TEST_F(HlslGeneratorImplTest_Constructor, EmitConstructor_Type_Mat_Empty_F32) {
+TEST_F(HlslGeneratorImplTest_Initializer, EmitInitializer_Type_Mat_Empty_F32) {
WrapInFunction(mat2x3<f32>());
GeneratorImpl& gen = Build();
@@ -343,7 +343,7 @@
EXPECT_THAT(gen.result(), HasSubstr("float2x3 tint_symbol = float2x3((0.0f).xxx, (0.0f).xxx)"));
}
-TEST_F(HlslGeneratorImplTest_Constructor, EmitConstructor_Type_Mat_Empty_F16) {
+TEST_F(HlslGeneratorImplTest_Initializer, EmitInitializer_Type_Mat_Empty_F16) {
Enable(ast::Extension::kF16);
WrapInFunction(mat2x3<f16>());
@@ -356,7 +356,7 @@
HasSubstr("matrix<float16_t, 2, 3>((float16_t(0.0h)).xxx, (float16_t(0.0h)).xxx)"));
}
-TEST_F(HlslGeneratorImplTest_Constructor, EmitConstructor_Type_Mat_Identity_F32) {
+TEST_F(HlslGeneratorImplTest_Initializer, EmitInitializer_Type_Mat_Identity_F32) {
// fn f() {
// var m_1: mat4x4<f32> = mat4x4<f32>();
// var m_2: mat4x4<f32> = mat4x4<f32>(m_1);
@@ -374,7 +374,7 @@
EXPECT_THAT(gen.result(), HasSubstr("float4x4 m_2 = float4x4(m_1);"));
}
-TEST_F(HlslGeneratorImplTest_Constructor, EmitConstructor_Type_Mat_Identity_F16) {
+TEST_F(HlslGeneratorImplTest_Initializer, EmitInitializer_Type_Mat_Identity_F16) {
// fn f() {
// var m_1: mat4x4<f16> = mat4x4<f16>();
// var m_2: mat4x4<f16> = mat4x4<f16>(m_1);
@@ -395,7 +395,7 @@
HasSubstr("matrix<float16_t, 4, 4> m_2 = matrix<float16_t, 4, 4>(m_1);"));
}
-TEST_F(HlslGeneratorImplTest_Constructor, EmitConstructor_Type_Array) {
+TEST_F(HlslGeneratorImplTest_Initializer, EmitInitializer_Type_Array) {
WrapInFunction(Construct(ty.array(ty.vec3<f32>(), 3_u), vec3<f32>(1_f, 2_f, 3_f),
vec3<f32>(4_f, 5_f, 6_f), vec3<f32>(7_f, 8_f, 9_f)));
@@ -406,7 +406,7 @@
" float3(7.0f, 8.0f, 9.0f)}"));
}
-TEST_F(HlslGeneratorImplTest_Constructor, EmitConstructor_Type_Array_Empty) {
+TEST_F(HlslGeneratorImplTest_Initializer, EmitInitializer_Type_Array_Empty) {
WrapInFunction(Construct(ty.array(ty.vec3<f32>(), 3_u)));
GeneratorImpl& gen = Build();
@@ -415,7 +415,7 @@
EXPECT_THAT(gen.result(), HasSubstr("(float3[3])0"));
}
-TEST_F(HlslGeneratorImplTest_Constructor, EmitConstructor_Type_Struct) {
+TEST_F(HlslGeneratorImplTest_Initializer, EmitInitializer_Type_Struct) {
auto* str = Structure("S", utils::Vector{
Member("a", ty.i32()),
Member("b", ty.f32()),
@@ -430,7 +430,7 @@
EXPECT_THAT(gen.result(), HasSubstr("{1, 2.0f, int3(3, 4, 5)}"));
}
-TEST_F(HlslGeneratorImplTest_Constructor, EmitConstructor_Type_Struct_Empty) {
+TEST_F(HlslGeneratorImplTest_Initializer, EmitInitializer_Type_Struct_Empty) {
auto* str = Structure("S", utils::Vector{
Member("a", ty.i32()),
Member("b", ty.f32()),
diff --git a/src/tint/writer/hlsl/generator_impl_loop_test.cc b/src/tint/writer/hlsl/generator_impl_loop_test.cc
index 238fdd2..3d8219b 100644
--- a/src/tint/writer/hlsl/generator_impl_loop_test.cc
+++ b/src/tint/writer/hlsl/generator_impl_loop_test.cc
@@ -65,6 +65,31 @@
)");
}
+TEST_F(HlslGeneratorImplTest_Loop, Emit_LoopWithContinuing_BreakIf) {
+ Func("a_statement", {}, ty.void_(), {});
+
+ auto* body = Block(create<ast::DiscardStatement>());
+ auto* continuing = Block(CallStmt(Call("a_statement")), BreakIf(true));
+ auto* l = Loop(body, continuing);
+
+ Func("F", utils::Empty, ty.void_(), utils::Vector{l},
+ utils::Vector{Stage(ast::PipelineStage::kFragment)});
+
+ GeneratorImpl& gen = Build();
+
+ gen.increment_indent();
+
+ ASSERT_TRUE(gen.EmitStatement(l)) << gen.error();
+ EXPECT_EQ(gen.result(), R"( while (true) {
+ discard;
+ {
+ a_statement();
+ if (true) { break; }
+ }
+ }
+)");
+}
+
TEST_F(HlslGeneratorImplTest_Loop, Emit_LoopNestedWithContinuing) {
Func("a_statement", {}, ty.void_(), {});
diff --git a/src/tint/writer/hlsl/generator_impl_switch_test.cc b/src/tint/writer/hlsl/generator_impl_switch_test.cc
index 24c17a6..a84e632 100644
--- a/src/tint/writer/hlsl/generator_impl_switch_test.cc
+++ b/src/tint/writer/hlsl/generator_impl_switch_test.cc
@@ -23,9 +23,9 @@
TEST_F(HlslGeneratorImplTest_Switch, Emit_Switch) {
GlobalVar("cond", ty.i32(), ast::AddressSpace::kPrivate);
- auto* s = Switch( //
- Expr("cond"), //
- Case(Expr(5_i), Block(Break())), //
+ auto* s = Switch( //
+ Expr("cond"), //
+ Case(CaseSelector(5_i), Block(Break())), //
DefaultCase());
WrapInFunction(s);
@@ -45,6 +45,27 @@
)");
}
+TEST_F(HlslGeneratorImplTest_Switch, Emit_Switch_MixedDefault) {
+ GlobalVar("cond", ty.i32(), ast::AddressSpace::kPrivate);
+ auto* s = Switch( //
+ Expr("cond"), //
+ Case(utils::Vector{CaseSelector(5_i), DefaultCaseSelector()}, Block(Break())));
+ WrapInFunction(s);
+
+ GeneratorImpl& gen = Build();
+
+ gen.increment_indent();
+
+ ASSERT_TRUE(gen.EmitStatement(s)) << gen.error();
+ EXPECT_EQ(gen.result(), R"( switch(cond) {
+ case 5:
+ default: {
+ break;
+ }
+ }
+)");
+}
+
TEST_F(HlslGeneratorImplTest_Switch, Emit_Switch_OnlyDefaultCase) {
GlobalVar("cond", ty.i32(), ast::AddressSpace::kPrivate);
GlobalVar("a", ty.i32(), ast::AddressSpace::kPrivate);
diff --git a/src/tint/writer/msl/generator_impl.cc b/src/tint/writer/msl/generator_impl.cc
index 081444f..28478b8 100644
--- a/src/tint/writer/msl/generator_impl.cc
+++ b/src/tint/writer/msl/generator_impl.cc
@@ -52,8 +52,9 @@
#include "src/tint/sem/sampled_texture.h"
#include "src/tint/sem/storage_texture.h"
#include "src/tint/sem/struct.h"
-#include "src/tint/sem/type_constructor.h"
+#include "src/tint/sem/switch_statement.h"
#include "src/tint/sem/type_conversion.h"
+#include "src/tint/sem/type_initializer.h"
#include "src/tint/sem/u32.h"
#include "src/tint/sem/variable.h"
#include "src/tint/sem/vector.h"
@@ -71,7 +72,7 @@
#include "src/tint/transform/simplify_pointers.h"
#include "src/tint/transform/unshadow.h"
#include "src/tint/transform/unwind_discard_functions.h"
-#include "src/tint/transform/vectorize_scalar_matrix_constructors.h"
+#include "src/tint/transform/vectorize_scalar_matrix_initializers.h"
#include "src/tint/transform/zero_init_workgroup_memory.h"
#include "src/tint/utils/defer.h"
#include "src/tint/utils/map.h"
@@ -251,7 +252,7 @@
manager.Add<transform::UnwindDiscardFunctions>();
manager.Add<transform::PromoteInitializersToLet>();
- manager.Add<transform::VectorizeScalarMatrixConstructors>();
+ manager.Add<transform::VectorizeScalarMatrixInitializers>();
manager.Add<transform::RemovePhonies>();
manager.Add<transform::SimplifyPointers>();
// ArrayLengthFromUniform must come after SimplifyPointers, as
@@ -659,6 +660,16 @@
return true;
}
+bool GeneratorImpl::EmitBreakIf(const ast::BreakIfStatement* b) {
+ auto out = line();
+ out << "if (";
+ if (!EmitExpression(out, b->condition)) {
+ return false;
+ }
+ out << ") { break; }";
+ return true;
+}
+
bool GeneratorImpl::EmitCall(std::ostream& out, const ast::CallExpression* expr) {
auto* call = program_->Sem().Get<sem::Call>(expr);
auto* target = call->Target();
@@ -666,7 +677,7 @@
target, [&](const sem::Function* func) { return EmitFunctionCall(out, call, func); },
[&](const sem::Builtin* builtin) { return EmitBuiltinCall(out, call, builtin); },
[&](const sem::TypeConversion* conv) { return EmitTypeConversion(out, call, conv); },
- [&](const sem::TypeConstructor* ctor) { return EmitTypeConstructor(out, call, ctor); },
+ [&](const sem::TypeInitializer* ctor) { return EmitTypeInitializer(out, call, ctor); },
[&](Default) {
TINT_ICE(Writer, diagnostics_) << "unhandled call target: " << target->TypeInfo().name;
return false;
@@ -813,9 +824,9 @@
return true;
}
-bool GeneratorImpl::EmitTypeConstructor(std::ostream& out,
+bool GeneratorImpl::EmitTypeInitializer(std::ostream& out,
const sem::Call* call,
- const sem::TypeConstructor* ctor) {
+ const sem::TypeInitializer* ctor) {
auto* type = ctor->ReturnType();
const char* terminator = ")";
@@ -1588,19 +1599,21 @@
}
bool GeneratorImpl::EmitCase(const ast::CaseStatement* stmt) {
- if (stmt->IsDefault()) {
- line() << "default: {";
- } else {
- for (auto* selector : stmt->selectors) {
- auto out = line();
+ auto* sem = builder_.Sem().Get<sem::CaseStatement>(stmt);
+ for (auto* selector : sem->Selectors()) {
+ auto out = line();
+
+ if (selector->IsDefault()) {
+ out << "default";
+ } else {
out << "case ";
- if (!EmitLiteral(out, selector)) {
+ if (!EmitConstant(out, selector->Value())) {
return false;
}
- out << ":";
- if (selector == stmt->selectors.Back()) {
- out << " {";
- }
+ }
+ out << ":";
+ if (selector == sem->Selectors().back()) {
+ out << " {";
}
}
@@ -2430,6 +2443,9 @@
[&](const ast::BreakStatement* b) { //
return EmitBreak(b);
},
+ [&](const ast::BreakIfStatement* b) { //
+ return EmitBreakIf(b);
+ },
[&](const ast::CallStatement* c) { //
auto out = line();
if (!EmitCall(out, c->expr)) { //
@@ -3071,9 +3087,9 @@
out << " " << name;
}
- if (var->constructor != nullptr) {
+ if (var->initializer != nullptr) {
out << " = ";
- if (!EmitExpression(out, var->constructor)) {
+ if (!EmitExpression(out, var->initializer)) {
return false;
}
} else if (sem->AddressSpace() == ast::AddressSpace::kPrivate ||
@@ -3122,7 +3138,7 @@
}
out << " = ";
- if (!EmitExpression(out, let->constructor)) {
+ if (!EmitExpression(out, let->initializer)) {
return false;
}
out << ";";
diff --git a/src/tint/writer/msl/generator_impl.h b/src/tint/writer/msl/generator_impl.h
index 7cd1b6d..188bfea 100644
--- a/src/tint/writer/msl/generator_impl.h
+++ b/src/tint/writer/msl/generator_impl.h
@@ -48,7 +48,7 @@
class Call;
class Constant;
class Builtin;
-class TypeConstructor;
+class TypeInitializer;
class TypeConversion;
} // namespace tint::sem
@@ -129,6 +129,10 @@
/// @param stmt the statement to emit
/// @returns true if the statement was emitted successfully
bool EmitBreak(const ast::BreakStatement* stmt);
+ /// Handles a break-if statement
+ /// @param stmt the statement to emit
+ /// @returns true if the statement was emitted successfully
+ bool EmitBreakIf(const ast::BreakIfStatement* stmt);
/// Handles generating a call expression
/// @param out the output of the expression stream
/// @param expr the call expression
@@ -148,14 +152,14 @@
bool EmitTypeConversion(std::ostream& out,
const sem::Call* call,
const sem::TypeConversion* conv);
- /// Handles generating a type constructor
+ /// Handles generating a type initializer
/// @param out the output of the expression stream
/// @param call the call expression
- /// @param ctor the type constructor
- /// @returns true if the constructor is emitted
- bool EmitTypeConstructor(std::ostream& out,
+ /// @param ctor the type initializer
+ /// @returns true if the initializer is emitted
+ bool EmitTypeInitializer(std::ostream& out,
const sem::Call* call,
- const sem::TypeConstructor* ctor);
+ const sem::TypeInitializer* ctor);
/// Handles generating a function call
/// @param out the output of the expression stream
/// @param call the call expression
diff --git a/src/tint/writer/msl/generator_impl_case_test.cc b/src/tint/writer/msl/generator_impl_case_test.cc
index 250d67d..8aae4fe 100644
--- a/src/tint/writer/msl/generator_impl_case_test.cc
+++ b/src/tint/writer/msl/generator_impl_case_test.cc
@@ -23,7 +23,8 @@
using MslGeneratorImplTest = TestHelper;
TEST_F(MslGeneratorImplTest, Emit_Case) {
- auto* s = Switch(1_i, Case(Expr(5_i), Block(create<ast::BreakStatement>())), DefaultCase());
+ auto* s =
+ Switch(1_i, Case(CaseSelector(5_i), Block(create<ast::BreakStatement>())), DefaultCase());
WrapInFunction(s);
GeneratorImpl& gen = Build();
@@ -38,7 +39,7 @@
}
TEST_F(MslGeneratorImplTest, Emit_Case_BreaksByDefault) {
- auto* s = Switch(1_i, Case(Expr(5_i), Block()), DefaultCase());
+ auto* s = Switch(1_i, Case(CaseSelector(5_i), Block()), DefaultCase());
WrapInFunction(s);
GeneratorImpl& gen = Build();
@@ -53,8 +54,8 @@
}
TEST_F(MslGeneratorImplTest, Emit_Case_WithFallthrough) {
- auto* s =
- Switch(1_i, Case(Expr(5_i), Block(create<ast::FallthroughStatement>())), DefaultCase());
+ auto* s = Switch(1_i, Case(CaseSelector(5_i), Block(create<ast::FallthroughStatement>())),
+ DefaultCase());
WrapInFunction(s);
GeneratorImpl& gen = Build();
@@ -72,8 +73,8 @@
auto* s = Switch(1_i,
Case(
utils::Vector{
- Expr(5_i),
- Expr(6_i),
+ CaseSelector(5_i),
+ CaseSelector(6_i),
},
Block(create<ast::BreakStatement>())),
DefaultCase());
diff --git a/src/tint/writer/msl/generator_impl_constructor_test.cc b/src/tint/writer/msl/generator_impl_initializer_test.cc
similarity index 79%
rename from src/tint/writer/msl/generator_impl_constructor_test.cc
rename to src/tint/writer/msl/generator_impl_initializer_test.cc
index 4626e67..105e95f 100644
--- a/src/tint/writer/msl/generator_impl_constructor_test.cc
+++ b/src/tint/writer/msl/generator_impl_initializer_test.cc
@@ -24,7 +24,7 @@
using MslGeneratorImplTest = TestHelper;
-TEST_F(MslGeneratorImplTest, EmitConstructor_Bool) {
+TEST_F(MslGeneratorImplTest, EmitInitializer_Bool) {
WrapInFunction(Expr(false));
GeneratorImpl& gen = Build();
@@ -33,7 +33,7 @@
EXPECT_THAT(gen.result(), HasSubstr("false"));
}
-TEST_F(MslGeneratorImplTest, EmitConstructor_Int) {
+TEST_F(MslGeneratorImplTest, EmitInitializer_Int) {
WrapInFunction(Expr(-12345_i));
GeneratorImpl& gen = Build();
@@ -42,7 +42,7 @@
EXPECT_THAT(gen.result(), HasSubstr("-12345"));
}
-TEST_F(MslGeneratorImplTest, EmitConstructor_UInt) {
+TEST_F(MslGeneratorImplTest, EmitInitializer_UInt) {
WrapInFunction(Expr(56779_u));
GeneratorImpl& gen = Build();
@@ -51,7 +51,7 @@
EXPECT_THAT(gen.result(), HasSubstr("56779u"));
}
-TEST_F(MslGeneratorImplTest, EmitConstructor_Float) {
+TEST_F(MslGeneratorImplTest, EmitInitializer_Float) {
// Use a number close to 1<<30 but whose decimal representation ends in 0.
WrapInFunction(Expr(f32((1 << 30) - 4)));
@@ -61,7 +61,7 @@
EXPECT_THAT(gen.result(), HasSubstr("1073741824.0f"));
}
-TEST_F(MslGeneratorImplTest, EmitConstructor_F16) {
+TEST_F(MslGeneratorImplTest, EmitInitializer_F16) {
Enable(ast::Extension::kF16);
// Use a number close to 1<<16 but whose decimal representation ends in 0.
@@ -73,7 +73,7 @@
EXPECT_THAT(gen.result(), HasSubstr("32752.0h"));
}
-TEST_F(MslGeneratorImplTest, EmitConstructor_Type_Float) {
+TEST_F(MslGeneratorImplTest, EmitInitializer_Type_Float) {
WrapInFunction(Construct<f32>(-1.2e-5_f));
GeneratorImpl& gen = Build();
@@ -82,7 +82,7 @@
EXPECT_THAT(gen.result(), HasSubstr("-0.000012f"));
}
-TEST_F(MslGeneratorImplTest, EmitConstructor_Type_F16) {
+TEST_F(MslGeneratorImplTest, EmitInitializer_Type_F16) {
Enable(ast::Extension::kF16);
WrapInFunction(Construct<f16>(-1.2e-3_h));
@@ -93,7 +93,7 @@
EXPECT_THAT(gen.result(), HasSubstr("-0.00119972229h"));
}
-TEST_F(MslGeneratorImplTest, EmitConstructor_Type_Bool) {
+TEST_F(MslGeneratorImplTest, EmitInitializer_Type_Bool) {
WrapInFunction(Construct<bool>(true));
GeneratorImpl& gen = Build();
@@ -102,7 +102,7 @@
EXPECT_THAT(gen.result(), HasSubstr("true"));
}
-TEST_F(MslGeneratorImplTest, EmitConstructor_Type_Int) {
+TEST_F(MslGeneratorImplTest, EmitInitializer_Type_Int) {
WrapInFunction(Construct<i32>(-12345_i));
GeneratorImpl& gen = Build();
@@ -111,7 +111,7 @@
EXPECT_THAT(gen.result(), HasSubstr("-12345"));
}
-TEST_F(MslGeneratorImplTest, EmitConstructor_Type_Uint) {
+TEST_F(MslGeneratorImplTest, EmitInitializer_Type_Uint) {
WrapInFunction(Construct<u32>(12345_u));
GeneratorImpl& gen = Build();
@@ -120,7 +120,7 @@
EXPECT_THAT(gen.result(), HasSubstr("12345u"));
}
-TEST_F(MslGeneratorImplTest, EmitConstructor_Type_Vec_F32) {
+TEST_F(MslGeneratorImplTest, EmitInitializer_Type_Vec_F32) {
WrapInFunction(vec3<f32>(1_f, 2_f, 3_f));
GeneratorImpl& gen = Build();
@@ -129,7 +129,7 @@
EXPECT_THAT(gen.result(), HasSubstr("float3(1.0f, 2.0f, 3.0f)"));
}
-TEST_F(MslGeneratorImplTest, EmitConstructor_Type_Vec_F16) {
+TEST_F(MslGeneratorImplTest, EmitInitializer_Type_Vec_F16) {
Enable(ast::Extension::kF16);
WrapInFunction(vec3<f16>(1_h, 2_h, 3_h));
@@ -140,7 +140,7 @@
EXPECT_THAT(gen.result(), HasSubstr("half3(1.0h, 2.0h, 3.0h)"));
}
-TEST_F(MslGeneratorImplTest, EmitConstructor_Type_Vec_Empty_F32) {
+TEST_F(MslGeneratorImplTest, EmitInitializer_Type_Vec_Empty_F32) {
WrapInFunction(vec3<f32>());
GeneratorImpl& gen = Build();
@@ -149,7 +149,7 @@
EXPECT_THAT(gen.result(), HasSubstr("float3(0.0f)"));
}
-TEST_F(MslGeneratorImplTest, EmitConstructor_Type_Vec_Empty_F16) {
+TEST_F(MslGeneratorImplTest, EmitInitializer_Type_Vec_Empty_F16) {
Enable(ast::Extension::kF16);
WrapInFunction(vec3<f16>());
@@ -160,7 +160,7 @@
EXPECT_THAT(gen.result(), HasSubstr("half3(0.0h)"));
}
-TEST_F(MslGeneratorImplTest, EmitConstructor_Type_Vec_SingleScalar_F32_Literal) {
+TEST_F(MslGeneratorImplTest, EmitInitializer_Type_Vec_SingleScalar_F32_Literal) {
WrapInFunction(vec3<f32>(2_f));
GeneratorImpl& gen = Build();
@@ -169,7 +169,7 @@
EXPECT_THAT(gen.result(), HasSubstr("float3(2.0f)"));
}
-TEST_F(MslGeneratorImplTest, EmitConstructor_Type_Vec_SingleScalar_F16_Literal) {
+TEST_F(MslGeneratorImplTest, EmitInitializer_Type_Vec_SingleScalar_F16_Literal) {
Enable(ast::Extension::kF16);
WrapInFunction(vec3<f16>(2_h));
@@ -180,7 +180,7 @@
EXPECT_THAT(gen.result(), HasSubstr("half3(2.0h)"));
}
-TEST_F(MslGeneratorImplTest, EmitConstructor_Type_Vec_SingleScalar_F32_Var) {
+TEST_F(MslGeneratorImplTest, EmitInitializer_Type_Vec_SingleScalar_F32_Var) {
auto* var = Var("v", Expr(2_f));
auto* cast = vec3<f32>(var);
WrapInFunction(var, cast);
@@ -192,7 +192,7 @@
float3 const tint_symbol = float3(v);)"));
}
-TEST_F(MslGeneratorImplTest, EmitConstructor_Type_Vec_SingleScalar_F16_Var) {
+TEST_F(MslGeneratorImplTest, EmitInitializer_Type_Vec_SingleScalar_F16_Var) {
Enable(ast::Extension::kF16);
auto* var = Var("v", Expr(2_h));
@@ -206,7 +206,7 @@
half3 const tint_symbol = half3(v);)"));
}
-TEST_F(MslGeneratorImplTest, EmitConstructor_Type_Vec_SingleScalar_Bool) {
+TEST_F(MslGeneratorImplTest, EmitInitializer_Type_Vec_SingleScalar_Bool) {
WrapInFunction(vec3<bool>(true));
GeneratorImpl& gen = Build();
@@ -215,7 +215,7 @@
EXPECT_THAT(gen.result(), HasSubstr("bool3(true)"));
}
-TEST_F(MslGeneratorImplTest, EmitConstructor_Type_Vec_SingleScalar_Int) {
+TEST_F(MslGeneratorImplTest, EmitInitializer_Type_Vec_SingleScalar_Int) {
WrapInFunction(vec3<i32>(2_i));
GeneratorImpl& gen = Build();
@@ -224,7 +224,7 @@
EXPECT_THAT(gen.result(), HasSubstr("int3(2)"));
}
-TEST_F(MslGeneratorImplTest, EmitConstructor_Type_Vec_SingleScalar_UInt) {
+TEST_F(MslGeneratorImplTest, EmitInitializer_Type_Vec_SingleScalar_UInt) {
WrapInFunction(vec3<u32>(2_u));
GeneratorImpl& gen = Build();
@@ -233,7 +233,7 @@
EXPECT_THAT(gen.result(), HasSubstr("uint3(2u)"));
}
-TEST_F(MslGeneratorImplTest, EmitConstructor_Type_Mat_F32) {
+TEST_F(MslGeneratorImplTest, EmitInitializer_Type_Mat_F32) {
WrapInFunction(mat2x3<f32>(vec3<f32>(1_f, 2_f, 3_f), vec3<f32>(3_f, 4_f, 5_f)));
GeneratorImpl& gen = Build();
@@ -244,7 +244,7 @@
HasSubstr("float2x3(float3(1.0f, 2.0f, 3.0f), float3(3.0f, 4.0f, 5.0f))"));
}
-TEST_F(MslGeneratorImplTest, EmitConstructor_Type_Mat_F16) {
+TEST_F(MslGeneratorImplTest, EmitInitializer_Type_Mat_F16) {
Enable(ast::Extension::kF16);
WrapInFunction(mat2x3<f16>(vec3<f16>(1_h, 2_h, 3_h), vec3<f16>(3_h, 4_h, 5_h)));
@@ -257,7 +257,7 @@
HasSubstr("half2x3(half3(1.0h, 2.0h, 3.0h), half3(3.0h, 4.0h, 5.0h))"));
}
-TEST_F(MslGeneratorImplTest, EmitConstructor_Type_Mat_Complex_F32) {
+TEST_F(MslGeneratorImplTest, EmitInitializer_Type_Mat_Complex_F32) {
// mat4x4<f32>(
// vec4<f32>(2.0f, 3.0f, 4.0f, 8.0f),
// vec4<f32>(),
@@ -266,15 +266,15 @@
// );
auto* vector_literal =
vec4<f32>(Expr(f32(2.0)), Expr(f32(3.0)), Expr(f32(4.0)), Expr(f32(8.0)));
- auto* vector_zero_ctor = vec4<f32>();
- auto* vector_single_scalar_ctor = vec4<f32>(Expr(f32(7.0)));
- auto* vector_identical_ctor =
+ auto* vector_zero_init = vec4<f32>();
+ auto* vector_single_scalar_init = vec4<f32>(Expr(f32(7.0)));
+ auto* vector_identical_init =
vec4<f32>(vec4<f32>(Expr(f32(42.0)), Expr(f32(21.0)), Expr(f32(6.0)), Expr(f32(-5.0))));
- auto* constructor = mat4x4<f32>(vector_literal, vector_zero_ctor, vector_single_scalar_ctor,
- vector_identical_ctor);
+ auto* initializer = mat4x4<f32>(vector_literal, vector_zero_init, vector_single_scalar_init,
+ vector_identical_init);
- WrapInFunction(constructor);
+ WrapInFunction(initializer);
GeneratorImpl& gen = Build();
@@ -284,7 +284,7 @@
"float4(7.0f), float4(42.0f, 21.0f, 6.0f, -5.0f))"));
}
-TEST_F(MslGeneratorImplTest, EmitConstructor_Type_Mat_Complex_F16) {
+TEST_F(MslGeneratorImplTest, EmitInitializer_Type_Mat_Complex_F16) {
// mat4x4<f16>(
// vec4<f16>(2.0h, 3.0h, 4.0h, 8.0h),
// vec4<f16>(),
@@ -295,15 +295,15 @@
auto* vector_literal =
vec4<f16>(Expr(f16(2.0)), Expr(f16(3.0)), Expr(f16(4.0)), Expr(f16(8.0)));
- auto* vector_zero_ctor = vec4<f16>();
- auto* vector_single_scalar_ctor = vec4<f16>(Expr(f16(7.0)));
- auto* vector_identical_ctor =
+ auto* vector_zero_init = vec4<f16>();
+ auto* vector_single_scalar_init = vec4<f16>(Expr(f16(7.0)));
+ auto* vector_identical_init =
vec4<f16>(vec4<f16>(Expr(f16(42.0)), Expr(f16(21.0)), Expr(f16(6.0)), Expr(f16(-5.0))));
- auto* constructor = mat4x4<f16>(vector_literal, vector_zero_ctor, vector_single_scalar_ctor,
- vector_identical_ctor);
+ auto* initializer = mat4x4<f16>(vector_literal, vector_zero_init, vector_single_scalar_init,
+ vector_identical_init);
- WrapInFunction(constructor);
+ WrapInFunction(initializer);
GeneratorImpl& gen = Build();
@@ -313,7 +313,7 @@
"half4(7.0h), half4(42.0h, 21.0h, 6.0h, -5.0h))"));
}
-TEST_F(MslGeneratorImplTest, EmitConstructor_Type_Mat_Empty_F32) {
+TEST_F(MslGeneratorImplTest, EmitInitializer_Type_Mat_Empty_F32) {
WrapInFunction(mat2x3<f32>());
GeneratorImpl& gen = Build();
@@ -324,7 +324,7 @@
HasSubstr("float2x3 const tint_symbol = float2x3(float3(0.0f), float3(0.0f))"));
}
-TEST_F(MslGeneratorImplTest, EmitConstructor_Type_Mat_Empty_F16) {
+TEST_F(MslGeneratorImplTest, EmitInitializer_Type_Mat_Empty_F16) {
Enable(ast::Extension::kF16);
WrapInFunction(mat2x3<f16>());
@@ -337,7 +337,7 @@
HasSubstr("half2x3 const tint_symbol = half2x3(half3(0.0h), half3(0.0h))"));
}
-TEST_F(MslGeneratorImplTest, EmitConstructor_Type_Mat_Identity_F32) {
+TEST_F(MslGeneratorImplTest, EmitInitializer_Type_Mat_Identity_F32) {
// fn f() {
// var m_1: mat4x4<f32> = mat4x4<f32>();
// var m_2: mat4x4<f32> = mat4x4<f32>(m_1);
@@ -355,7 +355,7 @@
EXPECT_THAT(gen.result(), HasSubstr("float4x4 m_2 = float4x4(m_1);"));
}
-TEST_F(MslGeneratorImplTest, EmitConstructor_Type_Mat_Identity_F16) {
+TEST_F(MslGeneratorImplTest, EmitInitializer_Type_Mat_Identity_F16) {
// fn f() {
// var m_1: mat4x4<f16> = mat4x4<f16>();
// var m_2: mat4x4<f16> = mat4x4<f16>(m_1);
@@ -375,7 +375,7 @@
EXPECT_THAT(gen.result(), HasSubstr("half4x4 m_2 = half4x4(m_1);"));
}
-TEST_F(MslGeneratorImplTest, EmitConstructor_Type_Array) {
+TEST_F(MslGeneratorImplTest, EmitInitializer_Type_Array) {
WrapInFunction(Construct(ty.array(ty.vec3<f32>(), 3_u), vec3<f32>(1_f, 2_f, 3_f),
vec3<f32>(4_f, 5_f, 6_f), vec3<f32>(7_f, 8_f, 9_f)));
@@ -386,7 +386,7 @@
"float3(7.0f, 8.0f, 9.0f)}"));
}
-TEST_F(MslGeneratorImplTest, EmitConstructor_Type_Struct) {
+TEST_F(MslGeneratorImplTest, EmitInitializer_Type_Struct) {
auto* str = Structure("S", utils::Vector{
Member("a", ty.i32()),
Member("b", ty.f32()),
@@ -401,7 +401,7 @@
EXPECT_THAT(gen.result(), HasSubstr("{.a=1, .b=2.0f, .c=int3(3, 4, 5)}"));
}
-TEST_F(MslGeneratorImplTest, EmitConstructor_Type_Struct_Empty) {
+TEST_F(MslGeneratorImplTest, EmitInitializer_Type_Struct_Empty) {
auto* str = Structure("S", utils::Vector{
Member("a", ty.i32()),
Member("b", ty.f32()),
diff --git a/src/tint/writer/msl/generator_impl_loop_test.cc b/src/tint/writer/msl/generator_impl_loop_test.cc
index 274ee94..1dd5430 100644
--- a/src/tint/writer/msl/generator_impl_loop_test.cc
+++ b/src/tint/writer/msl/generator_impl_loop_test.cc
@@ -65,6 +65,31 @@
)");
}
+TEST_F(MslGeneratorImplTest, Emit_LoopWithContinuing_BreakIf) {
+ Func("a_statement", {}, ty.void_(), {});
+
+ auto* body = Block(create<ast::DiscardStatement>());
+ auto* continuing = Block(CallStmt(Call("a_statement")), BreakIf(true));
+ auto* l = Loop(body, continuing);
+
+ Func("F", utils::Empty, ty.void_(), utils::Vector{l},
+ utils::Vector{Stage(ast::PipelineStage::kFragment)});
+
+ GeneratorImpl& gen = Build();
+
+ gen.increment_indent();
+
+ ASSERT_TRUE(gen.EmitStatement(l)) << gen.error();
+ EXPECT_EQ(gen.result(), R"( while (true) {
+ discard_fragment();
+ {
+ a_statement();
+ if (true) { break; }
+ }
+ }
+)");
+}
+
TEST_F(MslGeneratorImplTest, Emit_LoopNestedWithContinuing) {
Func("a_statement", {}, ty.void_(), utils::Empty);
diff --git a/src/tint/writer/msl/generator_impl_switch_test.cc b/src/tint/writer/msl/generator_impl_switch_test.cc
index b327f34..6b47d09 100644
--- a/src/tint/writer/msl/generator_impl_switch_test.cc
+++ b/src/tint/writer/msl/generator_impl_switch_test.cc
@@ -25,16 +25,13 @@
auto* cond = Var("cond", ty.i32());
auto* def_body = Block(create<ast::BreakStatement>());
- auto* def = create<ast::CaseStatement>(utils::Empty, def_body);
-
- utils::Vector case_val{Expr(5_i)};
+ auto* def = Case(DefaultCaseSelector(), def_body);
auto* case_body = Block(create<ast::BreakStatement>());
-
- auto* case_stmt = create<ast::CaseStatement>(case_val, case_body);
+ auto* case_stmt = Case(CaseSelector(5_i), case_body);
utils::Vector body{case_stmt, def};
- auto* s = create<ast::SwitchStatement>(Expr(cond), body);
+ auto* s = Switch(cond, body);
WrapInFunction(cond, s);
GeneratorImpl& gen = Build();
@@ -52,5 +49,27 @@
)");
}
+TEST_F(MslGeneratorImplTest, Emit_Switch_MixedDefault) {
+ auto* cond = Var("cond", ty.i32());
+
+ auto* def_body = Block(create<ast::BreakStatement>());
+ auto* def = Case(utils::Vector{CaseSelector(5_i), DefaultCaseSelector()}, def_body);
+
+ auto* s = Switch(cond, def);
+ WrapInFunction(cond, s);
+ GeneratorImpl& gen = Build();
+
+ gen.increment_indent();
+
+ ASSERT_TRUE(gen.EmitStatement(s)) << gen.error();
+ EXPECT_EQ(gen.result(), R"( switch(cond) {
+ case 5:
+ default: {
+ break;
+ }
+ }
+)");
+}
+
} // namespace
} // namespace tint::writer::msl
diff --git a/src/tint/writer/spirv/builder.cc b/src/tint/writer/spirv/builder.cc
index 96edf6c..91b16b4 100644
--- a/src/tint/writer/spirv/builder.cc
+++ b/src/tint/writer/spirv/builder.cc
@@ -39,8 +39,9 @@
#include "src/tint/sem/sampled_texture.h"
#include "src/tint/sem/statement.h"
#include "src/tint/sem/struct.h"
-#include "src/tint/sem/type_constructor.h"
+#include "src/tint/sem/switch_statement.h"
#include "src/tint/sem/type_conversion.h"
+#include "src/tint/sem/type_initializer.h"
#include "src/tint/sem/variable.h"
#include "src/tint/sem/vector.h"
#include "src/tint/transform/add_block_attribute.h"
@@ -454,6 +455,19 @@
return true;
}
+bool Builder::GenerateBreakIfStatement(const ast::BreakIfStatement* stmt) {
+ TINT_ASSERT(Writer, !backedge_stack_.empty());
+ const auto cond_id = GenerateExpressionWithLoadIfNeeded(stmt->condition);
+ if (!cond_id) {
+ return false;
+ }
+ const ContinuingInfo& ci = continuing_stack_.back();
+ backedge_stack_.back() =
+ Backedge(spv::Op::OpBranchConditional,
+ {Operand(cond_id), Operand(ci.break_target_id), Operand(ci.loop_header_id)});
+ return true;
+}
+
bool Builder::GenerateContinueStatement(const ast::ContinueStatement*) {
if (continue_stack_.empty()) {
error_ = "Attempted to continue without a continue block";
@@ -671,8 +685,8 @@
}
uint32_t init_id = 0;
- if (v->constructor) {
- init_id = GenerateExpressionWithLoadIfNeeded(v->constructor);
+ if (v->initializer) {
+ init_id = GenerateExpressionWithLoadIfNeeded(v->initializer);
if (init_id == 0) {
return false;
}
@@ -681,8 +695,8 @@
auto* sem = builder_.Sem().Get(v);
if (v->Is<ast::Let>()) {
- if (!v->constructor) {
- error_ = "missing constructor for let";
+ if (!v->initializer) {
+ error_ = "missing initializer for let";
return false;
}
RegisterVariable(sem, init_id);
@@ -700,7 +714,7 @@
push_debug(spv::Op::OpName, {Operand(var_id), Operand(builder_.Symbols().NameFor(v->symbol))});
- // TODO(dsinclair) We could detect if the constructor is fully const and emit
+ // TODO(dsinclair) We could detect if the initializer is fully const and emit
// an initializer value for the variable instead of doing the OpLoad.
auto null_id = GenerateConstantNullIfNeeded(type->UnwrapRef());
if (null_id == 0) {
@@ -709,7 +723,7 @@
push_function_var(
{Operand(type_id), result, U32Operand(ConvertAddressSpace(sc)), Operand(null_id)});
- if (v->constructor) {
+ if (v->initializer) {
if (!GenerateStore(var_id, init_id)) {
return false;
}
@@ -740,8 +754,8 @@
auto* type = sem->Type()->UnwrapRef();
uint32_t init_id = 0;
- if (auto* ctor = v->constructor) {
- init_id = GenerateConstructorExpression(v, ctor);
+ if (auto* ctor = v->initializer) {
+ init_id = GenerateInitializerExpression(v, ctor);
if (init_id == 0) {
return false;
}
@@ -762,7 +776,7 @@
OperandList ops = {Operand(type_id), result, U32Operand(ConvertAddressSpace(sc))};
- if (v->constructor) {
+ if (v->initializer) {
ops.push_back(Operand(init_id));
} else {
auto* st = type->As<sem::StorageTexture>();
@@ -784,7 +798,7 @@
}
}
if (!type->Is<sem::Sampler>()) {
- // If we don't have a constructor and we're an Output or Private
+ // If we don't have a initializer and we're an Output or Private
// variable, then WGSL requires that we zero-initialize.
// If we're a Workgroup variable, and the
// VK_KHR_zero_initialize_workgroup_memory extension is enabled, we should
@@ -1220,7 +1234,7 @@
return id;
}
-uint32_t Builder::GenerateConstructorExpression(const ast::Variable* var,
+uint32_t Builder::GenerateInitializerExpression(const ast::Variable* var,
const ast::Expression* expr) {
if (auto* sem = builder_.Sem().Get(expr)) {
if (auto constant = sem->ConstantValue()) {
@@ -1228,15 +1242,15 @@
}
}
if (auto* call = builder_.Sem().Get<sem::Call>(expr)) {
- if (call->Target()->IsAnyOf<sem::TypeConstructor, sem::TypeConversion>()) {
- return GenerateTypeConstructorOrConversion(call, var);
+ if (call->Target()->IsAnyOf<sem::TypeInitializer, sem::TypeConversion>()) {
+ return GenerateTypeInitializerOrConversion(call, var);
}
}
- error_ = "unknown constructor expression";
+ error_ = "unknown initializer expression";
return 0;
}
-bool Builder::IsConstructorConst(const ast::Expression* expr) {
+bool Builder::IsInitializerConst(const ast::Expression* expr) {
bool is_const = true;
ast::TraverseExpressions(expr, builder_.Diagnostics(), [&](const ast::Expression* e) {
if (e->Is<ast::LiteralExpression>()) {
@@ -1250,7 +1264,7 @@
return ast::TraverseAction::Skip;
}
auto* call = sem->As<sem::Call>();
- if (call->Target()->Is<sem::TypeConstructor>()) {
+ if (call->Target()->Is<sem::TypeInitializer>()) {
return ast::TraverseAction::Descend;
}
}
@@ -1261,7 +1275,7 @@
return is_const;
}
-uint32_t Builder::GenerateTypeConstructorOrConversion(const sem::Call* call,
+uint32_t Builder::GenerateTypeInitializerOrConversion(const sem::Call* call,
const ast::Variable* var) {
auto& args = call->Arguments();
auto* global_var = builder_.Sem().Get<sem::GlobalVariable>(var);
@@ -1273,7 +1287,7 @@
}
result_type = result_type->UnwrapRef();
- bool constructor_is_const = IsConstructorConst(call->Declaration());
+ bool initializer_is_const = IsInitializerConst(call->Declaration());
if (has_error()) {
return 0;
}
@@ -1308,7 +1322,7 @@
return 0;
}
- bool result_is_constant_composite = constructor_is_const;
+ bool result_is_constant_composite = initializer_is_const;
bool result_is_spec_composite = false;
if (auto* vec = result_type->As<sem::Vector>()) {
@@ -1414,7 +1428,7 @@
? scope_stack_[0] // Global scope
: scope_stack_.back(); // Lexical scope
- return utils::GetOrCreate(stack.type_ctor_to_id_, OperandListKey{ops}, [&]() -> uint32_t {
+ return utils::GetOrCreate(stack.type_init_to_id_, OperandListKey{ops}, [&]() -> uint32_t {
auto result = result_op();
ops[kOpsResultIdx] = result;
@@ -1485,7 +1499,7 @@
} else if (from_type
->IsAnyOf<sem::Bool, sem::F32, sem::I32, sem::U32, sem::F16, sem::Vector>() &&
from_type == to_type) {
- // Identity constructor for scalar and vector types
+ // Identity initializer for scalar and vector types
return val_id;
} else if ((from_type->is_float_scalar() && to_type->is_float_scalar()) ||
(from_type->is_float_vector() && to_type->is_float_vector() &&
@@ -1493,7 +1507,7 @@
// Convert between f32 and f16 types.
// OpFConvert requires the scalar component types to be different, and the case of from_type
// and to_type being the same floating point scalar or vector type, i.e. identity
- // constructor, is already handled in the previous else-if clause.
+ // initializer, is already handled in the previous else-if clause.
op = spv::Op::OpFConvert;
} else if ((from_type->Is<sem::I32>() && to_type->Is<sem::U32>()) ||
(from_type->Is<sem::U32>() && to_type->Is<sem::I32>()) ||
@@ -1556,7 +1570,7 @@
return result_id;
} else if (from_type->Is<sem::Matrix>() && to_type->Is<sem::Matrix>()) {
// SPIRV does not support matrix conversion, the only valid case is matrix identity
- // constructor. Matrix conversion between f32 and f16 should be transformed into vector
+ // initializer. Matrix conversion between f32 and f16 should be transformed into vector
// conversions for each column vectors by VectorizeMatrixConversions.
auto* from_mat = from_type->As<sem::Matrix>();
auto* to_mat = to_type->As<sem::Matrix>();
@@ -1655,7 +1669,7 @@
}
auto& global_scope = scope_stack_[0];
- return utils::GetOrCreate(global_scope.type_ctor_to_id_, OperandListKey{ops},
+ return utils::GetOrCreate(global_scope.type_init_to_id_, OperandListKey{ops},
[&]() -> uint32_t {
auto result = result_op();
ops[kOpsResultIdx] = result;
@@ -2219,10 +2233,10 @@
target, [&](const sem::Function* func) { return GenerateFunctionCall(call, func); },
[&](const sem::Builtin* builtin) { return GenerateBuiltinCall(call, builtin); },
[&](const sem::TypeConversion*) {
- return GenerateTypeConstructorOrConversion(call, nullptr);
+ return GenerateTypeInitializerOrConversion(call, nullptr);
},
- [&](const sem::TypeConstructor*) {
- return GenerateTypeConstructorOrConversion(call, nullptr);
+ [&](const sem::TypeInitializer*) {
+ return GenerateTypeInitializerOrConversion(call, nullptr);
},
[&](Default) {
TINT_ICE(Writer, builder_.Diagnostics())
@@ -3399,6 +3413,8 @@
// continuing { ...
// if (cond) {} else {break;}
// }
+ //
+ // TODO(crbug.com/tint/1451): Remove this when the if break construct is made an error.
auto is_just_a_break = [](const ast::BlockStatement* block) {
return block && (block->statements.Length() == 1) &&
block->Last()->Is<ast::BreakStatement>();
@@ -3455,23 +3471,26 @@
std::vector<uint32_t> case_ids;
for (const auto* item : stmt->body) {
- if (item->IsDefault()) {
- case_ids.push_back(default_block_id);
+ auto block_id = default_block_id;
+ if (!item->ContainsDefault()) {
+ auto block = result_op();
+ block_id = std::get<uint32_t>(block);
+ }
+ case_ids.push_back(block_id);
+
+ // If this case statement is only a default selector skip adding the block
+ // as it will be done below.
+ if (item->selectors.Length() == 1 && item->ContainsDefault()) {
continue;
}
- auto block = result_op();
- auto block_id = std::get<uint32_t>(block);
-
- case_ids.push_back(block_id);
- for (auto* selector : item->selectors) {
- auto* int_literal = selector->As<ast::IntLiteralExpression>();
- if (!int_literal) {
- error_ = "expected integer literal for switch case label";
- return false;
+ auto* sem = builder_.Sem().Get<sem::CaseStatement>(item);
+ for (auto* selector : sem->Selectors()) {
+ if (selector->IsDefault()) {
+ continue;
}
- params.push_back(Operand(static_cast<uint32_t>(int_literal->value)));
+ params.push_back(Operand(selector->Value()->As<uint32_t>()));
params.push_back(Operand(block_id));
}
}
@@ -3493,7 +3512,7 @@
for (uint32_t i = 0; i < body.Length(); i++) {
auto* item = body[i];
- if (item->IsDefault()) {
+ if (item->ContainsDefault()) {
generated_default = true;
}
@@ -3639,6 +3658,7 @@
stmt, [&](const ast::AssignmentStatement* a) { return GenerateAssignStatement(a); },
[&](const ast::BlockStatement* b) { return GenerateBlockStatement(b); },
[&](const ast::BreakStatement* b) { return GenerateBreakStatement(b); },
+ [&](const ast::BreakIfStatement* b) { return GenerateBreakIfStatement(b); },
[&](const ast::CallStatement* c) { return GenerateCallExpression(c->expr) != 0; },
[&](const ast::ContinueStatement* c) { return GenerateContinueStatement(c); },
[&](const ast::DiscardStatement* d) { return GenerateDiscardStatement(d); },
@@ -3655,7 +3675,7 @@
return true; // Not emitted
},
[&](Default) {
- error_ = "Unknown statement: " + std::string(stmt->TypeInfo().name);
+ error_ = "unknown statement type: " + std::string(stmt->TypeInfo().name);
return false;
});
}
diff --git a/src/tint/writer/spirv/builder.h b/src/tint/writer/spirv/builder.h
index e081d31..1e412fa 100644
--- a/src/tint/writer/spirv/builder.h
+++ b/src/tint/writer/spirv/builder.h
@@ -45,7 +45,7 @@
class Call;
class Constant;
class Reference;
-class TypeConstructor;
+class TypeInitializer;
class TypeConversion;
} // namespace tint::sem
@@ -248,6 +248,10 @@
/// @param stmt the statement to generate
/// @returns true if the statement was successfully generated
bool GenerateBreakStatement(const ast::BreakStatement* stmt);
+ /// Generates a break-if statement
+ /// @param stmt the statement to generate
+ /// @returns true if the statement was successfully generated
+ bool GenerateBreakIfStatement(const ast::BreakIfStatement* stmt);
/// Generates a continue statement
/// @param stmt the statement to generate
/// @returns true if the statement was successfully generated
@@ -327,11 +331,11 @@
/// instruction set, if one doesn't exist yet, and returns the import ID.
/// @returns the import ID, or 0 on error.
uint32_t GetGLSLstd450Import();
- /// Generates a constructor expression
+ /// Generates a initializer expression
/// @param var the variable generated for, nullptr if no variable associated.
/// @param expr the expression to generate
/// @returns the ID of the expression or 0 on failure.
- uint32_t GenerateConstructorExpression(const ast::Variable* var, const ast::Expression* expr);
+ uint32_t GenerateInitializerExpression(const ast::Variable* var, const ast::Expression* expr);
/// Generates a literal constant if needed
/// @param lit the literal to generate
/// @returns the ID on success or 0 on failure
@@ -362,11 +366,11 @@
/// @param builtin the builtin being called
/// @returns the expression ID on success or 0 otherwise
uint32_t GenerateBuiltinCall(const sem::Call* call, const sem::Builtin* builtin);
- /// Handles generating a type constructor or type conversion expression
+ /// Handles generating a type initializer or type conversion expression
/// @param call the call expression
/// @param var the variable that is being initialized. May be null.
/// @returns the expression ID on success or 0 otherwise
- uint32_t GenerateTypeConstructorOrConversion(const sem::Call* call, const ast::Variable* var);
+ uint32_t GenerateTypeInitializerOrConversion(const sem::Call* call, const ast::Variable* var);
/// Generates a texture builtin call. Emits an error and returns false if
/// we're currently outside a function.
/// @param call the call expression
@@ -536,10 +540,10 @@
/// @returns SPIR-V image format type
SpvImageFormat convert_texel_format_to_spv(const ast::TexelFormat format);
- /// Determines if the given type constructor is created from constant values
+ /// Determines if the given type initializer is created from constant values
/// @param expr the expression to check
- /// @returns true if the constructor is constant
- bool IsConstructorConst(const ast::Expression* expr);
+ /// @returns true if the initializer is constant
+ bool IsInitializerConst(const ast::Expression* expr);
private:
/// @returns an Operand with a new result ID in it. Increments the next_id_
@@ -607,7 +611,7 @@
Scope();
Scope(const Scope&);
~Scope();
- std::unordered_map<OperandListKey, uint32_t> type_ctor_to_id_;
+ std::unordered_map<OperandListKey, uint32_t> type_init_to_id_;
};
std::unordered_map<const sem::Variable*, uint32_t> var_to_id_;
diff --git a/src/tint/writer/spirv/builder_assign_test.cc b/src/tint/writer/spirv/builder_assign_test.cc
index d43fbbe..1e2cf65 100644
--- a/src/tint/writer/spirv/builder_assign_test.cc
+++ b/src/tint/writer/spirv/builder_assign_test.cc
@@ -69,7 +69,7 @@
"function");
}
-TEST_F(BuilderTest, Assign_Var_ZeroConstructor) {
+TEST_F(BuilderTest, Assign_Var_ZeroInitializer) {
auto* v = GlobalVar("var", ty.vec3<f32>(), ast::AddressSpace::kPrivate);
auto* val = vec3<f32>();
@@ -98,7 +98,7 @@
)");
}
-TEST_F(BuilderTest, Assign_Var_Complex_ConstructorNestedVector) {
+TEST_F(BuilderTest, Assign_Var_Complex_InitializerNestedVector) {
auto* init = vec3<f32>(vec2<f32>(1_f, 2_f), 3_f);
auto* v = GlobalVar("var", ty.vec3<f32>(), ast::AddressSpace::kPrivate);
@@ -131,7 +131,7 @@
)");
}
-TEST_F(BuilderTest, Assign_Var_Complex_Constructor) {
+TEST_F(BuilderTest, Assign_Var_Complex_Initializer) {
auto* init = vec3<f32>(1_f, 2_f, 3_f);
auto* v = GlobalVar("var", ty.vec3<f32>(), ast::AddressSpace::kPrivate);
diff --git a/src/tint/writer/spirv/builder_function_variable_test.cc b/src/tint/writer/spirv/builder_function_variable_test.cc
index 2738634..4f50388 100644
--- a/src/tint/writer/spirv/builder_function_variable_test.cc
+++ b/src/tint/writer/spirv/builder_function_variable_test.cc
@@ -43,7 +43,7 @@
)");
}
-TEST_F(BuilderTest, FunctionVar_WithConstantConstructor) {
+TEST_F(BuilderTest, FunctionVar_WithConstantInitializer) {
auto* init = vec3<f32>(1_f, 1_f, 3_f);
auto* v = Var("var", ty.vec3<f32>(), ast::AddressSpace::kFunction, init);
WrapInFunction(v);
@@ -72,7 +72,7 @@
)");
}
-TEST_F(BuilderTest, FunctionVar_WithNonConstantConstructor) {
+TEST_F(BuilderTest, FunctionVar_WithNonConstantInitializer) {
auto* a = Let("a", Expr(3_f));
auto* init = vec2<f32>(1_f, Add(Expr("a"), 3_f));
@@ -105,7 +105,7 @@
)");
}
-TEST_F(BuilderTest, FunctionVar_WithNonConstantConstructorLoadedFromVar) {
+TEST_F(BuilderTest, FunctionVar_WithNonConstantInitializerLoadedFromVar) {
// var v : f32 = 1.0;
// var v2 : f32 = v; // Should generate the load and store automatically.
diff --git a/src/tint/writer/spirv/builder_global_variable_test.cc b/src/tint/writer/spirv/builder_global_variable_test.cc
index 0d2ec9c..64eac22 100644
--- a/src/tint/writer/spirv/builder_global_variable_test.cc
+++ b/src/tint/writer/spirv/builder_global_variable_test.cc
@@ -39,7 +39,7 @@
)");
}
-TEST_F(BuilderTest, GlobalVar_WithConstructor) {
+TEST_F(BuilderTest, GlobalVar_WithInitializer) {
auto* init = vec3<f32>(1_f, 1_f, 3_f);
auto* v = GlobalVar("var", ty.vec3<f32>(), ast::AddressSpace::kPrivate, init);
@@ -86,7 +86,7 @@
Validate(b);
}
-TEST_F(BuilderTest, GlobalConst_Vec_Constructor) {
+TEST_F(BuilderTest, GlobalConst_Vec_Initializer) {
// const c = vec3<f32>(1f, 2f, 3f);
// var v = c;
@@ -115,7 +115,7 @@
Validate(b);
}
-TEST_F(BuilderTest, GlobalConst_Vec_F16_Constructor) {
+TEST_F(BuilderTest, GlobalConst_Vec_F16_Initializer) {
// const c = vec3<f16>(1h, 2h, 3h);
// var v = c;
Enable(ast::Extension::kF16);
@@ -145,7 +145,7 @@
Validate(b);
}
-TEST_F(BuilderTest, GlobalConst_Vec_AInt_Constructor) {
+TEST_F(BuilderTest, GlobalConst_Vec_AInt_Initializer) {
// const c = vec3(1, 2, 3);
// var v = c;
@@ -174,7 +174,7 @@
Validate(b);
}
-TEST_F(BuilderTest, GlobalConst_Vec_AFloat_Constructor) {
+TEST_F(BuilderTest, GlobalConst_Vec_AFloat_Initializer) {
// const c = vec3(1.0, 2.0, 3.0);
// var v = c;
@@ -203,7 +203,7 @@
Validate(b);
}
-TEST_F(BuilderTest, GlobalConst_Nested_Vec_Constructor) {
+TEST_F(BuilderTest, GlobalConst_Nested_Vec_Initializer) {
// const c = vec3<f32>(vec2<f32>(1f, 2f), 3f));
// var v = c;
diff --git a/src/tint/writer/spirv/builder_constructor_expression_test.cc b/src/tint/writer/spirv/builder_initializer_expression_test.cc
similarity index 88%
rename from src/tint/writer/spirv/builder_constructor_expression_test.cc
rename to src/tint/writer/spirv/builder_initializer_expression_test.cc
index cabbd18..07277c5 100644
--- a/src/tint/writer/spirv/builder_constructor_expression_test.cc
+++ b/src/tint/writer/spirv/builder_initializer_expression_test.cc
@@ -20,15 +20,15 @@
namespace tint::writer::spirv {
namespace {
-using SpvBuilderConstructorTest = TestHelper;
+using SpvBuilderInitializerTest = TestHelper;
-TEST_F(SpvBuilderConstructorTest, Const) {
+TEST_F(SpvBuilderInitializerTest, Const) {
auto* c = Expr(42.2_f);
auto* g = GlobalVar("g", ty.f32(), c, ast::AddressSpace::kPrivate);
spirv::Builder& b = Build();
- EXPECT_EQ(b.GenerateConstructorExpression(g, c), 2u);
+ EXPECT_EQ(b.GenerateInitializerExpression(g, c), 2u);
ASSERT_FALSE(b.has_error()) << b.error();
EXPECT_EQ(DumpInstructions(b.types()), R"(%1 = OpTypeFloat 32
@@ -36,13 +36,13 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type) {
+TEST_F(SpvBuilderInitializerTest, Type) {
auto* t = vec3<f32>(1_f, 1_f, 3_f);
WrapInFunction(t);
spirv::Builder& b = Build();
- EXPECT_EQ(b.GenerateConstructorExpression(nullptr, t), 5u);
+ EXPECT_EQ(b.GenerateInitializerExpression(nullptr, t), 5u);
ASSERT_FALSE(b.has_error()) << b.error();
EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeFloat 32
@@ -53,7 +53,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_WithCasts) {
+TEST_F(SpvBuilderInitializerTest, Type_WithCasts) {
auto* t = vec2<f32>(Construct<f32>(1_i), Construct<f32>(1_i));
WrapInFunction(t);
@@ -72,7 +72,7 @@
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), R"()");
}
-TEST_F(SpvBuilderConstructorTest, Type_WithAlias) {
+TEST_F(SpvBuilderInitializerTest, Type_WithAlias) {
// type Int = i32
// cast<Int>(2.3f)
@@ -91,7 +91,7 @@
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), R"()");
}
-TEST_F(SpvBuilderConstructorTest, Type_IdentifierExpression_Param) {
+TEST_F(SpvBuilderInitializerTest, Type_IdentifierExpression_Param) {
auto* var = Var("ident", ty.f32());
auto* t = vec2<f32>(1_f, "ident");
@@ -121,7 +121,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Vector_Bitcast_Params) {
+TEST_F(SpvBuilderInitializerTest, Vector_Bitcast_Params) {
auto* var = Var("v", vec3<f32>(1_f, 2_f, 3_f));
auto* cast = Bitcast(ty.vec3<u32>(), var);
WrapInFunction(var, cast);
@@ -150,7 +150,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Bool_With_Bool) {
+TEST_F(SpvBuilderInitializerTest, Type_Bool_With_Bool) {
auto* cast = Construct<bool>(true);
WrapInFunction(cast);
@@ -167,7 +167,7 @@
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), R"()");
}
-TEST_F(SpvBuilderConstructorTest, Type_I32_With_I32) {
+TEST_F(SpvBuilderInitializerTest, Type_I32_With_I32) {
auto* cast = Construct<i32>(2_i);
WrapInFunction(cast);
@@ -182,7 +182,7 @@
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), R"()");
}
-TEST_F(SpvBuilderConstructorTest, Type_U32_With_U32) {
+TEST_F(SpvBuilderInitializerTest, Type_U32_With_U32) {
auto* cast = Construct<u32>(2_u);
WrapInFunction(cast);
@@ -197,7 +197,7 @@
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), R"()");
}
-TEST_F(SpvBuilderConstructorTest, Type_F32_With_F32) {
+TEST_F(SpvBuilderInitializerTest, Type_F32_With_F32) {
auto* cast = Construct<f32>(2_f);
WrapInFunction(cast);
@@ -212,7 +212,7 @@
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), R"()");
}
-TEST_F(SpvBuilderConstructorTest, Type_F16_With_F16) {
+TEST_F(SpvBuilderInitializerTest, Type_F16_With_F16) {
Enable(ast::Extension::kF16);
auto* cast = Construct<f16>(2_h);
@@ -229,7 +229,7 @@
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), R"()");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec2_With_Bool_Literal) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec2_With_Bool_Literal) {
auto* cast = vec2<bool>(true);
WrapInFunction(cast);
@@ -246,7 +246,7 @@
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), R"()");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec2_With_Bool_Var) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec2_With_Bool_Var) {
auto* var = Var("v", Expr(true));
auto* cast = vec2<bool>(var);
WrapInFunction(var, cast);
@@ -270,7 +270,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec2_With_F32_Literal) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec2_With_F32_Literal) {
auto* cast = vec2<f32>(2_f);
WrapInFunction(cast);
@@ -287,7 +287,7 @@
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), R"()");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec2_With_F16_Literal) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec2_With_F16_Literal) {
Enable(ast::Extension::kF16);
auto* cast = vec2<f16>(2_h);
@@ -306,7 +306,7 @@
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), R"()");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec2_With_F32_F32) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec2_With_F32_F32) {
auto* var = Decl(Var("x", ty.f32(), Expr(2_f)));
auto* cast = vec2<f32>("x", "x");
WrapInFunction(var, cast);
@@ -331,7 +331,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec2_With_F16_F16) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec2_With_F16_F16) {
Enable(ast::Extension::kF16);
auto* var = Decl(Var("x", ty.f16(), Expr(2_h)));
@@ -358,7 +358,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec2_With_F32_F32_Const) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec2_With_F32_F32_Const) {
auto* cast = vec2<f32>(1_f, 2_f);
WrapInFunction(cast);
@@ -376,7 +376,7 @@
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), R"()");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec2_With_F16_F16_Const) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec2_With_F16_F16_Const) {
Enable(ast::Extension::kF16);
auto* cast = vec2<f16>(1_h, 2_h);
@@ -396,7 +396,7 @@
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), R"()");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec2_F32_With_Vec2) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec2_F32_With_Vec2) {
auto* var = Decl(Var("x", ty.vec2<f32>(), vec2<f32>(1_f, 2_f)));
auto* cast = vec2<f32>("x");
WrapInFunction(var, cast);
@@ -421,7 +421,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec2_F16_With_Vec2) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec2_F16_With_Vec2) {
Enable(ast::Extension::kF16);
auto* var = Decl(Var("x", ty.vec2<f16>(), vec2<f16>(1_h, 2_h)));
@@ -448,7 +448,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec2_F32_With_Vec2_Const) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec2_F32_With_Vec2_Const) {
auto* cast = vec2<f32>(vec2<f32>(1_f, 2_f));
WrapInFunction(cast);
@@ -466,7 +466,7 @@
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), R"()");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec2_F16_With_Vec2_Const) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec2_F16_With_Vec2_Const) {
Enable(ast::Extension::kF16);
auto* cast = vec2<f16>(vec2<f16>(1_h, 2_h));
@@ -486,7 +486,7 @@
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), R"()");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec3_With_F32) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec3_With_F32) {
auto* var = Decl(Var("x", ty.f32(), Expr(2_f)));
auto* cast = vec3<f32>("x", "x", "x");
WrapInFunction(var, cast);
@@ -512,7 +512,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec3_With_F16) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec3_With_F16) {
Enable(ast::Extension::kF16);
auto* var = Decl(Var("x", ty.f16(), Expr(2_h)));
@@ -540,7 +540,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec3_With_F32_Const) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec3_With_F32_Const) {
auto* cast = vec3<f32>(1_f, 2_f, 3_f);
WrapInFunction(cast);
@@ -559,7 +559,7 @@
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), R"()");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec3_With_F16_Const) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec3_With_F16_Const) {
Enable(ast::Extension::kF16);
auto* cast = vec3<f16>(1_h, 2_h, 3_h);
@@ -580,7 +580,7 @@
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), R"()");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec3_With_Bool) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec3_With_Bool) {
auto* var = Decl(Var("x", ty.bool_(), Expr(true)));
auto* cast = vec3<bool>("x", "x", "x");
WrapInFunction(var, cast);
@@ -606,7 +606,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec3_With_Bool_Const) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec3_With_Bool_Const) {
auto* cast = vec3<bool>(true, false, true);
WrapInFunction(cast);
@@ -624,7 +624,7 @@
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), R"()");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec3_With_F32_F32_F32) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec3_With_F32_F32_F32) {
auto* var = Decl(Var("x", ty.f32(), Expr(2_f)));
auto* cast = vec3<f32>("x", "x", "x");
WrapInFunction(var, cast);
@@ -650,7 +650,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec3_With_F16_F16_F16) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec3_With_F16_F16_F16) {
Enable(ast::Extension::kF16);
auto* var = Decl(Var("x", ty.f16(), Expr(2_h)));
@@ -678,7 +678,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec3_With_F32_F32_F32_Const) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec3_With_F32_F32_F32_Const) {
auto* cast = vec3<f32>(1_f, 2_f, 3_f);
WrapInFunction(cast);
@@ -697,7 +697,7 @@
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), R"()");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec3_With_F16_F16_F16_Const) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec3_With_F16_F16_F16_Const) {
Enable(ast::Extension::kF16);
auto* cast = vec3<f16>(1_h, 2_h, 3_h);
@@ -718,7 +718,7 @@
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), R"()");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec3_With_F32_Vec2) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec3_With_F32_Vec2) {
auto* var = Decl(Var("x", ty.vec2<f32>(), vec2<f32>(2_f, 3_f)));
auto* cast = vec3<f32>(1_f, "x");
WrapInFunction(var, cast);
@@ -748,7 +748,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec3_With_F16_Vec2) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec3_With_F16_Vec2) {
Enable(ast::Extension::kF16);
auto* var = Decl(Var("x", ty.vec2<f16>(), vec2<f16>(2_h, 3_h)));
@@ -780,7 +780,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec3_With_F32_Vec2_Const) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec3_With_F32_Vec2_Const) {
auto* cast = vec3<f32>(1_f, vec2<f32>(2_f, 3_f));
WrapInFunction(cast);
@@ -799,7 +799,7 @@
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), R"()");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec3_With_F16_Vec2_Const) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec3_With_F16_Vec2_Const) {
Enable(ast::Extension::kF16);
auto* cast = vec3<f16>(1_h, vec2<f16>(2_h, 3_h));
@@ -820,7 +820,7 @@
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), R"()");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec3_With_Vec2_F32) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec3_With_Vec2_F32) {
auto* var = Decl(Var("x", ty.vec2<f32>(), vec2<f32>(1_f, 2_f)));
auto* cast = vec3<f32>("x", 3_f);
WrapInFunction(var, cast);
@@ -850,7 +850,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec3_With_Vec2_F16) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec3_With_Vec2_F16) {
Enable(ast::Extension::kF16);
auto* var = Decl(Var("x", ty.vec2<f16>(), vec2<f16>(1_h, 2_h)));
@@ -882,7 +882,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec3_With_Vec2_F32_Const) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec3_With_Vec2_F32_Const) {
auto* cast = vec3<f32>(vec2<f32>(1_f, 2_f), 3_f);
WrapInFunction(cast);
@@ -901,7 +901,7 @@
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), R"()");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec3_With_Vec2_F16_Const) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec3_With_Vec2_F16_Const) {
Enable(ast::Extension::kF16);
auto* cast = vec3<f16>(vec2<f16>(1_h, 2_h), 3_h);
@@ -922,7 +922,7 @@
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), R"()");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec3_F32_With_Vec3) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec3_F32_With_Vec3) {
auto* var = Decl(Var("x", ty.vec3<f32>(), vec3<f32>(1_f, 2_f, 3_f)));
auto* cast = vec3<f32>("x");
WrapInFunction(var, cast);
@@ -948,7 +948,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec3_F16_With_Vec3) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec3_F16_With_Vec3) {
Enable(ast::Extension::kF16);
auto* var = Decl(Var("x", ty.vec3<f16>(), vec3<f16>(1_h, 2_h, 3_h)));
@@ -976,7 +976,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec3_F32_With_Vec3_Const) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec3_F32_With_Vec3_Const) {
auto* cast = vec3<f32>(vec3<f32>(1_f, 2_f, 3_f));
WrapInFunction(cast);
@@ -995,7 +995,7 @@
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), R"()");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec3_F16_With_Vec3_Const) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec3_F16_With_Vec3_Const) {
Enable(ast::Extension::kF16);
auto* cast = vec3<f16>(vec3<f16>(1_h, 2_h, 3_h));
@@ -1016,7 +1016,7 @@
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), R"()");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec4_With_Bool) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec4_With_Bool) {
auto* var = Decl(Var("x", ty.bool_(), Expr(true)));
auto* cast = vec4<bool>("x");
WrapInFunction(var, cast);
@@ -1040,7 +1040,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec4_With_Bool_Const) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec4_With_Bool_Const) {
auto* cast = vec4<bool>(true);
WrapInFunction(cast);
@@ -1057,7 +1057,7 @@
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), R"()");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec4_With_F32) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec4_With_F32) {
auto* var = Decl(Var("x", ty.f32(), Expr(2_f)));
auto* cast = vec4<f32>("x");
WrapInFunction(var, cast);
@@ -1081,7 +1081,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec4_With_F16) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec4_With_F16) {
Enable(ast::Extension::kF16);
auto* var = Decl(Var("x", ty.f16(), Expr(2_h)));
@@ -1107,7 +1107,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec4_With_F32_Const) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec4_With_F32_Const) {
auto* cast = vec4<f32>(2_f);
WrapInFunction(cast);
@@ -1124,7 +1124,7 @@
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), R"()");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec4_With_F16_Const) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec4_With_F16_Const) {
Enable(ast::Extension::kF16);
auto* cast = vec4<f16>(2_h);
@@ -1143,7 +1143,7 @@
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), R"()");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec4_With_F32_F32_F32_F32) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec4_With_F32_F32_F32_F32) {
auto* var = Decl(Var("x", ty.f32(), Expr(2_f)));
auto* cast = vec4<f32>("x", "x", "x", "x");
WrapInFunction(var, cast);
@@ -1170,7 +1170,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec4_With_F16_F16_F16_F16) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec4_With_F16_F16_F16_F16) {
Enable(ast::Extension::kF16);
auto* var = Decl(Var("x", ty.f16(), Expr(2_h)));
@@ -1199,7 +1199,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec4_With_F32_F32_F32_F32_Const) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec4_With_F32_F32_F32_F32_Const) {
auto* cast = vec4<f32>(1_f, 2_f, 3_f, 4_f);
WrapInFunction(cast);
@@ -1219,7 +1219,7 @@
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), R"()");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec4_With_F16_F16_F16_F16_Const) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec4_With_F16_F16_F16_F16_Const) {
Enable(ast::Extension::kF16);
auto* cast = vec4<f16>(1_h, 2_h, 3_h, 4_h);
@@ -1241,7 +1241,7 @@
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), R"()");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec4_With_F32_F32_Vec2) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec4_With_F32_F32_Vec2) {
auto* var = Decl(Var("x", ty.vec2<f32>(), vec2<f32>(1_f, 2_f)));
auto* cast = vec4<f32>(1_f, 2_f, "x");
WrapInFunction(var, cast);
@@ -1270,7 +1270,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec4_With_F16_F16_Vec2) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec4_With_F16_F16_Vec2) {
Enable(ast::Extension::kF16);
auto* var = Decl(Var("x", ty.vec2<f16>(), vec2<f16>(1_h, 2_h)));
@@ -1301,7 +1301,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec4_With_F32_F32_Vec2_Const) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec4_With_F32_F32_Vec2_Const) {
auto* cast = vec4<f32>(1_f, 2_f, vec2<f32>(3_f, 4_f));
WrapInFunction(cast);
@@ -1321,7 +1321,7 @@
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), R"()");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec4_With_F16_F16_Vec2_Const) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec4_With_F16_F16_Vec2_Const) {
Enable(ast::Extension::kF16);
auto* cast = vec4<f16>(1_h, 2_h, vec2<f16>(3_h, 4_h));
@@ -1343,7 +1343,7 @@
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), R"()");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec4_With_F32_Vec2_F32) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec4_With_F32_Vec2_F32) {
auto* var = Decl(Var("x", ty.vec2<f32>(), vec2<f32>(2_f, 3_f)));
auto* cast = vec4<f32>(1_f, "x", 4_f);
WrapInFunction(var, cast);
@@ -1374,7 +1374,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec4_With_F16_Vec2_F16) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec4_With_F16_Vec2_F16) {
Enable(ast::Extension::kF16);
auto* var = Decl(Var("x", ty.vec2<f16>(), vec2<f16>(2_h, 3_h)));
@@ -1407,7 +1407,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec4_With_F32_Vec2_F32_Const) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec4_With_F32_Vec2_F32_Const) {
auto* cast = vec4<f32>(1_f, vec2<f32>(2_f, 3_f), 4_f);
WrapInFunction(cast);
@@ -1427,7 +1427,7 @@
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), R"()");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec4_With_F16_Vec2_F16_Const) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec4_With_F16_Vec2_F16_Const) {
Enable(ast::Extension::kF16);
auto* cast = vec4<f16>(1_h, vec2<f16>(2_h, 3_h), 4_h);
@@ -1449,7 +1449,7 @@
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), R"()");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec4_With_Vec2_F32_F32) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec4_With_Vec2_F32_F32) {
auto* var = Decl(Var("x", ty.vec2<f32>(), vec2<f32>(1_f, 2_f)));
auto* cast = vec4<f32>("x", 3_f, 4_f);
WrapInFunction(var, cast);
@@ -1480,7 +1480,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec4_With_Vec2_F16_F16) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec4_With_Vec2_F16_F16) {
Enable(ast::Extension::kF16);
auto* var = Decl(Var("x", ty.vec2<f16>(), vec2<f16>(1_h, 2_h)));
@@ -1513,7 +1513,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec4_With_Vec2_F32_F32_Const) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec4_With_Vec2_F32_F32_Const) {
auto* cast = vec4<f32>(vec2<f32>(1_f, 2_f), 3_f, 4_f);
WrapInFunction(cast);
@@ -1533,7 +1533,7 @@
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), R"()");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec4_With_Vec2_F16_F16_Const) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec4_With_Vec2_F16_F16_Const) {
Enable(ast::Extension::kF16);
auto* cast = vec4<f16>(vec2<f16>(1_h, 2_h), 3_h, 4_h);
@@ -1555,7 +1555,7 @@
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), R"()");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec4_F32_With_Vec2_Vec2) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec4_F32_With_Vec2_Vec2) {
auto* var = Decl(Var("x", ty.vec2<f32>(), vec2<f32>(1_f, 2_f)));
auto* cast = vec4<f32>("x", "x");
WrapInFunction(var, cast);
@@ -1587,7 +1587,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec4_F16_With_Vec2_Vec2) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec4_F16_With_Vec2_Vec2) {
Enable(ast::Extension::kF16);
auto* var = Decl(Var("x", ty.vec2<f16>(), vec2<f16>(1_h, 2_h)));
@@ -1621,7 +1621,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec4_F32_With_Vec2_Vec2_Const) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec4_F32_With_Vec2_Vec2_Const) {
auto* cast = vec4<f32>(vec2<f32>(1_f, 2_f), vec2<f32>(1_f, 2_f));
WrapInFunction(cast);
@@ -1639,7 +1639,7 @@
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), R"()");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec4_F16_With_Vec2_Vec2_Const) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec4_F16_With_Vec2_Vec2_Const) {
Enable(ast::Extension::kF16);
auto* cast = vec4<f16>(vec2<f16>(1_h, 2_h), vec2<f16>(1_h, 2_h));
@@ -1659,7 +1659,7 @@
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), R"()");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec4_With_F32_Vec3) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec4_With_F32_Vec3) {
auto* var = Decl(Var("x", ty.vec3<f32>(), vec3<f32>(2_f, 2_f, 2_f)));
auto* cast = vec4<f32>(2_f, "x");
WrapInFunction(var, cast);
@@ -1688,7 +1688,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec4_With_F16_Vec3) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec4_With_F16_Vec3) {
Enable(ast::Extension::kF16);
auto* var = Decl(Var("x", ty.vec3<f16>(), vec3<f16>(2_h, 2_h, 2_h)));
@@ -1719,7 +1719,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec4_With_F32_Vec3_Const) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec4_With_F32_Vec3_Const) {
auto* cast = vec4<f32>(2_f, vec3<f32>(2_f, 2_f, 2_f));
WrapInFunction(cast);
@@ -1736,7 +1736,7 @@
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), R"()");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec4_With_F16_Vec3_Const) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec4_With_F16_Vec3_Const) {
Enable(ast::Extension::kF16);
auto* cast = vec4<f16>(2_h, vec3<f16>(2_h, 2_h, 2_h));
@@ -1755,7 +1755,7 @@
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), R"()");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec4_With_Vec3_F32) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec4_With_Vec3_F32) {
auto* var = Decl(Var("x", ty.vec3<f32>(), vec3<f32>(2_f, 2_f, 2_f)));
auto* cast = vec4<f32>("x", 2_f);
WrapInFunction(var, cast);
@@ -1784,7 +1784,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec4_With_Vec3_F16) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec4_With_Vec3_F16) {
Enable(ast::Extension::kF16);
auto* var = Decl(Var("x", ty.vec3<f16>(), vec3<f16>(2_h, 2_h, 2_h)));
@@ -1815,7 +1815,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec4_With_Vec3_F32_Const) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec4_With_Vec3_F32_Const) {
auto* cast = vec4<f32>(vec3<f32>(2_f, 2_f, 2_f), 2_f);
WrapInFunction(cast);
@@ -1832,7 +1832,7 @@
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), R"()");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec4_With_Vec3_F16_Const) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec4_With_Vec3_F16_Const) {
Enable(ast::Extension::kF16);
auto* cast = vec4<f16>(vec3<f16>(2_h, 2_h, 2_h), 2_h);
@@ -1851,7 +1851,7 @@
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), R"()");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec4_F32_With_Vec4) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec4_F32_With_Vec4) {
auto* value = vec4<f32>(2_f, 2_f, 2_f, 2_f);
auto* cast = vec4<f32>(value);
WrapInFunction(cast);
@@ -1869,7 +1869,7 @@
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), R"()");
}
-TEST_F(SpvBuilderConstructorTest, Type_Vec4_F16_With_Vec4) {
+TEST_F(SpvBuilderInitializerTest, Type_Vec4_F16_With_Vec4) {
Enable(ast::Extension::kF16);
auto* value = vec4<f16>(2_h, 2_h, 2_h, 2_h);
@@ -1889,7 +1889,7 @@
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()), R"()");
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalConst_F32_With_F32) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalConst_F32_With_F32) {
auto* ctor = Construct<f32>(2_f);
GlobalConst("g", ty.f32(), ctor);
WrapInFunction(Decl(Var("l", Expr("g"))));
@@ -1910,7 +1910,7 @@
Validate(b);
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalConst_F16_With_F16) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalConst_F16_With_F16) {
Enable(ast::Extension::kF16);
auto* ctor = Construct<f16>(2_h);
@@ -1933,7 +1933,7 @@
Validate(b);
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalVar_F32_With_F32) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalVar_F32_With_F32) {
auto* ctor = Construct<f32>(2_f);
GlobalVar("g", ty.f32(), ast::AddressSpace::kPrivate, ctor);
@@ -1950,7 +1950,7 @@
Validate(b);
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalVar_F16_With_F16) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalVar_F16_With_F16) {
Enable(ast::Extension::kF16);
auto* ctor = Construct<f16>(2_h);
@@ -1969,7 +1969,7 @@
Validate(b);
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalConst_U32_With_F32) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalConst_U32_With_F32) {
auto* ctor = Construct<u32>(1.5_f);
GlobalConst("g", ty.u32(), ctor);
WrapInFunction(Decl(Var("l", Expr("g"))));
@@ -1990,7 +1990,7 @@
Validate(b);
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalConst_U32_With_F16) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalConst_U32_With_F16) {
Enable(ast::Extension::kF16);
auto* ctor = Construct<u32>(1.5_h);
@@ -2013,7 +2013,7 @@
Validate(b);
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalVar_U32_With_F32) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalVar_U32_With_F32) {
auto* ctor = Construct<u32>(1.5_f);
GlobalVar("g", ty.u32(), ast::AddressSpace::kPrivate, ctor);
@@ -2030,7 +2030,7 @@
Validate(b);
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalVar_U32_With_F16) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalVar_U32_With_F16) {
Enable(ast::Extension::kF16);
auto* ctor = Construct<u32>(1.5_h);
@@ -2049,7 +2049,7 @@
Validate(b);
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalConst_Vec2_With_F32) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalConst_Vec2_With_F32) {
auto* cast = vec2<f32>(2_f);
GlobalConst("g", ty.vec2<f32>(), cast);
WrapInFunction(Decl(Var("l", Expr("g"))));
@@ -2072,7 +2072,7 @@
Validate(b);
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalConst_Vec2_With_F16) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalConst_Vec2_With_F16) {
Enable(ast::Extension::kF16);
auto* cast = vec2<f16>(2_h);
@@ -2097,14 +2097,14 @@
Validate(b);
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalVar_Vec2_With_F32) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalVar_Vec2_With_F32) {
auto* cast = vec2<f32>(2_f);
auto* g = GlobalVar("g", ty.vec2<f32>(), ast::AddressSpace::kPrivate, cast);
spirv::Builder& b = Build();
b.push_function(Function{});
- EXPECT_EQ(b.GenerateConstructorExpression(g, cast), 4u);
+ EXPECT_EQ(b.GenerateInitializerExpression(g, cast), 4u);
EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeFloat 32
%1 = OpTypeVector %2 2
@@ -2113,7 +2113,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalVar_Vec2_With_F16) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalVar_Vec2_With_F16) {
Enable(ast::Extension::kF16);
auto* cast = vec2<f16>(2_h);
@@ -2122,7 +2122,7 @@
spirv::Builder& b = Build();
b.push_function(Function{});
- EXPECT_EQ(b.GenerateConstructorExpression(g, cast), 4u);
+ EXPECT_EQ(b.GenerateInitializerExpression(g, cast), 4u);
EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeFloat 16
%1 = OpTypeVector %2 2
@@ -2131,7 +2131,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalConst_Vec2_F32_With_Vec2) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalConst_Vec2_F32_With_Vec2) {
auto* cast = vec2<f32>(vec2<f32>(2_f, 2_f));
GlobalConst("g", ty.vec2<f32>(), cast);
WrapInFunction(Decl(Var("l", Expr("g"))));
@@ -2154,7 +2154,7 @@
Validate(b);
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalConst_Vec2_F16_With_Vec2) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalConst_Vec2_F16_With_Vec2) {
Enable(ast::Extension::kF16);
auto* cast = vec2<f16>(vec2<f16>(2_h, 2_h));
@@ -2179,7 +2179,7 @@
Validate(b);
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalVar_Vec2_F32_With_Vec2) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalVar_Vec2_F32_With_Vec2) {
auto* cast = vec2<f32>(vec2<f32>(2_f, 2_f));
GlobalVar("a", ty.vec2<f32>(), ast::AddressSpace::kPrivate, cast);
@@ -2199,7 +2199,7 @@
Validate(b);
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalVar_Vec2_F16_With_Vec2) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalVar_Vec2_F16_With_Vec2) {
Enable(ast::Extension::kF16);
auto* cast = vec2<f16>(vec2<f16>(2_h, 2_h));
@@ -2221,7 +2221,7 @@
Validate(b);
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalConst_Vec3_F32_With_Vec3) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalConst_Vec3_F32_With_Vec3) {
auto* cast = vec3<f32>(vec3<f32>(2_f, 2_f, 2_f));
GlobalConst("g", ty.vec3<f32>(), cast);
WrapInFunction(Decl(Var("l", Expr("g"))));
@@ -2244,7 +2244,7 @@
Validate(b);
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalConst_Vec3_F16_With_Vec3) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalConst_Vec3_F16_With_Vec3) {
Enable(ast::Extension::kF16);
auto* cast = vec3<f16>(vec3<f16>(2_h, 2_h, 2_h));
@@ -2269,7 +2269,7 @@
Validate(b);
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalVar_Vec3_F32_With_Vec3) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalVar_Vec3_F32_With_Vec3) {
auto* cast = vec3<f32>(vec3<f32>(2_f, 2_f, 2_f));
GlobalVar("a", ty.vec3<f32>(), ast::AddressSpace::kPrivate, cast);
@@ -2289,7 +2289,7 @@
Validate(b);
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalVar_Vec3_F16_With_Vec3) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalVar_Vec3_F16_With_Vec3) {
Enable(ast::Extension::kF16);
auto* cast = vec3<f16>(vec3<f16>(2_h, 2_h, 2_h));
@@ -2311,7 +2311,7 @@
Validate(b);
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalConst_Vec4_F32_With_Vec4) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalConst_Vec4_F32_With_Vec4) {
auto* cast = vec4<f32>(vec4<f32>(2_f, 2_f, 2_f, 2_f));
GlobalConst("g", ty.vec4<f32>(), cast);
WrapInFunction(Decl(Var("l", Expr("g"))));
@@ -2334,7 +2334,7 @@
Validate(b);
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalConst_Vec4_F16_With_Vec4) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalConst_Vec4_F16_With_Vec4) {
Enable(ast::Extension::kF16);
auto* cast = vec4<f16>(vec4<f16>(2_h, 2_h, 2_h, 2_h));
@@ -2359,7 +2359,7 @@
Validate(b);
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalVar_Vec4_F32_With_Vec4) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalVar_Vec4_F32_With_Vec4) {
auto* cast = vec4<f32>(vec4<f32>(2_f, 2_f, 2_f, 2_f));
GlobalVar("a", ty.vec4<f32>(), ast::AddressSpace::kPrivate, cast);
@@ -2379,7 +2379,7 @@
Validate(b);
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalVar_Vec4_F16_With_Vec4) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalVar_Vec4_F16_With_Vec4) {
Enable(ast::Extension::kF16);
auto* cast = vec4<f16>(vec4<f16>(2_h, 2_h, 2_h, 2_h));
@@ -2401,7 +2401,7 @@
Validate(b);
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalConst_Vec3_With_F32) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalConst_Vec3_With_F32) {
auto* cast = vec3<f32>(2_f);
GlobalConst("g", ty.vec3<f32>(), cast);
WrapInFunction(Decl(Var("l", Expr("g"))));
@@ -2424,7 +2424,7 @@
Validate(b);
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalConst_Vec3_With_F16) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalConst_Vec3_With_F16) {
Enable(ast::Extension::kF16);
auto* cast = vec3<f16>(2_h);
@@ -2449,14 +2449,14 @@
Validate(b);
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalVar_Vec3_With_F32) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalVar_Vec3_With_F32) {
auto* cast = vec3<f32>(2_f);
auto* g = GlobalVar("g", ty.vec3<f32>(), ast::AddressSpace::kPrivate, cast);
spirv::Builder& b = Build();
b.push_function(Function{});
- EXPECT_EQ(b.GenerateConstructorExpression(g, cast), 4u);
+ EXPECT_EQ(b.GenerateInitializerExpression(g, cast), 4u);
EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeFloat 32
%1 = OpTypeVector %2 3
@@ -2465,7 +2465,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalVar_Vec3_With_F16) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalVar_Vec3_With_F16) {
Enable(ast::Extension::kF16);
auto* cast = vec3<f16>(2_h);
@@ -2474,7 +2474,7 @@
spirv::Builder& b = Build();
b.push_function(Function{});
- EXPECT_EQ(b.GenerateConstructorExpression(g, cast), 4u);
+ EXPECT_EQ(b.GenerateInitializerExpression(g, cast), 4u);
EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeFloat 16
%1 = OpTypeVector %2 3
@@ -2483,7 +2483,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalConst_Vec3_With_F32_Vec2) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalConst_Vec3_With_F32_Vec2) {
auto* cast = vec3<f32>(2_f, vec2<f32>(2_f, 2_f));
GlobalConst("g", ty.vec3<f32>(), cast);
WrapInFunction(Decl(Var("l", Expr("g"))));
@@ -2506,7 +2506,7 @@
Validate(b);
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalConst_Vec3_With_F16_Vec2) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalConst_Vec3_With_F16_Vec2) {
Enable(ast::Extension::kF16);
auto* cast = vec3<f16>(2_h, vec2<f16>(2_h, 2_h));
@@ -2531,14 +2531,14 @@
Validate(b);
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalVar_Vec3_With_F32_Vec2) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalVar_Vec3_With_F32_Vec2) {
auto* cast = vec3<f32>(2_f, vec2<f32>(2_f, 2_f));
auto* g = GlobalVar("g", ty.vec3<f32>(), ast::AddressSpace::kPrivate, cast);
spirv::Builder& b = Build();
b.push_function(Function{});
- EXPECT_EQ(b.GenerateConstructorExpression(g, cast), 4u);
+ EXPECT_EQ(b.GenerateInitializerExpression(g, cast), 4u);
EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeFloat 32
%1 = OpTypeVector %2 3
@@ -2547,7 +2547,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalVar_Vec3_With_F16_Vec2) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalVar_Vec3_With_F16_Vec2) {
Enable(ast::Extension::kF16);
auto* cast = vec3<f16>(2_h, vec2<f16>(2_h, 2_h));
@@ -2556,7 +2556,7 @@
spirv::Builder& b = Build();
b.push_function(Function{});
- EXPECT_EQ(b.GenerateConstructorExpression(g, cast), 4u);
+ EXPECT_EQ(b.GenerateInitializerExpression(g, cast), 4u);
EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeFloat 16
%1 = OpTypeVector %2 3
@@ -2565,7 +2565,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalConst_Vec3_With_Vec2_F32) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalConst_Vec3_With_Vec2_F32) {
auto* cast = vec3<f32>(vec2<f32>(2_f, 2_f), 2_f);
GlobalConst("g", ty.vec3<f32>(), cast);
WrapInFunction(Decl(Var("l", Expr("g"))));
@@ -2588,7 +2588,7 @@
Validate(b);
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalConst_Vec3_With_Vec2_F16) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalConst_Vec3_With_Vec2_F16) {
Enable(ast::Extension::kF16);
auto* cast = vec3<f16>(vec2<f16>(2_h, 2_h), 2_h);
@@ -2613,14 +2613,14 @@
Validate(b);
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalVar_Vec3_With_Vec2_F32) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalVar_Vec3_With_Vec2_F32) {
auto* cast = vec3<f32>(vec2<f32>(2_f, 2_f), 2_f);
auto* g = GlobalVar("g", ty.vec3<f32>(), ast::AddressSpace::kPrivate, cast);
spirv::Builder& b = Build();
b.push_function(Function{});
- EXPECT_EQ(b.GenerateConstructorExpression(g, cast), 4u);
+ EXPECT_EQ(b.GenerateInitializerExpression(g, cast), 4u);
EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeFloat 32
%1 = OpTypeVector %2 3
@@ -2629,7 +2629,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalVar_Vec3_With_Vec2_F16) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalVar_Vec3_With_Vec2_F16) {
Enable(ast::Extension::kF16);
auto* cast = vec3<f16>(vec2<f16>(2_h, 2_h), 2_h);
@@ -2638,7 +2638,7 @@
spirv::Builder& b = Build();
b.push_function(Function{});
- EXPECT_EQ(b.GenerateConstructorExpression(g, cast), 4u);
+ EXPECT_EQ(b.GenerateInitializerExpression(g, cast), 4u);
EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeFloat 16
%1 = OpTypeVector %2 3
@@ -2647,7 +2647,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalConst_Vec4_With_F32) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalConst_Vec4_With_F32) {
auto* cast = vec4<f32>(2_f);
GlobalConst("g", ty.vec4<f32>(), cast);
WrapInFunction(Decl(Var("l", Expr("g"))));
@@ -2670,7 +2670,7 @@
Validate(b);
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalConst_Vec4_With_F16) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalConst_Vec4_With_F16) {
Enable(ast::Extension::kF16);
auto* cast = vec4<f16>(2_h);
@@ -2695,14 +2695,14 @@
Validate(b);
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalVar_Vec4_With_F32) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalVar_Vec4_With_F32) {
auto* cast = vec4<f32>(2_f);
auto* g = GlobalVar("g", ty.vec4<f32>(), ast::AddressSpace::kPrivate, cast);
spirv::Builder& b = Build();
b.push_function(Function{});
- EXPECT_EQ(b.GenerateConstructorExpression(g, cast), 4u);
+ EXPECT_EQ(b.GenerateInitializerExpression(g, cast), 4u);
EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeFloat 32
%1 = OpTypeVector %2 4
@@ -2711,7 +2711,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalVar_Vec4_With_F16) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalVar_Vec4_With_F16) {
Enable(ast::Extension::kF16);
auto* cast = vec4<f16>(2_h);
@@ -2720,7 +2720,7 @@
spirv::Builder& b = Build();
b.push_function(Function{});
- EXPECT_EQ(b.GenerateConstructorExpression(g, cast), 4u);
+ EXPECT_EQ(b.GenerateInitializerExpression(g, cast), 4u);
EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeFloat 16
%1 = OpTypeVector %2 4
@@ -2729,7 +2729,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalConst_Vec4_With_F32_F32_Vec2) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalConst_Vec4_With_F32_F32_Vec2) {
auto* cast = vec4<f32>(2_f, 2_f, vec2<f32>(2_f, 2_f));
GlobalConst("g", ty.vec4<f32>(), cast);
WrapInFunction(Decl(Var("l", Expr("g"))));
@@ -2752,7 +2752,7 @@
Validate(b);
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalConst_Vec4_With_F16_F16_Vec2) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalConst_Vec4_With_F16_F16_Vec2) {
Enable(ast::Extension::kF16);
auto* cast = vec4<f16>(2_h, 2_h, vec2<f16>(2_h, 2_h));
@@ -2777,14 +2777,14 @@
Validate(b);
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalVar_Vec4_With_F32_F32_Vec2) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalVar_Vec4_With_F32_F32_Vec2) {
auto* cast = vec4<f32>(2_f, 2_f, vec2<f32>(2_f, 2_f));
auto* g = GlobalVar("g", ty.vec4<f32>(), ast::AddressSpace::kPrivate, cast);
spirv::Builder& b = Build();
b.push_function(Function{});
- EXPECT_EQ(b.GenerateConstructorExpression(g, cast), 4u);
+ EXPECT_EQ(b.GenerateInitializerExpression(g, cast), 4u);
EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeFloat 32
%1 = OpTypeVector %2 4
@@ -2793,7 +2793,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalVar_Vec4_With_F16_F16_Vec2) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalVar_Vec4_With_F16_F16_Vec2) {
Enable(ast::Extension::kF16);
auto* cast = vec4<f16>(2_h, 2_h, vec2<f16>(2_h, 2_h));
@@ -2802,7 +2802,7 @@
spirv::Builder& b = Build();
b.push_function(Function{});
- EXPECT_EQ(b.GenerateConstructorExpression(g, cast), 4u);
+ EXPECT_EQ(b.GenerateInitializerExpression(g, cast), 4u);
EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeFloat 16
%1 = OpTypeVector %2 4
@@ -2811,7 +2811,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalConst_Vec4_With_F32_Vec2_F32) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalConst_Vec4_With_F32_Vec2_F32) {
auto* cast = vec4<f32>(2_f, vec2<f32>(2_f, 2_f), 2_f);
GlobalConst("g", ty.vec4<f32>(), cast);
WrapInFunction(Decl(Var("l", Expr("g"))));
@@ -2834,7 +2834,7 @@
Validate(b);
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalConst_Vec4_With_F16_Vec2_F16) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalConst_Vec4_With_F16_Vec2_F16) {
Enable(ast::Extension::kF16);
auto* cast = vec4<f16>(2_h, vec2<f16>(2_h, 2_h), 2_h);
@@ -2859,14 +2859,14 @@
Validate(b);
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalVar_Vec4_With_F32_Vec2_F32) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalVar_Vec4_With_F32_Vec2_F32) {
auto* cast = vec4<f32>(2_f, vec2<f32>(2_f, 2_f), 2_f);
auto* g = GlobalVar("g", ty.vec4<f32>(), ast::AddressSpace::kPrivate, cast);
spirv::Builder& b = Build();
b.push_function(Function{});
- EXPECT_EQ(b.GenerateConstructorExpression(g, cast), 4u);
+ EXPECT_EQ(b.GenerateInitializerExpression(g, cast), 4u);
EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeFloat 32
%1 = OpTypeVector %2 4
@@ -2875,7 +2875,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalVar_Vec4_With_F16_Vec2_F16) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalVar_Vec4_With_F16_Vec2_F16) {
Enable(ast::Extension::kF16);
auto* cast = vec4<f16>(2_h, vec2<f16>(2_h, 2_h), 2_h);
@@ -2884,7 +2884,7 @@
spirv::Builder& b = Build();
b.push_function(Function{});
- EXPECT_EQ(b.GenerateConstructorExpression(g, cast), 4u);
+ EXPECT_EQ(b.GenerateInitializerExpression(g, cast), 4u);
EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeFloat 16
%1 = OpTypeVector %2 4
@@ -2893,7 +2893,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalConst_Vec4_With_Vec2_F32_F32) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalConst_Vec4_With_Vec2_F32_F32) {
auto* cast = vec4<f32>(vec2<f32>(2_f, 2_f), 2_f, 2_f);
GlobalConst("g", ty.vec4<f32>(), cast);
WrapInFunction(Decl(Var("l", Expr("g"))));
@@ -2916,7 +2916,7 @@
Validate(b);
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalConst_Vec4_With_Vec2_F16_F16) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalConst_Vec4_With_Vec2_F16_F16) {
Enable(ast::Extension::kF16);
auto* cast = vec4<f16>(vec2<f16>(2_h, 2_h), 2_h, 2_h);
@@ -2941,14 +2941,14 @@
Validate(b);
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalVar_Vec4_With_Vec2_F32_F32) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalVar_Vec4_With_Vec2_F32_F32) {
auto* cast = vec4<f32>(vec2<f32>(2_f, 2_f), 2_f, 2_f);
auto* g = GlobalVar("g", ty.vec4<f32>(), ast::AddressSpace::kPrivate, cast);
spirv::Builder& b = Build();
b.push_function(Function{});
- EXPECT_EQ(b.GenerateConstructorExpression(g, cast), 4u);
+ EXPECT_EQ(b.GenerateInitializerExpression(g, cast), 4u);
EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeFloat 32
%1 = OpTypeVector %2 4
@@ -2957,7 +2957,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalVar_Vec4_With_Vec2_F16_F16) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalVar_Vec4_With_Vec2_F16_F16) {
Enable(ast::Extension::kF16);
auto* cast = vec4<f16>(vec2<f16>(2_h, 2_h), 2_h, 2_h);
@@ -2966,7 +2966,7 @@
spirv::Builder& b = Build();
b.push_function(Function{});
- EXPECT_EQ(b.GenerateConstructorExpression(g, cast), 4u);
+ EXPECT_EQ(b.GenerateInitializerExpression(g, cast), 4u);
EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeFloat 16
%1 = OpTypeVector %2 4
@@ -2975,7 +2975,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalConst_Vec4_F32_With_Vec2_Vec2) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalConst_Vec4_F32_With_Vec2_Vec2) {
auto* cast = vec4<f32>(vec2<f32>(2_f, 2_f), vec2<f32>(2_f, 2_f));
GlobalConst("g", ty.vec4<f32>(), cast);
WrapInFunction(Decl(Var("l", Expr("g"))));
@@ -2998,7 +2998,7 @@
Validate(b);
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalConst_Vec4_F16_With_Vec2_Vec2) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalConst_Vec4_F16_With_Vec2_Vec2) {
Enable(ast::Extension::kF16);
auto* cast = vec4<f16>(vec2<f16>(2_h, 2_h), vec2<f16>(2_h, 2_h));
@@ -3023,14 +3023,14 @@
Validate(b);
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalVar_Vec4_F32_With_Vec2_Vec2) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalVar_Vec4_F32_With_Vec2_Vec2) {
auto* cast = vec4<f32>(vec2<f32>(2_f, 2_f), vec2<f32>(2_f, 2_f));
auto* g = GlobalVar("g", ty.vec4<f32>(), ast::AddressSpace::kPrivate, cast);
spirv::Builder& b = Build();
b.push_function(Function{});
- EXPECT_EQ(b.GenerateConstructorExpression(g, cast), 4u);
+ EXPECT_EQ(b.GenerateInitializerExpression(g, cast), 4u);
EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeFloat 32
%1 = OpTypeVector %2 4
@@ -3039,7 +3039,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalVar_Vec4_F16_With_Vec2_Vec2) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalVar_Vec4_F16_With_Vec2_Vec2) {
Enable(ast::Extension::kF16);
auto* cast = vec4<f16>(vec2<f16>(2_h, 2_h), vec2<f16>(2_h, 2_h));
@@ -3048,7 +3048,7 @@
spirv::Builder& b = Build();
b.push_function(Function{});
- EXPECT_EQ(b.GenerateConstructorExpression(g, cast), 4u);
+ EXPECT_EQ(b.GenerateInitializerExpression(g, cast), 4u);
EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeFloat 16
%1 = OpTypeVector %2 4
@@ -3057,7 +3057,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalConst_Vec4_With_F32_Vec3) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalConst_Vec4_With_F32_Vec3) {
auto* cast = vec4<f32>(2_f, vec3<f32>(2_f, 2_f, 2_f));
GlobalConst("g", ty.vec4<f32>(), cast);
WrapInFunction(Decl(Var("l", Expr("g"))));
@@ -3080,14 +3080,14 @@
Validate(b);
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalVar_Vec4_With_F32_Vec3) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalVar_Vec4_With_F32_Vec3) {
auto* cast = vec4<f32>(2_f, vec3<f32>(2_f, 2_f, 2_f));
auto* g = GlobalVar("g", ty.vec4<f32>(), ast::AddressSpace::kPrivate, cast);
spirv::Builder& b = Build();
b.push_function(Function{});
- EXPECT_EQ(b.GenerateConstructorExpression(g, cast), 4u);
+ EXPECT_EQ(b.GenerateInitializerExpression(g, cast), 4u);
EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeFloat 32
%1 = OpTypeVector %2 4
@@ -3096,7 +3096,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalVar_Vec4_With_F16_Vec3) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalVar_Vec4_With_F16_Vec3) {
Enable(ast::Extension::kF16);
auto* cast = vec4<f16>(2_h, vec3<f16>(2_h, 2_h, 2_h));
@@ -3105,7 +3105,7 @@
spirv::Builder& b = Build();
b.push_function(Function{});
- EXPECT_EQ(b.GenerateConstructorExpression(g, cast), 4u);
+ EXPECT_EQ(b.GenerateInitializerExpression(g, cast), 4u);
EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeFloat 16
%1 = OpTypeVector %2 4
@@ -3114,7 +3114,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalConst_Vec4_With_Vec3_F32) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalConst_Vec4_With_Vec3_F32) {
auto* cast = vec4<f32>(vec3<f32>(2_f, 2_f, 2_f), 2_f);
GlobalConst("g", ty.vec4<f32>(), cast);
WrapInFunction(Decl(Var("l", Expr("g"))));
@@ -3137,7 +3137,7 @@
Validate(b);
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalConst_Vec4_With_Vec3_F16) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalConst_Vec4_With_Vec3_F16) {
Enable(ast::Extension::kF16);
auto* cast = vec4<f16>(vec3<f16>(2_h, 2_h, 2_h), 2_h);
@@ -3162,14 +3162,14 @@
Validate(b);
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalVar_Vec4_With_Vec3_F32) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalVar_Vec4_With_Vec3_F32) {
auto* cast = vec4<f32>(vec3<f32>(2_f, 2_f, 2_f), 2_f);
auto* g = GlobalVar("g", ty.vec4<f32>(), ast::AddressSpace::kPrivate, cast);
spirv::Builder& b = Build();
b.push_function(Function{});
- EXPECT_EQ(b.GenerateConstructorExpression(g, cast), 4u);
+ EXPECT_EQ(b.GenerateInitializerExpression(g, cast), 4u);
EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeFloat 32
%1 = OpTypeVector %2 4
@@ -3178,7 +3178,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_GlobalVar_Vec4_With_Vec3_F16) {
+TEST_F(SpvBuilderInitializerTest, Type_GlobalVar_Vec4_With_Vec3_F16) {
Enable(ast::Extension::kF16);
auto* cast = vec4<f16>(vec3<f16>(2_h, 2_h, 2_h), 2_h);
@@ -3187,7 +3187,7 @@
spirv::Builder& b = Build();
b.push_function(Function{});
- EXPECT_EQ(b.GenerateConstructorExpression(g, cast), 4u);
+ EXPECT_EQ(b.GenerateInitializerExpression(g, cast), 4u);
EXPECT_EQ(DumpInstructions(b.types()), R"(%2 = OpTypeFloat 16
%1 = OpTypeVector %2 4
@@ -3196,7 +3196,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Mat2x2_F32_With_Vec2_Vec2) {
+TEST_F(SpvBuilderInitializerTest, Type_Mat2x2_F32_With_Vec2_Vec2) {
auto* cast = mat2x2<f32>(vec2<f32>(2_f, 2_f), vec2<f32>(2_f, 2_f));
WrapInFunction(cast);
@@ -3214,7 +3214,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Mat2x2_F16_With_Vec2_Vec2) {
+TEST_F(SpvBuilderInitializerTest, Type_Mat2x2_F16_With_Vec2_Vec2) {
Enable(ast::Extension::kF16);
auto* cast = mat2x2<f16>(vec2<f16>(2_h, 2_h), vec2<f16>(2_h, 2_h));
@@ -3234,7 +3234,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Mat3x2_F32_With_Vec2_Vec2_Vec2) {
+TEST_F(SpvBuilderInitializerTest, Type_Mat3x2_F32_With_Vec2_Vec2_Vec2) {
auto* cast = mat3x2<f32>(vec2<f32>(2_f, 2_f), vec2<f32>(2_f, 2_f), vec2<f32>(2_f, 2_f));
WrapInFunction(cast);
@@ -3252,7 +3252,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Mat3x2_F16_With_Vec2_Vec2_Vec2) {
+TEST_F(SpvBuilderInitializerTest, Type_Mat3x2_F16_With_Vec2_Vec2_Vec2) {
Enable(ast::Extension::kF16);
auto* cast = mat3x2<f16>(vec2<f16>(2_h, 2_h), vec2<f16>(2_h, 2_h), vec2<f16>(2_h, 2_h));
@@ -3272,7 +3272,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Mat4x2_F32_With_Vec2_Vec2_Vec2_Vec2) {
+TEST_F(SpvBuilderInitializerTest, Type_Mat4x2_F32_With_Vec2_Vec2_Vec2_Vec2) {
auto* cast = mat4x2<f32>(vec2<f32>(2_f, 2_f), vec2<f32>(2_f, 2_f), vec2<f32>(2_f, 2_f),
vec2<f32>(2_f, 2_f));
WrapInFunction(cast);
@@ -3291,7 +3291,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Mat4x2_F16_With_Vec2_Vec2_Vec2_Vec2) {
+TEST_F(SpvBuilderInitializerTest, Type_Mat4x2_F16_With_Vec2_Vec2_Vec2_Vec2) {
Enable(ast::Extension::kF16);
auto* cast = mat4x2<f16>(vec2<f16>(2_h, 2_h), vec2<f16>(2_h, 2_h), vec2<f16>(2_h, 2_h),
@@ -3312,7 +3312,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Mat2x3_F32_With_Vec3_Vec3) {
+TEST_F(SpvBuilderInitializerTest, Type_Mat2x3_F32_With_Vec3_Vec3) {
auto* cast = mat2x3<f32>(vec3<f32>(2_f, 2_f, 2_f), vec3<f32>(2_f, 2_f, 2_f));
WrapInFunction(cast);
@@ -3330,7 +3330,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Mat2x3_F16_With_Vec3_Vec3) {
+TEST_F(SpvBuilderInitializerTest, Type_Mat2x3_F16_With_Vec3_Vec3) {
Enable(ast::Extension::kF16);
auto* cast = mat2x3<f16>(vec3<f16>(2_h, 2_h, 2_h), vec3<f16>(2_h, 2_h, 2_h));
@@ -3350,7 +3350,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Mat3x3_F32_With_Vec3_Vec3_Vec3) {
+TEST_F(SpvBuilderInitializerTest, Type_Mat3x3_F32_With_Vec3_Vec3_Vec3) {
auto* cast =
mat3x3<f32>(vec3<f32>(2_f, 2_f, 2_f), vec3<f32>(2_f, 2_f, 2_f), vec3<f32>(2_f, 2_f, 2_f));
WrapInFunction(cast);
@@ -3369,7 +3369,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Mat3x3_F16_With_Vec3_Vec3_Vec3) {
+TEST_F(SpvBuilderInitializerTest, Type_Mat3x3_F16_With_Vec3_Vec3_Vec3) {
Enable(ast::Extension::kF16);
auto* cast =
@@ -3390,7 +3390,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Mat4x3_F32_With_Vec3_Vec3_Vec3_Vec3) {
+TEST_F(SpvBuilderInitializerTest, Type_Mat4x3_F32_With_Vec3_Vec3_Vec3_Vec3) {
auto* cast = mat4x3<f32>(vec3<f32>(2_f, 2_f, 2_f), vec3<f32>(2_f, 2_f, 2_f),
vec3<f32>(2_f, 2_f, 2_f), vec3<f32>(2_f, 2_f, 2_f));
WrapInFunction(cast);
@@ -3409,7 +3409,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Mat4x3_F16_With_Vec3_Vec3_Vec3_Vec3) {
+TEST_F(SpvBuilderInitializerTest, Type_Mat4x3_F16_With_Vec3_Vec3_Vec3_Vec3) {
Enable(ast::Extension::kF16);
auto* cast = mat4x3<f16>(vec3<f16>(2_h, 2_h, 2_h), vec3<f16>(2_h, 2_h, 2_h),
@@ -3430,7 +3430,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Mat2x4_F32_With_Vec4_Vec4) {
+TEST_F(SpvBuilderInitializerTest, Type_Mat2x4_F32_With_Vec4_Vec4) {
auto* cast = mat2x4<f32>(vec4<f32>(2_f, 2_f, 2_f, 2_f), vec4<f32>(2_f, 2_f, 2_f, 2_f));
WrapInFunction(cast);
@@ -3448,7 +3448,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Mat2x4_F16_With_Vec4_Vec4) {
+TEST_F(SpvBuilderInitializerTest, Type_Mat2x4_F16_With_Vec4_Vec4) {
Enable(ast::Extension::kF16);
auto* cast = mat2x4<f16>(vec4<f16>(2_h, 2_h, 2_h, 2_h), vec4<f16>(2_h, 2_h, 2_h, 2_h));
@@ -3468,7 +3468,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Mat3x4_F32_With_Vec4_Vec4_Vec4) {
+TEST_F(SpvBuilderInitializerTest, Type_Mat3x4_F32_With_Vec4_Vec4_Vec4) {
auto* cast = mat3x4<f32>(vec4<f32>(2_f, 2_f, 2_f, 2_f), vec4<f32>(2_f, 2_f, 2_f, 2_f),
vec4<f32>(2_f, 2_f, 2_f, 2_f));
WrapInFunction(cast);
@@ -3487,7 +3487,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Mat3x4_F16_With_Vec4_Vec4_Vec4) {
+TEST_F(SpvBuilderInitializerTest, Type_Mat3x4_F16_With_Vec4_Vec4_Vec4) {
Enable(ast::Extension::kF16);
auto* cast = mat3x4<f16>(vec4<f16>(2_h, 2_h, 2_h, 2_h), vec4<f16>(2_h, 2_h, 2_h, 2_h),
@@ -3508,7 +3508,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Mat4x4_F32_With_Vec4_Vec4_Vec4_Vec4) {
+TEST_F(SpvBuilderInitializerTest, Type_Mat4x4_F32_With_Vec4_Vec4_Vec4_Vec4) {
auto* cast = mat4x4<f32>(vec4<f32>(2_f, 2_f, 2_f, 2_f), vec4<f32>(2_f, 2_f, 2_f, 2_f),
vec4<f32>(2_f, 2_f, 2_f, 2_f), vec4<f32>(2_f, 2_f, 2_f, 2_f));
WrapInFunction(cast);
@@ -3527,7 +3527,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Mat4x4_F16_With_Vec4_Vec4_Vec4_Vec4) {
+TEST_F(SpvBuilderInitializerTest, Type_Mat4x4_F16_With_Vec4_Vec4_Vec4_Vec4) {
Enable(ast::Extension::kF16);
auto* cast = mat4x4<f16>(vec4<f16>(2_h, 2_h, 2_h, 2_h), vec4<f16>(2_h, 2_h, 2_h, 2_h),
@@ -3548,7 +3548,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Array_5_F32) {
+TEST_F(SpvBuilderInitializerTest, Type_Array_5_F32) {
auto* cast = array<f32, 5>(2_f, 2_f, 2_f, 2_f, 2_f);
WrapInFunction(cast);
@@ -3566,7 +3566,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Array_5_F16) {
+TEST_F(SpvBuilderInitializerTest, Type_Array_5_F16) {
Enable(ast::Extension::kF16);
auto* cast = array<f16, 5>(2_h, 2_h, 2_h, 2_h, 2_h);
@@ -3586,7 +3586,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Array_2_Vec3_F32) {
+TEST_F(SpvBuilderInitializerTest, Type_Array_2_Vec3_F32) {
auto* first = vec3<f32>(1_f, 2_f, 3_f);
auto* second = vec3<f32>(1_f, 2_f, 3_f);
auto* t = Construct(ty.array(ty.vec3<f32>(), 2_u), first, second);
@@ -3608,7 +3608,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Array_2_Vec3_F16) {
+TEST_F(SpvBuilderInitializerTest, Type_Array_2_Vec3_F16) {
Enable(ast::Extension::kF16);
auto* first = vec3<f16>(1_h, 2_h, 3_h);
@@ -3632,7 +3632,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, CommonInitializer_TwoVectors) {
+TEST_F(SpvBuilderInitializerTest, CommonInitializer_TwoVectors) {
auto* v1 = vec3<f32>(2_f, 2_f, 2_f);
auto* v2 = vec3<f32>(2_f, 2_f, 2_f);
WrapInFunction(WrapInStatement(v1), WrapInStatement(v2));
@@ -3650,7 +3650,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, CommonInitializer_TwoArrays) {
+TEST_F(SpvBuilderInitializerTest, CommonInitializer_TwoArrays) {
auto* a1 = array<f32, 3>(2_f, 2_f, 2_f);
auto* a2 = array<f32, 3>(2_f, 2_f, 2_f);
WrapInFunction(WrapInStatement(a1), WrapInStatement(a2));
@@ -3670,7 +3670,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, CommonInitializer_Array_VecArray) {
+TEST_F(SpvBuilderInitializerTest, CommonInitializer_Array_VecArray) {
// Test that initializers of different types with the same values produce
// different OpConstantComposite instructions.
// crbug.com/tint/777
@@ -3695,7 +3695,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Struct) {
+TEST_F(SpvBuilderInitializerTest, Type_Struct) {
auto* s = Structure("my_struct", utils::Vector{
Member("a", ty.f32()),
Member("b", ty.vec3<f32>()),
@@ -3720,7 +3720,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_ZeroInit_F32) {
+TEST_F(SpvBuilderInitializerTest, Type_ZeroInit_F32) {
auto* t = Construct<f32>();
WrapInFunction(t);
@@ -3737,7 +3737,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_ZeroInit_F16) {
+TEST_F(SpvBuilderInitializerTest, Type_ZeroInit_F16) {
Enable(ast::Extension::kF16);
auto* t = Construct<f16>();
@@ -3756,7 +3756,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_ZeroInit_I32) {
+TEST_F(SpvBuilderInitializerTest, Type_ZeroInit_I32) {
auto* t = Construct<i32>();
WrapInFunction(t);
@@ -3773,7 +3773,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_ZeroInit_U32) {
+TEST_F(SpvBuilderInitializerTest, Type_ZeroInit_U32) {
auto* t = Construct<u32>();
WrapInFunction(t);
@@ -3790,7 +3790,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_ZeroInit_Bool) {
+TEST_F(SpvBuilderInitializerTest, Type_ZeroInit_Bool) {
auto* t = Construct<bool>();
WrapInFunction(t);
@@ -3807,7 +3807,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_ZeroInit_Vector) {
+TEST_F(SpvBuilderInitializerTest, Type_ZeroInit_Vector) {
auto* t = vec2<i32>();
WrapInFunction(t);
@@ -3825,7 +3825,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_ZeroInit_Matrix_F32) {
+TEST_F(SpvBuilderInitializerTest, Type_ZeroInit_Matrix_F32) {
auto* t = mat4x2<f32>();
WrapInFunction(t);
@@ -3844,7 +3844,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_ZeroInit_Matrix_F16) {
+TEST_F(SpvBuilderInitializerTest, Type_ZeroInit_Matrix_F16) {
Enable(ast::Extension::kF16);
auto* t = mat4x2<f16>();
@@ -3865,7 +3865,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_ZeroInit_Array) {
+TEST_F(SpvBuilderInitializerTest, Type_ZeroInit_Array) {
auto* t = array<i32, 2>();
WrapInFunction(t);
@@ -3885,7 +3885,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_ZeroInit_Struct) {
+TEST_F(SpvBuilderInitializerTest, Type_ZeroInit_Struct) {
auto* s = Structure("my_struct", utils::Vector{Member("a", ty.f32())});
auto* t = Construct(ty.Of(s));
WrapInFunction(t);
@@ -3903,7 +3903,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Convert_U32_To_I32) {
+TEST_F(SpvBuilderInitializerTest, Type_Convert_U32_To_I32) {
auto* var = Decl(Var("x", ty.u32(), Expr(2_u)));
auto* cast = Construct<i32>("x");
WrapInFunction(var, cast);
@@ -3927,7 +3927,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Convert_F32_To_I32) {
+TEST_F(SpvBuilderInitializerTest, Type_Convert_F32_To_I32) {
auto* var = Decl(Var("x", ty.f32(), Expr(2.4_f)));
auto* cast = Construct<i32>("x");
WrapInFunction(var, cast);
@@ -3951,7 +3951,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Convert_F16_To_I32) {
+TEST_F(SpvBuilderInitializerTest, Type_Convert_F16_To_I32) {
Enable(ast::Extension::kF16);
auto* var = Decl(Var("x", ty.f16(), Expr(2.4_h)));
@@ -3977,7 +3977,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Convert_I32_To_U32) {
+TEST_F(SpvBuilderInitializerTest, Type_Convert_I32_To_U32) {
auto* var = Decl(Var("x", ty.i32(), Expr(2_i)));
auto* cast = Construct<u32>("x");
WrapInFunction(var, cast);
@@ -4001,7 +4001,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Convert_F32_To_U32) {
+TEST_F(SpvBuilderInitializerTest, Type_Convert_F32_To_U32) {
auto* var = Decl(Var("x", ty.f32(), Expr(2.4_f)));
auto* cast = Construct<u32>("x");
WrapInFunction(var, cast);
@@ -4025,7 +4025,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Convert_F16_To_U32) {
+TEST_F(SpvBuilderInitializerTest, Type_Convert_F16_To_U32) {
Enable(ast::Extension::kF16);
auto* var = Decl(Var("x", ty.f16(), Expr(2.4_h)));
@@ -4051,7 +4051,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Convert_I32_To_F32) {
+TEST_F(SpvBuilderInitializerTest, Type_Convert_I32_To_F32) {
auto* var = Decl(Var("x", ty.i32(), Expr(2_i)));
auto* cast = Construct<f32>("x");
WrapInFunction(var, cast);
@@ -4075,7 +4075,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Convert_U32_To_F32) {
+TEST_F(SpvBuilderInitializerTest, Type_Convert_U32_To_F32) {
auto* var = Decl(Var("x", ty.u32(), Expr(2_u)));
auto* cast = Construct<f32>("x");
WrapInFunction(var, cast);
@@ -4099,7 +4099,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Convert_F16_To_F32) {
+TEST_F(SpvBuilderInitializerTest, Type_Convert_F16_To_F32) {
Enable(ast::Extension::kF16);
auto* var = Decl(Var("x", ty.f16(), Expr(2_h)));
@@ -4125,7 +4125,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Convert_I32_To_F16) {
+TEST_F(SpvBuilderInitializerTest, Type_Convert_I32_To_F16) {
Enable(ast::Extension::kF16);
auto* var = Decl(Var("x", ty.i32(), Expr(2_i)));
@@ -4151,7 +4151,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Convert_U32_To_F16) {
+TEST_F(SpvBuilderInitializerTest, Type_Convert_U32_To_F16) {
Enable(ast::Extension::kF16);
auto* var = Decl(Var("x", ty.u32(), Expr(2_u)));
@@ -4177,7 +4177,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Convert_F32_To_F16) {
+TEST_F(SpvBuilderInitializerTest, Type_Convert_F32_To_F16) {
Enable(ast::Extension::kF16);
auto* var = Decl(Var("x", ty.f32(), Expr(2_f)));
@@ -4203,7 +4203,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Convert_Vectors_U32_to_I32) {
+TEST_F(SpvBuilderInitializerTest, Type_Convert_Vectors_U32_to_I32) {
auto* var = GlobalVar("i", ty.vec3<u32>(), ast::AddressSpace::kPrivate);
auto* cast = vec3<i32>("i");
@@ -4229,7 +4229,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Convert_Vectors_F32_to_I32) {
+TEST_F(SpvBuilderInitializerTest, Type_Convert_Vectors_F32_to_I32) {
auto* var = GlobalVar("i", ty.vec3<f32>(), ast::AddressSpace::kPrivate);
auto* cast = vec3<i32>("i");
@@ -4255,7 +4255,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Convert_Vectors_F16_to_I32) {
+TEST_F(SpvBuilderInitializerTest, Type_Convert_Vectors_F16_to_I32) {
Enable(ast::Extension::kF16);
auto* var = GlobalVar("i", ty.vec3<f16>(), ast::AddressSpace::kPrivate);
@@ -4283,7 +4283,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Convert_Vectors_I32_to_U32) {
+TEST_F(SpvBuilderInitializerTest, Type_Convert_Vectors_I32_to_U32) {
auto* var = GlobalVar("i", ty.vec3<i32>(), ast::AddressSpace::kPrivate);
auto* cast = vec3<u32>("i");
@@ -4309,7 +4309,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Convert_Vectors_F32_to_U32) {
+TEST_F(SpvBuilderInitializerTest, Type_Convert_Vectors_F32_to_U32) {
auto* var = GlobalVar("i", ty.vec3<f32>(), ast::AddressSpace::kPrivate);
auto* cast = vec3<u32>("i");
@@ -4335,7 +4335,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Convert_Vectors_F16_to_U32) {
+TEST_F(SpvBuilderInitializerTest, Type_Convert_Vectors_F16_to_U32) {
Enable(ast::Extension::kF16);
auto* var = GlobalVar("i", ty.vec3<f16>(), ast::AddressSpace::kPrivate);
@@ -4363,7 +4363,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Convert_Vectors_I32_to_F32) {
+TEST_F(SpvBuilderInitializerTest, Type_Convert_Vectors_I32_to_F32) {
auto* var = GlobalVar("i", ty.vec3<i32>(), ast::AddressSpace::kPrivate);
auto* cast = vec3<f32>("i");
@@ -4389,7 +4389,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Convert_Vectors_U32_to_F32) {
+TEST_F(SpvBuilderInitializerTest, Type_Convert_Vectors_U32_to_F32) {
auto* var = GlobalVar("i", ty.vec3<u32>(), ast::AddressSpace::kPrivate);
auto* cast = vec3<f32>("i");
@@ -4415,7 +4415,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Convert_Vectors_F16_to_F32) {
+TEST_F(SpvBuilderInitializerTest, Type_Convert_Vectors_F16_to_F32) {
Enable(ast::Extension::kF16);
auto* var = GlobalVar("i", ty.vec3<f16>(), ast::AddressSpace::kPrivate);
@@ -4443,7 +4443,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Convert_Vectors_I32_to_F16) {
+TEST_F(SpvBuilderInitializerTest, Type_Convert_Vectors_I32_to_F16) {
Enable(ast::Extension::kF16);
auto* var = GlobalVar("i", ty.vec3<i32>(), ast::AddressSpace::kPrivate);
@@ -4471,7 +4471,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Convert_Vectors_U32_to_F16) {
+TEST_F(SpvBuilderInitializerTest, Type_Convert_Vectors_U32_to_F16) {
Enable(ast::Extension::kF16);
auto* var = GlobalVar("i", ty.vec3<u32>(), ast::AddressSpace::kPrivate);
@@ -4499,7 +4499,7 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, Type_Convert_Vectors_F32_to_F16) {
+TEST_F(SpvBuilderInitializerTest, Type_Convert_Vectors_F32_to_F16) {
Enable(ast::Extension::kF16);
auto* var = GlobalVar("i", ty.vec3<f32>(), ast::AddressSpace::kPrivate);
@@ -4527,18 +4527,18 @@
)");
}
-TEST_F(SpvBuilderConstructorTest, IsConstructorConst_GlobalVectorWithAllConstConstructors) {
+TEST_F(SpvBuilderInitializerTest, IsInitializerConst_GlobalVectorWithAllConstInitializers) {
// vec3<f32>(1.0, 2.0, 3.0) -> true
auto* t = vec3<f32>(1_f, 2_f, 3_f);
WrapInFunction(t);
spirv::Builder& b = Build();
- EXPECT_TRUE(b.IsConstructorConst(t));
+ EXPECT_TRUE(b.IsInitializerConst(t));
EXPECT_FALSE(b.has_error());
}
-TEST_F(SpvBuilderConstructorTest, IsConstructorConst_GlobalArrayWithAllConstConstructors) {
+TEST_F(SpvBuilderInitializerTest, IsInitializerConst_GlobalArrayWithAllConstInitializers) {
// array<vec3<f32>, 2u>(vec3<f32>(1.0, 2.0, 3.0), vec3<f32>(1.0, 2.0, 3.0))
// -> true
auto* t = Construct(ty.array(ty.vec3<f32>(), 2_u), vec3<f32>(1_f, 2_f, 3_f),
@@ -4547,11 +4547,11 @@
spirv::Builder& b = Build();
- EXPECT_TRUE(b.IsConstructorConst(t));
+ EXPECT_TRUE(b.IsInitializerConst(t));
EXPECT_FALSE(b.has_error());
}
-TEST_F(SpvBuilderConstructorTest, IsConstructorConst_GlobalVectorWithMatchingTypeConstructors) {
+TEST_F(SpvBuilderInitializerTest, IsInitializerConst_GlobalVectorWithMatchingTypeInitializers) {
// vec2<f32>(f32(1.0), f32(2.0)) -> false
auto* t = vec2<f32>(Construct<f32>(1_f), Construct<f32>(2_f));
@@ -4559,11 +4559,11 @@
spirv::Builder& b = Build();
- EXPECT_TRUE(b.IsConstructorConst(t));
+ EXPECT_TRUE(b.IsInitializerConst(t));
EXPECT_FALSE(b.has_error());
}
-TEST_F(SpvBuilderConstructorTest, IsConstructorConst_GlobalWithTypeConversionConstructor) {
+TEST_F(SpvBuilderInitializerTest, IsInitializerConst_GlobalWithTypeConversionInitializer) {
// vec2<f32>(f32(1), f32(2)) -> false
auto* t = vec2<f32>(Construct<f32>(1_i), Construct<f32>(2_i));
@@ -4571,11 +4571,11 @@
spirv::Builder& b = Build();
- EXPECT_FALSE(b.IsConstructorConst(t));
+ EXPECT_FALSE(b.IsInitializerConst(t));
EXPECT_FALSE(b.has_error());
}
-TEST_F(SpvBuilderConstructorTest, IsConstructorConst_VectorWithAllConstConstructors) {
+TEST_F(SpvBuilderInitializerTest, IsInitializerConst_VectorWithAllConstInitializers) {
// vec3<f32>(1.0, 2.0, 3.0) -> true
auto* t = vec3<f32>(1_f, 2_f, 3_f);
@@ -4583,11 +4583,11 @@
spirv::Builder& b = Build();
- EXPECT_TRUE(b.IsConstructorConst(t));
+ EXPECT_TRUE(b.IsInitializerConst(t));
EXPECT_FALSE(b.has_error());
}
-TEST_F(SpvBuilderConstructorTest, IsConstructorConst_Vector_WithIdent) {
+TEST_F(SpvBuilderInitializerTest, IsInitializerConst_Vector_WithIdent) {
// vec3<f32>(a, b, c) -> false
GlobalVar("a", ty.f32(), ast::AddressSpace::kPrivate);
@@ -4599,11 +4599,11 @@
spirv::Builder& b = Build();
- EXPECT_FALSE(b.IsConstructorConst(t));
+ EXPECT_FALSE(b.IsInitializerConst(t));
EXPECT_FALSE(b.has_error());
}
-TEST_F(SpvBuilderConstructorTest, IsConstructorConst_ArrayWithAllConstConstructors) {
+TEST_F(SpvBuilderInitializerTest, IsInitializerConst_ArrayWithAllConstInitializers) {
// array<vec3<f32>, 2u>(vec3<f32>(1.0, 2.0, 3.0), vec3<f32>(1.0, 2.0, 3.0))
// -> true
@@ -4615,11 +4615,11 @@
spirv::Builder& b = Build();
- EXPECT_TRUE(b.IsConstructorConst(t));
+ EXPECT_TRUE(b.IsInitializerConst(t));
EXPECT_FALSE(b.has_error());
}
-TEST_F(SpvBuilderConstructorTest, IsConstructorConst_VectorWithTypeConversionConstConstructors) {
+TEST_F(SpvBuilderInitializerTest, IsInitializerConst_VectorWithTypeConversionConstInitializers) {
// vec2<f32>(f32(1), f32(2)) -> false
auto* t = vec2<f32>(Construct<f32>(1_i), Construct<f32>(2_i));
@@ -4627,21 +4627,21 @@
spirv::Builder& b = Build();
- EXPECT_FALSE(b.IsConstructorConst(t));
+ EXPECT_FALSE(b.IsInitializerConst(t));
EXPECT_FALSE(b.has_error());
}
-TEST_F(SpvBuilderConstructorTest, IsConstructorConst_BitCastScalars) {
+TEST_F(SpvBuilderInitializerTest, IsInitializerConst_BitCastScalars) {
auto* t = vec2<u32>(Construct<u32>(1_i), Construct<u32>(1_i));
WrapInFunction(t);
spirv::Builder& b = Build();
- EXPECT_FALSE(b.IsConstructorConst(t));
+ EXPECT_FALSE(b.IsInitializerConst(t));
EXPECT_FALSE(b.has_error());
}
-TEST_F(SpvBuilderConstructorTest, IsConstructorConst_Struct) {
+TEST_F(SpvBuilderInitializerTest, IsInitializerConst_Struct) {
auto* s = Structure("my_struct", utils::Vector{
Member("a", ty.f32()),
Member("b", ty.vec3<f32>()),
@@ -4652,11 +4652,11 @@
spirv::Builder& b = Build();
- EXPECT_TRUE(b.IsConstructorConst(t));
+ EXPECT_TRUE(b.IsInitializerConst(t));
EXPECT_FALSE(b.has_error());
}
-TEST_F(SpvBuilderConstructorTest, IsConstructorConst_Struct_WithIdentSubExpression) {
+TEST_F(SpvBuilderInitializerTest, IsInitializerConst_Struct_WithIdentSubExpression) {
auto* s = Structure("my_struct", utils::Vector{
Member("a", ty.f32()),
Member("b", ty.vec3<f32>()),
@@ -4670,11 +4670,11 @@
spirv::Builder& b = Build();
- EXPECT_FALSE(b.IsConstructorConst(t));
+ EXPECT_FALSE(b.IsInitializerConst(t));
EXPECT_FALSE(b.has_error());
}
-TEST_F(SpvBuilderConstructorTest, ConstantCompositeScoping) {
+TEST_F(SpvBuilderInitializerTest, ConstantCompositeScoping) {
// if (true) {
// let x = vec3<f32>(1.0, 2.0, 3.0);
// }
@@ -4715,9 +4715,9 @@
}
// TODO(crbug.com/tint/1155) Implement when overrides are fully implemented.
-// TEST_F(SpvBuilderConstructorTest, SpecConstantCompositeScoping)
+// TEST_F(SpvBuilderInitializerTest, SpecConstantCompositeScoping)
-TEST_F(SpvBuilderConstructorTest, CompositeConstructScoping) {
+TEST_F(SpvBuilderInitializerTest, CompositeConstructScoping) {
// var one = 1.0;
// if (true) {
// let x = vec3<f32>(one, 2.0, 3.0);
diff --git a/src/tint/writer/spirv/builder_loop_test.cc b/src/tint/writer/spirv/builder_loop_test.cc
index 3ab27ef..e27cac4 100644
--- a/src/tint/writer/spirv/builder_loop_test.cc
+++ b/src/tint/writer/spirv/builder_loop_test.cc
@@ -234,12 +234,11 @@
TEST_F(BuilderTest, Loop_WithContinuing_BreakIf) {
// loop {
// continuing {
- // if (true) { break; }
+ // break if (true);
// }
// }
- auto* if_stmt = If(Expr(true), Block(Break()));
- auto* continuing = Block(if_stmt);
+ auto* continuing = Block(BreakIf(true));
auto* loop = Loop(Block(), continuing);
WrapInFunction(loop);
@@ -267,11 +266,10 @@
TEST_F(BuilderTest, Loop_WithContinuing_BreakUnless) {
// loop {
// continuing {
- // if (true) {} else { break; }
+ // break if (false);
// }
// }
- auto* if_stmt = If(Expr(true), Block(), Else(Block(Break())));
- auto* continuing = Block(if_stmt);
+ auto* continuing = Block(BreakIf(false));
auto* loop = Loop(Block(), continuing);
WrapInFunction(loop);
@@ -281,7 +279,7 @@
EXPECT_TRUE(b.GenerateLoopStatement(loop)) << b.error();
EXPECT_EQ(DumpInstructions(b.types()), R"(%5 = OpTypeBool
-%6 = OpConstantTrue %5
+%6 = OpConstantNull %5
)");
EXPECT_EQ(DumpInstructions(b.functions()[0].instructions()),
R"(OpBranch %1
@@ -291,7 +289,7 @@
%4 = OpLabel
OpBranch %3
%3 = OpLabel
-OpBranchConditional %6 %1 %2
+OpBranchConditional %6 %2 %1
%2 = OpLabel
)");
}
@@ -300,13 +298,12 @@
// loop {
// continuing {
// var cond = true;
- // if (cond) { break; }
+ // break if (cond);
// }
// }
auto* cond_var = Decl(Var("cond", Expr(true)));
- auto* if_stmt = If(Expr("cond"), Block(Break()));
- auto* continuing = Block(cond_var, if_stmt);
+ auto* continuing = Block(cond_var, BreakIf("cond"));
auto* loop = Loop(Block(), continuing);
WrapInFunction(loop);
@@ -379,19 +376,17 @@
// continuing {
// loop {
// continuing {
- // if (true) { break; }
+ // break if (true);
// }
// }
- // if (true) { break; }
+ // break if (true);
// }
// }
- auto* inner_if_stmt = If(Expr(true), Block(Break()));
- auto* inner_continuing = Block(inner_if_stmt);
+ auto* inner_continuing = Block(BreakIf(true));
auto* inner_loop = Loop(Block(), inner_continuing);
- auto* outer_if_stmt = If(Expr(true), Block(Break()));
- auto* outer_continuing = Block(inner_loop, outer_if_stmt);
+ auto* outer_continuing = Block(inner_loop, BreakIf(true));
auto* outer_loop = Loop(Block(), outer_continuing);
WrapInFunction(outer_loop);
diff --git a/src/tint/writer/spirv/builder_switch_test.cc b/src/tint/writer/spirv/builder_switch_test.cc
index 4ee8f39..c59c640 100644
--- a/src/tint/writer/spirv/builder_switch_test.cc
+++ b/src/tint/writer/spirv/builder_switch_test.cc
@@ -62,9 +62,9 @@
auto* func = Func("a_func", utils::Empty, ty.void_(),
utils::Vector{
- Switch("a", //
- Case(Expr(1_i), Block(Assign("v", 1_i))), //
- Case(Expr(2_i), Block(Assign("v", 2_i))), //
+ Switch("a", //
+ Case(CaseSelector(1_i), Block(Assign("v", 1_i))), //
+ Case(CaseSelector(2_i), Block(Assign("v", 2_i))), //
DefaultCase()),
});
@@ -119,9 +119,9 @@
auto* func = Func("a_func", utils::Empty, ty.void_(),
utils::Vector{
- Switch("a", //
- Case(Expr(1_u), Block(Assign("v", 1_i))), //
- Case(Expr(2_u), Block(Assign("v", 2_i))), //
+ Switch("a", //
+ Case(CaseSelector(1_u), Block(Assign("v", 1_i))), //
+ Case(CaseSelector(2_u), Block(Assign("v", 2_i))), //
DefaultCase()),
});
@@ -226,11 +226,11 @@
auto* func = Func("a_func", utils::Empty, ty.void_(),
utils::Vector{
- Switch(Expr("a"), //
- Case(Expr(1_i), //
- Block(Assign("v", 1_i))), //
- Case(utils::Vector{Expr(2_i), Expr(3_i)}, //
- Block(Assign("v", 2_i))), //
+ Switch(Expr("a"), //
+ Case(CaseSelector(1_i), //
+ Block(Assign("v", 1_i))), //
+ Case(utils::Vector{CaseSelector(2_i), CaseSelector(3_i)}, //
+ Block(Assign("v", 2_i))), //
DefaultCase(Block(Assign("v", 3_i)))),
});
@@ -273,6 +273,61 @@
)");
}
+TEST_F(BuilderTest, Switch_WithCaseAndMixedDefault) {
+ // switch(a) {
+ // case 1i:
+ // v = 1i;
+ // case 2i, 3i, default:
+ // v = 2i;
+ // }
+
+ auto* v = GlobalVar("v", ty.i32(), ast::AddressSpace::kPrivate);
+ auto* a = GlobalVar("a", ty.i32(), ast::AddressSpace::kPrivate);
+
+ auto* func = Func("a_func", utils::Empty, ty.void_(),
+ utils::Vector{Switch(Expr("a"), //
+ Case(CaseSelector(1_i), //
+ Block(Assign("v", 1_i))), //
+ Case(utils::Vector{CaseSelector(2_i), CaseSelector(3_i),
+ DefaultCaseSelector()}, //
+ Block(Assign("v", 2_i))) //
+ )});
+
+ spirv::Builder& b = Build();
+
+ ASSERT_TRUE(b.GenerateGlobalVariable(v)) << b.error();
+ ASSERT_TRUE(b.GenerateGlobalVariable(a)) << b.error();
+ ASSERT_TRUE(b.GenerateFunction(func)) << b.error();
+
+ EXPECT_EQ(DumpBuilder(b), R"(OpName %1 "v"
+OpName %5 "a"
+OpName %8 "a_func"
+%3 = OpTypeInt 32 1
+%2 = OpTypePointer Private %3
+%4 = OpConstantNull %3
+%1 = OpVariable %2 Private %4
+%5 = OpVariable %2 Private %4
+%7 = OpTypeVoid
+%6 = OpTypeFunction %7
+%14 = OpConstant %3 1
+%15 = OpConstant %3 2
+%8 = OpFunction %7 None %6
+%9 = OpLabel
+%11 = OpLoad %3 %5
+OpSelectionMerge %10 None
+OpSwitch %11 %12 1 %13 2 %12 3 %12
+%13 = OpLabel
+OpStore %1 %14
+OpBranch %10
+%12 = OpLabel
+OpStore %1 %15
+OpBranch %10
+%10 = OpLabel
+OpReturn
+OpFunctionEnd
+)");
+}
+
TEST_F(BuilderTest, Switch_CaseWithFallthrough) {
// switch(a) {
// case 1i:
@@ -290,9 +345,9 @@
auto* func = Func("a_func", utils::Empty, ty.void_(),
utils::Vector{
Switch(Expr("a"), //
- Case(Expr(1_i), //
+ Case(CaseSelector(1_i), //
Block(Assign("v", 1_i), Fallthrough())), //
- Case(Expr(2_i), //
+ Case(CaseSelector(2_i), //
Block(Assign("v", 2_i))), //
DefaultCase(Block(Assign("v", 3_i)))),
});
@@ -351,9 +406,9 @@
auto* func = Func("a_func", utils::Empty, ty.void_(),
utils::Vector{
- Switch("a", //
- Case(Expr(1_i), //
- Block( //
+ Switch("a", //
+ Case(CaseSelector(1_i), //
+ Block( //
If(Expr(true), Block(create<ast::BreakStatement>())),
Assign("v", 1_i))),
DefaultCase()),
@@ -414,9 +469,9 @@
auto* fn = Func("f", utils::Empty, ty.i32(),
utils::Vector{
- Switch(1_i, //
- Case(Expr(1_i), Block(Return(1_i))), //
- Case(Expr(2_i), Block(Fallthrough())), //
+ Switch(1_i, //
+ Case(CaseSelector(1_i), Block(Return(1_i))), //
+ Case(CaseSelector(2_i), Block(Fallthrough())), //
DefaultCase(Block(Return(3_i)))),
});
diff --git a/src/tint/writer/spirv/generator_impl.cc b/src/tint/writer/spirv/generator_impl.cc
index e7ea448..8d80a62 100644
--- a/src/tint/writer/spirv/generator_impl.cc
+++ b/src/tint/writer/spirv/generator_impl.cc
@@ -34,7 +34,7 @@
#include "src/tint/transform/unwind_discard_functions.h"
#include "src/tint/transform/var_for_dynamic_index.h"
#include "src/tint/transform/vectorize_matrix_conversions.h"
-#include "src/tint/transform/vectorize_scalar_matrix_constructors.h"
+#include "src/tint/transform/vectorize_scalar_matrix_initializers.h"
#include "src/tint/transform/while_to_loop.h"
#include "src/tint/transform/zero_init_workgroup_memory.h"
#include "src/tint/writer/generate_external_texture_bindings.h"
@@ -81,7 +81,7 @@
manager.Add<transform::UnwindDiscardFunctions>();
manager.Add<transform::SimplifyPointers>(); // Required for arrayLength()
manager.Add<transform::RemovePhonies>();
- manager.Add<transform::VectorizeScalarMatrixConstructors>();
+ manager.Add<transform::VectorizeScalarMatrixInitializers>();
manager.Add<transform::VectorizeMatrixConversions>();
manager.Add<transform::WhileToLoop>(); // ZeroInitWorkgroupMemory
manager.Add<transform::CanonicalizeEntryPointIO>();
diff --git a/src/tint/writer/wgsl/generator_impl.cc b/src/tint/writer/wgsl/generator_impl.cc
index 7795455..bf7ebd7 100644
--- a/src/tint/writer/wgsl/generator_impl.cc
+++ b/src/tint/writer/wgsl/generator_impl.cc
@@ -50,6 +50,7 @@
#include "src/tint/ast/void.h"
#include "src/tint/ast/workgroup_attribute.h"
#include "src/tint/sem/struct.h"
+#include "src/tint/sem/switch_statement.h"
#include "src/tint/utils/math.h"
#include "src/tint/utils/scoped_assignment.h"
#include "src/tint/writer/float_to_string.h"
@@ -701,9 +702,9 @@
}
}
- if (v->constructor != nullptr) {
+ if (v->initializer != nullptr) {
out << " = ";
- if (!EmitExpression(out, v->constructor)) {
+ if (!EmitExpression(out, v->initializer)) {
return false;
}
}
@@ -957,6 +958,7 @@
[&](const ast::AssignmentStatement* a) { return EmitAssign(a); },
[&](const ast::BlockStatement* b) { return EmitBlock(b); },
[&](const ast::BreakStatement* b) { return EmitBreak(b); },
+ [&](const ast::BreakIfStatement* b) { return EmitBreakIf(b); },
[&](const ast::CallStatement* c) {
auto out = line();
if (!EmitCall(out, c->expr)) {
@@ -1022,27 +1024,40 @@
return true;
}
+bool GeneratorImpl::EmitBreakIf(const ast::BreakIfStatement* b) {
+ auto out = line();
+
+ out << "break if ";
+ if (!EmitExpression(out, b->condition)) {
+ return false;
+ }
+ out << ";";
+ return true;
+}
+
bool GeneratorImpl::EmitCase(const ast::CaseStatement* stmt) {
- if (stmt->IsDefault()) {
+ if (stmt->selectors.Length() == 1 && stmt->ContainsDefault()) {
line() << "default: {";
} else {
auto out = line();
out << "case ";
bool first = true;
- for (auto* selector : stmt->selectors) {
+ for (auto* sel : stmt->selectors) {
if (!first) {
out << ", ";
}
first = false;
- if (!EmitLiteral(out, selector)) {
+
+ if (sel->IsDefault()) {
+ out << "default";
+ } else if (!EmitExpression(out, sel->expr)) {
return false;
}
}
out << ": {";
}
-
if (!EmitStatementsWithIndent(stmt->body->statements)) {
return false;
}
diff --git a/src/tint/writer/wgsl/generator_impl.h b/src/tint/writer/wgsl/generator_impl.h
index f4fc467..2b7f1c9 100644
--- a/src/tint/writer/wgsl/generator_impl.h
+++ b/src/tint/writer/wgsl/generator_impl.h
@@ -20,6 +20,7 @@
#include "src/tint/ast/assignment_statement.h"
#include "src/tint/ast/binary_expression.h"
#include "src/tint/ast/bitcast_expression.h"
+#include "src/tint/ast/break_if_statement.h"
#include "src/tint/ast/break_statement.h"
#include "src/tint/ast/compound_assignment_statement.h"
#include "src/tint/ast/continue_statement.h"
@@ -92,6 +93,10 @@
/// @param stmt the statement to emit
/// @returns true if the statement was emitted successfully
bool EmitBreak(const ast::BreakStatement* stmt);
+ /// Handles a break-if statement
+ /// @param stmt the statement to emit
+ /// @returns true if the statement was emitted successfully
+ bool EmitBreakIf(const ast::BreakIfStatement* stmt);
/// Handles generating a call expression
/// @param out the output of the expression stream
/// @param expr the call expression
diff --git a/src/tint/writer/wgsl/generator_impl_case_test.cc b/src/tint/writer/wgsl/generator_impl_case_test.cc
index 6d59970..39c28cb 100644
--- a/src/tint/writer/wgsl/generator_impl_case_test.cc
+++ b/src/tint/writer/wgsl/generator_impl_case_test.cc
@@ -22,7 +22,8 @@
using WgslGeneratorImplTest = TestHelper;
TEST_F(WgslGeneratorImplTest, Emit_Case) {
- auto* s = Switch(1_i, Case(Expr(5_i), Block(create<ast::BreakStatement>())), DefaultCase());
+ auto* s =
+ Switch(1_i, Case(CaseSelector(5_i), Block(create<ast::BreakStatement>())), DefaultCase());
WrapInFunction(s);
GeneratorImpl& gen = Build();
@@ -40,8 +41,8 @@
auto* s = Switch(1_i,
Case(
utils::Vector{
- Expr(5_i),
- Expr(6_i),
+ CaseSelector(5_i),
+ CaseSelector(6_i),
},
Block(create<ast::BreakStatement>())),
DefaultCase());
diff --git a/src/tint/writer/wgsl/generator_impl_fallthrough_test.cc b/src/tint/writer/wgsl/generator_impl_fallthrough_test.cc
index 2b12051..093fba1 100644
--- a/src/tint/writer/wgsl/generator_impl_fallthrough_test.cc
+++ b/src/tint/writer/wgsl/generator_impl_fallthrough_test.cc
@@ -23,8 +23,8 @@
TEST_F(WgslGeneratorImplTest, Emit_Fallthrough) {
auto* f = create<ast::FallthroughStatement>();
- WrapInFunction(Switch(1_i, //
- Case(Expr(1_i), Block(f)), //
+ WrapInFunction(Switch(1_i, //
+ Case(CaseSelector(1_i), Block(f)), //
DefaultCase()));
GeneratorImpl& gen = Build();
diff --git a/src/tint/writer/wgsl/generator_impl_constructor_test.cc b/src/tint/writer/wgsl/generator_impl_initializer_test.cc
similarity index 84%
rename from src/tint/writer/wgsl/generator_impl_constructor_test.cc
rename to src/tint/writer/wgsl/generator_impl_initializer_test.cc
index 40bf393..578da4d 100644
--- a/src/tint/writer/wgsl/generator_impl_constructor_test.cc
+++ b/src/tint/writer/wgsl/generator_impl_initializer_test.cc
@@ -24,7 +24,7 @@
using WgslGeneratorImplTest = TestHelper;
-TEST_F(WgslGeneratorImplTest, EmitConstructor_Bool) {
+TEST_F(WgslGeneratorImplTest, EmitInitializer_Bool) {
WrapInFunction(Expr(false));
GeneratorImpl& gen = Build();
@@ -33,7 +33,7 @@
EXPECT_THAT(gen.result(), HasSubstr("false"));
}
-TEST_F(WgslGeneratorImplTest, EmitConstructor_Int) {
+TEST_F(WgslGeneratorImplTest, EmitInitializer_Int) {
WrapInFunction(Expr(-12345_i));
GeneratorImpl& gen = Build();
@@ -42,7 +42,7 @@
EXPECT_THAT(gen.result(), HasSubstr("-12345"));
}
-TEST_F(WgslGeneratorImplTest, EmitConstructor_UInt) {
+TEST_F(WgslGeneratorImplTest, EmitInitializer_UInt) {
WrapInFunction(Expr(56779_u));
GeneratorImpl& gen = Build();
@@ -51,7 +51,7 @@
EXPECT_THAT(gen.result(), HasSubstr("56779u"));
}
-TEST_F(WgslGeneratorImplTest, EmitConstructor_F32) {
+TEST_F(WgslGeneratorImplTest, EmitInitializer_F32) {
// Use a number close to 1<<30 but whose decimal representation ends in 0.
WrapInFunction(Expr(f32((1 << 30) - 4)));
@@ -61,7 +61,7 @@
EXPECT_THAT(gen.result(), HasSubstr("1073741824.0f"));
}
-TEST_F(WgslGeneratorImplTest, EmitConstructor_F16) {
+TEST_F(WgslGeneratorImplTest, EmitInitializer_F16) {
Enable(ast::Extension::kF16);
// Use a number close to 1<<16 but whose decimal representation ends in 0.
@@ -73,7 +73,7 @@
EXPECT_THAT(gen.result(), HasSubstr("32752.0h"));
}
-TEST_F(WgslGeneratorImplTest, EmitConstructor_Type_F32) {
+TEST_F(WgslGeneratorImplTest, EmitInitializer_Type_F32) {
WrapInFunction(Construct<f32>(Expr(-1.2e-5_f)));
GeneratorImpl& gen = Build();
@@ -82,7 +82,7 @@
EXPECT_THAT(gen.result(), HasSubstr("f32(-0.000012f)"));
}
-TEST_F(WgslGeneratorImplTest, EmitConstructor_Type_F16) {
+TEST_F(WgslGeneratorImplTest, EmitInitializer_Type_F16) {
Enable(ast::Extension::kF16);
WrapInFunction(Construct<f16>(Expr(-1.2e-5_h)));
@@ -93,7 +93,7 @@
EXPECT_THAT(gen.result(), HasSubstr("f16(-1.19805336e-05h)"));
}
-TEST_F(WgslGeneratorImplTest, EmitConstructor_Type_Bool) {
+TEST_F(WgslGeneratorImplTest, EmitInitializer_Type_Bool) {
WrapInFunction(Construct<bool>(true));
GeneratorImpl& gen = Build();
@@ -102,7 +102,7 @@
EXPECT_THAT(gen.result(), HasSubstr("bool(true)"));
}
-TEST_F(WgslGeneratorImplTest, EmitConstructor_Type_Int) {
+TEST_F(WgslGeneratorImplTest, EmitInitializer_Type_Int) {
WrapInFunction(Construct<i32>(-12345_i));
GeneratorImpl& gen = Build();
@@ -111,7 +111,7 @@
EXPECT_THAT(gen.result(), HasSubstr("i32(-12345i)"));
}
-TEST_F(WgslGeneratorImplTest, EmitConstructor_Type_Uint) {
+TEST_F(WgslGeneratorImplTest, EmitInitializer_Type_Uint) {
WrapInFunction(Construct<u32>(12345_u));
GeneratorImpl& gen = Build();
@@ -120,7 +120,7 @@
EXPECT_THAT(gen.result(), HasSubstr("u32(12345u)"));
}
-TEST_F(WgslGeneratorImplTest, EmitConstructor_Type_Vec_F32) {
+TEST_F(WgslGeneratorImplTest, EmitInitializer_Type_Vec_F32) {
WrapInFunction(vec3<f32>(1_f, 2_f, 3_f));
GeneratorImpl& gen = Build();
@@ -129,7 +129,7 @@
EXPECT_THAT(gen.result(), HasSubstr("vec3<f32>(1.0f, 2.0f, 3.0f)"));
}
-TEST_F(WgslGeneratorImplTest, EmitConstructor_Type_Vec_F16) {
+TEST_F(WgslGeneratorImplTest, EmitInitializer_Type_Vec_F16) {
Enable(ast::Extension::kF16);
WrapInFunction(vec3<f16>(1_h, 2_h, 3_h));
@@ -140,7 +140,7 @@
EXPECT_THAT(gen.result(), HasSubstr("vec3<f16>(1.0h, 2.0h, 3.0h)"));
}
-TEST_F(WgslGeneratorImplTest, EmitConstructor_Type_Mat_F32) {
+TEST_F(WgslGeneratorImplTest, EmitInitializer_Type_Mat_F32) {
WrapInFunction(mat2x3<f32>(vec3<f32>(1_f, 2_f, 3_f), vec3<f32>(3_f, 4_f, 5_f)));
GeneratorImpl& gen = Build();
@@ -150,7 +150,7 @@
"vec3<f32>(3.0f, 4.0f, 5.0f))"));
}
-TEST_F(WgslGeneratorImplTest, EmitConstructor_Type_Mat_F16) {
+TEST_F(WgslGeneratorImplTest, EmitInitializer_Type_Mat_F16) {
Enable(ast::Extension::kF16);
WrapInFunction(mat2x3<f16>(vec3<f16>(1_h, 2_h, 3_h), vec3<f16>(3_h, 4_h, 5_h)));
@@ -162,7 +162,7 @@
"vec3<f16>(3.0h, 4.0h, 5.0h))"));
}
-TEST_F(WgslGeneratorImplTest, EmitConstructor_Type_Array) {
+TEST_F(WgslGeneratorImplTest, EmitInitializer_Type_Array) {
WrapInFunction(Construct(ty.array(ty.vec3<f32>(), 3_u), vec3<f32>(1_f, 2_f, 3_f),
vec3<f32>(4_f, 5_f, 6_f), vec3<f32>(7_f, 8_f, 9_f)));
@@ -174,7 +174,7 @@
"vec3<f32>(4.0f, 5.0f, 6.0f), vec3<f32>(7.0f, 8.0f, 9.0f))"));
}
-TEST_F(WgslGeneratorImplTest, EmitConstructor_Type_ImplicitArray) {
+TEST_F(WgslGeneratorImplTest, EmitInitializer_Type_ImplicitArray) {
WrapInFunction(Construct(ty.array(nullptr, nullptr), vec3<f32>(1_f, 2_f, 3_f),
vec3<f32>(4_f, 5_f, 6_f), vec3<f32>(7_f, 8_f, 9_f)));
diff --git a/src/tint/writer/wgsl/generator_impl_loop_test.cc b/src/tint/writer/wgsl/generator_impl_loop_test.cc
index bf0eef6..48510bb 100644
--- a/src/tint/writer/wgsl/generator_impl_loop_test.cc
+++ b/src/tint/writer/wgsl/generator_impl_loop_test.cc
@@ -65,6 +65,32 @@
)");
}
+TEST_F(WgslGeneratorImplTest, Emit_LoopWithContinuing_BreakIf) {
+ Func("a_statement", {}, ty.void_(), {});
+
+ auto* body = Block(create<ast::DiscardStatement>());
+ auto* continuing = Block(CallStmt(Call("a_statement")), BreakIf(true));
+ auto* l = Loop(body, continuing);
+
+ Func("F", utils::Empty, ty.void_(), utils::Vector{l},
+ utils::Vector{Stage(ast::PipelineStage::kFragment)});
+
+ GeneratorImpl& gen = Build();
+
+ gen.increment_indent();
+
+ ASSERT_TRUE(gen.EmitStatement(l)) << gen.error();
+ EXPECT_EQ(gen.result(), R"( loop {
+ discard;
+
+ continuing {
+ a_statement();
+ break if true;
+ }
+ }
+)");
+}
+
TEST_F(WgslGeneratorImplTest, Emit_ForLoopWithMultiStmtInit) {
// var<workgroup> a : atomic<i32>;
// for({ignore(1i); ignore(2i);}; ; ) {
diff --git a/src/tint/writer/wgsl/generator_impl_switch_test.cc b/src/tint/writer/wgsl/generator_impl_switch_test.cc
index 5cf0ed2..7a39079 100644
--- a/src/tint/writer/wgsl/generator_impl_switch_test.cc
+++ b/src/tint/writer/wgsl/generator_impl_switch_test.cc
@@ -25,13 +25,10 @@
GlobalVar("cond", ty.i32(), ast::AddressSpace::kPrivate);
auto* def_body = Block(create<ast::BreakStatement>());
- auto* def = create<ast::CaseStatement>(utils::Empty, def_body);
-
- utils::Vector case_val{Expr(5_i)};
+ auto* def = Case(DefaultCaseSelector(), def_body);
auto* case_body = Block(create<ast::BreakStatement>());
-
- auto* case_stmt = create<ast::CaseStatement>(case_val, case_body);
+ auto* case_stmt = Case(utils::Vector{CaseSelector(5_i)}, case_body);
utils::Vector body{
case_stmt,
@@ -39,7 +36,7 @@
};
auto* cond = Expr("cond");
- auto* s = create<ast::SwitchStatement>(cond, body);
+ auto* s = Switch(cond, body);
WrapInFunction(s);
GeneratorImpl& gen = Build();
@@ -58,5 +55,28 @@
)");
}
+TEST_F(WgslGeneratorImplTest, Emit_Switch_MixedDefault) {
+ GlobalVar("cond", ty.i32(), ast::AddressSpace::kPrivate);
+
+ auto* def_body = Block(create<ast::BreakStatement>());
+ auto* def = Case(utils::Vector{CaseSelector(5_i), DefaultCaseSelector()}, def_body);
+
+ auto* cond = Expr("cond");
+ auto* s = Switch(cond, utils::Vector{def});
+ WrapInFunction(s);
+
+ GeneratorImpl& gen = Build();
+
+ gen.increment_indent();
+
+ ASSERT_TRUE(gen.EmitStatement(s)) << gen.error();
+ EXPECT_EQ(gen.result(), R"( switch(cond) {
+ case 5i, default: {
+ break;
+ }
+ }
+)");
+}
+
} // namespace
} // namespace tint::writer::wgsl
diff --git a/src/tint/writer/wgsl/generator_impl_variable_test.cc b/src/tint/writer/wgsl/generator_impl_variable_test.cc
index b7c894e..fd6110a 100644
--- a/src/tint/writer/wgsl/generator_impl_variable_test.cc
+++ b/src/tint/writer/wgsl/generator_impl_variable_test.cc
@@ -75,7 +75,7 @@
EXPECT_EQ(out.str(), R"(@group(1) @binding(2) var a : sampler;)");
}
-TEST_F(WgslGeneratorImplTest, EmitVariable_Constructor) {
+TEST_F(WgslGeneratorImplTest, EmitVariable_Initializer) {
auto* v = GlobalVar("a", ty.f32(), ast::AddressSpace::kPrivate, Expr(1_f));
GeneratorImpl& gen = Build();