Import Tint changes from Dawn
Changes:
- 6b4c1cb76b705e58ba2c158b99b84279c81f66b5 [tint][utils] Add light theme, detect dark / light by Ben Clayton <bclayton@google.com>
- dd050a5bef8fae62c3c59d29e69e137f0f1372a7 [tint][ast] Reimplement ArrayLengthFromUniform transform ... by Ben Clayton <bclayton@google.com>
- 875236697debda1c87c1f5e462b566fab3c79767 [tint] Make binding space consistent for array length fro... by Ben Clayton <bclayton@google.com>
- 1fc1f8fbcf7b603afdc122952efad030b6de9adc [tint][core] Highlight intrinsic table matches / mismatch... by Ben Clayton <bclayton@google.com>
GitOrigin-RevId: 6b4c1cb76b705e58ba2c158b99b84279c81f66b5
Change-Id: I1b48dfc2a407691ea5cbf70a99382436851fee3b
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/177140
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
diff --git a/include/tint/tint.h b/include/tint/tint.h
index 23d1d3e..ac6dd66 100644
--- a/include/tint/tint.h
+++ b/include/tint/tint.h
@@ -35,7 +35,6 @@
// headers will need to be moved to include/tint/.
#include "src/tint/api/common/binding_point.h"
-#include "src/tint/api/options/array_length_from_uniform.h"
#include "src/tint/api/options/binding_remapper.h"
#include "src/tint/api/options/external_texture.h"
#include "src/tint/api/options/pixel_local.h"
diff --git a/src/tint/api/options/BUILD.bazel b/src/tint/api/options/BUILD.bazel
index c7eba70..7bf8d69 100644
--- a/src/tint/api/options/BUILD.bazel
+++ b/src/tint/api/options/BUILD.bazel
@@ -42,7 +42,6 @@
"options.cc",
],
hdrs = [
- "array_length_from_uniform.h",
"binding_remapper.h",
"depth_range_offsets.h",
"external_texture.h",
@@ -70,7 +69,6 @@
name = "test",
alwayslink = True,
srcs = [
- "array_length_from_uniform_test.cc",
"binding_remapper_test.cc",
"external_texture_test.cc",
"pixel_local_test.cc",
diff --git a/src/tint/api/options/BUILD.cmake b/src/tint/api/options/BUILD.cmake
index 1f0fffa..9629a54 100644
--- a/src/tint/api/options/BUILD.cmake
+++ b/src/tint/api/options/BUILD.cmake
@@ -39,7 +39,6 @@
# Kind: lib
################################################################################
tint_add_target(tint_api_options lib
- api/options/array_length_from_uniform.h
api/options/binding_remapper.h
api/options/depth_range_offsets.h
api/options/external_texture.h
@@ -68,7 +67,6 @@
# Kind: test
################################################################################
tint_add_target(tint_api_options_test test
- api/options/array_length_from_uniform_test.cc
api/options/binding_remapper_test.cc
api/options/external_texture_test.cc
api/options/pixel_local_test.cc
diff --git a/src/tint/api/options/BUILD.gn b/src/tint/api/options/BUILD.gn
index cc35c71..09a0971 100644
--- a/src/tint/api/options/BUILD.gn
+++ b/src/tint/api/options/BUILD.gn
@@ -44,7 +44,6 @@
libtint_source_set("options") {
sources = [
- "array_length_from_uniform.h",
"binding_remapper.h",
"depth_range_offsets.h",
"external_texture.h",
@@ -70,7 +69,6 @@
if (tint_build_unittests) {
tint_unittests_source_set("unittests") {
sources = [
- "array_length_from_uniform_test.cc",
"binding_remapper_test.cc",
"external_texture_test.cc",
"pixel_local_test.cc",
diff --git a/src/tint/api/options/array_length_from_uniform.h b/src/tint/api/options/array_length_from_uniform.h
deleted file mode 100644
index 821b7d3..0000000
--- a/src/tint/api/options/array_length_from_uniform.h
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright 2021 The Dawn & Tint Authors
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// 1. Redistributions of source code must retain the above copyright notice, this
-// list of conditions and the following disclaimer.
-//
-// 2. Redistributions in binary form must reproduce the above copyright notice,
-// this list of conditions and the following disclaimer in the documentation
-// and/or other materials provided with the distribution.
-//
-// 3. Neither the name of the copyright holder nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
-// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#ifndef SRC_TINT_API_OPTIONS_ARRAY_LENGTH_FROM_UNIFORM_H_
-#define SRC_TINT_API_OPTIONS_ARRAY_LENGTH_FROM_UNIFORM_H_
-
-#include <unordered_map>
-
-#include "src/tint/api/common/binding_point.h"
-
-namespace tint {
-
-/// Options used to specify a mapping of binding points to indices into a UBO
-/// from which to load buffer sizes.
-struct ArrayLengthFromUniformOptions {
- /// The binding point to use to generate a uniform buffer from which to read
- /// buffer sizes.
- BindingPoint ubo_binding;
- /// The mapping from storage buffer binding points to the index into the
- /// uniform buffer where the length of the buffer is stored.
- std::unordered_map<BindingPoint, uint32_t> bindpoint_to_size_index;
-
- /// Reflect the fields of this class so that it can be used by tint::ForeachField()
- TINT_REFLECT(ArrayLengthFromUniformOptions, ubo_binding, bindpoint_to_size_index);
-};
-
-} // namespace tint
-
-#endif // SRC_TINT_API_OPTIONS_ARRAY_LENGTH_FROM_UNIFORM_H_
diff --git a/src/tint/api/tint.cc b/src/tint/api/tint.cc
index 3337b23..07254b2 100644
--- a/src/tint/api/tint.cc
+++ b/src/tint/api/tint.cc
@@ -32,7 +32,6 @@
// dependency from 'tint/api' to the libraries used to make up the Tint API.
////////////////////////////////////////////////////////////////////////////////
#include "src/tint/api/common/override_id.h"
-#include "src/tint/api/options/array_length_from_uniform.h"
#if TINT_BUILD_GLSL_WRITER
#include "src/tint/lang/glsl/writer/writer.h" // nogncheck
diff --git a/src/tint/cmd/common/helper.cc b/src/tint/cmd/common/helper.cc
index 2e9ce37..a1fbaf0 100644
--- a/src/tint/cmd/common/helper.cc
+++ b/src/tint/cmd/common/helper.cc
@@ -269,9 +269,13 @@
PrintWGSL(std::cout, info.program);
}
- auto printer = tint::StyledTextPrinter::Create(stderr);
tint::diag::Formatter formatter;
- printer->Print(formatter.Format(info.program.Diagnostics()));
+ if (opts.printer) {
+ opts.printer->Print(formatter.Format(info.program.Diagnostics()));
+ } else {
+ tint::StyledTextPrinter::Create(stderr)->Print(
+ formatter.Format(info.program.Diagnostics()));
+ }
}
if (!info.program.IsValid()) {
diff --git a/src/tint/cmd/common/helper.h b/src/tint/cmd/common/helper.h
index 04e6961..dbc8e38 100644
--- a/src/tint/cmd/common/helper.h
+++ b/src/tint/cmd/common/helper.h
@@ -82,6 +82,8 @@
bool use_ir = false;
tint::spirv::reader::Options spirv_reader_options;
#endif
+ /// The text printer to use for output
+ StyledTextPrinter* printer = nullptr;
};
/// Loads the source and program information for the given file.
diff --git a/src/tint/cmd/loopy/main.cc b/src/tint/cmd/loopy/main.cc
index 89bbcb3..7703f7a 100644
--- a/src/tint/cmd/loopy/main.cc
+++ b/src/tint/cmd/loopy/main.cc
@@ -261,7 +261,7 @@
tint::msl::writer::Options gen_options;
gen_options.bindings = tint::msl::writer::GenerateBindings(program);
- gen_options.array_length_from_uniform.ubo_binding = tint::BindingPoint{0, 30};
+ gen_options.array_length_from_uniform.ubo_binding = 30;
gen_options.array_length_from_uniform.bindpoint_to_size_index.emplace(tint::BindingPoint{0, 0},
0);
gen_options.array_length_from_uniform.bindpoint_to_size_index.emplace(tint::BindingPoint{0, 1},
diff --git a/src/tint/cmd/tint/BUILD.bazel b/src/tint/cmd/tint/BUILD.bazel
index d77264b..bdba7b0 100644
--- a/src/tint/cmd/tint/BUILD.bazel
+++ b/src/tint/cmd/tint/BUILD.bazel
@@ -76,6 +76,7 @@
"//src/tint/utils/rtti",
"//src/tint/utils/strconv",
"//src/tint/utils/symbol",
+ "//src/tint/utils/system",
"//src/tint/utils/text",
"//src/tint/utils/traits",
] + select({
diff --git a/src/tint/cmd/tint/BUILD.cmake b/src/tint/cmd/tint/BUILD.cmake
index f354d49..8ed82d1 100644
--- a/src/tint/cmd/tint/BUILD.cmake
+++ b/src/tint/cmd/tint/BUILD.cmake
@@ -77,6 +77,7 @@
tint_utils_rtti
tint_utils_strconv
tint_utils_symbol
+ tint_utils_system
tint_utils_text
tint_utils_traits
)
diff --git a/src/tint/cmd/tint/BUILD.gn b/src/tint/cmd/tint/BUILD.gn
index e51fbf4..7f3584f 100644
--- a/src/tint/cmd/tint/BUILD.gn
+++ b/src/tint/cmd/tint/BUILD.gn
@@ -76,6 +76,7 @@
"${tint_src_dir}/utils/rtti",
"${tint_src_dir}/utils/strconv",
"${tint_src_dir}/utils/symbol",
+ "${tint_src_dir}/utils/system",
"${tint_src_dir}/utils/text",
"${tint_src_dir}/utils/traits",
]
diff --git a/src/tint/cmd/tint/main.cc b/src/tint/cmd/tint/main.cc
index 947355e..5a11673 100644
--- a/src/tint/cmd/tint/main.cc
+++ b/src/tint/cmd/tint/main.cc
@@ -57,6 +57,8 @@
#include "src/tint/utils/containers/transform.h"
#include "src/tint/utils/diagnostic/formatter.h"
#include "src/tint/utils/macros/defer.h"
+#include "src/tint/utils/system/env.h"
+#include "src/tint/utils/system/terminal.h"
#include "src/tint/utils/text/string.h"
#include "src/tint/utils/text/string_stream.h"
#include "src/tint/utils/text/styled_text.h"
@@ -151,9 +153,14 @@
constexpr uint32_t kMinShaderModelForPackUnpack4x8InHLSL = 66u;
#endif // TINT_BUILD_HLSL_WRITER
+/// An enumerator of color-output modes
+enum class ColorMode { kPlain, kDark, kLight };
+
struct Options {
bool verbose = false;
+ std::unique_ptr<tint::StyledTextPrinter> printer;
+
std::string input_filename;
std::string output_file = "-"; // Default to stdout
@@ -209,9 +216,38 @@
#endif // TINT_BUILD_SYNTAX_TREE_WRITER
};
+/// @returns the default ColorMode when no `--color` flag is specified.
+ColorMode ColorModeDefault() {
+ if (!tint::TerminalSupportsColors(stdout)) {
+ return ColorMode::kPlain;
+ }
+ if (auto res = tint::TerminalIsDark(stdout)) {
+ return *res ? ColorMode::kDark : ColorMode::kLight;
+ }
+ if (auto env = tint::GetEnvVar("DARK_BACKGROUND_COLOR"); !env.empty()) {
+ return env != "0" ? ColorMode::kDark : ColorMode::kLight;
+ }
+ if (auto env = tint::GetEnvVar("LIGHT_BACKGROUND_COLOR"); !env.empty()) {
+ return env != "0" ? ColorMode::kLight : ColorMode::kDark;
+ }
+ return ColorMode::kDark;
+}
+
+std::unique_ptr<tint::StyledTextPrinter> CreatePrinter(ColorMode mode) {
+ switch (mode) {
+ case ColorMode::kLight:
+ return tint::StyledTextPrinter::Create(stderr, tint::StyledTextTheme::kDefaultLight);
+ case ColorMode::kDark:
+ return tint::StyledTextPrinter::Create(stderr, tint::StyledTextTheme::kDefaultDark);
+ case ColorMode::kPlain:
+ break;
+ }
+ return tint::StyledTextPrinter::CreatePlain(stderr);
+}
+
/// @param filename the filename to inspect
/// @returns the inferred format for the filename suffix
-Format infer_format(const std::string& filename) {
+Format InferFormat(const std::string& filename) {
(void)filename;
#if TINT_BUILD_SPV_WRITER
@@ -272,6 +308,15 @@
format_enum_names, ShortName{"f"});
TINT_DEFER(opts->format = fmt.value.value_or(Format::kUnknown));
+ auto& col = options.Add<EnumOption<ColorMode>>("color", "Use colored output",
+ tint::Vector{
+ EnumName{ColorMode::kPlain, "off"},
+ EnumName{ColorMode::kDark, "dark"},
+ EnumName{ColorMode::kLight, "light"},
+ },
+ ShortName{"col"}, Default{ColorModeDefault()});
+ TINT_DEFER(opts->printer = CreatePrinter(*col.value));
+
auto& ep = options.Add<StringOption>("entry-point", "Output single entry point",
ShortName{"ep"}, Parameter{"name"});
TINT_DEFER({
@@ -790,9 +835,8 @@
auto source = std::make_unique<tint::Source::File>(options.input_filename, result->wgsl);
auto reparsed_program = tint::wgsl::reader::Parse(source.get(), parser_options);
if (!reparsed_program.IsValid()) {
- auto printer = tint::StyledTextPrinter::Create(stderr);
tint::diag::Formatter diag_formatter;
- printer->Print(diag_formatter.Format(reparsed_program.Diagnostics()));
+ options.printer->Print(diag_formatter.Format(reparsed_program.Diagnostics()));
return false;
}
}
@@ -829,7 +873,7 @@
gen_options.disable_workgroup_init = options.disable_workgroup_init;
gen_options.pixel_local_options = options.pixel_local_options;
gen_options.bindings = tint::msl::writer::GenerateBindings(*input_program);
- gen_options.array_length_from_uniform.ubo_binding = tint::BindingPoint{0, 30};
+ gen_options.array_length_from_uniform.ubo_binding = 30;
// Add array_length_from_uniform entries for all storage buffers with runtime sized arrays.
std::unordered_set<tint::BindingPoint> storage_bindings;
@@ -1255,7 +1299,7 @@
// Implement output format defaults.
if (options.format == Format::kUnknown) {
// Try inferring from filename.
- options.format = infer_format(options.output_file);
+ options.format = InferFormat(options.output_file);
}
if (options.format == Format::kUnknown) {
// Ultimately, default to SPIR-V assembly. That's nice for interactive use.
@@ -1264,6 +1308,7 @@
tint::cmd::LoadProgramOptions opts;
opts.filename = options.input_filename;
+ opts.printer = options.printer.get();
#if TINT_BUILD_SPV_READER
opts.use_ir = options.use_ir_reader;
opts.spirv_reader_options = options.spirv_reader_options;
diff --git a/src/tint/lang/core/constant/eval_binary_op_test.cc b/src/tint/lang/core/constant/eval_binary_op_test.cc
index 7859908..fd4d890 100644
--- a/src/tint/lang/core/constant/eval_binary_op_test.cc
+++ b/src/tint/lang/core/constant/eval_binary_op_test.cc
@@ -1511,8 +1511,8 @@
EXPECT_EQ(r()->error(), R"(12:34 error: no matching overload for 'operator ! (abstract-int)'
2 candidate operators:
- 'operator ! (bool) -> bool'
- 'operator ! (vecN<bool>) -> vecN<bool>'
+ • 'operator ! (bool ✗ ) -> bool'
+ • 'operator ! (vecN<bool> ✗ ) -> vecN<bool>'
)");
}
@@ -1528,8 +1528,8 @@
EXPECT_EQ(r()->error(), R"(12:34 error: no matching overload for 'operator ! (abstract-int)'
2 candidate operators:
- 'operator ! (bool) -> bool'
- 'operator ! (vecN<bool>) -> vecN<bool>'
+ • 'operator ! (bool ✗ ) -> bool'
+ • 'operator ! (vecN<bool> ✗ ) -> vecN<bool>'
)");
}
@@ -1577,7 +1577,7 @@
R"(12:34 error: no matching overload for 'operator && (bool, abstract-int)'
1 candidate operator:
- 'operator && (bool, bool) -> bool'
+ • 'operator && (bool ✓ , bool ✗ ) -> bool'
)");
}
@@ -1621,7 +1621,7 @@
R"(12:34 error: no matching overload for 'operator || (bool, abstract-int)'
1 candidate operator:
- 'operator || (bool, bool) -> bool'
+ • 'operator || (bool ✓ , bool ✗ ) -> bool'
)");
}
@@ -1675,8 +1675,10 @@
R"(12:34 error: no matching overload for 'operator == (abstract-float, i32)'
2 candidate operators:
- 'operator == (T, T) -> bool' where: 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
- 'operator == (vecN<T>, vecN<T>) -> vecN<bool>' where: 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'operator == (T ✓ , T ✗ ) -> bool' where:
+ ✓ 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'operator == (vecN<T> ✗ , vecN<T> ✗ ) -> vecN<bool>' where:
+ ✗ 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
)");
}
@@ -1726,8 +1728,10 @@
R"(12:34 error: no matching overload for 'operator == (abstract-float, i32)'
2 candidate operators:
- 'operator == (T, T) -> bool' where: 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
- 'operator == (vecN<T>, vecN<T>) -> vecN<bool>' where: 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'operator == (T ✓ , T ✗ ) -> bool' where:
+ ✓ 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'operator == (vecN<T> ✗ , vecN<T> ✗ ) -> vecN<bool>' where:
+ ✗ 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
)");
}
@@ -1787,8 +1791,10 @@
R"(12:34 error: no matching overload for 'operator == (i32, f32)'
2 candidate operators:
- 'operator == (T, T) -> bool' where: 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
- 'operator == (vecN<T>, vecN<T>) -> vecN<bool>' where: 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'operator == (T ✓ , T ✗ ) -> bool' where:
+ ✓ 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'operator == (vecN<T> ✗ , vecN<T> ✗ ) -> vecN<bool>' where:
+ ✗ 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
)");
}
@@ -1844,8 +1850,10 @@
R"(12:34 error: no matching overload for 'operator == (i32, f32)'
2 candidate operators:
- 'operator == (T, T) -> bool' where: 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
- 'operator == (vecN<T>, vecN<T>) -> vecN<bool>' where: 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'operator == (T ✓ , T ✗ ) -> bool' where:
+ ✓ 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'operator == (vecN<T> ✗ , vecN<T> ✗ ) -> vecN<bool>' where:
+ ✗ 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
)");
}
@@ -1898,8 +1906,10 @@
EXPECT_EQ(r()->error(), R"(12:34 error: no matching overload for 'operator == (f32, i32)'
2 candidate operators:
- 'operator == (T, T) -> bool' where: 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
- 'operator == (vecN<T>, vecN<T>) -> vecN<bool>' where: 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'operator == (T ✓ , T ✗ ) -> bool' where:
+ ✓ 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'operator == (vecN<T> ✗ , vecN<T> ✗ ) -> vecN<bool>' where:
+ ✗ 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
)");
}
@@ -1948,8 +1958,10 @@
EXPECT_EQ(r()->error(), R"(12:34 error: no matching overload for 'operator == (f32, i32)'
2 candidate operators:
- 'operator == (T, T) -> bool' where: 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
- 'operator == (vecN<T>, vecN<T>) -> vecN<bool>' where: 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'operator == (T ✓ , T ✗ ) -> bool' where:
+ ✓ 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'operator == (vecN<T> ✗ , vecN<T> ✗ ) -> vecN<bool>' where:
+ ✗ 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
)");
}
@@ -1974,21 +1986,40 @@
R"(12:34 error: no matching constructor for 'vec2<f32>(abstract-float, bool)'
8 candidate constructors:
- 'vec2<T>(x: T, y: T) -> vec2<T>' where: 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
- 'vec2<T>(T) -> vec2<T>' where: 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
- 'vec2(T) -> vec2<T>' where: 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
- 'vec2<T>(vec2<T>) -> vec2<T>' where: 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
- 'vec2(vec2<T>) -> vec2<T>' where: 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
- 'vec2() -> vec2<abstract-int>'
- 'vec2<T>() -> vec2<T>' where: 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
- 'vec2(x: T, y: T) -> vec2<T>' where: 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'vec2<T ✓ >(x: T ✓ , y: T ✗ ) -> vec2<T>' where:
+ ✓ 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'vec2<T ✓ >(T ✓ ) -> vec2<T>' where:
+ ✓ 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'vec2<T ✓ >(vec2<T> ✗ ) -> vec2<T>' where:
+ ✓ 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'vec2<T ✓ >() -> vec2<T>' where:
+ ✓ 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'vec2(x: T ✓ , y: T ✗ ) -> vec2<T>' where:
+ ✓ 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'vec2(T ✓ ) -> vec2<T>' where:
+ ✗ overload expects 0 template arguments
+ ✓ 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'vec2() -> vec2<abstract-int>' where:
+ ✗ overload expects 0 template arguments
+ • 'vec2(vec2<T> ✗ ) -> vec2<T>' where:
+ ✗ 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
5 candidate conversions:
- 'vec2<T>(vec2<U>) -> vec2<T>' where: 'T' is 'f32', 'U' is 'abstract-int', 'abstract-float', 'i32', 'f16', 'u32' or 'bool'
- 'vec2<T>(vec2<U>) -> vec2<T>' where: 'T' is 'f16', 'U' is 'abstract-int', 'abstract-float', 'f32', 'i32', 'u32' or 'bool'
- 'vec2<T>(vec2<U>) -> vec2<T>' where: 'T' is 'i32', 'U' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'u32' or 'bool'
- 'vec2<T>(vec2<U>) -> vec2<T>' where: 'T' is 'u32', 'U' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32' or 'bool'
- 'vec2<T>(vec2<U>) -> vec2<T>' where: 'T' is 'bool', 'U' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32' or 'u32'
+ • 'vec2<T ✓ >(vec2<U> ✗ ) -> vec2<T>' where:
+ ✓ 'T' is 'f32'
+ ✗ 'U' is 'abstract-int', 'abstract-float', 'i32', 'f16', 'u32' or 'bool'
+ • 'vec2<T ✗ >(vec2<U> ✗ ) -> vec2<T>' where:
+ ✗ 'T' is 'f16'
+ ✗ 'U' is 'abstract-int', 'abstract-float', 'f32', 'i32', 'u32' or 'bool'
+ • 'vec2<T ✗ >(vec2<U> ✗ ) -> vec2<T>' where:
+ ✗ 'T' is 'i32'
+ ✗ 'U' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'u32' or 'bool'
+ • 'vec2<T ✗ >(vec2<U> ✗ ) -> vec2<T>' where:
+ ✗ 'T' is 'u32'
+ ✗ 'U' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32' or 'bool'
+ • 'vec2<T ✗ >(vec2<U> ✗ ) -> vec2<T>' where:
+ ✗ 'T' is 'bool'
+ ✗ 'U' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32' or 'u32'
)");
}
@@ -2006,21 +2037,40 @@
R"(12:34 error: no matching constructor for 'vec2<f32>(abstract-float, bool)'
8 candidate constructors:
- 'vec2<T>(x: T, y: T) -> vec2<T>' where: 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
- 'vec2<T>(T) -> vec2<T>' where: 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
- 'vec2(T) -> vec2<T>' where: 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
- 'vec2<T>(vec2<T>) -> vec2<T>' where: 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
- 'vec2(vec2<T>) -> vec2<T>' where: 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
- 'vec2() -> vec2<abstract-int>'
- 'vec2<T>() -> vec2<T>' where: 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
- 'vec2(x: T, y: T) -> vec2<T>' where: 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'vec2<T ✓ >(x: T ✓ , y: T ✗ ) -> vec2<T>' where:
+ ✓ 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'vec2<T ✓ >(T ✓ ) -> vec2<T>' where:
+ ✓ 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'vec2<T ✓ >(vec2<T> ✗ ) -> vec2<T>' where:
+ ✓ 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'vec2<T ✓ >() -> vec2<T>' where:
+ ✓ 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'vec2(x: T ✓ , y: T ✗ ) -> vec2<T>' where:
+ ✓ 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'vec2(T ✓ ) -> vec2<T>' where:
+ ✗ overload expects 0 template arguments
+ ✓ 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'vec2() -> vec2<abstract-int>' where:
+ ✗ overload expects 0 template arguments
+ • 'vec2(vec2<T> ✗ ) -> vec2<T>' where:
+ ✗ 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
5 candidate conversions:
- 'vec2<T>(vec2<U>) -> vec2<T>' where: 'T' is 'f32', 'U' is 'abstract-int', 'abstract-float', 'i32', 'f16', 'u32' or 'bool'
- 'vec2<T>(vec2<U>) -> vec2<T>' where: 'T' is 'f16', 'U' is 'abstract-int', 'abstract-float', 'f32', 'i32', 'u32' or 'bool'
- 'vec2<T>(vec2<U>) -> vec2<T>' where: 'T' is 'i32', 'U' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'u32' or 'bool'
- 'vec2<T>(vec2<U>) -> vec2<T>' where: 'T' is 'u32', 'U' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32' or 'bool'
- 'vec2<T>(vec2<U>) -> vec2<T>' where: 'T' is 'bool', 'U' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32' or 'u32'
+ • 'vec2<T ✓ >(vec2<U> ✗ ) -> vec2<T>' where:
+ ✓ 'T' is 'f32'
+ ✗ 'U' is 'abstract-int', 'abstract-float', 'i32', 'f16', 'u32' or 'bool'
+ • 'vec2<T ✗ >(vec2<U> ✗ ) -> vec2<T>' where:
+ ✗ 'T' is 'f16'
+ ✗ 'U' is 'abstract-int', 'abstract-float', 'f32', 'i32', 'u32' or 'bool'
+ • 'vec2<T ✗ >(vec2<U> ✗ ) -> vec2<T>' where:
+ ✗ 'T' is 'i32'
+ ✗ 'U' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'u32' or 'bool'
+ • 'vec2<T ✗ >(vec2<U> ✗ ) -> vec2<T>' where:
+ ✗ 'T' is 'u32'
+ ✗ 'U' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32' or 'bool'
+ • 'vec2<T ✗ >(vec2<U> ✗ ) -> vec2<T>' where:
+ ✗ 'T' is 'bool'
+ ✗ 'U' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32' or 'u32'
)");
}
@@ -2083,8 +2133,10 @@
R"(error: no matching overload for 'operator == (array<abstract-int, 1>, abstract-int)'
2 candidate operators:
- 'operator == (T, T) -> bool' where: 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
- 'operator == (vecN<T>, vecN<T>) -> vecN<bool>' where: 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'operator == (T ✗ , T ✗ ) -> bool' where:
+ ✗ 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'operator == (vecN<T> ✗ , vecN<T> ✗ ) -> vecN<bool>' where:
+ ✗ 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
)");
}
@@ -2102,8 +2154,10 @@
R"(error: no matching overload for 'operator == (array<abstract-int, 1>, abstract-int)'
2 candidate operators:
- 'operator == (T, T) -> bool' where: 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
- 'operator == (vecN<T>, vecN<T>) -> vecN<bool>' where: 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'operator == (T ✗ , T ✗ ) -> bool' where:
+ ✗ 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'operator == (vecN<T> ✗ , vecN<T> ✗ ) -> vecN<bool>' where:
+ ✗ 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
)");
}
@@ -2152,8 +2206,10 @@
R"(12:34 error: no matching overload for 'operator == (i32, abstract-float)'
2 candidate operators:
- 'operator == (T, T) -> bool' where: 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
- 'operator == (vecN<T>, vecN<T>) -> vecN<bool>' where: 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'operator == (T ✓ , T ✗ ) -> bool' where:
+ ✓ 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'operator == (vecN<T> ✗ , vecN<T> ✗ ) -> vecN<bool>' where:
+ ✗ 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
)");
}
@@ -2198,8 +2254,10 @@
R"(12:34 error: no matching overload for 'operator == (i32, abstract-float)'
2 candidate operators:
- 'operator == (T, T) -> bool' where: 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
- 'operator == (vecN<T>, vecN<T>) -> vecN<bool>' where: 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'operator == (T ✓ , T ✗ ) -> bool' where:
+ ✓ 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'operator == (vecN<T> ✗ , vecN<T> ✗ ) -> vecN<bool>' where:
+ ✗ 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
)");
}
diff --git a/src/tint/lang/core/intrinsic/table.cc b/src/tint/lang/core/intrinsic/table.cc
index 1a9dae9..8c986d2 100644
--- a/src/tint/lang/core/intrinsic/table.cc
+++ b/src/tint/lang/core/intrinsic/table.cc
@@ -34,8 +34,10 @@
#include "src/tint/lang/core/evaluation_stage.h"
#include "src/tint/lang/core/intrinsic/table_data.h"
+#include "src/tint/lang/core/type/invalid.h"
#include "src/tint/lang/core/type/manager.h"
#include "src/tint/lang/core/type/void.h"
+#include "src/tint/utils/containers/slice.h"
#include "src/tint/utils/ice/ice.h"
#include "src/tint/utils/macros/defer.h"
#include "src/tint/utils/text/string_stream.h"
@@ -65,26 +67,11 @@
namespace {
/// The Vector `N` template argument value for arrays of parameters.
-constexpr const size_t kNumFixedParams = decltype(Overload{}.parameters)::static_length;
+constexpr const size_t kNumFixedParameters = Overload::kNumFixedParameters;
/// The Vector `N` template argument value for arrays of overload candidates.
constexpr const size_t kNumFixedCandidates = 8;
-/// Candidate holds information about an overload evaluated for resolution.
-struct Candidate {
- /// The match-score of the candidate overload.
- /// A score of zero indicates an exact match.
- /// Non-zero scores are used for diagnostics when no overload matches.
- /// Lower scores are displayed first (top-most).
- size_t score = 0;
- /// The candidate overload
- const OverloadInfo* overload = nullptr;
- /// The template types and numbers
- TemplateState templates{};
- /// The parameter types for the candidate overload
- Vector<Overload::Parameter, kNumFixedParams> parameters{};
-};
-
/// A list of candidates
using Candidates = Vector<Candidate, kNumFixedCandidates>;
@@ -181,7 +168,9 @@
void PrintCandidates(StyledText& err,
Context& context,
VectorRef<Candidate> candidates,
- std::string_view intrinsic_name);
+ std::string_view intrinsic_name,
+ VectorRef<const core::type::Type*> template_args,
+ VectorRef<const core::type::Type*> args);
/// Raises an ICE when no overload is a clear winner of overload resolution
StyledText ErrAmbiguousOverload(Context& context,
@@ -314,36 +303,33 @@
std::min(num_parameters, num_arguments)));
}
- if (score == 0) {
- // Check that all of the template arguments provided are actually expected by the overload.
- const size_t expected_templates = overload.num_explicit_templates;
- const size_t provided_templates = template_args.Length();
- if (provided_templates != expected_templates) {
- MATCH_FAILURE(kMismatchedExplicitTemplateCountPenalty *
- (std::max(expected_templates, provided_templates) -
- std::min(expected_templates, provided_templates)));
- }
+ // Check that all of the template arguments provided are actually expected by the overload.
+ const size_t expected_templates = overload.num_explicit_templates;
+ const size_t provided_templates = template_args.Length();
+ if (provided_templates != expected_templates) {
+ MATCH_FAILURE(kMismatchedExplicitTemplateCountPenalty *
+ (std::max(expected_templates, provided_templates) -
+ std::min(expected_templates, provided_templates)));
}
TemplateState templates;
- if (score == 0) {
- // Check that the explicit template arguments match the constraint if specified, otherwise
- // just set the template type.
- for (size_t i = 0; i < overload.num_explicit_templates; ++i) {
- auto& tmpl = context.data[overload.templates + i];
- auto* type = template_args[i];
- if (auto* matcher_indices = context.data[tmpl.matcher_indices]) {
- // Ensure type matches the template's matcher.
- type = Match(context, templates, overload, matcher_indices, earliest_eval_stage)
- .Type(type);
- if (!type) {
- MATCH_FAILURE(kMismatchedExplicitTemplateTypePenalty);
- continue;
- }
+ // Check that the explicit template arguments match the constraint if specified, otherwise
+ // just set the template type.
+ auto num_tmpl_args = std::min<size_t>(overload.num_explicit_templates, template_args.Length());
+ for (size_t i = 0; i < num_tmpl_args; ++i) {
+ auto& tmpl = context.data[overload.templates + i];
+ auto* type = template_args[i];
+ if (auto* matcher_indices = context.data[tmpl.matcher_indices]) {
+ // Ensure type matches the template's matcher.
+ type = Match(context, templates, overload, matcher_indices, earliest_eval_stage)
+ .Type(type);
+ if (!type) {
+ MATCH_FAILURE(kMismatchedExplicitTemplateTypePenalty);
+ continue;
}
- templates.SetType(i, type);
}
+ templates.SetType(i, type);
}
// Invoke the matchers for each parameter <-> argument pair.
@@ -364,64 +350,61 @@
}
}
- if (score == 0) {
- // Check each of the inferred types and numbers for the implicit templates match their
- // respective matcher.
- for (size_t i = overload.num_explicit_templates; i < overload.num_templates; i++) {
- auto& tmpl = context.data[overload.templates + i];
- auto* matcher_indices = context.data[tmpl.matcher_indices];
- if (!matcher_indices) {
- continue;
+ // Check each of the inferred types and numbers for the implicit templates match their
+ // respective matcher.
+ for (size_t i = overload.num_explicit_templates; i < overload.num_templates; i++) {
+ auto& tmpl = context.data[overload.templates + i];
+ auto* matcher_indices = context.data[tmpl.matcher_indices];
+ if (!matcher_indices) {
+ continue;
+ }
+
+ auto matcher = Match(context, templates, overload, matcher_indices, earliest_eval_stage);
+
+ switch (tmpl.kind) {
+ case TemplateInfo::Kind::kType: {
+ // Check all constrained template types matched their constraint matchers.
+ // If the template type *does not* match any of the types in the constraint
+ // matcher, then `score` is incremented and the template is assigned an invalid
+ // type. If the template type *does* match a type, then the template type is
+ // replaced with the first matching type. The order of types in the template matcher
+ // is important here, which can be controlled with the [[precedence(N)]] decorations
+ // on the types in the def file.
+ if (auto* type = templates.Type(i)) {
+ if (auto* ty = matcher.Type(type)) {
+ // Template type matched one of the types in the template type's
+ // matcher. Replace the template type with this type.
+ templates.SetType(i, ty);
+ continue;
+ }
+ }
+ templates.SetType(i, context.types.invalid());
+ MATCH_FAILURE(kMismatchedImplicitTemplateTypePenalty);
+ break;
}
- auto matcher =
- Match(context, templates, overload, matcher_indices, earliest_eval_stage);
-
- switch (tmpl.kind) {
- case TemplateInfo::Kind::kType: {
- // Check all constrained template types matched their constraint matchers.
- // If the template type *does not* match any of the types in the constraint
- // matcher, then `score` is incremented. If the template type *does* match a
- // type, then the template type is replaced with the first matching type.
- // The order of types in the template matcher is important here, which can
- // be controlled with the [[precedence(N)]] decorations on the types in the
- // def file.
- if (auto* type = templates.Type(i)) {
- if (auto* ty = matcher.Type(type)) {
- // Template type matched one of the types in the template type's
- // matcher. Replace the template type with this type.
- templates.SetType(i, ty);
- continue;
- }
- }
- MATCH_FAILURE(kMismatchedImplicitTemplateTypePenalty);
- break;
- }
-
- case TemplateInfo::Kind::kNumber: {
- // Checking that the inferred number matches the constraints on the
- // template. Increments `score` if the template numbers do not match their
- // constraint matchers.
- auto number = templates.Num(i);
- if (!number.IsValid() || !matcher.Num(number).IsValid()) {
- MATCH_FAILURE(kMismatchedImplicitTemplateNumberPenalty);
- }
+ case TemplateInfo::Kind::kNumber: {
+ // Checking that the inferred number matches the constraints on the
+ // template. Increments `score` and assigns the template an invalid number if the
+ // template numbers do not match their constraint matchers.
+ auto number = templates.Num(i);
+ if (!number.IsValid() || !matcher.Num(number).IsValid()) {
+ templates.SetNum(i, Number::invalid);
+ MATCH_FAILURE(kMismatchedImplicitTemplateNumberPenalty);
}
}
}
}
// Now that all the template types have been finalized, we can construct the parameters.
- Vector<Overload::Parameter, kNumFixedParams> parameters;
- if (score == 0) {
- parameters.Reserve(num_params);
- for (size_t p = 0; p < num_params; p++) {
- auto& parameter = context.data[overload.parameters + p];
- auto* matcher_indices = context.data[parameter.matcher_indices];
- auto* ty = Match(context, templates, overload, matcher_indices, earliest_eval_stage)
- .Type(args[p]);
- parameters.Emplace(ty, parameter.usage);
- }
+ Vector<Overload::Parameter, kNumFixedParameters> parameters;
+ parameters.Reserve(num_params);
+ for (size_t p = 0; p < num_params; p++) {
+ auto& parameter = context.data[overload.parameters + p];
+ auto* matcher_indices = context.data[parameter.matcher_indices];
+ auto* ty =
+ Match(context, templates, overload, matcher_indices, earliest_eval_stage).Type(args[p]);
+ parameters.Emplace(ty, parameter.usage);
}
return Candidate{score, &overload, templates, parameters};
@@ -433,7 +416,7 @@
std::string_view intrinsic_name,
VectorRef<const core::type::Type*> template_args,
VectorRef<const core::type::Type*> args) {
- Vector<uint32_t, kNumFixedParams> best_ranks;
+ Vector<uint32_t, kNumFixedParameters> best_ranks;
best_ranks.Resize(args.Length(), 0xffffffff);
size_t num_matched = 0;
Candidate* best = nullptr;
@@ -505,10 +488,12 @@
void PrintCandidates(StyledText& ss,
Context& context,
VectorRef<Candidate> candidates,
- std::string_view intrinsic_name) {
+ std::string_view intrinsic_name,
+ VectorRef<const core::type::Type*> template_args,
+ VectorRef<const core::type::Type*> args) {
for (auto& candidate : candidates) {
- ss << " ";
- PrintOverload(ss, context, *candidate.overload, intrinsic_name);
+ ss << " • ";
+ PrintCandidate(ss, context, candidate, intrinsic_name, template_args, args);
ss << "\n";
}
}
@@ -525,7 +510,7 @@
for (auto& candidate : candidates) {
if (candidate.score == 0) {
err << " ";
- PrintOverload(err, context, *candidate.overload, intrinsic_name);
+ PrintCandidate(err, context, candidate, intrinsic_name, template_args, args);
err << "\n";
}
}
@@ -535,15 +520,19 @@
} // namespace
-void PrintOverload(StyledText& ss,
- Context& context,
- const OverloadInfo& overload,
- std::string_view intrinsic_name) {
+void PrintCandidate(StyledText& ss,
+ Context& context,
+ const Candidate& candidate,
+ std::string_view intrinsic_name,
+ VectorRef<const core::type::Type*> template_args,
+ VectorRef<const core::type::Type*> args) {
// Restore old style before returning.
auto prev_style = ss.Style();
TINT_DEFER(ss << prev_style);
- TemplateState templates;
+ auto& overload = *candidate.overload;
+
+ TemplateState templates = candidate.templates;
// TODO(crbug.com/tint/1730): Use input evaluation stage to output only relevant overloads.
auto earliest_eval_stage = EvaluationStage::kConstant;
@@ -553,24 +542,57 @@
if (overload.num_explicit_templates > 0) {
ss << "<";
for (size_t i = 0; i < overload.num_explicit_templates; i++) {
+ const auto& tmpl = context.data[overload.templates + i];
+
+ bool matched = false;
+ if (i < template_args.Length()) {
+ auto* matcher_indices = context.data[tmpl.matcher_indices];
+ matched = !matcher_indices ||
+ Match(context, templates, overload, matcher_indices, earliest_eval_stage)
+ .Type(template_args[i]);
+ }
+
if (i > 0) {
ss << ", ";
}
- ss << style::Type(context.data[overload.templates + i].name);
+ ss << style::Type(tmpl.name) << " ";
+ if (matched) {
+ ss << (style::Code + style::Match)(" ✓ ");
+ } else {
+ ss << (style::Code + style::Mismatch)(" ✗ ");
+ }
}
ss << ">";
}
+
+ bool all_params_match = true;
ss << "(";
- for (size_t p = 0; p < overload.num_parameters; p++) {
- auto& parameter = context.data[overload.parameters + p];
- if (p > 0) {
+ for (size_t i = 0; i < overload.num_parameters; i++) {
+ const auto& parameter = context.data[overload.parameters + i];
+ auto* matcher_indices = context.data[parameter.matcher_indices];
+
+ bool matched = false;
+ if (i < args.Length()) {
+ matched = Match(context, templates, overload, matcher_indices, earliest_eval_stage)
+ .Type(args[i]);
+ }
+ all_params_match = all_params_match && matched;
+
+ if (i > 0) {
ss << ", ";
}
+
if (parameter.usage != ParameterUsage::kNone) {
ss << style::Variable(parameter.usage, ": ");
}
- auto* matcher_indices = context.data[parameter.matcher_indices];
Match(context, templates, overload, matcher_indices, earliest_eval_stage).PrintType(ss);
+
+ ss << style::Code << " ";
+ if (matched) {
+ ss << (style::Code + style::Match)(" ✓ ");
+ } else {
+ ss << (style::Code + style::Mismatch)(" ✗ ");
+ }
}
ss << ")";
if (overload.return_matcher_indices.IsValid()) {
@@ -581,22 +603,46 @@
bool first = true;
auto separator = [&] {
- ss << style::Plain(first ? " where: " : ", ");
+ ss << style::Plain(first ? " where:\n " : "\n ");
first = false;
};
+ if (all_params_match && template_args.Length() > overload.num_explicit_templates) {
+ separator();
+ ss << style::Mismatch(" ✗ ")
+ << style::Plain(" overload expects ", static_cast<int>(overload.num_explicit_templates),
+ " template argument", overload.num_explicit_templates != 1 ? "s" : "");
+ }
+
for (size_t i = 0; i < overload.num_templates; i++) {
auto& tmpl = context.data[overload.templates + i];
if (auto* matcher_indices = context.data[tmpl.matcher_indices]) {
- auto matcher =
- Match(context, templates, overload, matcher_indices, earliest_eval_stage);
-
separator();
+ bool matched = false;
+ if (tmpl.kind == TemplateInfo::Kind::kType) {
+ if (auto* ty = templates.Type(i)) {
+ matched =
+ Match(context, templates, overload, matcher_indices, earliest_eval_stage)
+ .Type(ty);
+ }
+ } else {
+ matched = Match(context, templates, overload, matcher_indices, earliest_eval_stage)
+ .Num(templates.Num(i))
+ .IsValid();
+ }
+ if (matched) {
+ ss << style::Match(" ✓ ") << style::Plain(" ");
+ } else {
+ ss << style::Mismatch(" ✗ ") << style::Plain(" ");
+ }
+
ss << style::Type(tmpl.name) << style::Plain(" is ");
if (tmpl.kind == TemplateInfo::Kind::kType) {
- matcher.PrintType(ss);
+ Match(context, templates, overload, matcher_indices, earliest_eval_stage)
+ .PrintType(ss);
} else {
- matcher.PrintNum(ss);
+ Match(context, templates, overload, matcher_indices, earliest_eval_stage)
+ .PrintNum(ss);
}
}
}
@@ -616,7 +662,7 @@
err << "\n"
<< candidates.Length() << " candidate function"
<< (candidates.Length() > 1 ? "s:" : ":") << "\n";
- PrintCandidates(err, context, candidates, intrinsic_name);
+ PrintCandidates(err, context, candidates, intrinsic_name, template_args, args);
}
return err;
};
@@ -665,7 +711,7 @@
err << "\n"
<< candidates.Length() << " candidate operator"
<< (candidates.Length() > 1 ? "s:" : ":") << "\n";
- PrintCandidates(err, context, candidates, name);
+ PrintCandidates(err, context, candidates, name, Empty, Vector{arg});
}
return err;
};
@@ -768,7 +814,7 @@
err << "\n"
<< candidates.Length() << " candidate operator"
<< (candidates.Length() > 1 ? "s:" : ":") << "\n";
- PrintCandidates(err, context, candidates, name);
+ PrintCandidates(err, context, candidates, name, Empty, args);
}
return err;
};
@@ -801,13 +847,13 @@
err << "\n"
<< ctor.Length() << " candidate constructor" << (ctor.Length() > 1 ? "s:" : ":")
<< "\n";
- PrintCandidates(err, context, ctor, type_name);
+ PrintCandidates(err, context, ctor, type_name, template_args, args);
}
if (!conv.IsEmpty()) {
err << "\n"
<< conv.Length() << " candidate conversion" << (conv.Length() > 1 ? "s:" : ":")
<< "\n";
- PrintCandidates(err, context, conv, type_name);
+ PrintCandidates(err, context, conv, type_name, template_args, args);
}
return err;
};
diff --git a/src/tint/lang/core/intrinsic/table.h b/src/tint/lang/core/intrinsic/table.h
index 56f590a..9594c34 100644
--- a/src/tint/lang/core/intrinsic/table.h
+++ b/src/tint/lang/core/intrinsic/table.h
@@ -52,6 +52,8 @@
/// Overload describes a fully matched builtin function overload
struct Overload {
+ static constexpr size_t kNumFixedParameters = 8;
+
/// Parameter describes a single parameter
struct Parameter {
/// Parameter type
@@ -79,7 +81,7 @@
core::type::Type const* return_type = nullptr;
/// The resolved overload parameters
- Vector<Parameter, 8> parameters;
+ Vector<Parameter, kNumFixedParameters> parameters;
/// The constant evaluation function
constant::Eval::Function const_eval_fn = nullptr;
@@ -108,11 +110,28 @@
SymbolTable& symbols;
};
-// Prints the overload for emitting diagnostics
-void PrintOverload(StyledText& ss,
- Context& context,
- const OverloadInfo& overload,
- std::string_view intrinsic_name);
+/// Candidate holds information about an overload evaluated for resolution.
+struct Candidate {
+ /// The match-score of the candidate overload.
+ /// A score of zero indicates an exact match.
+ /// Non-zero scores are used for diagnostics when no overload matches.
+ /// Lower scores are displayed first (top-most).
+ size_t score = 0;
+ /// The candidate overload
+ const OverloadInfo* overload = nullptr;
+ /// The template types and numbers
+ TemplateState templates{};
+ /// The parameter types for the candidate overload
+ Vector<Overload::Parameter, Overload::kNumFixedParameters> parameters{};
+};
+
+// Prints the candidate overload for emitting diagnostics
+void PrintCandidate(StyledText& ss,
+ Context& context,
+ const Candidate& candidate,
+ std::string_view intrinsic_name,
+ VectorRef<const core::type::Type*> template_args,
+ VectorRef<const core::type::Type*> args);
/// Lookup looks for the builtin overload with the given signature, raising an error diagnostic
/// if the builtin was not found.
diff --git a/src/tint/lang/core/intrinsic/table_data.h b/src/tint/lang/core/intrinsic/table_data.h
index b5496a2..30fae36 100644
--- a/src/tint/lang/core/intrinsic/table_data.h
+++ b/src/tint/lang/core/intrinsic/table_data.h
@@ -311,10 +311,10 @@
/// @returns true on match or newly defined
bool Num(size_t idx, Number number) {
if (idx >= numbers_.Length()) {
- numbers_.Resize(idx + 1, Number::invalid);
+ numbers_.Resize(idx + 1, Number::any);
}
auto& n = numbers_[idx];
- if (!n.IsValid()) {
+ if (n.IsAny()) {
n = number.Value();
return true;
}
@@ -350,6 +350,16 @@
return numbers_[idx];
}
+ /// SetNum replaces the template number with index @p idx with number @p num.
+ /// @param idx the index of the template number
+ /// @param num the new number for the template
+ void SetNum(size_t idx, Number num) {
+ if (idx >= numbers_.Length()) {
+ numbers_.Resize(idx + 1, Number::any);
+ }
+ numbers_[idx] = num;
+ }
+
/// @return the total number of type and number templates
size_t Count() const { return types_.Length() + numbers_.Length(); }
diff --git a/src/tint/lang/core/intrinsic/table_test.cc b/src/tint/lang/core/intrinsic/table_test.cc
index 52b25f4..31fbc13 100644
--- a/src/tint/lang/core/intrinsic/table_test.cc
+++ b/src/tint/lang/core/intrinsic/table_test.cc
@@ -528,33 +528,56 @@
R"(no matching call to 'textureDimensions(bool, bool)'
27 candidate functions:
- 'textureDimensions(texture: texture_1d<T>, level: L) -> u32' where: 'T' is 'f32', 'i32' or 'u32', 'L' is 'i32' or 'u32'
- 'textureDimensions(texture: texture_2d<T>, level: L) -> vec2<u32>' where: 'T' is 'f32', 'i32' or 'u32', 'L' is 'i32' or 'u32'
- 'textureDimensions(texture: texture_2d_array<T>, level: L) -> vec2<u32>' where: 'T' is 'f32', 'i32' or 'u32', 'L' is 'i32' or 'u32'
- 'textureDimensions(texture: texture_3d<T>, level: L) -> vec3<u32>' where: 'T' is 'f32', 'i32' or 'u32', 'L' is 'i32' or 'u32'
- 'textureDimensions(texture: texture_cube<T>, level: L) -> vec2<u32>' where: 'T' is 'f32', 'i32' or 'u32', 'L' is 'i32' or 'u32'
- 'textureDimensions(texture: texture_cube_array<T>, level: L) -> vec2<u32>' where: 'T' is 'f32', 'i32' or 'u32', 'L' is 'i32' or 'u32'
- 'textureDimensions(texture: texture_depth_2d, level: L) -> vec2<u32>' where: 'L' is 'i32' or 'u32'
- 'textureDimensions(texture: texture_depth_2d_array, level: L) -> vec2<u32>' where: 'L' is 'i32' or 'u32'
- 'textureDimensions(texture: texture_depth_cube, level: L) -> vec2<u32>' where: 'L' is 'i32' or 'u32'
- 'textureDimensions(texture: texture_depth_cube_array, level: L) -> vec2<u32>' where: 'L' is 'i32' or 'u32'
- 'textureDimensions(texture: texture_1d<T>) -> u32' where: 'T' is 'f32', 'i32' or 'u32'
- 'textureDimensions(texture: texture_2d<T>) -> vec2<u32>' where: 'T' is 'f32', 'i32' or 'u32'
- 'textureDimensions(texture: texture_2d_array<T>) -> vec2<u32>' where: 'T' is 'f32', 'i32' or 'u32'
- 'textureDimensions(texture: texture_3d<T>) -> vec3<u32>' where: 'T' is 'f32', 'i32' or 'u32'
- 'textureDimensions(texture: texture_cube<T>) -> vec2<u32>' where: 'T' is 'f32', 'i32' or 'u32'
- 'textureDimensions(texture: texture_cube_array<T>) -> vec2<u32>' where: 'T' is 'f32', 'i32' or 'u32'
- 'textureDimensions(texture: texture_multisampled_2d<T>) -> vec2<u32>' where: 'T' is 'f32', 'i32' or 'u32'
- 'textureDimensions(texture: texture_depth_2d) -> vec2<u32>'
- 'textureDimensions(texture: texture_depth_2d_array) -> vec2<u32>'
- 'textureDimensions(texture: texture_depth_cube) -> vec2<u32>'
- 'textureDimensions(texture: texture_depth_cube_array) -> vec2<u32>'
- 'textureDimensions(texture: texture_depth_multisampled_2d) -> vec2<u32>'
- 'textureDimensions(texture: texture_storage_1d<F, A>) -> u32'
- 'textureDimensions(texture: texture_storage_2d<F, A>) -> vec2<u32>'
- 'textureDimensions(texture: texture_storage_2d_array<F, A>) -> vec2<u32>'
- 'textureDimensions(texture: texture_storage_3d<F, A>) -> vec3<u32>'
- 'textureDimensions(texture: texture_external) -> vec2<u32>'
+ • 'textureDimensions(texture: texture_depth_2d ✗ , level: L ✗ ) -> vec2<u32>' where:
+ ✗ 'L' is 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_depth_2d_array ✗ , level: L ✗ ) -> vec2<u32>' where:
+ ✗ 'L' is 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_depth_cube ✗ , level: L ✗ ) -> vec2<u32>' where:
+ ✗ 'L' is 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_depth_cube_array ✗ , level: L ✗ ) -> vec2<u32>' where:
+ ✗ 'L' is 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_1d<T> ✗ , level: L ✗ ) -> u32' where:
+ ✗ 'T' is 'f32', 'i32' or 'u32'
+ ✗ 'L' is 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_2d<T> ✗ , level: L ✗ ) -> vec2<u32>' where:
+ ✗ 'T' is 'f32', 'i32' or 'u32'
+ ✗ 'L' is 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_2d_array<T> ✗ , level: L ✗ ) -> vec2<u32>' where:
+ ✗ 'T' is 'f32', 'i32' or 'u32'
+ ✗ 'L' is 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_3d<T> ✗ , level: L ✗ ) -> vec3<u32>' where:
+ ✗ 'T' is 'f32', 'i32' or 'u32'
+ ✗ 'L' is 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_cube<T> ✗ , level: L ✗ ) -> vec2<u32>' where:
+ ✗ 'T' is 'f32', 'i32' or 'u32'
+ ✗ 'L' is 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_cube_array<T> ✗ , level: L ✗ ) -> vec2<u32>' where:
+ ✗ 'T' is 'f32', 'i32' or 'u32'
+ ✗ 'L' is 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_depth_2d ✗ ) -> vec2<u32>'
+ • 'textureDimensions(texture: texture_depth_2d_array ✗ ) -> vec2<u32>'
+ • 'textureDimensions(texture: texture_depth_cube ✗ ) -> vec2<u32>'
+ • 'textureDimensions(texture: texture_depth_cube_array ✗ ) -> vec2<u32>'
+ • 'textureDimensions(texture: texture_depth_multisampled_2d ✗ ) -> vec2<u32>'
+ • 'textureDimensions(texture: texture_storage_1d<F, A> ✗ ) -> u32'
+ • 'textureDimensions(texture: texture_storage_2d<F, A> ✗ ) -> vec2<u32>'
+ • 'textureDimensions(texture: texture_storage_2d_array<F, A> ✗ ) -> vec2<u32>'
+ • 'textureDimensions(texture: texture_storage_3d<F, A> ✗ ) -> vec3<u32>'
+ • 'textureDimensions(texture: texture_external ✗ ) -> vec2<u32>'
+ • 'textureDimensions(texture: texture_1d<T> ✗ ) -> u32' where:
+ ✗ 'T' is 'f32', 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_2d<T> ✗ ) -> vec2<u32>' where:
+ ✗ 'T' is 'f32', 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_2d_array<T> ✗ ) -> vec2<u32>' where:
+ ✗ 'T' is 'f32', 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_3d<T> ✗ ) -> vec3<u32>' where:
+ ✗ 'T' is 'f32', 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_cube<T> ✗ ) -> vec2<u32>' where:
+ ✗ 'T' is 'f32', 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_cube_array<T> ✗ ) -> vec2<u32>' where:
+ ✗ 'T' is 'f32', 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_multisampled_2d<T> ✗ ) -> vec2<u32>' where:
+ ✗ 'T' is 'f32', 'i32' or 'u32'
)");
}
@@ -568,33 +591,56 @@
R"(no matching call to 'textureDimensions(texture_depth_2d, bool)'
27 candidate functions:
- 'textureDimensions(texture: texture_depth_2d, level: L) -> vec2<u32>' where: 'L' is 'i32' or 'u32'
- 'textureDimensions(texture: texture_1d<T>, level: L) -> u32' where: 'T' is 'f32', 'i32' or 'u32', 'L' is 'i32' or 'u32'
- 'textureDimensions(texture: texture_2d<T>, level: L) -> vec2<u32>' where: 'T' is 'f32', 'i32' or 'u32', 'L' is 'i32' or 'u32'
- 'textureDimensions(texture: texture_2d_array<T>, level: L) -> vec2<u32>' where: 'T' is 'f32', 'i32' or 'u32', 'L' is 'i32' or 'u32'
- 'textureDimensions(texture: texture_3d<T>, level: L) -> vec3<u32>' where: 'T' is 'f32', 'i32' or 'u32', 'L' is 'i32' or 'u32'
- 'textureDimensions(texture: texture_cube<T>, level: L) -> vec2<u32>' where: 'T' is 'f32', 'i32' or 'u32', 'L' is 'i32' or 'u32'
- 'textureDimensions(texture: texture_cube_array<T>, level: L) -> vec2<u32>' where: 'T' is 'f32', 'i32' or 'u32', 'L' is 'i32' or 'u32'
- 'textureDimensions(texture: texture_depth_2d_array, level: L) -> vec2<u32>' where: 'L' is 'i32' or 'u32'
- 'textureDimensions(texture: texture_depth_cube, level: L) -> vec2<u32>' where: 'L' is 'i32' or 'u32'
- 'textureDimensions(texture: texture_depth_cube_array, level: L) -> vec2<u32>' where: 'L' is 'i32' or 'u32'
- 'textureDimensions(texture: texture_depth_2d) -> vec2<u32>'
- 'textureDimensions(texture: texture_1d<T>) -> u32' where: 'T' is 'f32', 'i32' or 'u32'
- 'textureDimensions(texture: texture_2d<T>) -> vec2<u32>' where: 'T' is 'f32', 'i32' or 'u32'
- 'textureDimensions(texture: texture_2d_array<T>) -> vec2<u32>' where: 'T' is 'f32', 'i32' or 'u32'
- 'textureDimensions(texture: texture_3d<T>) -> vec3<u32>' where: 'T' is 'f32', 'i32' or 'u32'
- 'textureDimensions(texture: texture_cube<T>) -> vec2<u32>' where: 'T' is 'f32', 'i32' or 'u32'
- 'textureDimensions(texture: texture_cube_array<T>) -> vec2<u32>' where: 'T' is 'f32', 'i32' or 'u32'
- 'textureDimensions(texture: texture_multisampled_2d<T>) -> vec2<u32>' where: 'T' is 'f32', 'i32' or 'u32'
- 'textureDimensions(texture: texture_depth_2d_array) -> vec2<u32>'
- 'textureDimensions(texture: texture_depth_cube) -> vec2<u32>'
- 'textureDimensions(texture: texture_depth_cube_array) -> vec2<u32>'
- 'textureDimensions(texture: texture_depth_multisampled_2d) -> vec2<u32>'
- 'textureDimensions(texture: texture_storage_1d<F, A>) -> u32'
- 'textureDimensions(texture: texture_storage_2d<F, A>) -> vec2<u32>'
- 'textureDimensions(texture: texture_storage_2d_array<F, A>) -> vec2<u32>'
- 'textureDimensions(texture: texture_storage_3d<F, A>) -> vec3<u32>'
- 'textureDimensions(texture: texture_external) -> vec2<u32>'
+ • 'textureDimensions(texture: texture_depth_2d ✓ , level: L ✗ ) -> vec2<u32>' where:
+ ✗ 'L' is 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_depth_2d ✓ ) -> vec2<u32>'
+ • 'textureDimensions(texture: texture_depth_2d_array ✗ , level: L ✗ ) -> vec2<u32>' where:
+ ✗ 'L' is 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_depth_cube ✗ , level: L ✗ ) -> vec2<u32>' where:
+ ✗ 'L' is 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_depth_cube_array ✗ , level: L ✗ ) -> vec2<u32>' where:
+ ✗ 'L' is 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_1d<T> ✗ , level: L ✗ ) -> u32' where:
+ ✗ 'T' is 'f32', 'i32' or 'u32'
+ ✗ 'L' is 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_2d<T> ✗ , level: L ✗ ) -> vec2<u32>' where:
+ ✗ 'T' is 'f32', 'i32' or 'u32'
+ ✗ 'L' is 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_2d_array<T> ✗ , level: L ✗ ) -> vec2<u32>' where:
+ ✗ 'T' is 'f32', 'i32' or 'u32'
+ ✗ 'L' is 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_3d<T> ✗ , level: L ✗ ) -> vec3<u32>' where:
+ ✗ 'T' is 'f32', 'i32' or 'u32'
+ ✗ 'L' is 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_cube<T> ✗ , level: L ✗ ) -> vec2<u32>' where:
+ ✗ 'T' is 'f32', 'i32' or 'u32'
+ ✗ 'L' is 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_cube_array<T> ✗ , level: L ✗ ) -> vec2<u32>' where:
+ ✗ 'T' is 'f32', 'i32' or 'u32'
+ ✗ 'L' is 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_depth_2d_array ✗ ) -> vec2<u32>'
+ • 'textureDimensions(texture: texture_depth_cube ✗ ) -> vec2<u32>'
+ • 'textureDimensions(texture: texture_depth_cube_array ✗ ) -> vec2<u32>'
+ • 'textureDimensions(texture: texture_depth_multisampled_2d ✗ ) -> vec2<u32>'
+ • 'textureDimensions(texture: texture_storage_1d<F, A> ✗ ) -> u32'
+ • 'textureDimensions(texture: texture_storage_2d<F, A> ✗ ) -> vec2<u32>'
+ • 'textureDimensions(texture: texture_storage_2d_array<F, A> ✗ ) -> vec2<u32>'
+ • 'textureDimensions(texture: texture_storage_3d<F, A> ✗ ) -> vec3<u32>'
+ • 'textureDimensions(texture: texture_external ✗ ) -> vec2<u32>'
+ • 'textureDimensions(texture: texture_1d<T> ✗ ) -> u32' where:
+ ✗ 'T' is 'f32', 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_2d<T> ✗ ) -> vec2<u32>' where:
+ ✗ 'T' is 'f32', 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_2d_array<T> ✗ ) -> vec2<u32>' where:
+ ✗ 'T' is 'f32', 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_3d<T> ✗ ) -> vec3<u32>' where:
+ ✗ 'T' is 'f32', 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_cube<T> ✗ ) -> vec2<u32>' where:
+ ✗ 'T' is 'f32', 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_cube_array<T> ✗ ) -> vec2<u32>' where:
+ ✗ 'T' is 'f32', 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_multisampled_2d<T> ✗ ) -> vec2<u32>' where:
+ ✗ 'T' is 'f32', 'i32' or 'u32'
)");
}
@@ -613,8 +659,10 @@
EXPECT_EQ(result.Failure().Plain(), R"(no matching overload for 'operator - (bool)'
2 candidate operators:
- 'operator - (T) -> T' where: 'T' is 'f32', 'i32' or 'f16'
- 'operator - (vecN<T>) -> vecN<T>' where: 'T' is 'f32', 'i32' or 'f16'
+ • 'operator - (T ✗ ) -> T' where:
+ ✗ 'T' is 'f32', 'i32' or 'f16'
+ • 'operator - (vecN<T> ✗ ) -> vecN<T>' where:
+ ✗ 'T' is 'f32', 'i32' or 'f16'
)");
}
@@ -652,15 +700,24 @@
EXPECT_EQ(result.Failure().Plain(), R"(no matching overload for 'operator * (f32, bool)'
9 candidate operators:
- 'operator * (T, T) -> T' where: 'T' is 'f32', 'i32', 'u32' or 'f16'
- 'operator * (vecN<T>, T) -> vecN<T>' where: 'T' is 'f32', 'i32', 'u32' or 'f16'
- 'operator * (T, vecN<T>) -> vecN<T>' where: 'T' is 'f32', 'i32', 'u32' or 'f16'
- 'operator * (T, matNxM<T>) -> matNxM<T>' where: 'T' is 'f32' or 'f16'
- 'operator * (matNxM<T>, T) -> matNxM<T>' where: 'T' is 'f32' or 'f16'
- 'operator * (vecN<T>, vecN<T>) -> vecN<T>' where: 'T' is 'f32', 'i32', 'u32' or 'f16'
- 'operator * (matCxR<T>, vecC<T>) -> vecR<T>' where: 'T' is 'f32' or 'f16'
- 'operator * (vecR<T>, matCxR<T>) -> vecC<T>' where: 'T' is 'f32' or 'f16'
- 'operator * (matKxR<T>, matCxK<T>) -> matCxR<T>' where: 'T' is 'f32' or 'f16'
+ • 'operator * (T ✓ , T ✗ ) -> T' where:
+ ✓ 'T' is 'f32', 'i32', 'u32' or 'f16'
+ • 'operator * (T ✓ , vecN<T> ✗ ) -> vecN<T>' where:
+ ✓ 'T' is 'f32', 'i32', 'u32' or 'f16'
+ • 'operator * (T ✓ , matNxM<T> ✗ ) -> matNxM<T>' where:
+ ✓ 'T' is 'f32' or 'f16'
+ • 'operator * (vecN<T> ✗ , T ✗ ) -> vecN<T>' where:
+ ✗ 'T' is 'f32', 'i32', 'u32' or 'f16'
+ • 'operator * (matNxM<T> ✗ , T ✗ ) -> matNxM<T>' where:
+ ✗ 'T' is 'f32' or 'f16'
+ • 'operator * (vecN<T> ✗ , vecN<T> ✗ ) -> vecN<T>' where:
+ ✗ 'T' is 'f32', 'i32', 'u32' or 'f16'
+ • 'operator * (matCxR<T> ✗ , vecC<T> ✗ ) -> vecR<T>' where:
+ ✗ 'T' is 'f32' or 'f16'
+ • 'operator * (vecR<T> ✗ , matCxR<T> ✗ ) -> vecC<T>' where:
+ ✗ 'T' is 'f32' or 'f16'
+ • 'operator * (matKxR<T> ✗ , matCxK<T> ✗ ) -> matCxR<T>' where:
+ ✗ 'T' is 'f32' or 'f16'
)");
}
@@ -684,15 +741,24 @@
EXPECT_EQ(result.Failure().Plain(), R"(no matching overload for 'operator *= (f32, bool)'
9 candidate operators:
- 'operator *= (T, T) -> T' where: 'T' is 'f32', 'i32', 'u32' or 'f16'
- 'operator *= (vecN<T>, T) -> vecN<T>' where: 'T' is 'f32', 'i32', 'u32' or 'f16'
- 'operator *= (T, vecN<T>) -> vecN<T>' where: 'T' is 'f32', 'i32', 'u32' or 'f16'
- 'operator *= (T, matNxM<T>) -> matNxM<T>' where: 'T' is 'f32' or 'f16'
- 'operator *= (matNxM<T>, T) -> matNxM<T>' where: 'T' is 'f32' or 'f16'
- 'operator *= (vecN<T>, vecN<T>) -> vecN<T>' where: 'T' is 'f32', 'i32', 'u32' or 'f16'
- 'operator *= (matCxR<T>, vecC<T>) -> vecR<T>' where: 'T' is 'f32' or 'f16'
- 'operator *= (vecR<T>, matCxR<T>) -> vecC<T>' where: 'T' is 'f32' or 'f16'
- 'operator *= (matKxR<T>, matCxK<T>) -> matCxR<T>' where: 'T' is 'f32' or 'f16'
+ • 'operator *= (T ✓ , T ✗ ) -> T' where:
+ ✓ 'T' is 'f32', 'i32', 'u32' or 'f16'
+ • 'operator *= (T ✓ , vecN<T> ✗ ) -> vecN<T>' where:
+ ✓ 'T' is 'f32', 'i32', 'u32' or 'f16'
+ • 'operator *= (T ✓ , matNxM<T> ✗ ) -> matNxM<T>' where:
+ ✓ 'T' is 'f32' or 'f16'
+ • 'operator *= (vecN<T> ✗ , T ✗ ) -> vecN<T>' where:
+ ✗ 'T' is 'f32', 'i32', 'u32' or 'f16'
+ • 'operator *= (matNxM<T> ✗ , T ✗ ) -> matNxM<T>' where:
+ ✗ 'T' is 'f32' or 'f16'
+ • 'operator *= (vecN<T> ✗ , vecN<T> ✗ ) -> vecN<T>' where:
+ ✗ 'T' is 'f32', 'i32', 'u32' or 'f16'
+ • 'operator *= (matCxR<T> ✗ , vecC<T> ✗ ) -> vecR<T>' where:
+ ✗ 'T' is 'f32' or 'f16'
+ • 'operator *= (vecR<T> ✗ , matCxR<T> ✗ ) -> vecC<T>' where:
+ ✗ 'T' is 'f32' or 'f16'
+ • 'operator *= (matKxR<T> ✗ , matCxK<T> ✗ ) -> matCxR<T>' where:
+ ✗ 'T' is 'f32' or 'f16'
)");
}
@@ -721,19 +787,35 @@
R"(no matching constructor for 'vec3<i32>(i32, f32, i32)'
6 candidate constructors:
- 'vec3<T>(x: T, y: T, z: T) -> vec3<T>' where: 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
- 'vec3<T>(xy: vec2<T>, z: T) -> vec3<T>' where: 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
- 'vec3<T>(x: T, yz: vec2<T>) -> vec3<T>' where: 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
- 'vec3<T>(T) -> vec3<T>' where: 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
- 'vec3<T>(vec3<T>) -> vec3<T>' where: 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
- 'vec3<T>() -> vec3<T>' where: 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'vec3<T ✓ >(x: T ✓ , y: T ✗ , z: T ✓ ) -> vec3<T>' where:
+ ✓ 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'vec3<T ✓ >(x: T ✓ , yz: vec2<T> ✗ ) -> vec3<T>' where:
+ ✓ 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'vec3<T ✓ >(T ✓ ) -> vec3<T>' where:
+ ✓ 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'vec3<T ✓ >(xy: vec2<T> ✗ , z: T ✗ ) -> vec3<T>' where:
+ ✓ 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'vec3<T ✓ >(vec3<T> ✗ ) -> vec3<T>' where:
+ ✓ 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'vec3<T ✓ >() -> vec3<T>' where:
+ ✓ 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
5 candidate conversions:
- 'vec3<T>(vec3<U>) -> vec3<T>' where: 'T' is 'f32', 'U' is 'i32', 'f16', 'u32' or 'bool'
- 'vec3<T>(vec3<U>) -> vec3<T>' where: 'T' is 'f16', 'U' is 'f32', 'i32', 'u32' or 'bool'
- 'vec3<T>(vec3<U>) -> vec3<T>' where: 'T' is 'i32', 'U' is 'f32', 'f16', 'u32' or 'bool'
- 'vec3<T>(vec3<U>) -> vec3<T>' where: 'T' is 'u32', 'U' is 'f32', 'f16', 'i32' or 'bool'
- 'vec3<T>(vec3<U>) -> vec3<T>' where: 'T' is 'bool', 'U' is 'f32', 'f16', 'i32' or 'u32'
+ • 'vec3<T ✓ >(vec3<U> ✗ ) -> vec3<T>' where:
+ ✓ 'T' is 'i32'
+ ✗ 'U' is 'f32', 'f16', 'u32' or 'bool'
+ • 'vec3<T ✗ >(vec3<U> ✗ ) -> vec3<T>' where:
+ ✗ 'T' is 'f32'
+ ✗ 'U' is 'i32', 'f16', 'u32' or 'bool'
+ • 'vec3<T ✗ >(vec3<U> ✗ ) -> vec3<T>' where:
+ ✗ 'T' is 'f16'
+ ✗ 'U' is 'f32', 'i32', 'u32' or 'bool'
+ • 'vec3<T ✗ >(vec3<U> ✗ ) -> vec3<T>' where:
+ ✗ 'T' is 'u32'
+ ✗ 'U' is 'f32', 'f16', 'i32' or 'bool'
+ • 'vec3<T ✗ >(vec3<U> ✗ ) -> vec3<T>' where:
+ ✗ 'T' is 'bool'
+ ✗ 'U' is 'f32', 'f16', 'i32' or 'u32'
)");
}
@@ -794,19 +876,35 @@
R"(no matching constructor for 'vec3<f32>(array<u32>)'
6 candidate constructors:
- 'vec3<T>(vec3<T>) -> vec3<T>' where: 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
- 'vec3<T>(T) -> vec3<T>' where: 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
- 'vec3<T>() -> vec3<T>' where: 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
- 'vec3<T>(x: T, yz: vec2<T>) -> vec3<T>' where: 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
- 'vec3<T>(xy: vec2<T>, z: T) -> vec3<T>' where: 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
- 'vec3<T>(x: T, y: T, z: T) -> vec3<T>' where: 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'vec3<T ✓ >(vec3<T> ✗ ) -> vec3<T>' where:
+ ✓ 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'vec3<T ✓ >(T ✗ ) -> vec3<T>' where:
+ ✓ 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'vec3<T ✓ >() -> vec3<T>' where:
+ ✓ 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'vec3<T ✓ >(xy: vec2<T> ✗ , z: T ✗ ) -> vec3<T>' where:
+ ✓ 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'vec3<T ✓ >(x: T ✗ , yz: vec2<T> ✗ ) -> vec3<T>' where:
+ ✓ 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'vec3<T ✓ >(x: T ✗ , y: T ✗ , z: T ✗ ) -> vec3<T>' where:
+ ✓ 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
5 candidate conversions:
- 'vec3<T>(vec3<U>) -> vec3<T>' where: 'T' is 'f32', 'U' is 'i32', 'f16', 'u32' or 'bool'
- 'vec3<T>(vec3<U>) -> vec3<T>' where: 'T' is 'f16', 'U' is 'f32', 'i32', 'u32' or 'bool'
- 'vec3<T>(vec3<U>) -> vec3<T>' where: 'T' is 'i32', 'U' is 'f32', 'f16', 'u32' or 'bool'
- 'vec3<T>(vec3<U>) -> vec3<T>' where: 'T' is 'u32', 'U' is 'f32', 'f16', 'i32' or 'bool'
- 'vec3<T>(vec3<U>) -> vec3<T>' where: 'T' is 'bool', 'U' is 'f32', 'f16', 'i32' or 'u32'
+ • 'vec3<T ✓ >(vec3<U> ✗ ) -> vec3<T>' where:
+ ✓ 'T' is 'f32'
+ ✗ 'U' is 'i32', 'f16', 'u32' or 'bool'
+ • 'vec3<T ✗ >(vec3<U> ✗ ) -> vec3<T>' where:
+ ✗ 'T' is 'f16'
+ ✗ 'U' is 'f32', 'i32', 'u32' or 'bool'
+ • 'vec3<T ✗ >(vec3<U> ✗ ) -> vec3<T>' where:
+ ✗ 'T' is 'i32'
+ ✗ 'U' is 'f32', 'f16', 'u32' or 'bool'
+ • 'vec3<T ✗ >(vec3<U> ✗ ) -> vec3<T>' where:
+ ✗ 'T' is 'u32'
+ ✗ 'U' is 'f32', 'f16', 'i32' or 'bool'
+ • 'vec3<T ✗ >(vec3<U> ✗ ) -> vec3<T>' where:
+ ✗ 'T' is 'bool'
+ ✗ 'U' is 'f32', 'f16', 'i32' or 'u32'
)");
}
diff --git a/src/tint/lang/core/type/BUILD.bazel b/src/tint/lang/core/type/BUILD.bazel
index 485a4a8..35a5221 100644
--- a/src/tint/lang/core/type/BUILD.bazel
+++ b/src/tint/lang/core/type/BUILD.bazel
@@ -53,6 +53,7 @@
"f16.cc",
"f32.cc",
"i32.cc",
+ "invalid.cc",
"manager.cc",
"matrix.cc",
"memory_view.cc",
@@ -91,6 +92,7 @@
"f16.h",
"f32.h",
"i32.h",
+ "invalid.h",
"manager.h",
"matrix.h",
"memory_view.h",
diff --git a/src/tint/lang/core/type/BUILD.cmake b/src/tint/lang/core/type/BUILD.cmake
index 7c9b819..285a088 100644
--- a/src/tint/lang/core/type/BUILD.cmake
+++ b/src/tint/lang/core/type/BUILD.cmake
@@ -68,6 +68,8 @@
lang/core/type/f32.h
lang/core/type/i32.cc
lang/core/type/i32.h
+ lang/core/type/invalid.cc
+ lang/core/type/invalid.h
lang/core/type/manager.cc
lang/core/type/manager.h
lang/core/type/matrix.cc
diff --git a/src/tint/lang/core/type/BUILD.gn b/src/tint/lang/core/type/BUILD.gn
index 2f0568b..7f64802 100644
--- a/src/tint/lang/core/type/BUILD.gn
+++ b/src/tint/lang/core/type/BUILD.gn
@@ -73,6 +73,8 @@
"f32.h",
"i32.cc",
"i32.h",
+ "invalid.cc",
+ "invalid.h",
"manager.cc",
"manager.h",
"matrix.cc",
diff --git a/src/tint/api/options/array_length_from_uniform_test.cc b/src/tint/lang/core/type/invalid.cc
similarity index 68%
copy from src/tint/api/options/array_length_from_uniform_test.cc
copy to src/tint/lang/core/type/invalid.cc
index c62092a..cc929a8 100644
--- a/src/tint/api/options/array_length_from_uniform_test.cc
+++ b/src/tint/lang/core/type/invalid.cc
@@ -25,16 +25,37 @@
// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#include "src/tint/api/options/array_length_from_uniform.h"
+#include "src/tint/lang/core/type/invalid.h"
-#include <gtest/gtest.h>
+#include "src/tint/lang/core/type/manager.h"
-namespace tint {
-namespace {
+TINT_INSTANTIATE_TYPEINFO(tint::core::type::Invalid);
-TEST(TintCheckAllFieldsReflected, ApiOptionsArrayLengthFromUniformTest) {
- TINT_ASSERT_ALL_FIELDS_REFLECTED(ArrayLengthFromUniformOptions);
+namespace tint::core::type {
+
+Invalid::Invalid()
+ : Base(static_cast<size_t>(tint::TypeCode::Of<Invalid>().bits), core::type::Flags{}) {}
+
+Invalid::~Invalid() = default;
+
+std::string Invalid::FriendlyName() const {
+ return "<invalid-type>";
}
-} // namespace
-} // namespace tint
+bool Invalid::Equals(const UniqueNode& other) const {
+ return other.Is<Invalid>();
+}
+
+uint32_t Invalid::Size() const {
+ return 0;
+}
+
+uint32_t Invalid::Align() const {
+ return 0;
+}
+
+Invalid* Invalid::Clone(CloneContext& ctx) const {
+ return ctx.dst.mgr->Get<Invalid>();
+}
+
+} // namespace tint::core::type
diff --git a/src/tint/lang/core/type/invalid.h b/src/tint/lang/core/type/invalid.h
new file mode 100644
index 0000000..4405bf7
--- /dev/null
+++ b/src/tint/lang/core/type/invalid.h
@@ -0,0 +1,67 @@
+// Copyright 2024 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef SRC_TINT_LANG_CORE_TYPE_INVALID_H_
+#define SRC_TINT_LANG_CORE_TYPE_INVALID_H_
+
+#include <string>
+
+#include "src/tint/lang/core/type/type.h"
+
+namespace tint::core::type {
+
+/// An invalid type.
+class Invalid final : public Castable<Invalid, Type> {
+ public:
+ /// Constructor
+ Invalid();
+
+ /// Destructor
+ ~Invalid() override;
+
+ /// @returns the name for this type that closely resembles how it would be
+ /// declared in WGSL.
+ std::string FriendlyName() const override;
+
+ /// @param other the other node to compare against
+ /// @returns true if the this type is equal to @p other
+ bool Equals(const UniqueNode& other) const override;
+
+ /// @returns the size in bytes of the type.
+ uint32_t Size() const override;
+
+ /// @returns the alignment in bytes of the type.
+ uint32_t Align() const override;
+
+ /// @param ctx the clone context
+ /// @returns a clone of this type
+ Invalid* Clone(CloneContext& ctx) const override;
+};
+
+} // namespace tint::core::type
+
+#endif // SRC_TINT_LANG_CORE_TYPE_INVALID_H_
diff --git a/src/tint/lang/core/type/manager.cc b/src/tint/lang/core/type/manager.cc
index f158770..30d0d51 100644
--- a/src/tint/lang/core/type/manager.cc
+++ b/src/tint/lang/core/type/manager.cc
@@ -36,6 +36,7 @@
#include "src/tint/lang/core/type/f16.h"
#include "src/tint/lang/core/type/f32.h"
#include "src/tint/lang/core/type/i32.h"
+#include "src/tint/lang/core/type/invalid.h"
#include "src/tint/lang/core/type/matrix.h"
#include "src/tint/lang/core/type/pointer.h"
#include "src/tint/lang/core/type/type.h"
@@ -54,6 +55,10 @@
Manager::~Manager() = default;
+const core::type::Invalid* Manager::invalid() {
+ return Get<core::type::Invalid>();
+}
+
const core::type::Void* Manager::void_() {
return Get<core::type::Void>();
}
diff --git a/src/tint/lang/core/type/manager.h b/src/tint/lang/core/type/manager.h
index 0a9a201..8c22f3d 100644
--- a/src/tint/lang/core/type/manager.h
+++ b/src/tint/lang/core/type/manager.h
@@ -52,6 +52,7 @@
class F16;
class F32;
class I32;
+class Invalid;
class Matrix;
class Pointer;
class U32;
@@ -175,6 +176,9 @@
return types_.Find<TYPE>(std::forward<ARGS>(args)...);
}
+ /// @returns an invalid type
+ const core::type::Invalid* invalid();
+
/// @returns a void type
const core::type::Void* void_();
diff --git a/src/tint/lang/hlsl/writer/ast_printer/ast_printer.cc b/src/tint/lang/hlsl/writer/ast_printer/ast_printer.cc
index 387ddb9..fc2a4b8 100644
--- a/src/tint/lang/hlsl/writer/ast_printer/ast_printer.cc
+++ b/src/tint/lang/hlsl/writer/ast_printer/ast_printer.cc
@@ -33,6 +33,7 @@
#include <utility>
#include <vector>
+#include "src/tint/api/common/binding_point.h"
#include "src/tint/lang/core/constant/splat.h"
#include "src/tint/lang/core/constant/value.h"
#include "src/tint/lang/core/fluent_types.h"
@@ -334,12 +335,6 @@
manager.Add<ast::transform::SimplifyPointers>();
manager.Add<ast::transform::RemovePhonies>();
- // Build the config for the internal ArrayLengthFromUniform transform.
- ast::transform::ArrayLengthFromUniform::Config array_length_from_uniform_cfg(
- array_length_from_uniform_options.ubo_binding);
- array_length_from_uniform_cfg.bindpoint_to_size_index =
- std::move(array_length_from_uniform_options.bindpoint_to_size_index);
-
// DemoteToHelper must come after CanonicalizeEntryPointIO, PromoteSideEffectsToDecl, and
// ExpandCompoundAssignment.
// TODO(crbug.com/tint/1752): This is only necessary when FXC is being used.
@@ -348,6 +343,12 @@
// ArrayLengthFromUniform must come after SimplifyPointers as it assumes that the form of the
// array length argument is &var.array.
manager.Add<ast::transform::ArrayLengthFromUniform>();
+ // Build the config for the internal ArrayLengthFromUniform transform.
+ ast::transform::ArrayLengthFromUniform::Config array_length_from_uniform_cfg(
+ BindingPoint{array_length_from_uniform_options.ubo_binding.group,
+ array_length_from_uniform_options.ubo_binding.binding});
+ array_length_from_uniform_cfg.bindpoint_to_size_index =
+ std::move(array_length_from_uniform_options.bindpoint_to_size_index);
data.Add<ast::transform::ArrayLengthFromUniform::Config>(
std::move(array_length_from_uniform_cfg));
// DecomposeMemoryAccess must come after:
diff --git a/src/tint/lang/hlsl/writer/ast_printer/ast_printer.h b/src/tint/lang/hlsl/writer/ast_printer/ast_printer.h
index fa1a540..f17cf3b 100644
--- a/src/tint/lang/hlsl/writer/ast_printer/ast_printer.h
+++ b/src/tint/lang/hlsl/writer/ast_printer/ast_printer.h
@@ -35,7 +35,6 @@
#include <utility>
#include "src/tint/api/common/binding_point.h"
-#include "src/tint/api/options/array_length_from_uniform.h"
#include "src/tint/lang/core/builtin_value.h"
#include "src/tint/lang/hlsl/writer/ast_raise/decompose_memory_access.h"
#include "src/tint/lang/hlsl/writer/common/options.h"
diff --git a/src/tint/lang/hlsl/writer/ast_printer/sanitizer_test.cc b/src/tint/lang/hlsl/writer/ast_printer/sanitizer_test.cc
index 5823771..72bfc3b 100644
--- a/src/tint/lang/hlsl/writer/ast_printer/sanitizer_test.cc
+++ b/src/tint/lang/hlsl/writer/ast_printer/sanitizer_test.cc
@@ -166,17 +166,17 @@
ASSERT_TRUE(gen.Generate()) << gen.Diagnostics();
auto got = gen.Result();
- auto* expect = R"(cbuffer cbuffer_tint_symbol_1 : register(b4, space3) {
- uint4 tint_symbol_1[2];
+ auto* expect = R"(cbuffer cbuffer_tint_array_lengths : register(b4, space3) {
+ uint4 tint_array_lengths[2];
};
ByteAddressBuffer b : register(t1, space2);
ByteAddressBuffer c : register(t2, space2);
void a_func() {
- uint tint_symbol_3 = 0u;
- b.GetDimensions(tint_symbol_3);
- uint tint_symbol_4 = ((tint_symbol_3 - 0u) / 4u);
- uint len = (tint_symbol_4 + ((tint_symbol_1[1].w - 0u) / 4u));
+ uint tint_symbol_1 = 0u;
+ b.GetDimensions(tint_symbol_1);
+ uint tint_symbol_2 = ((tint_symbol_1 - 0u) / 4u);
+ uint len = (tint_symbol_2 + ((tint_array_lengths[1].w - 0u) / 4u));
return;
}
)";
diff --git a/src/tint/lang/hlsl/writer/common/options.h b/src/tint/lang/hlsl/writer/common/options.h
index 90bc6b3..6bf4719 100644
--- a/src/tint/lang/hlsl/writer/common/options.h
+++ b/src/tint/lang/hlsl/writer/common/options.h
@@ -34,7 +34,6 @@
#include <vector>
#include "src/tint/api/common/binding_point.h"
-#include "src/tint/api/options/array_length_from_uniform.h"
#include "src/tint/api/options/binding_remapper.h"
#include "src/tint/api/options/external_texture.h"
#include "src/tint/api/options/pixel_local.h"
@@ -140,6 +139,19 @@
/// D3D11_PS_INPUT_REGISTER_COUNT == D3D12_PS_INPUT_REGISTER_COUNT
constexpr uint32_t kMaxInterStageLocations = 30;
+/// Options used to specify a mapping of binding points to indices into a UBO
+/// from which to load buffer sizes.
+struct ArrayLengthFromUniformOptions {
+ /// The HLSL binding point to use to generate a uniform buffer from which to read buffer sizes.
+ binding::Uniform ubo_binding;
+ /// The mapping from the storage buffer binding points in WGSL binding-point space to the index
+ /// into the uniform buffer where the length of the buffer is stored.
+ std::unordered_map<BindingPoint, uint32_t> bindpoint_to_size_index;
+
+ /// Reflect the fields of this class so that it can be used by tint::ForeachField()
+ TINT_REFLECT(ArrayLengthFromUniformOptions, ubo_binding, bindpoint_to_size_index);
+};
+
/// Configuration options used for generating HLSL.
struct Options {
/// Constructor
diff --git a/src/tint/lang/hlsl/writer/common/options_test.cc b/src/tint/lang/hlsl/writer/common/options_test.cc
index 5feb66f..741a1b0 100644
--- a/src/tint/lang/hlsl/writer/common/options_test.cc
+++ b/src/tint/lang/hlsl/writer/common/options_test.cc
@@ -33,6 +33,7 @@
namespace {
TEST(TintCheckAllFieldsReflected, HlslWriterCommonOptionsTest) {
+ TINT_ASSERT_ALL_FIELDS_REFLECTED(ArrayLengthFromUniformOptions);
TINT_ASSERT_ALL_FIELDS_REFLECTED(binding::BindingInfo);
TINT_ASSERT_ALL_FIELDS_REFLECTED(binding::ExternalTexture);
TINT_ASSERT_ALL_FIELDS_REFLECTED(Bindings);
diff --git a/src/tint/lang/msl/writer/ast_printer/ast_printer.cc b/src/tint/lang/msl/writer/ast_printer/ast_printer.cc
index 9a574b7..a511c62 100644
--- a/src/tint/lang/msl/writer/ast_printer/ast_printer.cc
+++ b/src/tint/lang/msl/writer/ast_printer/ast_printer.cc
@@ -33,6 +33,7 @@
#include <utility>
#include <vector>
+#include "src/tint/api/common/binding_point.h"
#include "src/tint/lang/core/constant/splat.h"
#include "src/tint/lang/core/constant/value.h"
#include "src/tint/lang/core/fluent_types.h"
@@ -187,7 +188,9 @@
ExternalTextureOptions external_texture_options{};
RemapperData remapper_data{};
- PopulateRemapperAndMultiplanarOptions(options, remapper_data, external_texture_options);
+ ArrayLengthFromUniformOptions array_length_from_uniform_options{};
+ PopulateBindingRelatedOptions(options, remapper_data, external_texture_options,
+ array_length_from_uniform_options);
manager.Add<ast::transform::BindingRemapper>();
data.Add<ast::transform::BindingRemapper::Remappings>(
@@ -240,12 +243,13 @@
// ArrayLengthFromUniform must come after SimplifyPointers, as
// it assumes that the form of the array length argument is &var.array.
manager.Add<ast::transform::ArrayLengthFromUniform>();
-
- ast::transform::ArrayLengthFromUniform::Config array_length_cfg(
- std::move(options.array_length_from_uniform.ubo_binding));
- array_length_cfg.bindpoint_to_size_index =
- std::move(options.array_length_from_uniform.bindpoint_to_size_index);
- data.Add<ast::transform::ArrayLengthFromUniform::Config>(array_length_cfg);
+ // Build the config for the internal ArrayLengthFromUniform transform.
+ ast::transform::ArrayLengthFromUniform::Config array_length_from_uniform_cfg(
+ BindingPoint{0, array_length_from_uniform_options.ubo_binding});
+ array_length_from_uniform_cfg.bindpoint_to_size_index =
+ std::move(array_length_from_uniform_options.bindpoint_to_size_index);
+ data.Add<ast::transform::ArrayLengthFromUniform::Config>(
+ std::move(array_length_from_uniform_cfg));
// PackedVec3 must come after ExpandCompoundAssignment.
manager.Add<PackedVec3>();
diff --git a/src/tint/lang/msl/writer/ast_printer/ast_printer.h b/src/tint/lang/msl/writer/ast_printer/ast_printer.h
index 7b4fea1..f86bb39 100644
--- a/src/tint/lang/msl/writer/ast_printer/ast_printer.h
+++ b/src/tint/lang/msl/writer/ast_printer/ast_printer.h
@@ -34,7 +34,6 @@
#include <unordered_set>
#include <vector>
-#include "src/tint/api/options/array_length_from_uniform.h"
#include "src/tint/lang/core/builtin_value.h"
#include "src/tint/lang/msl/writer/common/options.h"
#include "src/tint/lang/wgsl/ast/assignment_statement.h"
diff --git a/src/tint/lang/msl/writer/ast_printer/sanitizer_test.cc b/src/tint/lang/msl/writer/ast_printer/sanitizer_test.cc
index 4745f0c..901ddd2 100644
--- a/src/tint/lang/msl/writer/ast_printer/sanitizer_test.cc
+++ b/src/tint/lang/msl/writer/ast_printer/sanitizer_test.cc
@@ -55,7 +55,7 @@
});
Options opts = DefaultOptions();
- opts.array_length_from_uniform.ubo_binding = BindingPoint{0, 30};
+ opts.array_length_from_uniform.ubo_binding = 30;
opts.array_length_from_uniform.bindpoint_to_size_index.emplace(BindingPoint{2, 1}, 1);
ASTPrinter& gen = SanitizeAndBuild(opts);
@@ -78,16 +78,16 @@
T elements[N];
};
-struct tint_symbol {
- /* 0x0000 */ tint_array<uint4, 1> buffer_size;
+struct TintArrayLengths {
+ /* 0x0000 */ tint_array<uint4, 1> array_lengths;
};
struct my_struct {
tint_array<float, 1> a;
};
-fragment void a_func(const constant tint_symbol* tint_symbol_2 [[buffer(30)]]) {
- uint len = (((*(tint_symbol_2)).buffer_size[0u][1u] - 0u) / 4u);
+fragment void a_func(const constant TintArrayLengths* tint_symbol [[buffer(30)]]) {
+ uint len = (((*(tint_symbol)).array_lengths[0u][1u] - 0u) / 4u);
return;
}
@@ -112,7 +112,7 @@
});
Options opts = DefaultOptions();
- opts.array_length_from_uniform.ubo_binding = BindingPoint{0, 30};
+ opts.array_length_from_uniform.ubo_binding = 30;
opts.array_length_from_uniform.bindpoint_to_size_index.emplace(BindingPoint{2, 1}, 1);
ASTPrinter& gen = SanitizeAndBuild(opts);
@@ -135,8 +135,8 @@
T elements[N];
};
-struct tint_symbol {
- /* 0x0000 */ tint_array<uint4, 1> buffer_size;
+struct TintArrayLengths {
+ /* 0x0000 */ tint_array<uint4, 1> array_lengths;
};
struct my_struct {
@@ -144,8 +144,8 @@
tint_array<float, 1> a;
};
-fragment void a_func(const constant tint_symbol* tint_symbol_2 [[buffer(30)]]) {
- uint len = (((*(tint_symbol_2)).buffer_size[0u][1u] - 4u) / 4u);
+fragment void a_func(const constant TintArrayLengths* tint_symbol [[buffer(30)]]) {
+ uint len = (((*(tint_symbol)).array_lengths[0u][1u] - 4u) / 4u);
return;
}
@@ -173,7 +173,7 @@
});
Options opts = DefaultOptions();
- opts.array_length_from_uniform.ubo_binding = BindingPoint{0, 30};
+ opts.array_length_from_uniform.ubo_binding = 30;
opts.array_length_from_uniform.bindpoint_to_size_index.emplace(BindingPoint{2, 1}, 1);
ASTPrinter& gen = SanitizeAndBuild(opts);
@@ -196,16 +196,16 @@
T elements[N];
};
-struct tint_symbol {
- /* 0x0000 */ tint_array<uint4, 1> buffer_size;
+struct TintArrayLengths {
+ /* 0x0000 */ tint_array<uint4, 1> array_lengths;
};
struct my_struct {
tint_array<float, 1> a;
};
-fragment void a_func(const constant tint_symbol* tint_symbol_2 [[buffer(30)]]) {
- uint len = (((*(tint_symbol_2)).buffer_size[0u][1u] - 0u) / 4u);
+fragment void a_func(const constant TintArrayLengths* tint_symbol [[buffer(30)]]) {
+ uint len = (((*(tint_symbol)).array_lengths[0u][1u] - 0u) / 4u);
return;
}
@@ -232,7 +232,7 @@
});
Options options;
- options.array_length_from_uniform.ubo_binding = {0, 29};
+ options.array_length_from_uniform.ubo_binding = 29;
options.array_length_from_uniform.bindpoint_to_size_index.emplace(BindingPoint{0, 1}, 7u);
options.array_length_from_uniform.bindpoint_to_size_index.emplace(BindingPoint{0, 2}, 2u);
ASTPrinter& gen = SanitizeAndBuild(options);
@@ -256,16 +256,16 @@
T elements[N];
};
-struct tint_symbol {
- /* 0x0000 */ tint_array<uint4, 2> buffer_size;
+struct TintArrayLengths {
+ /* 0x0000 */ tint_array<uint4, 2> array_lengths;
};
struct my_struct {
tint_array<float, 1> a;
};
-fragment void a_func(const constant tint_symbol* tint_symbol_2 [[buffer(29)]]) {
- uint len = ((((*(tint_symbol_2)).buffer_size[1u][3u] - 0u) / 4u) + (((*(tint_symbol_2)).buffer_size[0u][2u] - 0u) / 4u));
+fragment void a_func(const constant TintArrayLengths* tint_symbol [[buffer(29)]]) {
+ uint len = ((((*(tint_symbol)).array_lengths[1u][3u] - 0u) / 4u) + (((*(tint_symbol)).array_lengths[0u][2u] - 0u) / 4u));
return;
}
@@ -291,7 +291,7 @@
});
Options options;
- options.array_length_from_uniform.ubo_binding = {0, 29};
+ options.array_length_from_uniform.ubo_binding = 29;
options.array_length_from_uniform.bindpoint_to_size_index.emplace(BindingPoint{0, 2}, 2u);
ASTPrinter& gen = SanitizeAndBuild(options);
diff --git a/src/tint/lang/msl/writer/common/option_helpers.cc b/src/tint/lang/msl/writer/common/option_helpers.cc
index cb6a162..ab4857b 100644
--- a/src/tint/lang/msl/writer/common/option_helpers.cc
+++ b/src/tint/lang/msl/writer/common/option_helpers.cc
@@ -52,27 +52,21 @@
auto wgsl_seen = [&diagnostics, &seen_wgsl_bindings](const tint::BindingPoint& src,
const binding::BindingInfo& dst) -> bool {
- if (auto binding = seen_wgsl_bindings.Get(src)) {
- if (*binding != dst) {
- diagnostics.AddError(diag::System::Writer, Source{})
- << "found duplicate WGSL binding point: " << src;
- return true;
- }
+ if (auto binding = seen_wgsl_bindings.Add(src, dst); binding.value != dst) {
+ diagnostics.AddError(diag::System::Writer, Source{})
+ << "found duplicate WGSL binding point: " << src;
+ return true;
}
- seen_wgsl_bindings.Add(src, dst);
return false;
};
auto msl_seen = [&diagnostics](InfoToPointMap& map, const binding::BindingInfo& src,
const tint::BindingPoint& dst) -> bool {
- if (auto binding = map.Get(src)) {
- if (*binding != dst) {
- diagnostics.AddError(diag::System::Writer, Source{})
- << "found duplicate MSL binding point: [binding: " << src.binding << "]";
- return true;
- }
+ if (auto binding = map.Add(src, dst); binding.value != dst) {
+ diagnostics.AddError(diag::System::Writer, Source{})
+ << "found duplicate MSL binding point: [binding: " << src.binding << "]";
+ return true;
}
- map.Add(src, dst);
return false;
};
@@ -159,9 +153,11 @@
//
// When the data comes in we have a list of all WGSL origin (group,binding) pairs to MSL
// (binding) in the `uniform`, `storage`, `texture`, and `sampler` arrays.
-void PopulateRemapperAndMultiplanarOptions(const Options& options,
- RemapperData& remapper_data,
- ExternalTextureOptions& external_texture) {
+void PopulateBindingRelatedOptions(
+ const Options& options,
+ RemapperData& remapper_data,
+ ExternalTextureOptions& external_texture,
+ ArrayLengthFromUniformOptions& array_length_from_uniform_options) {
auto create_remappings = [&remapper_data](const auto& hsh) {
for (const auto& it : hsh) {
const BindingPoint& src_binding_point = it.first;
@@ -208,6 +204,24 @@
remapper_data.emplace(src_binding_point, plane0_binding_point);
}
+
+ // ArrayLengthFromUniformOptions bindpoints may need to be remapped
+ {
+ std::unordered_map<BindingPoint, uint32_t> bindpoint_to_size_index;
+ for (auto& [bindpoint, index] : options.array_length_from_uniform.bindpoint_to_size_index) {
+ auto it = remapper_data.find(bindpoint);
+ if (it != remapper_data.end()) {
+ bindpoint_to_size_index.emplace(it->second, index);
+ } else {
+ bindpoint_to_size_index.emplace(bindpoint, index);
+ }
+ }
+
+ array_length_from_uniform_options.ubo_binding =
+ options.array_length_from_uniform.ubo_binding;
+ array_length_from_uniform_options.bindpoint_to_size_index =
+ std::move(bindpoint_to_size_index);
+ }
}
} // namespace tint::msl::writer
diff --git a/src/tint/lang/msl/writer/common/option_helpers.h b/src/tint/lang/msl/writer/common/option_helpers.h
index 6f21fbd..f4d6dee 100644
--- a/src/tint/lang/msl/writer/common/option_helpers.h
+++ b/src/tint/lang/msl/writer/common/option_helpers.h
@@ -45,14 +45,17 @@
/// @returns success or failure
Result<SuccessType> ValidateBindingOptions(const Options& options);
-/// Populates data from the writer options for the remapper and external texture.
+/// Populates binding-related option from the writer options
/// @param options the writer options
/// @param remapper_data where to put the remapper data
/// @param external_texture where to store the external texture options
+/// @param array_length_from_uniform_options where to store the ArrayLengthFromUniform options
/// Note, these are populated together because there are dependencies between the two types of data.
-void PopulateRemapperAndMultiplanarOptions(const Options& options,
- RemapperData& remapper_data,
- ExternalTextureOptions& external_texture);
+void PopulateBindingRelatedOptions(
+ const Options& options,
+ RemapperData& remapper_data,
+ ExternalTextureOptions& external_texture,
+ ArrayLengthFromUniformOptions& array_length_from_uniform_options);
} // namespace tint::msl::writer
diff --git a/src/tint/lang/msl/writer/common/options.h b/src/tint/lang/msl/writer/common/options.h
index 083206c..adfbf72 100644
--- a/src/tint/lang/msl/writer/common/options.h
+++ b/src/tint/lang/msl/writer/common/options.h
@@ -31,7 +31,6 @@
#include <unordered_map>
#include "src/tint/api/common/binding_point.h"
-#include "src/tint/api/options/array_length_from_uniform.h"
#include "src/tint/api/options/pixel_local.h"
#include "src/tint/utils/reflection/reflection.h"
@@ -112,6 +111,19 @@
TINT_REFLECT(Bindings, uniform, storage, texture, storage_texture, sampler, external_texture);
};
+/// Options used to specify a mapping of binding points to indices into a UBO
+/// from which to load buffer sizes.
+struct ArrayLengthFromUniformOptions {
+ /// The MSL binding point to use to generate a uniform buffer from which to read buffer sizes.
+ uint32_t ubo_binding;
+ /// The mapping from the storage buffer binding points in WGSL binding-point space to the index
+ /// into the uniform buffer where the length of the buffer is stored.
+ std::unordered_map<BindingPoint, uint32_t> bindpoint_to_size_index;
+
+ /// Reflect the fields of this class so that it can be used by tint::ForeachField()
+ TINT_REFLECT(ArrayLengthFromUniformOptions, ubo_binding, bindpoint_to_size_index);
+};
+
/// Configuration options used for generating MSL.
struct Options {
/// Constructor
diff --git a/src/tint/lang/msl/writer/common/options_test.cc b/src/tint/lang/msl/writer/common/options_test.cc
index 6cd8632..1dc826f 100644
--- a/src/tint/lang/msl/writer/common/options_test.cc
+++ b/src/tint/lang/msl/writer/common/options_test.cc
@@ -33,6 +33,7 @@
namespace {
TEST(TintCheckAllFieldsReflected, MslWriterCommonOptionsTest) {
+ TINT_ASSERT_ALL_FIELDS_REFLECTED(ArrayLengthFromUniformOptions);
TINT_ASSERT_ALL_FIELDS_REFLECTED(binding::BindingInfo);
TINT_ASSERT_ALL_FIELDS_REFLECTED(binding::ExternalTexture);
TINT_ASSERT_ALL_FIELDS_REFLECTED(Bindings);
diff --git a/src/tint/lang/msl/writer/raise/raise.cc b/src/tint/lang/msl/writer/raise/raise.cc
index 63591e7..fab831d 100644
--- a/src/tint/lang/msl/writer/raise/raise.cc
+++ b/src/tint/lang/msl/writer/raise/raise.cc
@@ -56,7 +56,9 @@
ExternalTextureOptions external_texture_options{};
RemapperData remapper_data{};
- PopulateRemapperAndMultiplanarOptions(options, remapper_data, external_texture_options);
+ ArrayLengthFromUniformOptions array_length_from_uniform_options{};
+ PopulateBindingRelatedOptions(options, remapper_data, external_texture_options,
+ array_length_from_uniform_options);
RUN_TRANSFORM(core::ir::transform::BindingRemapper, remapper_data);
{
diff --git a/src/tint/lang/msl/writer/writer_bench.cc b/src/tint/lang/msl/writer/writer_bench.cc
index 455b501..47d07a1 100644
--- a/src/tint/lang/msl/writer/writer_bench.cc
+++ b/src/tint/lang/msl/writer/writer_bench.cc
@@ -45,7 +45,7 @@
auto& program = res->program;
tint::msl::writer::Options gen_options = {};
- gen_options.array_length_from_uniform.ubo_binding = tint::BindingPoint{0, 30};
+ gen_options.array_length_from_uniform.ubo_binding = 30;
gen_options.array_length_from_uniform.bindpoint_to_size_index.emplace(tint::BindingPoint{0, 0},
0);
gen_options.array_length_from_uniform.bindpoint_to_size_index.emplace(tint::BindingPoint{0, 1},
diff --git a/src/tint/lang/wgsl/ast/transform/array_length_from_uniform.cc b/src/tint/lang/wgsl/ast/transform/array_length_from_uniform.cc
index bdb43cf..e307e25 100644
--- a/src/tint/lang/wgsl/ast/transform/array_length_from_uniform.cc
+++ b/src/tint/lang/wgsl/ast/transform/array_length_from_uniform.cc
@@ -29,24 +29,39 @@
#include <memory>
#include <string>
+#include <string_view>
#include <utility>
#include "src/tint/lang/core/fluent_types.h"
+#include "src/tint/lang/core/unary_op.h"
+#include "src/tint/lang/wgsl/ast/expression.h"
#include "src/tint/lang/wgsl/ast/transform/simplify_pointers.h"
+#include "src/tint/lang/wgsl/ast/unary_op_expression.h"
+#include "src/tint/lang/wgsl/ast/variable.h"
+#include "src/tint/lang/wgsl/builtin_fn.h"
#include "src/tint/lang/wgsl/program/clone_context.h"
#include "src/tint/lang/wgsl/program/program_builder.h"
#include "src/tint/lang/wgsl/resolver/resolve.h"
+#include "src/tint/lang/wgsl/sem/array.h"
+#include "src/tint/lang/wgsl/sem/builtin_fn.h"
#include "src/tint/lang/wgsl/sem/call.h"
+#include "src/tint/lang/wgsl/sem/expression.h"
#include "src/tint/lang/wgsl/sem/function.h"
+#include "src/tint/lang/wgsl/sem/member_accessor_expression.h"
#include "src/tint/lang/wgsl/sem/statement.h"
#include "src/tint/lang/wgsl/sem/variable.h"
+#include "src/tint/utils/containers/unique_vector.h"
+#include "src/tint/utils/diagnostic/diagnostic.h"
+#include "src/tint/utils/ice/ice.h"
+#include "src/tint/utils/rtti/switch.h"
+#include "src/tint/utils/text/text_style.h"
TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::ArrayLengthFromUniform);
TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::ArrayLengthFromUniform::Config);
TINT_INSTANTIATE_TYPEINFO(tint::ast::transform::ArrayLengthFromUniform::Result);
using namespace tint::core::fluent_types; // NOLINT
- //
+
namespace tint::ast::transform {
namespace {
@@ -75,12 +90,11 @@
/// @param in the input transform data
/// @param out the output transform data
explicit State(const Program& program, const DataMap& in, DataMap& out)
- : src(program), inputs(in), outputs(out) {}
+ : src(program), outputs(out), cfg(in.Get<Config>()) {}
/// Runs the transform
/// @returns the new program or SkipTransform if the transform is not required
ApplyResult Run() {
- auto* cfg = inputs.Get<Config>();
if (cfg == nullptr) {
b.Diagnostics().AddError(diag::System::Transform, Source{})
<< "missing transform data for "
@@ -88,103 +102,34 @@
return resolver::Resolve(b);
}
- if (!ShouldRun(src)) {
+ if (cfg->bindpoint_to_size_index.empty() || !ShouldRun(src)) {
return SkipTransform;
}
- const char* kBufferSizeMemberName = "buffer_size";
+ // Create the name of the array lengths uniform variable.
+ array_lengths_var = b.Symbols().New("tint_array_lengths");
- // Determine the size of the buffer size array.
- uint32_t max_buffer_size_index = 0;
-
- IterateArrayLengthOnStorageVar(
- [&](const CallExpression*, const sem::VariableUser*, const sem::GlobalVariable* var) {
- if (auto binding = var->Attributes().binding_point) {
- auto idx_itr = cfg->bindpoint_to_size_index.find(*binding);
- if (idx_itr == cfg->bindpoint_to_size_index.end()) {
- return;
- }
- if (idx_itr->second > max_buffer_size_index) {
- max_buffer_size_index = idx_itr->second;
+ // Replace all the arrayLength() calls.
+ for (auto* fn : src.AST().Functions()) {
+ if (auto* sem_fn = sem.Get(fn)) {
+ for (auto* call : sem_fn->DirectCalls()) {
+ if (auto* target = call->Target()->As<sem::BuiltinFn>()) {
+ if (target->Fn() == wgsl::BuiltinFn::kArrayLength) {
+ ReplaceArrayLengthCall(call);
+ }
}
}
- });
-
- // Get (or create, on first call) the uniform buffer that will receive the
- // size of each storage buffer in the module.
- const Variable* buffer_size_ubo = nullptr;
- auto get_ubo = [&] {
- if (!buffer_size_ubo) {
- // Emit an array<vec4<u32>, N>, where N is 1/4 number of elements.
- // We do this because UBOs require an element stride that is 16-byte
- // aligned.
- auto* buffer_size_struct = b.Structure(
- b.Sym(), tint::Vector{
- b.Member(kBufferSizeMemberName,
- b.ty.array(b.ty.vec4(b.ty.u32()),
- u32((max_buffer_size_index / 4) + 1))),
- });
- buffer_size_ubo =
- b.GlobalVar(b.Sym(), b.ty.Of(buffer_size_struct), core::AddressSpace::kUniform,
- b.Group(AInt(cfg->ubo_binding.group)),
- b.Binding(AInt(cfg->ubo_binding.binding)));
}
- return buffer_size_ubo;
- };
+ }
- std::unordered_set<uint32_t> used_size_indices;
+ // Add the necessary array-length arguments to all the newly created array-length
+ // parameters.
+ while (!len_params_needing_args.IsEmpty()) {
+ AddArrayLengthArguments(len_params_needing_args.Pop());
+ }
- IterateArrayLengthOnStorageVar([&](const CallExpression* call_expr,
- const sem::VariableUser* storage_buffer_sem,
- const sem::GlobalVariable* var) {
- auto binding = var->Attributes().binding_point;
- if (!binding) {
- return;
- }
- auto idx_itr = cfg->bindpoint_to_size_index.find(*binding);
- if (idx_itr == cfg->bindpoint_to_size_index.end()) {
- return;
- }
-
- uint32_t size_index = idx_itr->second;
- used_size_indices.insert(size_index);
-
- // Load the total storage buffer size from the UBO.
- uint32_t array_index = size_index / 4;
- auto* vec_expr = b.IndexAccessor(
- b.MemberAccessor(get_ubo()->name->symbol, kBufferSizeMemberName), u32(array_index));
- uint32_t vec_index = size_index % 4;
- auto* total_storage_buffer_size = b.IndexAccessor(vec_expr, u32(vec_index));
-
- // Calculate actual array length
- // total_storage_buffer_size - array_offset
- // array_length = ----------------------------------------
- // array_stride
- const Expression* total_size = total_storage_buffer_size;
- if (TINT_UNLIKELY(storage_buffer_sem->Type()->Is<core::type::Pointer>())) {
- TINT_ICE() << "storage buffer variable should not be a pointer. These should have "
- "been removed by the SimplifyPointers transform";
- return;
- }
- auto* storage_buffer_type = storage_buffer_sem->Type()->UnwrapRef();
- const core::type::Array* array_type = nullptr;
- if (auto* str = storage_buffer_type->As<core::type::Struct>()) {
- // The variable is a struct, so subtract the byte offset of the array
- // member.
- auto* array_member_sem = str->Members().Back();
- array_type = array_member_sem->Type()->As<core::type::Array>();
- total_size = b.Sub(total_storage_buffer_size, u32(array_member_sem->Offset()));
- } else if (auto* arr = storage_buffer_type->As<core::type::Array>()) {
- array_type = arr;
- } else {
- TINT_ICE() << "expected form of arrayLength argument to be &array_var or "
- "&struct_var.array_member";
- return;
- }
- auto* array_length = b.Div(total_size, u32(array_type->Stride()));
-
- ctx.Replace(call_expr, array_length);
- });
+ // Add the tint_array_lengths module-scope uniform variable.
+ AddArrayLengthsUniformVar();
outputs.Add<Result>(used_size_indices);
@@ -193,81 +138,192 @@
}
private:
+ // Replaces the arrayLength() builtin call with an array-length expression passed via a uniform
+ // buffer.
+ void ReplaceArrayLengthCall(const sem::Call* call) {
+ if (auto* replacement = ArrayLengthOf(call->Arguments()[0])) {
+ ctx.Replace(call->Declaration(), replacement);
+ }
+ }
+
+ /// @returns an AST expression that is equal to the arrayLength() of the runtime-sized array
+ /// accessed by the pointer expression @p expr, or nullptr on error or if the array is not in
+ /// the Config::bindpoint_to_size_index map.
+ const ast::Expression* ArrayLengthOf(const sem::Expression* expr) {
+ const ast::Expression* len = nullptr;
+ while (expr) {
+ expr = Switch(
+ expr, //
+ [&](const sem::VariableUser* user) {
+ len = ArrayLengthOf(user->Variable());
+ return nullptr;
+ },
+ [&](const sem::MemberAccessorExpression* access) {
+ return access->Object(); // Follow the object
+ },
+ [&](const sem::Expression* e) {
+ return Switch(
+ e->Declaration(), //
+ [&](const ast::UnaryOpExpression* unary) -> const sem::Expression* {
+ switch (unary->op) {
+ case core::UnaryOp::kAddressOf:
+ case core::UnaryOp::kIndirection:
+ return sem.Get(unary->expr); // Follow the object
+ default:
+ TINT_ICE() << "unexpected unary op: " << unary->op;
+ return nullptr;
+ }
+ },
+ TINT_ICE_ON_NO_MATCH);
+ },
+ TINT_ICE_ON_NO_MATCH);
+ }
+ return len;
+ }
+
+ /// @returns an AST expression that is equal to the arrayLength() of the runtime-sized array
+ /// held by the module-scope variable or parameter @p var, or nullptr on error or if the array
+ /// is not in the Config::bindpoint_to_size_index map.
+ const ast::Expression* ArrayLengthOf(const sem::Variable* var) {
+ return Switch(
+ var, //
+ [&](const sem::GlobalVariable* global) { return ArrayLengthOf(global); },
+ [&](const sem::Parameter* param) { return ArrayLengthOf(param); },
+ TINT_ICE_ON_NO_MATCH);
+ }
+
+ /// @returns an AST expression that is equal to the arrayLength() of the runtime-sized array
+ /// held by the module scope variable @p global, or nullptr on error or if the array is not in
+ /// the Config::bindpoint_to_size_index map.
+ const ast::Expression* ArrayLengthOf(const sem::GlobalVariable* global) {
+ auto binding = global->Attributes().binding_point;
+ TINT_ASSERT_OR_RETURN_VALUE(binding, nullptr);
+
+ auto idx_it = cfg->bindpoint_to_size_index.find(*binding);
+ if (idx_it == cfg->bindpoint_to_size_index.end()) {
+ // If the bindpoint_to_size_index map does not contain an entry for the storage buffer,
+ // then we preserve the arrayLength() call.
+ return nullptr;
+ }
+
+ uint32_t size_index = idx_it->second;
+ used_size_indices.insert(size_index);
+
+ // Load the total storage buffer size from the UBO.
+ uint32_t array_index = size_index / 4;
+ auto* vec_expr = b.IndexAccessor(
+ b.MemberAccessor(array_lengths_var, kArrayLengthsMemberName), u32(array_index));
+ uint32_t vec_index = size_index % 4;
+ auto* total_storage_buffer_size = b.IndexAccessor(vec_expr, u32(vec_index));
+
+ // Calculate actual array length
+ // total_storage_buffer_size - array_offset
+ // array_length = ----------------------------------------
+ // array_stride
+ const Expression* total_size = total_storage_buffer_size;
+ if (TINT_UNLIKELY(global->Type()->Is<core::type::Pointer>())) {
+ TINT_ICE() << "storage buffer variable should not be a pointer. "
+ "These should have been removed by the SimplifyPointers transform";
+ return nullptr;
+ }
+ auto* storage_buffer_type = global->Type()->UnwrapRef();
+ const core::type::Array* array_type = nullptr;
+ if (auto* str = storage_buffer_type->As<core::type::Struct>()) {
+ // The variable is a struct, so subtract the byte offset of the
+ // array member.
+ auto* array_member_sem = str->Members().Back();
+ array_type = array_member_sem->Type()->As<core::type::Array>();
+ total_size = b.Sub(total_storage_buffer_size, u32(array_member_sem->Offset()));
+ } else if (auto* arr = storage_buffer_type->As<core::type::Array>()) {
+ array_type = arr;
+ } else {
+ TINT_ICE() << "expected form of arrayLength argument to be &array_var or "
+ "&struct_var.array_member";
+ return nullptr;
+ }
+ return b.Div(total_size, u32(array_type->Stride()));
+ }
+
+ /// @returns an AST expression that is equal to the arrayLength() of the runtime-sized array
+ /// held by the object pointed to by the pointer parameter @p param.
+ const ast::Expression* ArrayLengthOf(const sem::Parameter* param) {
+ // Pointer originates from a parameter.
+ // Add a new array length parameter to the function, and use that.
+ auto len_name = param_lengths.GetOrAdd(param, [&] {
+ auto* fn = param->Owner()->As<sem::Function>();
+ auto name = b.Symbols().New(param->Declaration()->name->symbol.Name() + "_length");
+ auto* len_param = b.Param(name, b.ty.u32());
+ ctx.InsertAfter(fn->Declaration()->params, param->Declaration(), len_param);
+ len_params_needing_args.Add(param);
+ return name;
+ });
+ return b.Expr(len_name);
+ }
+
+ /// Constructs the uniform buffer variable that will hold the array lengths.
+ void AddArrayLengthsUniformVar() {
+ // Calculate the highest index in the array lengths array
+ uint32_t highest_index = 0;
+ for (auto idx : used_size_indices) {
+ if (idx > highest_index) {
+ highest_index = idx;
+ }
+ }
+
+ // Emit an array<vec4<u32>, N>, where N is 1/4 number of elements.
+ // We do this because UBOs require an element stride that is 16-byte aligned.
+ auto* buffer_size_struct =
+ b.Structure(b.Symbols().New("TintArrayLengths"),
+ tint::Vector{
+ b.Member(kArrayLengthsMemberName,
+ b.ty.array(b.ty.vec4<u32>(), u32((highest_index / 4) + 1))),
+ });
+ b.GlobalVar(array_lengths_var, b.ty.Of(buffer_size_struct), core::AddressSpace::kUniform,
+ b.Group(AInt(cfg->ubo_binding.group)),
+ b.Binding(AInt(cfg->ubo_binding.binding)));
+ }
+
+ /// Adds an additional array-length argument to all the calls to the function that owns the
+ /// pointer parameter @p param. This may add new entries to #len_params_needing_args.
+ void AddArrayLengthArguments(const sem::Parameter* param) {
+ auto* fn = param->Owner()->As<sem::Function>();
+ for (auto* call : fn->CallSites()) {
+ auto* arg = call->Arguments()[param->Index()];
+ if (auto* len = ArrayLengthOf(arg); len) {
+ ctx.InsertAfter(call->Declaration()->args, arg->Declaration(), len);
+ } else {
+ // Callee expects an array length, but there's no binding for it.
+ // Call arrayLength() at the call-site.
+ len = b.Call(wgsl::BuiltinFn::kArrayLength, ctx.Clone(arg->Declaration()));
+ ctx.InsertAfter(call->Declaration()->args, arg->Declaration(), len);
+ }
+ }
+ }
+
+ /// Name of the array-lengths struct member that holds all the array lengths.
+ static constexpr std::string_view kArrayLengthsMemberName = "array_lengths";
+
/// The source program
const Program& src;
- /// The transform inputs
- const DataMap& inputs;
/// The transform outputs
DataMap& outputs;
+ /// The transform config
+ const Config* const cfg;
/// The target program builder
ProgramBuilder b;
/// The clone context
program::CloneContext ctx = {&b, &src, /* auto_clone_symbols */ true};
-
- /// Iterate over all arrayLength() builtins that operate on
- /// storage buffer variables.
- /// @param functor of type void(const CallExpression*, const
- /// sem::VariableUser, const sem::GlobalVariable*). It takes in an
- /// CallExpression of the arrayLength call expression node, a
- /// sem::VariableUser of the used storage buffer variable, and the
- /// sem::GlobalVariable for the storage buffer.
- template <typename F>
- void IterateArrayLengthOnStorageVar(F&& functor) {
- auto& sem = src.Sem();
-
- // Find all calls to the arrayLength() builtin.
- for (auto* node : src.ASTNodes().Objects()) {
- auto* call_expr = node->As<CallExpression>();
- if (!call_expr) {
- continue;
- }
-
- auto* call = sem.Get(call_expr)->UnwrapMaterialize()->As<sem::Call>();
- auto* builtin = call->Target()->As<sem::BuiltinFn>();
- if (!builtin || builtin->Fn() != wgsl::BuiltinFn::kArrayLength) {
- continue;
- }
-
- if (auto* call_stmt = call->Stmt()->Declaration()->As<CallStatement>()) {
- if (call_stmt->expr == call_expr) {
- // arrayLength() is used as a statement.
- // The argument expression must be side-effect free, so just drop the statement.
- RemoveStatement(ctx, call_stmt);
- continue;
- }
- }
-
- // Get the storage buffer that contains the runtime array.
- // Since we require SimplifyPointers, we can assume that the arrayLength()
- // call has one of two forms:
- // arrayLength(&struct_var.array_member)
- // arrayLength(&array_var)
- auto* param = call_expr->args[0]->As<UnaryOpExpression>();
- if (TINT_UNLIKELY(!param || param->op != core::UnaryOp::kAddressOf)) {
- TINT_ICE() << "expected form of arrayLength argument to be &array_var or "
- "&struct_var.array_member";
- break;
- }
- auto* storage_buffer_expr = param->expr;
- if (auto* accessor = param->expr->As<MemberAccessorExpression>()) {
- storage_buffer_expr = accessor->object;
- }
- auto* storage_buffer_sem = sem.Get<sem::VariableUser>(storage_buffer_expr);
- if (TINT_UNLIKELY(!storage_buffer_sem)) {
- TINT_ICE() << "expected form of arrayLength argument to be &array_var or "
- "&struct_var.array_member";
- break;
- }
-
- // Get the index to use for the buffer size array.
- auto* var = tint::As<sem::GlobalVariable>(storage_buffer_sem->Variable());
- if (TINT_UNLIKELY(!var)) {
- TINT_ICE() << "storage buffer is not a global variable";
- break;
- }
- functor(call_expr, storage_buffer_sem, var);
- }
- }
+ /// Alias to src.Sem()
+ const sem::Info& sem = src.Sem();
+ /// Name of the uniform buffer variable that holds the array lengths
+ Symbol array_lengths_var;
+ /// A map of pointer-parameter to the name of the new array-length parameter.
+ Hashmap<const sem::Parameter*, Symbol, 8> param_lengths;
+ /// Indices into the uniform buffer array indices that are statically used.
+ std::unordered_set<uint32_t> used_size_indices;
+ /// A vector of array-length parameters which need corresponding array-length arguments for all
+ /// callsites.
+ UniqueVector<const sem::Parameter*, 8> len_params_needing_args;
};
Transform::ApplyResult ArrayLengthFromUniform::Apply(const Program& src,
diff --git a/src/tint/lang/wgsl/ast/transform/array_length_from_uniform_test.cc b/src/tint/lang/wgsl/ast/transform/array_length_from_uniform_test.cc
index 2a9c6ac..47aedb5 100644
--- a/src/tint/lang/wgsl/ast/transform/array_length_from_uniform_test.cc
+++ b/src/tint/lang/wgsl/ast/transform/array_length_from_uniform_test.cc
@@ -130,17 +130,17 @@
)";
auto* expect = R"(
-struct tint_symbol {
- buffer_size : array<vec4<u32>, 1u>,
+struct TintArrayLengths {
+ array_lengths : array<vec4<u32>, 1u>,
}
-@group(0) @binding(30) var<uniform> tint_symbol_1 : tint_symbol;
+@group(0) @binding(30) var<uniform> tint_array_lengths : TintArrayLengths;
@group(0) @binding(0) var<storage, read> sb : array<i32>;
@compute @workgroup_size(1)
fn main() {
- var len : u32 = (tint_symbol_1.buffer_size[0u][0u] / 4u);
+ var len : u32 = (tint_array_lengths.array_lengths[0u][0u] / 4u);
}
)";
@@ -174,11 +174,11 @@
)";
auto* expect = R"(
-struct tint_symbol {
- buffer_size : array<vec4<u32>, 1u>,
+struct TintArrayLengths {
+ array_lengths : array<vec4<u32>, 1u>,
}
-@group(0) @binding(30) var<uniform> tint_symbol_1 : tint_symbol;
+@group(0) @binding(30) var<uniform> tint_array_lengths : TintArrayLengths;
struct SB {
x : i32,
@@ -189,7 +189,7 @@
@compute @workgroup_size(1)
fn main() {
- var len : u32 = ((tint_symbol_1.buffer_size[0u][0u] - 4u) / 4u);
+ var len : u32 = ((tint_array_lengths.array_lengths[0u][0u] - 4u) / 4u);
}
)";
@@ -225,11 +225,11 @@
)";
auto* expect = R"(
-struct tint_symbol {
- buffer_size : array<vec4<u32>, 1u>,
+struct TintArrayLengths {
+ array_lengths : array<vec4<u32>, 1u>,
}
-@group(0) @binding(30) var<uniform> tint_symbol_1 : tint_symbol;
+@group(0) @binding(30) var<uniform> tint_array_lengths : TintArrayLengths;
struct SB {
x : i32,
@@ -240,7 +240,7 @@
@compute @workgroup_size(1)
fn main() {
- var len : u32 = ((tint_symbol_1.buffer_size[0u][0u] - 4u) / 4u);
+ var len : u32 = ((tint_array_lengths.array_lengths[0u][0u] - 4u) / 4u);
}
)";
@@ -290,11 +290,11 @@
)";
auto* expect = R"(
-struct tint_symbol {
- buffer_size : array<vec4<u32>, 2u>,
+struct TintArrayLengths {
+ array_lengths : array<vec4<u32>, 2u>,
}
-@group(0) @binding(30) var<uniform> tint_symbol_1 : tint_symbol;
+@group(0) @binding(30) var<uniform> tint_array_lengths : TintArrayLengths;
struct SB1 {
x : i32,
@@ -323,21 +323,21 @@
@compute @workgroup_size(1)
fn main() {
- var len1 : u32 = ((tint_symbol_1.buffer_size[0u][0u] - 4u) / 4u);
- var len2 : u32 = ((tint_symbol_1.buffer_size[0u][1u] - 16u) / 16u);
- var len3 : u32 = (tint_symbol_1.buffer_size[0u][2u] / 16u);
- var len4 : u32 = ((tint_symbol_1.buffer_size[0u][3u] - 16u) / 16u);
- var len5 : u32 = (tint_symbol_1.buffer_size[1u][0u] / 16u);
+ var len1 : u32 = ((tint_array_lengths.array_lengths[0u][0u] - 4u) / 4u);
+ var len2 : u32 = ((tint_array_lengths.array_lengths[0u][1u] - 16u) / 16u);
+ var len3 : u32 = (tint_array_lengths.array_lengths[0u][2u] / 16u);
+ var len4 : u32 = ((tint_array_lengths.array_lengths[0u][3u] - 16u) / 16u);
+ var len5 : u32 = (tint_array_lengths.array_lengths[1u][0u] / 16u);
var x : u32 = ((((len1 + len2) + len3) + len4) + len5);
}
)";
ArrayLengthFromUniform::Config cfg({0, 30u});
- cfg.bindpoint_to_size_index.emplace(BindingPoint{0, 2u}, 0);
- cfg.bindpoint_to_size_index.emplace(BindingPoint{1u, 2u}, 1);
- cfg.bindpoint_to_size_index.emplace(BindingPoint{2u, 2u}, 2);
- cfg.bindpoint_to_size_index.emplace(BindingPoint{3u, 2u}, 3);
- cfg.bindpoint_to_size_index.emplace(BindingPoint{4u, 2u}, 4);
+ cfg.bindpoint_to_size_index.emplace(BindingPoint{0, 2}, 0);
+ cfg.bindpoint_to_size_index.emplace(BindingPoint{1u, 2}, 1);
+ cfg.bindpoint_to_size_index.emplace(BindingPoint{2u, 2}, 2);
+ cfg.bindpoint_to_size_index.emplace(BindingPoint{3u, 2}, 3);
+ cfg.bindpoint_to_size_index.emplace(BindingPoint{4u, 2}, 4);
DataMap data;
data.Add<ArrayLengthFromUniform::Config>(std::move(cfg));
@@ -379,11 +379,11 @@
)";
auto* expect = R"(
-struct tint_symbol {
- buffer_size : array<vec4<u32>, 1u>,
+struct TintArrayLengths {
+ array_lengths : array<vec4<u32>, 1u>,
}
-@group(0) @binding(30) var<uniform> tint_symbol_1 : tint_symbol;
+@group(0) @binding(30) var<uniform> tint_array_lengths : TintArrayLengths;
struct SB1 {
x : i32,
@@ -412,18 +412,18 @@
@compute @workgroup_size(1)
fn main() {
- var len1 : u32 = ((tint_symbol_1.buffer_size[0u][0u] - 4u) / 4u);
- var len3 : u32 = (tint_symbol_1.buffer_size[0u][2u] / 16u);
+ var len1 : u32 = ((tint_array_lengths.array_lengths[0u][0u] - 4u) / 4u);
+ var len3 : u32 = (tint_array_lengths.array_lengths[0u][2u] / 16u);
var x : u32 = (len1 + len3);
}
)";
ArrayLengthFromUniform::Config cfg({0, 30u});
- cfg.bindpoint_to_size_index.emplace(BindingPoint{0, 2u}, 0);
- cfg.bindpoint_to_size_index.emplace(BindingPoint{1u, 2u}, 1);
- cfg.bindpoint_to_size_index.emplace(BindingPoint{2u, 2u}, 2);
- cfg.bindpoint_to_size_index.emplace(BindingPoint{3u, 2u}, 3);
- cfg.bindpoint_to_size_index.emplace(BindingPoint{4u, 2u}, 4);
+ cfg.bindpoint_to_size_index.emplace(BindingPoint{0, 2}, 0);
+ cfg.bindpoint_to_size_index.emplace(BindingPoint{1u, 2}, 1);
+ cfg.bindpoint_to_size_index.emplace(BindingPoint{2u, 2}, 2);
+ cfg.bindpoint_to_size_index.emplace(BindingPoint{3u, 2}, 3);
+ cfg.bindpoint_to_size_index.emplace(BindingPoint{4u, 2}, 4);
DataMap data;
data.Add<ArrayLengthFromUniform::Config>(std::move(cfg));
@@ -486,12 +486,13 @@
}
)";
- auto* expect = R"(
-struct tint_symbol {
- buffer_size : array<vec4<u32>, 1u>,
+ auto* expect =
+ R"(
+struct TintArrayLengths {
+ array_lengths : array<vec4<u32>, 1u>,
}
-@group(0) @binding(30) var<uniform> tint_symbol_1 : tint_symbol;
+@group(0) @binding(30) var<uniform> tint_array_lengths : TintArrayLengths;
struct SB1 {
x : i32,
@@ -509,7 +510,7 @@
@compute @workgroup_size(1)
fn main() {
- var len1 : u32 = ((tint_symbol_1.buffer_size[0u][0u] - 4u) / 4u);
+ var len1 : u32 = ((tint_array_lengths.array_lengths[0u][0u] - 4u) / 4u);
var len2 : u32 = arrayLength(&(sb2.arr2));
var x : u32 = (len1 + len2);
}
@@ -544,15 +545,15 @@
)";
auto* expect = R"(
-struct tint_symbol {
- buffer_size : array<vec4<u32>, 1u>,
+struct TintArrayLengths {
+ array_lengths : array<vec4<u32>, 1u>,
}
-@group(0) @binding(30) var<uniform> tint_symbol_1 : tint_symbol;
+@group(0) @binding(30) var<uniform> tint_array_lengths : TintArrayLengths;
@compute @workgroup_size(1)
fn main() {
- var len : u32 = ((tint_symbol_1.buffer_size[0u][0u] - 4u) / 4u);
+ var len : u32 = ((tint_array_lengths.array_lengths[0u][0u] - 4u) / 4u);
}
@group(0) @binding(0) var<storage, read> sb : SB;
@@ -576,5 +577,133 @@
got.data.Get<ArrayLengthFromUniform::Result>()->used_size_indices);
}
+TEST_F(ArrayLengthFromUniformTest, PtrParam_SingleUse) {
+ auto* src = R"(
+@binding(0) @group(0) var<storage, read_write> arr : array<u32>;
+
+fn f2(p : ptr<storage, array<u32>, read_write>) -> u32 {
+ return arrayLength(p);
+}
+
+fn f1(p : ptr<storage, array<u32>, read_write>) -> u32 {
+ return f2(p);
+}
+
+fn f0(p : ptr<storage, array<u32>, read_write>) -> u32 {
+ return f1(p);
+}
+
+@compute @workgroup_size(1)
+fn main() {
+ arr[0] = f0(&arr);
+}
+)";
+
+ auto* expect =
+ R"(
+struct TintArrayLengths {
+ array_lengths : array<vec4<u32>, 1u>,
+}
+
+@group(0) @binding(30) var<uniform> tint_array_lengths : TintArrayLengths;
+
+@binding(0) @group(0) var<storage, read_write> arr : array<u32>;
+
+fn f2(p : ptr<storage, array<u32>, read_write>, p_length : u32) -> u32 {
+ return p_length;
+}
+
+fn f1(p : ptr<storage, array<u32>, read_write>, p_length_1 : u32) -> u32 {
+ return f2(p, p_length_1);
+}
+
+fn f0(p : ptr<storage, array<u32>, read_write>, p_length_2 : u32) -> u32 {
+ return f1(p, p_length_2);
+}
+
+@compute @workgroup_size(1)
+fn main() {
+ arr[0] = f0(&(arr), (tint_array_lengths.array_lengths[0u][3u] / 4u));
+}
+)";
+
+ ArrayLengthFromUniform::Config cfg({0, 30u});
+ cfg.bindpoint_to_size_index.emplace(BindingPoint{0, 0}, 3);
+
+ DataMap data;
+ data.Add<ArrayLengthFromUniform::Config>(std::move(cfg));
+
+ auto got = Run<Unshadow, SimplifyPointers, ArrayLengthFromUniform>(src, data);
+
+ EXPECT_EQ(expect, str(got));
+ EXPECT_EQ(std::unordered_set<uint32_t>({3}),
+ got.data.Get<ArrayLengthFromUniform::Result>()->used_size_indices);
+}
+
+TEST_F(ArrayLengthFromUniformTest, MissingBindingPoint_PtrParam_MultipleUse) {
+ auto* src = R"(
+@binding(0) @group(0) var<storage, read_write> arr_a : array<u32>;
+@binding(0) @group(1) var<storage, read_write> arr_b : array<u32>;
+
+fn f2(p2 : ptr<storage, array<u32>, read_write>) -> u32 {
+ return arrayLength(p2);
+}
+
+fn f1(p1 : ptr<storage, array<u32>, read_write>) -> u32 {
+ return f2(p1) + arrayLength(p1);
+}
+
+fn f0(p0 : ptr<storage, array<u32>, read_write>) -> u32 {
+ return f1(p0) + arrayLength(p0);
+}
+
+@compute @workgroup_size(1)
+fn main() {
+ arr_a[0] = f0(&arr_a) + arrayLength(&arr_a);
+ arr_b[0] = f0(&arr_b) + arrayLength(&arr_b);
+}
+)";
+
+ auto* expect = R"(
+struct TintArrayLengths {
+ array_lengths : array<vec4<u32>, 2u>,
+}
+
+@group(0) @binding(30) var<uniform> tint_array_lengths : TintArrayLengths;
+
+@binding(0) @group(0) var<storage, read_write> arr_a : array<u32>;
+
+@binding(0) @group(1) var<storage, read_write> arr_b : array<u32>;
+
+fn f2(p2 : ptr<storage, array<u32>, read_write>, p2_length : u32) -> u32 {
+ return p2_length;
+}
+
+fn f1(p1 : ptr<storage, array<u32>, read_write>, p1_length : u32) -> u32 {
+ return (f2(p1, p1_length) + p1_length);
+}
+
+fn f0(p0 : ptr<storage, array<u32>, read_write>, p0_length : u32) -> u32 {
+ return (f1(p0, p0_length) + p0_length);
+}
+
+@compute @workgroup_size(1)
+fn main() {
+ arr_a[0] = (f0(&(arr_a), arrayLength(&(arr_a))) + arrayLength(&(arr_a)));
+ arr_b[0] = (f0(&(arr_b), (tint_array_lengths.array_lengths[1u][1u] / 4u)) + (tint_array_lengths.array_lengths[1u][1u] / 4u));
+}
+)";
+
+ ArrayLengthFromUniform::Config cfg({0, 30u});
+ cfg.bindpoint_to_size_index.emplace(BindingPoint{1, 0}, 5);
+
+ DataMap data;
+ data.Add<ArrayLengthFromUniform::Config>(std::move(cfg));
+
+ auto got = Run<Unshadow, SimplifyPointers, ArrayLengthFromUniform>(src, data);
+
+ EXPECT_EQ(expect, str(got));
+}
+
} // namespace
} // namespace tint::ast::transform
diff --git a/src/tint/lang/wgsl/intrinsic/data.cc b/src/tint/lang/wgsl/intrinsic/data.cc
index 3a84f91..77641d2 100644
--- a/src/tint/lang/wgsl/intrinsic/data.cc
+++ b/src/tint/lang/wgsl/intrinsic/data.cc
@@ -1892,234 +1892,175 @@
/* [88] */ MatcherIndex(0),
/* [89] */ MatcherIndex(1),
/* [90] */ MatcherIndex(42),
- /* [91] */ MatcherIndex(4),
- /* [92] */ MatcherIndex(10),
+ /* [91] */ MatcherIndex(1),
+ /* [92] */ MatcherIndex(2),
/* [93] */ MatcherIndex(43),
- /* [94] */ MatcherIndex(4),
- /* [95] */ MatcherIndex(10),
+ /* [94] */ MatcherIndex(1),
+ /* [95] */ MatcherIndex(2),
/* [96] */ MatcherIndex(44),
- /* [97] */ MatcherIndex(4),
- /* [98] */ MatcherIndex(10),
+ /* [97] */ MatcherIndex(1),
+ /* [98] */ MatcherIndex(2),
/* [99] */ MatcherIndex(45),
- /* [100] */ MatcherIndex(4),
- /* [101] */ MatcherIndex(10),
- /* [102] */ MatcherIndex(42),
- /* [103] */ MatcherIndex(5),
- /* [104] */ MatcherIndex(10),
- /* [105] */ MatcherIndex(43),
- /* [106] */ MatcherIndex(5),
- /* [107] */ MatcherIndex(10),
- /* [108] */ MatcherIndex(44),
- /* [109] */ MatcherIndex(5),
- /* [110] */ MatcherIndex(10),
- /* [111] */ MatcherIndex(45),
- /* [112] */ MatcherIndex(5),
+ /* [100] */ MatcherIndex(1),
+ /* [101] */ MatcherIndex(2),
+ /* [102] */ MatcherIndex(23),
+ /* [103] */ MatcherIndex(2),
+ /* [104] */ MatcherIndex(0),
+ /* [105] */ MatcherIndex(23),
+ /* [106] */ MatcherIndex(1),
+ /* [107] */ MatcherIndex(4),
+ /* [108] */ MatcherIndex(11),
+ /* [109] */ MatcherIndex(10),
+ /* [110] */ MatcherIndex(11),
+ /* [111] */ MatcherIndex(68),
+ /* [112] */ MatcherIndex(13),
/* [113] */ MatcherIndex(10),
- /* [114] */ MatcherIndex(42),
- /* [115] */ MatcherIndex(6),
- /* [116] */ MatcherIndex(10),
- /* [117] */ MatcherIndex(43),
- /* [118] */ MatcherIndex(6),
- /* [119] */ MatcherIndex(10),
- /* [120] */ MatcherIndex(44),
- /* [121] */ MatcherIndex(6),
- /* [122] */ MatcherIndex(10),
- /* [123] */ MatcherIndex(45),
- /* [124] */ MatcherIndex(6),
- /* [125] */ MatcherIndex(10),
- /* [126] */ MatcherIndex(42),
- /* [127] */ MatcherIndex(4),
- /* [128] */ MatcherIndex(9),
- /* [129] */ MatcherIndex(42),
- /* [130] */ MatcherIndex(5),
- /* [131] */ MatcherIndex(9),
- /* [132] */ MatcherIndex(42),
- /* [133] */ MatcherIndex(6),
- /* [134] */ MatcherIndex(9),
- /* [135] */ MatcherIndex(43),
- /* [136] */ MatcherIndex(4),
- /* [137] */ MatcherIndex(9),
- /* [138] */ MatcherIndex(43),
- /* [139] */ MatcherIndex(5),
- /* [140] */ MatcherIndex(9),
- /* [141] */ MatcherIndex(43),
- /* [142] */ MatcherIndex(6),
- /* [143] */ MatcherIndex(9),
- /* [144] */ MatcherIndex(44),
- /* [145] */ MatcherIndex(4),
- /* [146] */ MatcherIndex(9),
- /* [147] */ MatcherIndex(44),
- /* [148] */ MatcherIndex(5),
- /* [149] */ MatcherIndex(9),
- /* [150] */ MatcherIndex(44),
- /* [151] */ MatcherIndex(6),
- /* [152] */ MatcherIndex(9),
- /* [153] */ MatcherIndex(45),
- /* [154] */ MatcherIndex(4),
+ /* [114] */ MatcherIndex(11),
+ /* [115] */ MatcherIndex(1),
+ /* [116] */ MatcherIndex(12),
+ /* [117] */ MatcherIndex(0),
+ /* [118] */ MatcherIndex(50),
+ /* [119] */ MatcherIndex(0),
+ /* [120] */ MatcherIndex(48),
+ /* [121] */ MatcherIndex(0),
+ /* [122] */ MatcherIndex(11),
+ /* [123] */ MatcherIndex(9),
+ /* [124] */ MatcherIndex(13),
+ /* [125] */ MatcherIndex(9),
+ /* [126] */ MatcherIndex(13),
+ /* [127] */ MatcherIndex(7),
+ /* [128] */ MatcherIndex(13),
+ /* [129] */ MatcherIndex(8),
+ /* [130] */ MatcherIndex(30),
+ /* [131] */ MatcherIndex(0),
+ /* [132] */ MatcherIndex(11),
+ /* [133] */ MatcherIndex(8),
+ /* [134] */ MatcherIndex(31),
+ /* [135] */ MatcherIndex(0),
+ /* [136] */ MatcherIndex(32),
+ /* [137] */ MatcherIndex(0),
+ /* [138] */ MatcherIndex(12),
+ /* [139] */ MatcherIndex(8),
+ /* [140] */ MatcherIndex(33),
+ /* [141] */ MatcherIndex(0),
+ /* [142] */ MatcherIndex(34),
+ /* [143] */ MatcherIndex(0),
+ /* [144] */ MatcherIndex(35),
+ /* [145] */ MatcherIndex(0),
+ /* [146] */ MatcherIndex(36),
+ /* [147] */ MatcherIndex(0),
+ /* [148] */ MatcherIndex(13),
+ /* [149] */ MatcherIndex(0),
+ /* [150] */ MatcherIndex(11),
+ /* [151] */ MatcherIndex(7),
+ /* [152] */ MatcherIndex(12),
+ /* [153] */ MatcherIndex(9),
+ /* [154] */ MatcherIndex(30),
/* [155] */ MatcherIndex(9),
- /* [156] */ MatcherIndex(45),
- /* [157] */ MatcherIndex(5),
- /* [158] */ MatcherIndex(9),
- /* [159] */ MatcherIndex(45),
- /* [160] */ MatcherIndex(6),
+ /* [156] */ MatcherIndex(31),
+ /* [157] */ MatcherIndex(9),
+ /* [158] */ MatcherIndex(32),
+ /* [159] */ MatcherIndex(9),
+ /* [160] */ MatcherIndex(33),
/* [161] */ MatcherIndex(9),
- /* [162] */ MatcherIndex(23),
- /* [163] */ MatcherIndex(2),
- /* [164] */ MatcherIndex(0),
- /* [165] */ MatcherIndex(23),
- /* [166] */ MatcherIndex(1),
- /* [167] */ MatcherIndex(4),
+ /* [162] */ MatcherIndex(12),
+ /* [163] */ MatcherIndex(7),
+ /* [164] */ MatcherIndex(34),
+ /* [165] */ MatcherIndex(9),
+ /* [166] */ MatcherIndex(35),
+ /* [167] */ MatcherIndex(9),
/* [168] */ MatcherIndex(11),
- /* [169] */ MatcherIndex(10),
- /* [170] */ MatcherIndex(11),
- /* [171] */ MatcherIndex(68),
- /* [172] */ MatcherIndex(13),
- /* [173] */ MatcherIndex(10),
+ /* [169] */ MatcherIndex(0),
+ /* [170] */ MatcherIndex(12),
+ /* [171] */ MatcherIndex(1),
+ /* [172] */ MatcherIndex(52),
+ /* [173] */ MatcherIndex(0),
/* [174] */ MatcherIndex(11),
- /* [175] */ MatcherIndex(1),
+ /* [175] */ MatcherIndex(5),
/* [176] */ MatcherIndex(12),
- /* [177] */ MatcherIndex(0),
- /* [178] */ MatcherIndex(50),
- /* [179] */ MatcherIndex(0),
- /* [180] */ MatcherIndex(48),
- /* [181] */ MatcherIndex(0),
- /* [182] */ MatcherIndex(11),
+ /* [177] */ MatcherIndex(5),
+ /* [178] */ MatcherIndex(13),
+ /* [179] */ MatcherIndex(5),
+ /* [180] */ MatcherIndex(13),
+ /* [181] */ MatcherIndex(1),
+ /* [182] */ MatcherIndex(14),
/* [183] */ MatcherIndex(9),
- /* [184] */ MatcherIndex(13),
- /* [185] */ MatcherIndex(9),
- /* [186] */ MatcherIndex(13),
- /* [187] */ MatcherIndex(7),
- /* [188] */ MatcherIndex(13),
- /* [189] */ MatcherIndex(8),
- /* [190] */ MatcherIndex(30),
- /* [191] */ MatcherIndex(0),
- /* [192] */ MatcherIndex(11),
- /* [193] */ MatcherIndex(8),
- /* [194] */ MatcherIndex(31),
- /* [195] */ MatcherIndex(0),
- /* [196] */ MatcherIndex(32),
- /* [197] */ MatcherIndex(0),
- /* [198] */ MatcherIndex(12),
- /* [199] */ MatcherIndex(8),
- /* [200] */ MatcherIndex(33),
- /* [201] */ MatcherIndex(0),
- /* [202] */ MatcherIndex(34),
- /* [203] */ MatcherIndex(0),
- /* [204] */ MatcherIndex(35),
+ /* [184] */ MatcherIndex(14),
+ /* [185] */ MatcherIndex(10),
+ /* [186] */ MatcherIndex(15),
+ /* [187] */ MatcherIndex(0),
+ /* [188] */ MatcherIndex(15),
+ /* [189] */ MatcherIndex(9),
+ /* [190] */ MatcherIndex(15),
+ /* [191] */ MatcherIndex(10),
+ /* [192] */ MatcherIndex(16),
+ /* [193] */ MatcherIndex(0),
+ /* [194] */ MatcherIndex(16),
+ /* [195] */ MatcherIndex(9),
+ /* [196] */ MatcherIndex(16),
+ /* [197] */ MatcherIndex(10),
+ /* [198] */ MatcherIndex(17),
+ /* [199] */ MatcherIndex(0),
+ /* [200] */ MatcherIndex(17),
+ /* [201] */ MatcherIndex(9),
+ /* [202] */ MatcherIndex(17),
+ /* [203] */ MatcherIndex(10),
+ /* [204] */ MatcherIndex(18),
/* [205] */ MatcherIndex(0),
- /* [206] */ MatcherIndex(36),
- /* [207] */ MatcherIndex(0),
- /* [208] */ MatcherIndex(13),
- /* [209] */ MatcherIndex(0),
- /* [210] */ MatcherIndex(11),
- /* [211] */ MatcherIndex(7),
- /* [212] */ MatcherIndex(12),
+ /* [206] */ MatcherIndex(18),
+ /* [207] */ MatcherIndex(9),
+ /* [208] */ MatcherIndex(18),
+ /* [209] */ MatcherIndex(10),
+ /* [210] */ MatcherIndex(19),
+ /* [211] */ MatcherIndex(0),
+ /* [212] */ MatcherIndex(19),
/* [213] */ MatcherIndex(9),
- /* [214] */ MatcherIndex(30),
- /* [215] */ MatcherIndex(9),
- /* [216] */ MatcherIndex(31),
- /* [217] */ MatcherIndex(9),
- /* [218] */ MatcherIndex(32),
+ /* [214] */ MatcherIndex(19),
+ /* [215] */ MatcherIndex(10),
+ /* [216] */ MatcherIndex(20),
+ /* [217] */ MatcherIndex(0),
+ /* [218] */ MatcherIndex(20),
/* [219] */ MatcherIndex(9),
- /* [220] */ MatcherIndex(33),
- /* [221] */ MatcherIndex(9),
- /* [222] */ MatcherIndex(12),
- /* [223] */ MatcherIndex(7),
- /* [224] */ MatcherIndex(34),
+ /* [220] */ MatcherIndex(20),
+ /* [221] */ MatcherIndex(10),
+ /* [222] */ MatcherIndex(21),
+ /* [223] */ MatcherIndex(0),
+ /* [224] */ MatcherIndex(21),
/* [225] */ MatcherIndex(9),
- /* [226] */ MatcherIndex(35),
- /* [227] */ MatcherIndex(9),
- /* [228] */ MatcherIndex(11),
+ /* [226] */ MatcherIndex(21),
+ /* [227] */ MatcherIndex(10),
+ /* [228] */ MatcherIndex(22),
/* [229] */ MatcherIndex(0),
- /* [230] */ MatcherIndex(12),
- /* [231] */ MatcherIndex(1),
- /* [232] */ MatcherIndex(52),
- /* [233] */ MatcherIndex(0),
- /* [234] */ MatcherIndex(11),
- /* [235] */ MatcherIndex(5),
- /* [236] */ MatcherIndex(12),
- /* [237] */ MatcherIndex(5),
- /* [238] */ MatcherIndex(13),
- /* [239] */ MatcherIndex(5),
- /* [240] */ MatcherIndex(13),
- /* [241] */ MatcherIndex(1),
- /* [242] */ MatcherIndex(14),
- /* [243] */ MatcherIndex(9),
- /* [244] */ MatcherIndex(14),
- /* [245] */ MatcherIndex(10),
- /* [246] */ MatcherIndex(15),
- /* [247] */ MatcherIndex(0),
- /* [248] */ MatcherIndex(15),
- /* [249] */ MatcherIndex(9),
- /* [250] */ MatcherIndex(15),
- /* [251] */ MatcherIndex(10),
- /* [252] */ MatcherIndex(16),
- /* [253] */ MatcherIndex(0),
- /* [254] */ MatcherIndex(16),
- /* [255] */ MatcherIndex(9),
- /* [256] */ MatcherIndex(16),
- /* [257] */ MatcherIndex(10),
- /* [258] */ MatcherIndex(17),
- /* [259] */ MatcherIndex(0),
- /* [260] */ MatcherIndex(17),
- /* [261] */ MatcherIndex(9),
- /* [262] */ MatcherIndex(17),
- /* [263] */ MatcherIndex(10),
- /* [264] */ MatcherIndex(18),
- /* [265] */ MatcherIndex(0),
- /* [266] */ MatcherIndex(18),
- /* [267] */ MatcherIndex(9),
- /* [268] */ MatcherIndex(18),
- /* [269] */ MatcherIndex(10),
- /* [270] */ MatcherIndex(19),
- /* [271] */ MatcherIndex(0),
- /* [272] */ MatcherIndex(19),
- /* [273] */ MatcherIndex(9),
- /* [274] */ MatcherIndex(19),
- /* [275] */ MatcherIndex(10),
- /* [276] */ MatcherIndex(20),
- /* [277] */ MatcherIndex(0),
- /* [278] */ MatcherIndex(20),
- /* [279] */ MatcherIndex(9),
- /* [280] */ MatcherIndex(20),
- /* [281] */ MatcherIndex(10),
- /* [282] */ MatcherIndex(21),
- /* [283] */ MatcherIndex(0),
- /* [284] */ MatcherIndex(21),
- /* [285] */ MatcherIndex(9),
- /* [286] */ MatcherIndex(21),
- /* [287] */ MatcherIndex(10),
- /* [288] */ MatcherIndex(22),
- /* [289] */ MatcherIndex(0),
- /* [290] */ MatcherIndex(22),
- /* [291] */ MatcherIndex(9),
- /* [292] */ MatcherIndex(22),
- /* [293] */ MatcherIndex(10),
- /* [294] */ MatcherIndex(47),
- /* [295] */ MatcherIndex(0),
- /* [296] */ MatcherIndex(60),
- /* [297] */ MatcherIndex(64),
- /* [298] */ MatcherIndex(72),
- /* [299] */ MatcherIndex(66),
- /* [300] */ MatcherIndex(53),
- /* [301] */ MatcherIndex(61),
- /* [302] */ MatcherIndex(37),
- /* [303] */ MatcherIndex(38),
- /* [304] */ MatcherIndex(39),
- /* [305] */ MatcherIndex(40),
- /* [306] */ MatcherIndex(41),
- /* [307] */ MatcherIndex(46),
- /* [308] */ MatcherIndex(28),
- /* [309] */ MatcherIndex(29),
- /* [310] */ MatcherIndex(67),
- /* [311] */ MatcherIndex(65),
- /* [312] */ MatcherIndex(57),
- /* [313] */ MatcherIndex(58),
- /* [314] */ MatcherIndex(55),
- /* [315] */ MatcherIndex(56),
- /* [316] */ MatcherIndex(59),
- /* [317] */ MatcherIndex(54),
- /* [318] */ MatcherIndex(71),
+ /* [230] */ MatcherIndex(22),
+ /* [231] */ MatcherIndex(9),
+ /* [232] */ MatcherIndex(22),
+ /* [233] */ MatcherIndex(10),
+ /* [234] */ MatcherIndex(47),
+ /* [235] */ MatcherIndex(0),
+ /* [236] */ MatcherIndex(60),
+ /* [237] */ MatcherIndex(64),
+ /* [238] */ MatcherIndex(72),
+ /* [239] */ MatcherIndex(66),
+ /* [240] */ MatcherIndex(53),
+ /* [241] */ MatcherIndex(61),
+ /* [242] */ MatcherIndex(37),
+ /* [243] */ MatcherIndex(38),
+ /* [244] */ MatcherIndex(39),
+ /* [245] */ MatcherIndex(40),
+ /* [246] */ MatcherIndex(41),
+ /* [247] */ MatcherIndex(46),
+ /* [248] */ MatcherIndex(28),
+ /* [249] */ MatcherIndex(29),
+ /* [250] */ MatcherIndex(6),
+ /* [251] */ MatcherIndex(67),
+ /* [252] */ MatcherIndex(65),
+ /* [253] */ MatcherIndex(57),
+ /* [254] */ MatcherIndex(58),
+ /* [255] */ MatcherIndex(55),
+ /* [256] */ MatcherIndex(56),
+ /* [257] */ MatcherIndex(59),
+ /* [258] */ MatcherIndex(54),
+ /* [259] */ MatcherIndex(71),
};
static_assert(MatcherIndicesIndex::CanIndex(kMatcherIndices),
@@ -2224,17 +2165,17 @@
{
/* [19] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(218),
+ /* matcher_indices */ MatcherIndicesIndex(158),
},
{
/* [20] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(308),
+ /* matcher_indices */ MatcherIndicesIndex(248),
},
{
/* [21] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(182),
+ /* matcher_indices */ MatcherIndicesIndex(122),
},
{
/* [22] */
@@ -2244,17 +2185,17 @@
{
/* [23] */
/* usage */ core::ParameterUsage::kDdx,
- /* matcher_indices */ MatcherIndicesIndex(182),
+ /* matcher_indices */ MatcherIndicesIndex(122),
},
{
/* [24] */
/* usage */ core::ParameterUsage::kDdy,
- /* matcher_indices */ MatcherIndicesIndex(182),
+ /* matcher_indices */ MatcherIndicesIndex(122),
},
{
/* [25] */
/* usage */ core::ParameterUsage::kOffset,
- /* matcher_indices */ MatcherIndicesIndex(210),
+ /* matcher_indices */ MatcherIndicesIndex(150),
},
{
/* [26] */
@@ -2264,17 +2205,17 @@
{
/* [27] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(196),
+ /* matcher_indices */ MatcherIndicesIndex(136),
},
{
/* [28] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(308),
+ /* matcher_indices */ MatcherIndicesIndex(248),
},
{
/* [29] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(182),
+ /* matcher_indices */ MatcherIndicesIndex(122),
},
{
/* [30] */
@@ -2284,22 +2225,22 @@
{
/* [31] */
/* usage */ core::ParameterUsage::kOffset,
- /* matcher_indices */ MatcherIndicesIndex(210),
+ /* matcher_indices */ MatcherIndicesIndex(150),
},
{
/* [32] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(303),
+ /* matcher_indices */ MatcherIndicesIndex(243),
},
{
/* [33] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(309),
+ /* matcher_indices */ MatcherIndicesIndex(249),
},
{
/* [34] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(182),
+ /* matcher_indices */ MatcherIndicesIndex(122),
},
{
/* [35] */
@@ -2314,22 +2255,22 @@
{
/* [37] */
/* usage */ core::ParameterUsage::kOffset,
- /* matcher_indices */ MatcherIndicesIndex(210),
+ /* matcher_indices */ MatcherIndicesIndex(150),
},
{
/* [38] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(218),
+ /* matcher_indices */ MatcherIndicesIndex(158),
},
{
/* [39] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(308),
+ /* matcher_indices */ MatcherIndicesIndex(248),
},
{
/* [40] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(182),
+ /* matcher_indices */ MatcherIndicesIndex(122),
},
{
/* [41] */
@@ -2344,82 +2285,82 @@
{
/* [43] */
/* usage */ core::ParameterUsage::kOffset,
- /* matcher_indices */ MatcherIndicesIndex(210),
+ /* matcher_indices */ MatcherIndicesIndex(150),
},
{
/* [44] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(216),
+ /* matcher_indices */ MatcherIndicesIndex(156),
},
{
/* [45] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(308),
+ /* matcher_indices */ MatcherIndicesIndex(248),
},
{
/* [46] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(182),
+ /* matcher_indices */ MatcherIndicesIndex(122),
},
{
/* [47] */
/* usage */ core::ParameterUsage::kDdx,
- /* matcher_indices */ MatcherIndicesIndex(182),
+ /* matcher_indices */ MatcherIndicesIndex(122),
},
{
/* [48] */
/* usage */ core::ParameterUsage::kDdy,
- /* matcher_indices */ MatcherIndicesIndex(182),
+ /* matcher_indices */ MatcherIndicesIndex(122),
},
{
/* [49] */
/* usage */ core::ParameterUsage::kOffset,
- /* matcher_indices */ MatcherIndicesIndex(210),
+ /* matcher_indices */ MatcherIndicesIndex(150),
},
{
/* [50] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(220),
+ /* matcher_indices */ MatcherIndicesIndex(160),
},
{
/* [51] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(308),
+ /* matcher_indices */ MatcherIndicesIndex(248),
},
{
/* [52] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(212),
+ /* matcher_indices */ MatcherIndicesIndex(152),
},
{
/* [53] */
/* usage */ core::ParameterUsage::kDdx,
- /* matcher_indices */ MatcherIndicesIndex(212),
+ /* matcher_indices */ MatcherIndicesIndex(152),
},
{
/* [54] */
/* usage */ core::ParameterUsage::kDdy,
- /* matcher_indices */ MatcherIndicesIndex(212),
+ /* matcher_indices */ MatcherIndicesIndex(152),
},
{
/* [55] */
/* usage */ core::ParameterUsage::kOffset,
- /* matcher_indices */ MatcherIndicesIndex(222),
+ /* matcher_indices */ MatcherIndicesIndex(162),
},
{
/* [56] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(226),
+ /* matcher_indices */ MatcherIndicesIndex(166),
},
{
/* [57] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(308),
+ /* matcher_indices */ MatcherIndicesIndex(248),
},
{
/* [58] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(212),
+ /* matcher_indices */ MatcherIndicesIndex(152),
},
{
/* [59] */
@@ -2429,27 +2370,27 @@
{
/* [60] */
/* usage */ core::ParameterUsage::kDdx,
- /* matcher_indices */ MatcherIndicesIndex(212),
+ /* matcher_indices */ MatcherIndicesIndex(152),
},
{
/* [61] */
/* usage */ core::ParameterUsage::kDdy,
- /* matcher_indices */ MatcherIndicesIndex(212),
+ /* matcher_indices */ MatcherIndicesIndex(152),
},
{
/* [62] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(218),
+ /* matcher_indices */ MatcherIndicesIndex(158),
},
{
/* [63] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(308),
+ /* matcher_indices */ MatcherIndicesIndex(248),
},
{
/* [64] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(182),
+ /* matcher_indices */ MatcherIndicesIndex(122),
},
{
/* [65] */
@@ -2464,22 +2405,22 @@
{
/* [67] */
/* usage */ core::ParameterUsage::kOffset,
- /* matcher_indices */ MatcherIndicesIndex(210),
+ /* matcher_indices */ MatcherIndicesIndex(150),
},
{
/* [68] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(303),
+ /* matcher_indices */ MatcherIndicesIndex(243),
},
{
/* [69] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(308),
+ /* matcher_indices */ MatcherIndicesIndex(248),
},
{
/* [70] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(182),
+ /* matcher_indices */ MatcherIndicesIndex(122),
},
{
/* [71] */
@@ -2494,7 +2435,7 @@
{
/* [73] */
/* usage */ core::ParameterUsage::kOffset,
- /* matcher_indices */ MatcherIndicesIndex(210),
+ /* matcher_indices */ MatcherIndicesIndex(150),
},
{
/* [74] */
@@ -2504,22 +2445,22 @@
{
/* [75] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(194),
+ /* matcher_indices */ MatcherIndicesIndex(134),
},
{
/* [76] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(308),
+ /* matcher_indices */ MatcherIndicesIndex(248),
},
{
/* [77] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(182),
+ /* matcher_indices */ MatcherIndicesIndex(122),
},
{
/* [78] */
/* usage */ core::ParameterUsage::kOffset,
- /* matcher_indices */ MatcherIndicesIndex(210),
+ /* matcher_indices */ MatcherIndicesIndex(150),
},
{
/* [79] */
@@ -2529,17 +2470,17 @@
{
/* [80] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(204),
+ /* matcher_indices */ MatcherIndicesIndex(144),
},
{
/* [81] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(308),
+ /* matcher_indices */ MatcherIndicesIndex(248),
},
{
/* [82] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(212),
+ /* matcher_indices */ MatcherIndicesIndex(152),
},
{
/* [83] */
@@ -2549,17 +2490,17 @@
{
/* [84] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(303),
+ /* matcher_indices */ MatcherIndicesIndex(243),
},
{
/* [85] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(308),
+ /* matcher_indices */ MatcherIndicesIndex(248),
},
{
/* [86] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(182),
+ /* matcher_indices */ MatcherIndicesIndex(122),
},
{
/* [87] */
@@ -2569,22 +2510,22 @@
{
/* [88] */
/* usage */ core::ParameterUsage::kOffset,
- /* matcher_indices */ MatcherIndicesIndex(210),
+ /* matcher_indices */ MatcherIndicesIndex(150),
},
{
/* [89] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(302),
+ /* matcher_indices */ MatcherIndicesIndex(242),
},
{
/* [90] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(309),
+ /* matcher_indices */ MatcherIndicesIndex(249),
},
{
/* [91] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(182),
+ /* matcher_indices */ MatcherIndicesIndex(122),
},
{
/* [92] */
@@ -2594,22 +2535,22 @@
{
/* [93] */
/* usage */ core::ParameterUsage::kOffset,
- /* matcher_indices */ MatcherIndicesIndex(210),
+ /* matcher_indices */ MatcherIndicesIndex(150),
},
{
/* [94] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(305),
+ /* matcher_indices */ MatcherIndicesIndex(245),
},
{
/* [95] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(309),
+ /* matcher_indices */ MatcherIndicesIndex(249),
},
{
/* [96] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(212),
+ /* matcher_indices */ MatcherIndicesIndex(152),
},
{
/* [97] */
@@ -2624,17 +2565,17 @@
{
/* [99] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(218),
+ /* matcher_indices */ MatcherIndicesIndex(158),
},
{
/* [100] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(308),
+ /* matcher_indices */ MatcherIndicesIndex(248),
},
{
/* [101] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(182),
+ /* matcher_indices */ MatcherIndicesIndex(122),
},
{
/* [102] */
@@ -2644,22 +2585,22 @@
{
/* [103] */
/* usage */ core::ParameterUsage::kOffset,
- /* matcher_indices */ MatcherIndicesIndex(210),
+ /* matcher_indices */ MatcherIndicesIndex(150),
},
{
/* [104] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(216),
+ /* matcher_indices */ MatcherIndicesIndex(156),
},
{
/* [105] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(308),
+ /* matcher_indices */ MatcherIndicesIndex(248),
},
{
/* [106] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(182),
+ /* matcher_indices */ MatcherIndicesIndex(122),
},
{
/* [107] */
@@ -2669,22 +2610,22 @@
{
/* [108] */
/* usage */ core::ParameterUsage::kOffset,
- /* matcher_indices */ MatcherIndicesIndex(210),
+ /* matcher_indices */ MatcherIndicesIndex(150),
},
{
/* [109] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(220),
+ /* matcher_indices */ MatcherIndicesIndex(160),
},
{
/* [110] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(308),
+ /* matcher_indices */ MatcherIndicesIndex(248),
},
{
/* [111] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(212),
+ /* matcher_indices */ MatcherIndicesIndex(152),
},
{
/* [112] */
@@ -2694,22 +2635,22 @@
{
/* [113] */
/* usage */ core::ParameterUsage::kOffset,
- /* matcher_indices */ MatcherIndicesIndex(222),
+ /* matcher_indices */ MatcherIndicesIndex(162),
},
{
/* [114] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(226),
+ /* matcher_indices */ MatcherIndicesIndex(166),
},
{
/* [115] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(308),
+ /* matcher_indices */ MatcherIndicesIndex(248),
},
{
/* [116] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(212),
+ /* matcher_indices */ MatcherIndicesIndex(152),
},
{
/* [117] */
@@ -2724,42 +2665,42 @@
{
/* [119] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(224),
+ /* matcher_indices */ MatcherIndicesIndex(164),
},
{
/* [120] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(308),
+ /* matcher_indices */ MatcherIndicesIndex(248),
},
{
/* [121] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(212),
+ /* matcher_indices */ MatcherIndicesIndex(152),
},
{
/* [122] */
/* usage */ core::ParameterUsage::kDdx,
- /* matcher_indices */ MatcherIndicesIndex(212),
+ /* matcher_indices */ MatcherIndicesIndex(152),
},
{
/* [123] */
/* usage */ core::ParameterUsage::kDdy,
- /* matcher_indices */ MatcherIndicesIndex(212),
+ /* matcher_indices */ MatcherIndicesIndex(152),
},
{
/* [124] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(216),
+ /* matcher_indices */ MatcherIndicesIndex(156),
},
{
/* [125] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(308),
+ /* matcher_indices */ MatcherIndicesIndex(248),
},
{
/* [126] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(182),
+ /* matcher_indices */ MatcherIndicesIndex(122),
},
{
/* [127] */
@@ -2769,22 +2710,22 @@
{
/* [128] */
/* usage */ core::ParameterUsage::kOffset,
- /* matcher_indices */ MatcherIndicesIndex(210),
+ /* matcher_indices */ MatcherIndicesIndex(150),
},
{
/* [129] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(220),
+ /* matcher_indices */ MatcherIndicesIndex(160),
},
{
/* [130] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(308),
+ /* matcher_indices */ MatcherIndicesIndex(248),
},
{
/* [131] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(212),
+ /* matcher_indices */ MatcherIndicesIndex(152),
},
{
/* [132] */
@@ -2794,22 +2735,22 @@
{
/* [133] */
/* usage */ core::ParameterUsage::kOffset,
- /* matcher_indices */ MatcherIndicesIndex(222),
+ /* matcher_indices */ MatcherIndicesIndex(162),
},
{
/* [134] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(226),
+ /* matcher_indices */ MatcherIndicesIndex(166),
},
{
/* [135] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(308),
+ /* matcher_indices */ MatcherIndicesIndex(248),
},
{
/* [136] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(212),
+ /* matcher_indices */ MatcherIndicesIndex(152),
},
{
/* [137] */
@@ -2824,17 +2765,17 @@
{
/* [139] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(302),
+ /* matcher_indices */ MatcherIndicesIndex(242),
},
{
/* [140] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(308),
+ /* matcher_indices */ MatcherIndicesIndex(248),
},
{
/* [141] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(182),
+ /* matcher_indices */ MatcherIndicesIndex(122),
},
{
/* [142] */
@@ -2844,22 +2785,22 @@
{
/* [143] */
/* usage */ core::ParameterUsage::kOffset,
- /* matcher_indices */ MatcherIndicesIndex(210),
+ /* matcher_indices */ MatcherIndicesIndex(150),
},
{
/* [144] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(305),
+ /* matcher_indices */ MatcherIndicesIndex(245),
},
{
/* [145] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(308),
+ /* matcher_indices */ MatcherIndicesIndex(248),
},
{
/* [146] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(212),
+ /* matcher_indices */ MatcherIndicesIndex(152),
},
{
/* [147] */
@@ -2899,52 +2840,52 @@
{
/* [154] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(202),
+ /* matcher_indices */ MatcherIndicesIndex(142),
},
{
/* [155] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(308),
+ /* matcher_indices */ MatcherIndicesIndex(248),
},
{
/* [156] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(212),
+ /* matcher_indices */ MatcherIndicesIndex(152),
},
{
/* [157] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(302),
+ /* matcher_indices */ MatcherIndicesIndex(242),
},
{
/* [158] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(308),
+ /* matcher_indices */ MatcherIndicesIndex(248),
},
{
/* [159] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(182),
+ /* matcher_indices */ MatcherIndicesIndex(122),
},
{
/* [160] */
/* usage */ core::ParameterUsage::kOffset,
- /* matcher_indices */ MatcherIndicesIndex(210),
+ /* matcher_indices */ MatcherIndicesIndex(150),
},
{
/* [161] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(304),
+ /* matcher_indices */ MatcherIndicesIndex(244),
},
{
/* [162] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(309),
+ /* matcher_indices */ MatcherIndicesIndex(249),
},
{
/* [163] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(212),
+ /* matcher_indices */ MatcherIndicesIndex(152),
},
{
/* [164] */
@@ -2954,57 +2895,57 @@
{
/* [165] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(216),
+ /* matcher_indices */ MatcherIndicesIndex(156),
},
{
/* [166] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(308),
+ /* matcher_indices */ MatcherIndicesIndex(248),
},
{
/* [167] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(182),
+ /* matcher_indices */ MatcherIndicesIndex(122),
},
{
/* [168] */
/* usage */ core::ParameterUsage::kOffset,
- /* matcher_indices */ MatcherIndicesIndex(210),
+ /* matcher_indices */ MatcherIndicesIndex(150),
},
{
/* [169] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(220),
+ /* matcher_indices */ MatcherIndicesIndex(160),
},
{
/* [170] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(308),
+ /* matcher_indices */ MatcherIndicesIndex(248),
},
{
/* [171] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(212),
+ /* matcher_indices */ MatcherIndicesIndex(152),
},
{
/* [172] */
/* usage */ core::ParameterUsage::kOffset,
- /* matcher_indices */ MatcherIndicesIndex(222),
+ /* matcher_indices */ MatcherIndicesIndex(162),
},
{
/* [173] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(224),
+ /* matcher_indices */ MatcherIndicesIndex(164),
},
{
/* [174] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(308),
+ /* matcher_indices */ MatcherIndicesIndex(248),
},
{
/* [175] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(212),
+ /* matcher_indices */ MatcherIndicesIndex(152),
},
{
/* [176] */
@@ -3014,17 +2955,17 @@
{
/* [177] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(224),
+ /* matcher_indices */ MatcherIndicesIndex(164),
},
{
/* [178] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(308),
+ /* matcher_indices */ MatcherIndicesIndex(248),
},
{
/* [179] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(212),
+ /* matcher_indices */ MatcherIndicesIndex(152),
},
{
/* [180] */
@@ -3034,17 +2975,17 @@
{
/* [181] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(304),
+ /* matcher_indices */ MatcherIndicesIndex(244),
},
{
/* [182] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(308),
+ /* matcher_indices */ MatcherIndicesIndex(248),
},
{
/* [183] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(212),
+ /* matcher_indices */ MatcherIndicesIndex(152),
},
{
/* [184] */
@@ -3059,67 +3000,67 @@
{
/* [186] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(228),
+ /* matcher_indices */ MatcherIndicesIndex(168),
},
{
/* [187] */
/* usage */ core::ParameterUsage::kArrayIndex,
- /* matcher_indices */ MatcherIndicesIndex(4),
+ /* matcher_indices */ MatcherIndicesIndex(32),
},
{
/* [188] */
/* usage */ core::ParameterUsage::kValue,
- /* matcher_indices */ MatcherIndicesIndex(184),
+ /* matcher_indices */ MatcherIndicesIndex(124),
},
{
/* [189] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(108),
+ /* matcher_indices */ MatcherIndicesIndex(96),
},
{
/* [190] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(228),
+ /* matcher_indices */ MatcherIndicesIndex(168),
},
{
/* [191] */
/* usage */ core::ParameterUsage::kArrayIndex,
- /* matcher_indices */ MatcherIndicesIndex(4),
+ /* matcher_indices */ MatcherIndicesIndex(32),
},
{
/* [192] */
/* usage */ core::ParameterUsage::kValue,
- /* matcher_indices */ MatcherIndicesIndex(186),
+ /* matcher_indices */ MatcherIndicesIndex(126),
},
{
/* [193] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(120),
+ /* matcher_indices */ MatcherIndicesIndex(96),
},
{
/* [194] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(228),
+ /* matcher_indices */ MatcherIndicesIndex(168),
},
{
/* [195] */
/* usage */ core::ParameterUsage::kArrayIndex,
- /* matcher_indices */ MatcherIndicesIndex(4),
+ /* matcher_indices */ MatcherIndicesIndex(32),
},
{
/* [196] */
/* usage */ core::ParameterUsage::kValue,
- /* matcher_indices */ MatcherIndicesIndex(188),
+ /* matcher_indices */ MatcherIndicesIndex(128),
},
{
/* [197] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(196),
+ /* matcher_indices */ MatcherIndicesIndex(136),
},
{
/* [198] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(174),
+ /* matcher_indices */ MatcherIndicesIndex(114),
},
{
/* [199] */
@@ -3134,12 +3075,12 @@
{
/* [201] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(303),
+ /* matcher_indices */ MatcherIndicesIndex(243),
},
{
/* [202] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(228),
+ /* matcher_indices */ MatcherIndicesIndex(168),
},
{
/* [203] */
@@ -3174,62 +3115,62 @@
{
/* [209] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(228),
+ /* matcher_indices */ MatcherIndicesIndex(168),
},
{
/* [210] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(228),
+ /* matcher_indices */ MatcherIndicesIndex(168),
},
{
/* [211] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(228),
+ /* matcher_indices */ MatcherIndicesIndex(168),
},
{
/* [212] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(228),
+ /* matcher_indices */ MatcherIndicesIndex(168),
},
{
/* [213] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(176),
+ /* matcher_indices */ MatcherIndicesIndex(116),
},
{
/* [214] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(176),
+ /* matcher_indices */ MatcherIndicesIndex(116),
},
{
/* [215] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(176),
+ /* matcher_indices */ MatcherIndicesIndex(116),
},
{
/* [216] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(176),
+ /* matcher_indices */ MatcherIndicesIndex(116),
},
{
/* [217] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(208),
+ /* matcher_indices */ MatcherIndicesIndex(148),
},
{
/* [218] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(208),
+ /* matcher_indices */ MatcherIndicesIndex(148),
},
{
/* [219] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(208),
+ /* matcher_indices */ MatcherIndicesIndex(148),
},
{
/* [220] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(208),
+ /* matcher_indices */ MatcherIndicesIndex(148),
},
{
/* [221] */
@@ -3314,12 +3255,12 @@
{
/* [237] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(214),
+ /* matcher_indices */ MatcherIndicesIndex(154),
},
{
/* [238] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(308),
+ /* matcher_indices */ MatcherIndicesIndex(248),
},
{
/* [239] */
@@ -3329,17 +3270,17 @@
{
/* [240] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(307),
+ /* matcher_indices */ MatcherIndicesIndex(247),
},
{
/* [241] */
/* usage */ core::ParameterUsage::kSampler,
- /* matcher_indices */ MatcherIndicesIndex(308),
+ /* matcher_indices */ MatcherIndicesIndex(248),
},
{
/* [242] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(182),
+ /* matcher_indices */ MatcherIndicesIndex(122),
},
{
/* [243] */
@@ -3354,7 +3295,7 @@
{
/* [245] */
/* usage */ core::ParameterUsage::kValue,
- /* matcher_indices */ MatcherIndicesIndex(184),
+ /* matcher_indices */ MatcherIndicesIndex(124),
},
{
/* [246] */
@@ -3364,12 +3305,12 @@
{
/* [247] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(228),
+ /* matcher_indices */ MatcherIndicesIndex(168),
},
{
/* [248] */
/* usage */ core::ParameterUsage::kValue,
- /* matcher_indices */ MatcherIndicesIndex(184),
+ /* matcher_indices */ MatcherIndicesIndex(124),
},
{
/* [249] */
@@ -3379,17 +3320,17 @@
{
/* [250] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(176),
+ /* matcher_indices */ MatcherIndicesIndex(116),
},
{
/* [251] */
/* usage */ core::ParameterUsage::kValue,
- /* matcher_indices */ MatcherIndicesIndex(184),
+ /* matcher_indices */ MatcherIndicesIndex(124),
},
{
/* [252] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(102),
+ /* matcher_indices */ MatcherIndicesIndex(90),
},
{
/* [253] */
@@ -3399,42 +3340,42 @@
{
/* [254] */
/* usage */ core::ParameterUsage::kValue,
- /* matcher_indices */ MatcherIndicesIndex(186),
+ /* matcher_indices */ MatcherIndicesIndex(126),
},
{
/* [255] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(105),
+ /* matcher_indices */ MatcherIndicesIndex(93),
},
{
/* [256] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(228),
+ /* matcher_indices */ MatcherIndicesIndex(168),
},
{
/* [257] */
/* usage */ core::ParameterUsage::kValue,
- /* matcher_indices */ MatcherIndicesIndex(186),
+ /* matcher_indices */ MatcherIndicesIndex(126),
},
{
/* [258] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(111),
+ /* matcher_indices */ MatcherIndicesIndex(99),
},
{
/* [259] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(176),
+ /* matcher_indices */ MatcherIndicesIndex(116),
},
{
/* [260] */
/* usage */ core::ParameterUsage::kValue,
- /* matcher_indices */ MatcherIndicesIndex(186),
+ /* matcher_indices */ MatcherIndicesIndex(126),
},
{
/* [261] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(114),
+ /* matcher_indices */ MatcherIndicesIndex(90),
},
{
/* [262] */
@@ -3444,42 +3385,42 @@
{
/* [263] */
/* usage */ core::ParameterUsage::kValue,
- /* matcher_indices */ MatcherIndicesIndex(188),
+ /* matcher_indices */ MatcherIndicesIndex(128),
},
{
/* [264] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(117),
+ /* matcher_indices */ MatcherIndicesIndex(93),
},
{
/* [265] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(228),
+ /* matcher_indices */ MatcherIndicesIndex(168),
},
{
/* [266] */
/* usage */ core::ParameterUsage::kValue,
- /* matcher_indices */ MatcherIndicesIndex(188),
+ /* matcher_indices */ MatcherIndicesIndex(128),
},
{
/* [267] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(123),
+ /* matcher_indices */ MatcherIndicesIndex(99),
},
{
/* [268] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(176),
+ /* matcher_indices */ MatcherIndicesIndex(116),
},
{
/* [269] */
/* usage */ core::ParameterUsage::kValue,
- /* matcher_indices */ MatcherIndicesIndex(188),
+ /* matcher_indices */ MatcherIndicesIndex(128),
},
{
/* [270] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(190),
+ /* matcher_indices */ MatcherIndicesIndex(130),
},
{
/* [271] */
@@ -3494,12 +3435,12 @@
{
/* [273] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(194),
+ /* matcher_indices */ MatcherIndicesIndex(134),
},
{
/* [274] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(174),
+ /* matcher_indices */ MatcherIndicesIndex(114),
},
{
/* [275] */
@@ -3509,12 +3450,12 @@
{
/* [276] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(200),
+ /* matcher_indices */ MatcherIndicesIndex(140),
},
{
/* [277] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(230),
+ /* matcher_indices */ MatcherIndicesIndex(170),
},
{
/* [278] */
@@ -3524,12 +3465,12 @@
{
/* [279] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(206),
+ /* matcher_indices */ MatcherIndicesIndex(146),
},
{
/* [280] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(174),
+ /* matcher_indices */ MatcherIndicesIndex(114),
},
{
/* [281] */
@@ -3539,12 +3480,12 @@
{
/* [282] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(302),
+ /* matcher_indices */ MatcherIndicesIndex(242),
},
{
/* [283] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(228),
+ /* matcher_indices */ MatcherIndicesIndex(168),
},
{
/* [284] */
@@ -3554,12 +3495,12 @@
{
/* [285] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(306),
+ /* matcher_indices */ MatcherIndicesIndex(246),
},
{
/* [286] */
/* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(228),
+ /* matcher_indices */ MatcherIndicesIndex(168),
},
{
/* [287] */
@@ -3568,543 +3509,543 @@
},
{
/* [288] */
- /* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(144),
+ /* usage */ core::ParameterUsage::kXy,
+ /* matcher_indices */ MatcherIndicesIndex(168),
},
{
/* [289] */
- /* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(228),
- },
- {
- /* [290] */
- /* usage */ core::ParameterUsage::kArrayIndex,
- /* matcher_indices */ MatcherIndicesIndex(4),
- },
- {
- /* [291] */
- /* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(147),
- },
- {
- /* [292] */
- /* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(228),
- },
- {
- /* [293] */
- /* usage */ core::ParameterUsage::kArrayIndex,
- /* matcher_indices */ MatcherIndicesIndex(4),
- },
- {
- /* [294] */
- /* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(150),
- },
- {
- /* [295] */
- /* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(228),
- },
- {
- /* [296] */
- /* usage */ core::ParameterUsage::kArrayIndex,
- /* matcher_indices */ MatcherIndicesIndex(4),
- },
- {
- /* [297] */
- /* usage */ core::ParameterUsage::kXy,
- /* matcher_indices */ MatcherIndicesIndex(228),
- },
- {
- /* [298] */
/* usage */ core::ParameterUsage::kZ,
/* matcher_indices */ MatcherIndicesIndex(3),
},
{
- /* [299] */
+ /* [290] */
/* usage */ core::ParameterUsage::kW,
/* matcher_indices */ MatcherIndicesIndex(3),
},
{
- /* [300] */
+ /* [291] */
/* usage */ core::ParameterUsage::kX,
/* matcher_indices */ MatcherIndicesIndex(3),
},
{
- /* [301] */
+ /* [292] */
/* usage */ core::ParameterUsage::kYz,
- /* matcher_indices */ MatcherIndicesIndex(228),
+ /* matcher_indices */ MatcherIndicesIndex(168),
},
{
- /* [302] */
+ /* [293] */
/* usage */ core::ParameterUsage::kW,
/* matcher_indices */ MatcherIndicesIndex(3),
},
{
- /* [303] */
+ /* [294] */
/* usage */ core::ParameterUsage::kX,
/* matcher_indices */ MatcherIndicesIndex(3),
},
{
- /* [304] */
+ /* [295] */
/* usage */ core::ParameterUsage::kY,
/* matcher_indices */ MatcherIndicesIndex(3),
},
{
- /* [305] */
+ /* [296] */
/* usage */ core::ParameterUsage::kZw,
- /* matcher_indices */ MatcherIndicesIndex(228),
+ /* matcher_indices */ MatcherIndicesIndex(168),
},
{
- /* [306] */
+ /* [297] */
/* usage */ core::ParameterUsage::kNone,
/* matcher_indices */ MatcherIndicesIndex(3),
},
{
- /* [307] */
+ /* [298] */
/* usage */ core::ParameterUsage::kNone,
/* matcher_indices */ MatcherIndicesIndex(4),
},
{
- /* [308] */
+ /* [299] */
/* usage */ core::ParameterUsage::kNone,
/* matcher_indices */ MatcherIndicesIndex(42),
},
{
- /* [309] */
+ /* [300] */
/* usage */ core::ParameterUsage::kNone,
/* matcher_indices */ MatcherIndicesIndex(72),
},
{
- /* [310] */
+ /* [301] */
/* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(190),
+ /* matcher_indices */ MatcherIndicesIndex(130),
+ },
+ {
+ /* [302] */
+ /* usage */ core::ParameterUsage::kLevel,
+ /* matcher_indices */ MatcherIndicesIndex(4),
+ },
+ {
+ /* [303] */
+ /* usage */ core::ParameterUsage::kTexture,
+ /* matcher_indices */ MatcherIndicesIndex(134),
+ },
+ {
+ /* [304] */
+ /* usage */ core::ParameterUsage::kLevel,
+ /* matcher_indices */ MatcherIndicesIndex(4),
+ },
+ {
+ /* [305] */
+ /* usage */ core::ParameterUsage::kTexture,
+ /* matcher_indices */ MatcherIndicesIndex(136),
+ },
+ {
+ /* [306] */
+ /* usage */ core::ParameterUsage::kLevel,
+ /* matcher_indices */ MatcherIndicesIndex(4),
+ },
+ {
+ /* [307] */
+ /* usage */ core::ParameterUsage::kTexture,
+ /* matcher_indices */ MatcherIndicesIndex(140),
+ },
+ {
+ /* [308] */
+ /* usage */ core::ParameterUsage::kLevel,
+ /* matcher_indices */ MatcherIndicesIndex(4),
+ },
+ {
+ /* [309] */
+ /* usage */ core::ParameterUsage::kTexture,
+ /* matcher_indices */ MatcherIndicesIndex(142),
+ },
+ {
+ /* [310] */
+ /* usage */ core::ParameterUsage::kLevel,
+ /* matcher_indices */ MatcherIndicesIndex(4),
},
{
/* [311] */
- /* usage */ core::ParameterUsage::kLevel,
- /* matcher_indices */ MatcherIndicesIndex(4),
+ /* usage */ core::ParameterUsage::kTexture,
+ /* matcher_indices */ MatcherIndicesIndex(144),
},
{
/* [312] */
- /* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(194),
+ /* usage */ core::ParameterUsage::kLevel,
+ /* matcher_indices */ MatcherIndicesIndex(4),
},
{
/* [313] */
- /* usage */ core::ParameterUsage::kLevel,
- /* matcher_indices */ MatcherIndicesIndex(4),
+ /* usage */ core::ParameterUsage::kTexture,
+ /* matcher_indices */ MatcherIndicesIndex(242),
},
{
/* [314] */
- /* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(196),
+ /* usage */ core::ParameterUsage::kLevel,
+ /* matcher_indices */ MatcherIndicesIndex(3),
},
{
/* [315] */
- /* usage */ core::ParameterUsage::kLevel,
- /* matcher_indices */ MatcherIndicesIndex(4),
+ /* usage */ core::ParameterUsage::kTexture,
+ /* matcher_indices */ MatcherIndicesIndex(243),
},
{
/* [316] */
- /* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(200),
+ /* usage */ core::ParameterUsage::kLevel,
+ /* matcher_indices */ MatcherIndicesIndex(3),
},
{
/* [317] */
- /* usage */ core::ParameterUsage::kLevel,
- /* matcher_indices */ MatcherIndicesIndex(4),
+ /* usage */ core::ParameterUsage::kTexture,
+ /* matcher_indices */ MatcherIndicesIndex(244),
},
{
/* [318] */
- /* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(202),
+ /* usage */ core::ParameterUsage::kLevel,
+ /* matcher_indices */ MatcherIndicesIndex(3),
},
{
/* [319] */
- /* usage */ core::ParameterUsage::kLevel,
- /* matcher_indices */ MatcherIndicesIndex(4),
+ /* usage */ core::ParameterUsage::kTexture,
+ /* matcher_indices */ MatcherIndicesIndex(245),
},
{
/* [320] */
- /* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(204),
+ /* usage */ core::ParameterUsage::kLevel,
+ /* matcher_indices */ MatcherIndicesIndex(3),
},
{
/* [321] */
- /* usage */ core::ParameterUsage::kLevel,
- /* matcher_indices */ MatcherIndicesIndex(4),
+ /* usage */ core::ParameterUsage::kTexture,
+ /* matcher_indices */ MatcherIndicesIndex(247),
},
{
/* [322] */
- /* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(302),
+ /* usage */ core::ParameterUsage::kCoords,
+ /* matcher_indices */ MatcherIndicesIndex(168),
},
{
/* [323] */
- /* usage */ core::ParameterUsage::kLevel,
+ /* usage */ core::ParameterUsage::kValue,
/* matcher_indices */ MatcherIndicesIndex(3),
},
{
/* [324] */
- /* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(303),
- },
- {
- /* [325] */
- /* usage */ core::ParameterUsage::kLevel,
- /* matcher_indices */ MatcherIndicesIndex(3),
- },
- {
- /* [326] */
- /* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(304),
- },
- {
- /* [327] */
- /* usage */ core::ParameterUsage::kLevel,
- /* matcher_indices */ MatcherIndicesIndex(3),
- },
- {
- /* [328] */
- /* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(305),
- },
- {
- /* [329] */
- /* usage */ core::ParameterUsage::kLevel,
- /* matcher_indices */ MatcherIndicesIndex(3),
- },
- {
- /* [330] */
- /* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(307),
- },
- {
- /* [331] */
- /* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(228),
- },
- {
- /* [332] */
- /* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(126),
- },
- {
- /* [333] */
- /* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(3),
- },
- {
- /* [334] */
- /* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(129),
- },
- {
- /* [335] */
- /* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(3),
- },
- {
- /* [336] */
- /* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(132),
- },
- {
- /* [337] */
- /* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(3),
- },
- {
- /* [338] */
- /* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(135),
- },
- {
- /* [339] */
- /* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(228),
- },
- {
- /* [340] */
- /* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(138),
- },
- {
- /* [341] */
- /* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(228),
- },
- {
- /* [342] */
- /* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(141),
- },
- {
- /* [343] */
- /* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(228),
- },
- {
- /* [344] */
- /* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(153),
- },
- {
- /* [345] */
- /* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(176),
- },
- {
- /* [346] */
- /* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(156),
- },
- {
- /* [347] */
- /* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(176),
- },
- {
- /* [348] */
- /* usage */ core::ParameterUsage::kTexture,
- /* matcher_indices */ MatcherIndicesIndex(159),
- },
- {
- /* [349] */
- /* usage */ core::ParameterUsage::kCoords,
- /* matcher_indices */ MatcherIndicesIndex(176),
- },
- {
- /* [350] */
- /* usage */ core::ParameterUsage::kValue,
- /* matcher_indices */ MatcherIndicesIndex(3),
- },
- {
- /* [351] */
/* usage */ core::ParameterUsage::kSourceLaneIndex,
/* matcher_indices */ MatcherIndicesIndex(9),
},
{
- /* [352] */
+ /* [325] */
/* usage */ core::ParameterUsage::kValue,
/* matcher_indices */ MatcherIndicesIndex(42),
},
{
- /* [353] */
+ /* [326] */
/* usage */ core::ParameterUsage::kSourceLaneIndex,
/* matcher_indices */ MatcherIndicesIndex(9),
},
{
- /* [354] */
+ /* [327] */
/* usage */ core::ParameterUsage::kNone,
/* matcher_indices */ MatcherIndicesIndex(48),
},
{
- /* [355] */
+ /* [328] */
/* usage */ core::ParameterUsage::kNone,
/* matcher_indices */ MatcherIndicesIndex(3),
},
{
- /* [356] */
+ /* [329] */
/* usage */ core::ParameterUsage::kNone,
/* matcher_indices */ MatcherIndicesIndex(48),
},
{
- /* [357] */
+ /* [330] */
/* usage */ core::ParameterUsage::kNone,
/* matcher_indices */ MatcherIndicesIndex(60),
},
{
- /* [358] */
+ /* [331] */
/* usage */ core::ParameterUsage::kNone,
/* matcher_indices */ MatcherIndicesIndex(26),
},
{
- /* [359] */
+ /* [332] */
/* usage */ core::ParameterUsage::kNone,
/* matcher_indices */ MatcherIndicesIndex(26),
},
{
- /* [360] */
+ /* [333] */
/* usage */ core::ParameterUsage::kNone,
/* matcher_indices */ MatcherIndicesIndex(3),
},
{
- /* [361] */
+ /* [334] */
/* usage */ core::ParameterUsage::kNone,
/* matcher_indices */ MatcherIndicesIndex(26),
},
{
- /* [362] */
+ /* [335] */
/* usage */ core::ParameterUsage::kNone,
/* matcher_indices */ MatcherIndicesIndex(48),
},
{
- /* [363] */
+ /* [336] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(162),
+ /* matcher_indices */ MatcherIndicesIndex(102),
},
{
- /* [364] */
+ /* [337] */
/* usage */ core::ParameterUsage::kNone,
/* matcher_indices */ MatcherIndicesIndex(26),
},
{
- /* [365] */
+ /* [338] */
/* usage */ core::ParameterUsage::kNone,
/* matcher_indices */ MatcherIndicesIndex(34),
},
{
- /* [366] */
+ /* [339] */
/* usage */ core::ParameterUsage::kNone,
/* matcher_indices */ MatcherIndicesIndex(38),
},
{
- /* [367] */
+ /* [340] */
/* usage */ core::ParameterUsage::kXy,
- /* matcher_indices */ MatcherIndicesIndex(228),
+ /* matcher_indices */ MatcherIndicesIndex(168),
},
{
- /* [368] */
+ /* [341] */
/* usage */ core::ParameterUsage::kZw,
- /* matcher_indices */ MatcherIndicesIndex(228),
+ /* matcher_indices */ MatcherIndicesIndex(168),
},
{
- /* [369] */
+ /* [342] */
/* usage */ core::ParameterUsage::kXyz,
- /* matcher_indices */ MatcherIndicesIndex(176),
+ /* matcher_indices */ MatcherIndicesIndex(116),
},
{
- /* [370] */
+ /* [343] */
/* usage */ core::ParameterUsage::kW,
/* matcher_indices */ MatcherIndicesIndex(3),
},
{
- /* [371] */
+ /* [344] */
/* usage */ core::ParameterUsage::kX,
/* matcher_indices */ MatcherIndicesIndex(3),
},
{
- /* [372] */
+ /* [345] */
/* usage */ core::ParameterUsage::kZyw,
- /* matcher_indices */ MatcherIndicesIndex(176),
+ /* matcher_indices */ MatcherIndicesIndex(116),
},
{
- /* [373] */
+ /* [346] */
/* usage */ core::ParameterUsage::kNone,
/* matcher_indices */ MatcherIndicesIndex(0),
},
{
- /* [374] */
+ /* [347] */
/* usage */ core::ParameterUsage::kNone,
/* matcher_indices */ MatcherIndicesIndex(59),
},
{
- /* [375] */
+ /* [348] */
/* usage */ core::ParameterUsage::kNone,
/* matcher_indices */ MatcherIndicesIndex(54),
},
{
- /* [376] */
+ /* [349] */
/* usage */ core::ParameterUsage::kNone,
/* matcher_indices */ MatcherIndicesIndex(57),
},
{
- /* [377] */
+ /* [350] */
/* usage */ core::ParameterUsage::kNone,
/* matcher_indices */ MatcherIndicesIndex(65),
},
{
- /* [378] */
+ /* [351] */
/* usage */ core::ParameterUsage::kNone,
/* matcher_indices */ MatcherIndicesIndex(63),
},
{
- /* [379] */
+ /* [352] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(168),
+ /* matcher_indices */ MatcherIndicesIndex(108),
},
{
- /* [380] */
+ /* [353] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(172),
+ /* matcher_indices */ MatcherIndicesIndex(112),
},
{
- /* [381] */
+ /* [354] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(174),
+ /* matcher_indices */ MatcherIndicesIndex(114),
},
{
- /* [382] */
+ /* [355] */
/* usage */ core::ParameterUsage::kNone,
/* matcher_indices */ MatcherIndicesIndex(10),
},
{
- /* [383] */
+ /* [356] */
/* usage */ core::ParameterUsage::kNone,
/* matcher_indices */ MatcherIndicesIndex(68),
},
{
- /* [384] */
+ /* [357] */
/* usage */ core::ParameterUsage::kNone,
/* matcher_indices */ MatcherIndicesIndex(66),
},
{
- /* [385] */
+ /* [358] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(182),
+ /* matcher_indices */ MatcherIndicesIndex(122),
},
{
- /* [386] */
+ /* [359] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(184),
+ /* matcher_indices */ MatcherIndicesIndex(124),
},
{
- /* [387] */
+ /* [360] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(186),
+ /* matcher_indices */ MatcherIndicesIndex(126),
},
{
- /* [388] */
+ /* [361] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(188),
+ /* matcher_indices */ MatcherIndicesIndex(128),
},
{
- /* [389] */
+ /* [362] */
/* usage */ core::ParameterUsage::kNone,
/* matcher_indices */ MatcherIndicesIndex(18),
},
{
- /* [390] */
+ /* [363] */
/* usage */ core::ParameterUsage::kNone,
/* matcher_indices */ MatcherIndicesIndex(22),
},
{
- /* [391] */
+ /* [364] */
/* usage */ core::ParameterUsage::kTexture,
/* matcher_indices */ MatcherIndicesIndex(78),
},
{
- /* [392] */
+ /* [365] */
/* usage */ core::ParameterUsage::kTexture,
/* matcher_indices */ MatcherIndicesIndex(81),
},
{
- /* [393] */
+ /* [366] */
/* usage */ core::ParameterUsage::kTexture,
/* matcher_indices */ MatcherIndicesIndex(84),
},
{
- /* [394] */
+ /* [367] */
/* usage */ core::ParameterUsage::kTexture,
/* matcher_indices */ MatcherIndicesIndex(87),
},
{
+ /* [368] */
+ /* usage */ core::ParameterUsage::kNone,
+ /* matcher_indices */ MatcherIndicesIndex(127),
+ },
+ {
+ /* [369] */
+ /* usage */ core::ParameterUsage::kNone,
+ /* matcher_indices */ MatcherIndicesIndex(170),
+ },
+ {
+ /* [370] */
+ /* usage */ core::ParameterUsage::kNone,
+ /* matcher_indices */ MatcherIndicesIndex(180),
+ },
+ {
+ /* [371] */
+ /* usage */ core::ParameterUsage::kNone,
+ /* matcher_indices */ MatcherIndicesIndex(23),
+ },
+ {
+ /* [372] */
+ /* usage */ core::ParameterUsage::kNone,
+ /* matcher_indices */ MatcherIndicesIndex(182),
+ },
+ {
+ /* [373] */
+ /* usage */ core::ParameterUsage::kNone,
+ /* matcher_indices */ MatcherIndicesIndex(184),
+ },
+ {
+ /* [374] */
+ /* usage */ core::ParameterUsage::kNone,
+ /* matcher_indices */ MatcherIndicesIndex(186),
+ },
+ {
+ /* [375] */
+ /* usage */ core::ParameterUsage::kNone,
+ /* matcher_indices */ MatcherIndicesIndex(188),
+ },
+ {
+ /* [376] */
+ /* usage */ core::ParameterUsage::kNone,
+ /* matcher_indices */ MatcherIndicesIndex(190),
+ },
+ {
+ /* [377] */
+ /* usage */ core::ParameterUsage::kNone,
+ /* matcher_indices */ MatcherIndicesIndex(192),
+ },
+ {
+ /* [378] */
+ /* usage */ core::ParameterUsage::kNone,
+ /* matcher_indices */ MatcherIndicesIndex(194),
+ },
+ {
+ /* [379] */
+ /* usage */ core::ParameterUsage::kNone,
+ /* matcher_indices */ MatcherIndicesIndex(196),
+ },
+ {
+ /* [380] */
+ /* usage */ core::ParameterUsage::kNone,
+ /* matcher_indices */ MatcherIndicesIndex(198),
+ },
+ {
+ /* [381] */
+ /* usage */ core::ParameterUsage::kNone,
+ /* matcher_indices */ MatcherIndicesIndex(200),
+ },
+ {
+ /* [382] */
+ /* usage */ core::ParameterUsage::kNone,
+ /* matcher_indices */ MatcherIndicesIndex(202),
+ },
+ {
+ /* [383] */
+ /* usage */ core::ParameterUsage::kNone,
+ /* matcher_indices */ MatcherIndicesIndex(204),
+ },
+ {
+ /* [384] */
+ /* usage */ core::ParameterUsage::kNone,
+ /* matcher_indices */ MatcherIndicesIndex(206),
+ },
+ {
+ /* [385] */
+ /* usage */ core::ParameterUsage::kNone,
+ /* matcher_indices */ MatcherIndicesIndex(208),
+ },
+ {
+ /* [386] */
+ /* usage */ core::ParameterUsage::kNone,
+ /* matcher_indices */ MatcherIndicesIndex(210),
+ },
+ {
+ /* [387] */
+ /* usage */ core::ParameterUsage::kNone,
+ /* matcher_indices */ MatcherIndicesIndex(212),
+ },
+ {
+ /* [388] */
+ /* usage */ core::ParameterUsage::kNone,
+ /* matcher_indices */ MatcherIndicesIndex(214),
+ },
+ {
+ /* [389] */
+ /* usage */ core::ParameterUsage::kNone,
+ /* matcher_indices */ MatcherIndicesIndex(216),
+ },
+ {
+ /* [390] */
+ /* usage */ core::ParameterUsage::kNone,
+ /* matcher_indices */ MatcherIndicesIndex(218),
+ },
+ {
+ /* [391] */
+ /* usage */ core::ParameterUsage::kNone,
+ /* matcher_indices */ MatcherIndicesIndex(220),
+ },
+ {
+ /* [392] */
+ /* usage */ core::ParameterUsage::kNone,
+ /* matcher_indices */ MatcherIndicesIndex(222),
+ },
+ {
+ /* [393] */
+ /* usage */ core::ParameterUsage::kNone,
+ /* matcher_indices */ MatcherIndicesIndex(224),
+ },
+ {
+ /* [394] */
+ /* usage */ core::ParameterUsage::kNone,
+ /* matcher_indices */ MatcherIndicesIndex(226),
+ },
+ {
/* [395] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(187),
+ /* matcher_indices */ MatcherIndicesIndex(228),
},
{
/* [396] */
@@ -4114,142 +4055,7 @@
{
/* [397] */
/* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(240),
- },
- {
- /* [398] */
- /* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(23),
- },
- {
- /* [399] */
- /* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(242),
- },
- {
- /* [400] */
- /* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(244),
- },
- {
- /* [401] */
- /* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(246),
- },
- {
- /* [402] */
- /* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(248),
- },
- {
- /* [403] */
- /* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(250),
- },
- {
- /* [404] */
- /* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(252),
- },
- {
- /* [405] */
- /* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(254),
- },
- {
- /* [406] */
- /* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(256),
- },
- {
- /* [407] */
- /* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(258),
- },
- {
- /* [408] */
- /* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(260),
- },
- {
- /* [409] */
- /* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(262),
- },
- {
- /* [410] */
- /* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(264),
- },
- {
- /* [411] */
- /* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(266),
- },
- {
- /* [412] */
- /* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(268),
- },
- {
- /* [413] */
- /* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(270),
- },
- {
- /* [414] */
- /* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(272),
- },
- {
- /* [415] */
- /* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(274),
- },
- {
- /* [416] */
- /* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(276),
- },
- {
- /* [417] */
- /* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(278),
- },
- {
- /* [418] */
- /* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(280),
- },
- {
- /* [419] */
- /* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(282),
- },
- {
- /* [420] */
- /* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(284),
- },
- {
- /* [421] */
- /* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(286),
- },
- {
- /* [422] */
- /* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(288),
- },
- {
- /* [423] */
- /* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(290),
- },
- {
- /* [424] */
- /* usage */ core::ParameterUsage::kNone,
- /* matcher_indices */ MatcherIndicesIndex(292),
+ /* matcher_indices */ MatcherIndicesIndex(232),
},
};
@@ -4266,212 +4072,212 @@
{
/* [1] */
/* name */ "C",
- /* matcher_indices */ MatcherIndicesIndex(298),
+ /* matcher_indices */ MatcherIndicesIndex(238),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [2] */
- /* name */ "A",
- /* matcher_indices */ MatcherIndicesIndex(298),
- /* kind */ TemplateInfo::Kind::kType,
+ /* name */ "F",
+ /* matcher_indices */ MatcherIndicesIndex(47),
+ /* kind */ TemplateInfo::Kind::kNumber,
},
{
/* [3] */
- /* name */ "L",
- /* matcher_indices */ MatcherIndicesIndex(298),
- /* kind */ TemplateInfo::Kind::kType,
+ /* name */ "W",
+ /* matcher_indices */ MatcherIndicesIndex(59),
+ /* kind */ TemplateInfo::Kind::kNumber,
},
{
/* [4] */
- /* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(297),
+ /* name */ "A",
+ /* matcher_indices */ MatcherIndicesIndex(238),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [5] */
- /* name */ "K",
- /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
- /* kind */ TemplateInfo::Kind::kNumber,
+ /* name */ "L",
+ /* matcher_indices */ MatcherIndicesIndex(238),
+ /* kind */ TemplateInfo::Kind::kType,
},
{
/* [6] */
/* name */ "C",
- /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
- /* kind */ TemplateInfo::Kind::kNumber,
+ /* matcher_indices */ MatcherIndicesIndex(238),
+ /* kind */ TemplateInfo::Kind::kType,
},
{
/* [7] */
- /* name */ "R",
- /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+ /* name */ "F",
+ /* matcher_indices */ MatcherIndicesIndex(65),
/* kind */ TemplateInfo::Kind::kNumber,
},
{
/* [8] */
- /* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(51),
- /* kind */ TemplateInfo::Kind::kType,
- },
- {
- /* [9] */
- /* name */ "N",
- /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+ /* name */ "W",
+ /* matcher_indices */ MatcherIndicesIndex(59),
/* kind */ TemplateInfo::Kind::kNumber,
},
{
+ /* [9] */
+ /* name */ "A",
+ /* matcher_indices */ MatcherIndicesIndex(238),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
/* [10] */
- /* name */ "U",
- /* matcher_indices */ MatcherIndicesIndex(53),
+ /* name */ "C",
+ /* matcher_indices */ MatcherIndicesIndex(238),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [11] */
- /* name */ "N",
- /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+ /* name */ "F",
+ /* matcher_indices */ MatcherIndicesIndex(250),
/* kind */ TemplateInfo::Kind::kNumber,
},
{
/* [12] */
- /* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(297),
- /* kind */ TemplateInfo::Kind::kType,
+ /* name */ "W",
+ /* matcher_indices */ MatcherIndicesIndex(59),
+ /* kind */ TemplateInfo::Kind::kNumber,
},
{
/* [13] */
- /* name */ "U",
- /* matcher_indices */ MatcherIndicesIndex(299),
+ /* name */ "A",
+ /* matcher_indices */ MatcherIndicesIndex(238),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [14] */
- /* name */ "M",
- /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
- /* kind */ TemplateInfo::Kind::kNumber,
+ /* name */ "T",
+ /* matcher_indices */ MatcherIndicesIndex(53),
+ /* kind */ TemplateInfo::Kind::kType,
},
{
/* [15] */
- /* name */ "N",
- /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
- /* kind */ TemplateInfo::Kind::kNumber,
+ /* name */ "C",
+ /* matcher_indices */ MatcherIndicesIndex(238),
+ /* kind */ TemplateInfo::Kind::kType,
},
{
/* [16] */
- /* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(297),
+ /* name */ "A",
+ /* matcher_indices */ MatcherIndicesIndex(238),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [17] */
- /* name */ "N",
- /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
- /* kind */ TemplateInfo::Kind::kNumber,
+ /* name */ "L",
+ /* matcher_indices */ MatcherIndicesIndex(238),
+ /* kind */ TemplateInfo::Kind::kType,
},
{
/* [18] */
- /* name */ "M",
- /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
- /* kind */ TemplateInfo::Kind::kNumber,
+ /* name */ "C",
+ /* matcher_indices */ MatcherIndicesIndex(238),
+ /* kind */ TemplateInfo::Kind::kType,
},
{
/* [19] */
- /* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(53),
- /* kind */ TemplateInfo::Kind::kType,
+ /* name */ "F",
+ /* matcher_indices */ MatcherIndicesIndex(47),
+ /* kind */ TemplateInfo::Kind::kNumber,
},
{
/* [20] */
- /* name */ "C",
- /* matcher_indices */ MatcherIndicesIndex(298),
- /* kind */ TemplateInfo::Kind::kType,
+ /* name */ "R",
+ /* matcher_indices */ MatcherIndicesIndex(68),
+ /* kind */ TemplateInfo::Kind::kNumber,
},
{
/* [21] */
- /* name */ "L",
- /* matcher_indices */ MatcherIndicesIndex(298),
+ /* name */ "A",
+ /* matcher_indices */ MatcherIndicesIndex(238),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [22] */
- /* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(53),
+ /* name */ "C",
+ /* matcher_indices */ MatcherIndicesIndex(238),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [23] */
- /* name */ "C",
- /* matcher_indices */ MatcherIndicesIndex(298),
- /* kind */ TemplateInfo::Kind::kType,
+ /* name */ "F",
+ /* matcher_indices */ MatcherIndicesIndex(65),
+ /* kind */ TemplateInfo::Kind::kNumber,
},
{
/* [24] */
- /* name */ "S",
- /* matcher_indices */ MatcherIndicesIndex(298),
- /* kind */ TemplateInfo::Kind::kType,
+ /* name */ "R",
+ /* matcher_indices */ MatcherIndicesIndex(68),
+ /* kind */ TemplateInfo::Kind::kNumber,
},
{
/* [25] */
- /* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(297),
+ /* name */ "A",
+ /* matcher_indices */ MatcherIndicesIndex(238),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [26] */
/* name */ "C",
+ /* matcher_indices */ MatcherIndicesIndex(238),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [27] */
+ /* name */ "F",
+ /* matcher_indices */ MatcherIndicesIndex(250),
+ /* kind */ TemplateInfo::Kind::kNumber,
+ },
+ {
+ /* [28] */
+ /* name */ "R",
+ /* matcher_indices */ MatcherIndicesIndex(68),
+ /* kind */ TemplateInfo::Kind::kNumber,
+ },
+ {
+ /* [29] */
+ /* name */ "A",
+ /* matcher_indices */ MatcherIndicesIndex(238),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [30] */
+ /* name */ "T",
+ /* matcher_indices */ MatcherIndicesIndex(237),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [31] */
+ /* name */ "K",
/* matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* kind */ TemplateInfo::Kind::kNumber,
},
{
- /* [27] */
+ /* [32] */
+ /* name */ "C",
+ /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+ /* kind */ TemplateInfo::Kind::kNumber,
+ },
+ {
+ /* [33] */
/* name */ "R",
/* matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* kind */ TemplateInfo::Kind::kNumber,
},
{
- /* [28] */
- /* name */ "N",
- /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
- /* kind */ TemplateInfo::Kind::kNumber,
- },
- {
- /* [29] */
- /* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(296),
- /* kind */ TemplateInfo::Kind::kType,
- },
- {
- /* [30] */
- /* name */ "N",
- /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
- /* kind */ TemplateInfo::Kind::kNumber,
- },
- {
- /* [31] */
- /* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(298),
- /* kind */ TemplateInfo::Kind::kType,
- },
- {
- /* [32] */
- /* name */ "S",
- /* matcher_indices */ MatcherIndicesIndex(176),
- /* kind */ TemplateInfo::Kind::kNumber,
- },
- {
- /* [33] */
- /* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
- /* kind */ TemplateInfo::Kind::kType,
- },
- {
/* [34] */
- /* name */ "A",
- /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
- /* kind */ TemplateInfo::Kind::kNumber,
+ /* name */ "T",
+ /* matcher_indices */ MatcherIndicesIndex(51),
+ /* kind */ TemplateInfo::Kind::kType,
},
{
/* [35] */
- /* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(53),
- /* kind */ TemplateInfo::Kind::kType,
+ /* name */ "N",
+ /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+ /* kind */ TemplateInfo::Kind::kNumber,
},
{
/* [36] */
@@ -4481,224 +4287,380 @@
},
{
/* [37] */
- /* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(57),
- /* kind */ TemplateInfo::Kind::kType,
- },
- {
- /* [38] */
/* name */ "N",
/* matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* kind */ TemplateInfo::Kind::kNumber,
},
{
- /* [39] */
+ /* [38] */
/* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(300),
+ /* matcher_indices */ MatcherIndicesIndex(237),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [39] */
+ /* name */ "U",
+ /* matcher_indices */ MatcherIndicesIndex(239),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [40] */
- /* name */ "N",
+ /* name */ "M",
/* matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* kind */ TemplateInfo::Kind::kNumber,
},
{
/* [41] */
- /* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(301),
- /* kind */ TemplateInfo::Kind::kType,
+ /* name */ "N",
+ /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+ /* kind */ TemplateInfo::Kind::kNumber,
},
{
/* [42] */
- /* name */ "N",
- /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
- /* kind */ TemplateInfo::Kind::kNumber,
+ /* name */ "T",
+ /* matcher_indices */ MatcherIndicesIndex(237),
+ /* kind */ TemplateInfo::Kind::kType,
},
{
/* [43] */
- /* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(310),
- /* kind */ TemplateInfo::Kind::kType,
- },
- {
- /* [44] */
- /* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(60),
- /* kind */ TemplateInfo::Kind::kType,
- },
- {
- /* [45] */
/* name */ "N",
/* matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* kind */ TemplateInfo::Kind::kNumber,
},
{
- /* [46] */
+ /* [44] */
+ /* name */ "M",
+ /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+ /* kind */ TemplateInfo::Kind::kNumber,
+ },
+ {
+ /* [45] */
/* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(168),
+ /* matcher_indices */ MatcherIndicesIndex(53),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [46] */
+ /* name */ "C",
+ /* matcher_indices */ MatcherIndicesIndex(238),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [47] */
- /* name */ "S",
- /* matcher_indices */ MatcherIndicesIndex(53),
+ /* name */ "L",
+ /* matcher_indices */ MatcherIndicesIndex(238),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [48] */
/* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(172),
+ /* matcher_indices */ MatcherIndicesIndex(53),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [49] */
- /* name */ "S",
- /* matcher_indices */ MatcherIndicesIndex(53),
+ /* name */ "C",
+ /* matcher_indices */ MatcherIndicesIndex(238),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [50] */
- /* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(53),
+ /* name */ "S",
+ /* matcher_indices */ MatcherIndicesIndex(238),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [51] */
- /* name */ "L",
- /* matcher_indices */ MatcherIndicesIndex(298),
+ /* name */ "T",
+ /* matcher_indices */ MatcherIndicesIndex(237),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [52] */
- /* name */ "F",
+ /* name */ "C",
/* matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* kind */ TemplateInfo::Kind::kNumber,
},
{
/* [53] */
- /* name */ "A",
+ /* name */ "R",
/* matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* kind */ TemplateInfo::Kind::kNumber,
},
{
/* [54] */
- /* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(311),
- /* kind */ TemplateInfo::Kind::kType,
- },
- {
- /* [55] */
/* name */ "N",
/* matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* kind */ TemplateInfo::Kind::kNumber,
},
{
- /* [56] */
+ /* [55] */
/* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(68),
+ /* matcher_indices */ MatcherIndicesIndex(236),
/* kind */ TemplateInfo::Kind::kType,
},
{
+ /* [56] */
+ /* name */ "N",
+ /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+ /* kind */ TemplateInfo::Kind::kNumber,
+ },
+ {
/* [57] */
- /* name */ "U",
- /* matcher_indices */ MatcherIndicesIndex(314),
+ /* name */ "T",
+ /* matcher_indices */ MatcherIndicesIndex(238),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [58] */
- /* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(59),
- /* kind */ TemplateInfo::Kind::kType,
+ /* name */ "S",
+ /* matcher_indices */ MatcherIndicesIndex(116),
+ /* kind */ TemplateInfo::Kind::kNumber,
},
{
/* [59] */
- /* name */ "U",
- /* matcher_indices */ MatcherIndicesIndex(315),
+ /* name */ "T",
+ /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [60] */
- /* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(187),
- /* kind */ TemplateInfo::Kind::kType,
+ /* name */ "A",
+ /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+ /* kind */ TemplateInfo::Kind::kNumber,
},
{
/* [61] */
- /* name */ "U",
- /* matcher_indices */ MatcherIndicesIndex(312),
+ /* name */ "T",
+ /* matcher_indices */ MatcherIndicesIndex(53),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [62] */
- /* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(9),
+ /* name */ "U",
+ /* matcher_indices */ MatcherIndicesIndex(53),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [63] */
- /* name */ "U",
- /* matcher_indices */ MatcherIndicesIndex(313),
+ /* name */ "T",
+ /* matcher_indices */ MatcherIndicesIndex(57),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [64] */
- /* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(47),
- /* kind */ TemplateInfo::Kind::kType,
+ /* name */ "N",
+ /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+ /* kind */ TemplateInfo::Kind::kNumber,
},
{
/* [65] */
- /* name */ "U",
- /* matcher_indices */ MatcherIndicesIndex(316),
+ /* name */ "T",
+ /* matcher_indices */ MatcherIndicesIndex(240),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [66] */
- /* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(170),
- /* kind */ TemplateInfo::Kind::kType,
+ /* name */ "N",
+ /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+ /* kind */ TemplateInfo::Kind::kNumber,
},
{
/* [67] */
/* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(312),
+ /* matcher_indices */ MatcherIndicesIndex(241),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [68] */
- /* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(313),
- /* kind */ TemplateInfo::Kind::kType,
+ /* name */ "N",
+ /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+ /* kind */ TemplateInfo::Kind::kNumber,
},
{
/* [69] */
/* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(314),
+ /* matcher_indices */ MatcherIndicesIndex(251),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [70] */
/* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(315),
+ /* matcher_indices */ MatcherIndicesIndex(60),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [71] */
- /* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(316),
- /* kind */ TemplateInfo::Kind::kType,
+ /* name */ "N",
+ /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+ /* kind */ TemplateInfo::Kind::kNumber,
},
{
/* [72] */
/* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(317),
+ /* matcher_indices */ MatcherIndicesIndex(108),
/* kind */ TemplateInfo::Kind::kType,
},
{
/* [73] */
+ /* name */ "S",
+ /* matcher_indices */ MatcherIndicesIndex(53),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [74] */
/* name */ "T",
- /* matcher_indices */ MatcherIndicesIndex(318),
+ /* matcher_indices */ MatcherIndicesIndex(112),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [75] */
+ /* name */ "S",
+ /* matcher_indices */ MatcherIndicesIndex(53),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [76] */
+ /* name */ "T",
+ /* matcher_indices */ MatcherIndicesIndex(53),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [77] */
+ /* name */ "L",
+ /* matcher_indices */ MatcherIndicesIndex(238),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [78] */
+ /* name */ "F",
+ /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+ /* kind */ TemplateInfo::Kind::kNumber,
+ },
+ {
+ /* [79] */
+ /* name */ "A",
+ /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+ /* kind */ TemplateInfo::Kind::kNumber,
+ },
+ {
+ /* [80] */
+ /* name */ "T",
+ /* matcher_indices */ MatcherIndicesIndex(252),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [81] */
+ /* name */ "N",
+ /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
+ /* kind */ TemplateInfo::Kind::kNumber,
+ },
+ {
+ /* [82] */
+ /* name */ "T",
+ /* matcher_indices */ MatcherIndicesIndex(68),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [83] */
+ /* name */ "U",
+ /* matcher_indices */ MatcherIndicesIndex(255),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [84] */
+ /* name */ "T",
+ /* matcher_indices */ MatcherIndicesIndex(59),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [85] */
+ /* name */ "U",
+ /* matcher_indices */ MatcherIndicesIndex(256),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [86] */
+ /* name */ "T",
+ /* matcher_indices */ MatcherIndicesIndex(127),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [87] */
+ /* name */ "U",
+ /* matcher_indices */ MatcherIndicesIndex(253),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [88] */
+ /* name */ "T",
+ /* matcher_indices */ MatcherIndicesIndex(9),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [89] */
+ /* name */ "U",
+ /* matcher_indices */ MatcherIndicesIndex(254),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [90] */
+ /* name */ "T",
+ /* matcher_indices */ MatcherIndicesIndex(47),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [91] */
+ /* name */ "U",
+ /* matcher_indices */ MatcherIndicesIndex(257),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [92] */
+ /* name */ "T",
+ /* matcher_indices */ MatcherIndicesIndex(110),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [93] */
+ /* name */ "T",
+ /* matcher_indices */ MatcherIndicesIndex(253),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [94] */
+ /* name */ "T",
+ /* matcher_indices */ MatcherIndicesIndex(254),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [95] */
+ /* name */ "T",
+ /* matcher_indices */ MatcherIndicesIndex(255),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [96] */
+ /* name */ "T",
+ /* matcher_indices */ MatcherIndicesIndex(256),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [97] */
+ /* name */ "T",
+ /* matcher_indices */ MatcherIndicesIndex(257),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [98] */
+ /* name */ "T",
+ /* matcher_indices */ MatcherIndicesIndex(258),
+ /* kind */ TemplateInfo::Kind::kType,
+ },
+ {
+ /* [99] */
+ /* name */ "T",
+ /* matcher_indices */ MatcherIndicesIndex(259),
/* kind */ TemplateInfo::Kind::kType,
},
};
@@ -4844,8 +4806,8 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(50),
- /* parameters */ ParameterIndex(310),
+ /* templates */ TemplateIndex(76),
+ /* parameters */ ParameterIndex(301),
/* return_matcher_indices */ MatcherIndicesIndex(9),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -4857,7 +4819,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(0),
/* parameters */ ParameterIndex(75),
- /* return_matcher_indices */ MatcherIndicesIndex(192),
+ /* return_matcher_indices */ MatcherIndicesIndex(132),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4866,9 +4828,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(50),
- /* parameters */ ParameterIndex(312),
- /* return_matcher_indices */ MatcherIndicesIndex(192),
+ /* templates */ TemplateIndex(76),
+ /* parameters */ ParameterIndex(303),
+ /* return_matcher_indices */ MatcherIndicesIndex(132),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4879,7 +4841,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(0),
/* parameters */ ParameterIndex(27),
- /* return_matcher_indices */ MatcherIndicesIndex(192),
+ /* return_matcher_indices */ MatcherIndicesIndex(132),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4888,9 +4850,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(50),
- /* parameters */ ParameterIndex(314),
- /* return_matcher_indices */ MatcherIndicesIndex(192),
+ /* templates */ TemplateIndex(76),
+ /* parameters */ ParameterIndex(305),
+ /* return_matcher_indices */ MatcherIndicesIndex(132),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4901,7 +4863,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(0),
/* parameters */ ParameterIndex(276),
- /* return_matcher_indices */ MatcherIndicesIndex(198),
+ /* return_matcher_indices */ MatcherIndicesIndex(138),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4910,9 +4872,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(50),
- /* parameters */ ParameterIndex(316),
- /* return_matcher_indices */ MatcherIndicesIndex(198),
+ /* templates */ TemplateIndex(76),
+ /* parameters */ ParameterIndex(307),
+ /* return_matcher_indices */ MatcherIndicesIndex(138),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4923,7 +4885,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(0),
/* parameters */ ParameterIndex(154),
- /* return_matcher_indices */ MatcherIndicesIndex(192),
+ /* return_matcher_indices */ MatcherIndicesIndex(132),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4932,9 +4894,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(50),
- /* parameters */ ParameterIndex(318),
- /* return_matcher_indices */ MatcherIndicesIndex(192),
+ /* templates */ TemplateIndex(76),
+ /* parameters */ ParameterIndex(309),
+ /* return_matcher_indices */ MatcherIndicesIndex(132),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4945,7 +4907,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(0),
/* parameters */ ParameterIndex(80),
- /* return_matcher_indices */ MatcherIndicesIndex(192),
+ /* return_matcher_indices */ MatcherIndicesIndex(132),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4954,9 +4916,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(50),
- /* parameters */ ParameterIndex(320),
- /* return_matcher_indices */ MatcherIndicesIndex(192),
+ /* templates */ TemplateIndex(76),
+ /* parameters */ ParameterIndex(311),
+ /* return_matcher_indices */ MatcherIndicesIndex(132),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4967,7 +4929,7 @@
/* num_templates */ 1,
/* templates */ TemplateIndex(0),
/* parameters */ ParameterIndex(279),
- /* return_matcher_indices */ MatcherIndicesIndex(192),
+ /* return_matcher_indices */ MatcherIndicesIndex(132),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4978,7 +4940,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(89),
- /* return_matcher_indices */ MatcherIndicesIndex(192),
+ /* return_matcher_indices */ MatcherIndicesIndex(132),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -4987,9 +4949,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(3),
- /* parameters */ ParameterIndex(322),
- /* return_matcher_indices */ MatcherIndicesIndex(192),
+ /* templates */ TemplateIndex(5),
+ /* parameters */ ParameterIndex(313),
+ /* return_matcher_indices */ MatcherIndicesIndex(132),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5000,7 +4962,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(32),
- /* return_matcher_indices */ MatcherIndicesIndex(192),
+ /* return_matcher_indices */ MatcherIndicesIndex(132),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5009,9 +4971,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(3),
- /* parameters */ ParameterIndex(324),
- /* return_matcher_indices */ MatcherIndicesIndex(192),
+ /* templates */ TemplateIndex(5),
+ /* parameters */ ParameterIndex(315),
+ /* return_matcher_indices */ MatcherIndicesIndex(132),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5022,7 +4984,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(161),
- /* return_matcher_indices */ MatcherIndicesIndex(192),
+ /* return_matcher_indices */ MatcherIndicesIndex(132),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5031,9 +4993,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(3),
- /* parameters */ ParameterIndex(326),
- /* return_matcher_indices */ MatcherIndicesIndex(192),
+ /* templates */ TemplateIndex(5),
+ /* parameters */ ParameterIndex(317),
+ /* return_matcher_indices */ MatcherIndicesIndex(132),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5044,7 +5006,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(94),
- /* return_matcher_indices */ MatcherIndicesIndex(192),
+ /* return_matcher_indices */ MatcherIndicesIndex(132),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5053,9 +5015,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(3),
- /* parameters */ ParameterIndex(328),
- /* return_matcher_indices */ MatcherIndicesIndex(192),
+ /* templates */ TemplateIndex(5),
+ /* parameters */ ParameterIndex(319),
+ /* return_matcher_indices */ MatcherIndicesIndex(132),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5066,7 +5028,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(285),
- /* return_matcher_indices */ MatcherIndicesIndex(192),
+ /* return_matcher_indices */ MatcherIndicesIndex(132),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5075,8 +5037,8 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(52),
- /* parameters */ ParameterIndex(391),
+ /* templates */ TemplateIndex(78),
+ /* parameters */ ParameterIndex(364),
/* return_matcher_indices */ MatcherIndicesIndex(9),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -5086,9 +5048,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(52),
- /* parameters */ ParameterIndex(392),
- /* return_matcher_indices */ MatcherIndicesIndex(192),
+ /* templates */ TemplateIndex(78),
+ /* parameters */ ParameterIndex(365),
+ /* return_matcher_indices */ MatcherIndicesIndex(132),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5097,9 +5059,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(52),
- /* parameters */ ParameterIndex(393),
- /* return_matcher_indices */ MatcherIndicesIndex(192),
+ /* templates */ TemplateIndex(78),
+ /* parameters */ ParameterIndex(366),
+ /* return_matcher_indices */ MatcherIndicesIndex(132),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5108,9 +5070,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(52),
- /* parameters */ ParameterIndex(394),
- /* return_matcher_indices */ MatcherIndicesIndex(198),
+ /* templates */ TemplateIndex(78),
+ /* parameters */ ParameterIndex(367),
+ /* return_matcher_indices */ MatcherIndicesIndex(138),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5121,7 +5083,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(240),
- /* return_matcher_indices */ MatcherIndicesIndex(192),
+ /* return_matcher_indices */ MatcherIndicesIndex(132),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5132,7 +5094,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(/* invalid */),
- /* return_matcher_indices */ MatcherIndicesIndex(238),
+ /* return_matcher_indices */ MatcherIndicesIndex(178),
/* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
@@ -5141,9 +5103,9 @@
/* num_parameters */ 0,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(72),
+ /* templates */ TemplateIndex(98),
/* parameters */ ParameterIndex(/* invalid */),
- /* return_matcher_indices */ MatcherIndicesIndex(208),
+ /* return_matcher_indices */ MatcherIndicesIndex(148),
/* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
@@ -5152,9 +5114,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(72),
+ /* templates */ TemplateIndex(98),
/* parameters */ ParameterIndex(217),
- /* return_matcher_indices */ MatcherIndicesIndex(208),
+ /* return_matcher_indices */ MatcherIndicesIndex(148),
/* const_eval_fn */ ConstEvalFunctionIndex(82),
},
{
@@ -5163,9 +5125,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(39),
+ /* templates */ TemplateIndex(65),
/* parameters */ ParameterIndex(217),
- /* return_matcher_indices */ MatcherIndicesIndex(208),
+ /* return_matcher_indices */ MatcherIndicesIndex(148),
/* const_eval_fn */ ConstEvalFunctionIndex(82),
},
{
@@ -5174,9 +5136,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(72),
+ /* templates */ TemplateIndex(98),
/* parameters */ ParameterIndex(1),
- /* return_matcher_indices */ MatcherIndicesIndex(208),
+ /* return_matcher_indices */ MatcherIndicesIndex(148),
/* const_eval_fn */ ConstEvalFunctionIndex(109),
},
{
@@ -5185,9 +5147,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(39),
+ /* templates */ TemplateIndex(65),
/* parameters */ ParameterIndex(1),
- /* return_matcher_indices */ MatcherIndicesIndex(208),
+ /* return_matcher_indices */ MatcherIndicesIndex(148),
/* const_eval_fn */ ConstEvalFunctionIndex(109),
},
{
@@ -5196,9 +5158,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(72),
+ /* templates */ TemplateIndex(98),
/* parameters */ ParameterIndex(205),
- /* return_matcher_indices */ MatcherIndicesIndex(208),
+ /* return_matcher_indices */ MatcherIndicesIndex(148),
/* const_eval_fn */ ConstEvalFunctionIndex(110),
},
{
@@ -5207,9 +5169,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(39),
+ /* templates */ TemplateIndex(65),
/* parameters */ ParameterIndex(205),
- /* return_matcher_indices */ MatcherIndicesIndex(208),
+ /* return_matcher_indices */ MatcherIndicesIndex(148),
/* const_eval_fn */ ConstEvalFunctionIndex(110),
},
{
@@ -5218,9 +5180,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(72),
- /* parameters */ ParameterIndex(297),
- /* return_matcher_indices */ MatcherIndicesIndex(208),
+ /* templates */ TemplateIndex(98),
+ /* parameters */ ParameterIndex(288),
+ /* return_matcher_indices */ MatcherIndicesIndex(148),
/* const_eval_fn */ ConstEvalFunctionIndex(111),
},
{
@@ -5229,9 +5191,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(39),
- /* parameters */ ParameterIndex(297),
- /* return_matcher_indices */ MatcherIndicesIndex(208),
+ /* templates */ TemplateIndex(65),
+ /* parameters */ ParameterIndex(288),
+ /* return_matcher_indices */ MatcherIndicesIndex(148),
/* const_eval_fn */ ConstEvalFunctionIndex(111),
},
{
@@ -5240,9 +5202,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(72),
- /* parameters */ ParameterIndex(300),
- /* return_matcher_indices */ MatcherIndicesIndex(208),
+ /* templates */ TemplateIndex(98),
+ /* parameters */ ParameterIndex(291),
+ /* return_matcher_indices */ MatcherIndicesIndex(148),
/* const_eval_fn */ ConstEvalFunctionIndex(111),
},
{
@@ -5251,9 +5213,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(39),
- /* parameters */ ParameterIndex(300),
- /* return_matcher_indices */ MatcherIndicesIndex(208),
+ /* templates */ TemplateIndex(65),
+ /* parameters */ ParameterIndex(291),
+ /* return_matcher_indices */ MatcherIndicesIndex(148),
/* const_eval_fn */ ConstEvalFunctionIndex(111),
},
{
@@ -5262,9 +5224,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(72),
- /* parameters */ ParameterIndex(303),
- /* return_matcher_indices */ MatcherIndicesIndex(208),
+ /* templates */ TemplateIndex(98),
+ /* parameters */ ParameterIndex(294),
+ /* return_matcher_indices */ MatcherIndicesIndex(148),
/* const_eval_fn */ ConstEvalFunctionIndex(111),
},
{
@@ -5273,9 +5235,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(39),
- /* parameters */ ParameterIndex(303),
- /* return_matcher_indices */ MatcherIndicesIndex(208),
+ /* templates */ TemplateIndex(65),
+ /* parameters */ ParameterIndex(294),
+ /* return_matcher_indices */ MatcherIndicesIndex(148),
/* const_eval_fn */ ConstEvalFunctionIndex(111),
},
{
@@ -5284,9 +5246,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(72),
- /* parameters */ ParameterIndex(367),
- /* return_matcher_indices */ MatcherIndicesIndex(208),
+ /* templates */ TemplateIndex(98),
+ /* parameters */ ParameterIndex(340),
+ /* return_matcher_indices */ MatcherIndicesIndex(148),
/* const_eval_fn */ ConstEvalFunctionIndex(111),
},
{
@@ -5295,9 +5257,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(39),
- /* parameters */ ParameterIndex(367),
- /* return_matcher_indices */ MatcherIndicesIndex(208),
+ /* templates */ TemplateIndex(65),
+ /* parameters */ ParameterIndex(340),
+ /* return_matcher_indices */ MatcherIndicesIndex(148),
/* const_eval_fn */ ConstEvalFunctionIndex(111),
},
{
@@ -5306,9 +5268,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(72),
- /* parameters */ ParameterIndex(369),
- /* return_matcher_indices */ MatcherIndicesIndex(208),
+ /* templates */ TemplateIndex(98),
+ /* parameters */ ParameterIndex(342),
+ /* return_matcher_indices */ MatcherIndicesIndex(148),
/* const_eval_fn */ ConstEvalFunctionIndex(111),
},
{
@@ -5317,9 +5279,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(39),
- /* parameters */ ParameterIndex(369),
- /* return_matcher_indices */ MatcherIndicesIndex(208),
+ /* templates */ TemplateIndex(65),
+ /* parameters */ ParameterIndex(342),
+ /* return_matcher_indices */ MatcherIndicesIndex(148),
/* const_eval_fn */ ConstEvalFunctionIndex(111),
},
{
@@ -5328,9 +5290,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(72),
- /* parameters */ ParameterIndex(371),
- /* return_matcher_indices */ MatcherIndicesIndex(208),
+ /* templates */ TemplateIndex(98),
+ /* parameters */ ParameterIndex(344),
+ /* return_matcher_indices */ MatcherIndicesIndex(148),
/* const_eval_fn */ ConstEvalFunctionIndex(111),
},
{
@@ -5339,9 +5301,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(39),
- /* parameters */ ParameterIndex(371),
- /* return_matcher_indices */ MatcherIndicesIndex(208),
+ /* templates */ TemplateIndex(65),
+ /* parameters */ ParameterIndex(344),
+ /* return_matcher_indices */ MatcherIndicesIndex(148),
/* const_eval_fn */ ConstEvalFunctionIndex(111),
},
{
@@ -5350,9 +5312,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 2,
- /* templates */ TemplateIndex(56),
- /* parameters */ ParameterIndex(397),
- /* return_matcher_indices */ MatcherIndicesIndex(208),
+ /* templates */ TemplateIndex(82),
+ /* parameters */ ParameterIndex(370),
+ /* return_matcher_indices */ MatcherIndicesIndex(148),
/* const_eval_fn */ ConstEvalFunctionIndex(108),
},
{
@@ -5361,9 +5323,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 2,
- /* templates */ TemplateIndex(58),
- /* parameters */ ParameterIndex(397),
- /* return_matcher_indices */ MatcherIndicesIndex(208),
+ /* templates */ TemplateIndex(84),
+ /* parameters */ ParameterIndex(370),
+ /* return_matcher_indices */ MatcherIndicesIndex(148),
/* const_eval_fn */ ConstEvalFunctionIndex(108),
},
{
@@ -5372,9 +5334,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 2,
- /* templates */ TemplateIndex(60),
- /* parameters */ ParameterIndex(397),
- /* return_matcher_indices */ MatcherIndicesIndex(208),
+ /* templates */ TemplateIndex(86),
+ /* parameters */ ParameterIndex(370),
+ /* return_matcher_indices */ MatcherIndicesIndex(148),
/* const_eval_fn */ ConstEvalFunctionIndex(108),
},
{
@@ -5383,9 +5345,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 2,
- /* templates */ TemplateIndex(62),
- /* parameters */ ParameterIndex(397),
- /* return_matcher_indices */ MatcherIndicesIndex(208),
+ /* templates */ TemplateIndex(88),
+ /* parameters */ ParameterIndex(370),
+ /* return_matcher_indices */ MatcherIndicesIndex(148),
/* const_eval_fn */ ConstEvalFunctionIndex(108),
},
{
@@ -5394,9 +5356,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 2,
- /* templates */ TemplateIndex(64),
- /* parameters */ ParameterIndex(397),
- /* return_matcher_indices */ MatcherIndicesIndex(208),
+ /* templates */ TemplateIndex(90),
+ /* parameters */ ParameterIndex(370),
+ /* return_matcher_indices */ MatcherIndicesIndex(148),
/* const_eval_fn */ ConstEvalFunctionIndex(108),
},
{
@@ -5405,9 +5367,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(19),
+ /* templates */ TemplateIndex(45),
/* parameters */ ParameterIndex(270),
- /* return_matcher_indices */ MatcherIndicesIndex(208),
+ /* return_matcher_indices */ MatcherIndicesIndex(148),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5416,9 +5378,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(19),
+ /* templates */ TemplateIndex(45),
/* parameters */ ParameterIndex(273),
- /* return_matcher_indices */ MatcherIndicesIndex(208),
+ /* return_matcher_indices */ MatcherIndicesIndex(148),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5427,9 +5389,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 4,
- /* templates */ TemplateIndex(0),
+ /* templates */ TemplateIndex(14),
/* parameters */ ParameterIndex(197),
- /* return_matcher_indices */ MatcherIndicesIndex(208),
+ /* return_matcher_indices */ MatcherIndicesIndex(148),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5438,9 +5400,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(19),
+ /* templates */ TemplateIndex(45),
/* parameters */ ParameterIndex(276),
- /* return_matcher_indices */ MatcherIndicesIndex(208),
+ /* return_matcher_indices */ MatcherIndicesIndex(148),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5449,9 +5411,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(22),
+ /* templates */ TemplateIndex(48),
/* parameters */ ParameterIndex(279),
- /* return_matcher_indices */ MatcherIndicesIndex(208),
+ /* return_matcher_indices */ MatcherIndicesIndex(148),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5460,7 +5422,7 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(20),
+ /* templates */ TemplateIndex(46),
/* parameters */ ParameterIndex(282),
/* return_matcher_indices */ MatcherIndicesIndex(68),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -5471,7 +5433,7 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(1),
+ /* templates */ TemplateIndex(15),
/* parameters */ ParameterIndex(201),
/* return_matcher_indices */ MatcherIndicesIndex(68),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -5482,7 +5444,7 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(23),
+ /* templates */ TemplateIndex(49),
/* parameters */ ParameterIndex(285),
/* return_matcher_indices */ MatcherIndicesIndex(68),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -5494,8 +5456,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 1,
/* templates */ TemplateIndex(1),
- /* parameters */ ParameterIndex(330),
- /* return_matcher_indices */ MatcherIndicesIndex(184),
+ /* parameters */ ParameterIndex(321),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5503,10 +5465,10 @@
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
- /* num_templates */ 1,
- /* templates */ TemplateIndex(1),
- /* parameters */ ParameterIndex(332),
- /* return_matcher_indices */ MatcherIndicesIndex(184),
+ /* num_templates */ 3,
+ /* templates */ TemplateIndex(18),
+ /* parameters */ ParameterIndex(243),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5514,10 +5476,10 @@
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
- /* num_templates */ 1,
- /* templates */ TemplateIndex(1),
- /* parameters */ ParameterIndex(334),
- /* return_matcher_indices */ MatcherIndicesIndex(186),
+ /* num_templates */ 3,
+ /* templates */ TemplateIndex(22),
+ /* parameters */ ParameterIndex(243),
+ /* return_matcher_indices */ MatcherIndicesIndex(126),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5525,10 +5487,10 @@
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
- /* num_templates */ 1,
- /* templates */ TemplateIndex(1),
- /* parameters */ ParameterIndex(336),
- /* return_matcher_indices */ MatcherIndicesIndex(188),
+ /* num_templates */ 3,
+ /* templates */ TemplateIndex(26),
+ /* parameters */ ParameterIndex(243),
+ /* return_matcher_indices */ MatcherIndicesIndex(128),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5536,10 +5498,10 @@
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
- /* num_templates */ 1,
- /* templates */ TemplateIndex(1),
- /* parameters */ ParameterIndex(338),
- /* return_matcher_indices */ MatcherIndicesIndex(184),
+ /* num_templates */ 3,
+ /* templates */ TemplateIndex(18),
+ /* parameters */ ParameterIndex(246),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5547,10 +5509,10 @@
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
- /* num_templates */ 1,
- /* templates */ TemplateIndex(1),
- /* parameters */ ParameterIndex(340),
- /* return_matcher_indices */ MatcherIndicesIndex(186),
+ /* num_templates */ 3,
+ /* templates */ TemplateIndex(22),
+ /* parameters */ ParameterIndex(246),
+ /* return_matcher_indices */ MatcherIndicesIndex(126),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5558,10 +5520,10 @@
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
- /* num_templates */ 1,
- /* templates */ TemplateIndex(1),
- /* parameters */ ParameterIndex(342),
- /* return_matcher_indices */ MatcherIndicesIndex(188),
+ /* num_templates */ 3,
+ /* templates */ TemplateIndex(26),
+ /* parameters */ ParameterIndex(246),
+ /* return_matcher_indices */ MatcherIndicesIndex(128),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5569,10 +5531,10 @@
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
- /* num_templates */ 2,
- /* templates */ TemplateIndex(1),
- /* parameters */ ParameterIndex(288),
- /* return_matcher_indices */ MatcherIndicesIndex(184),
+ /* num_templates */ 4,
+ /* templates */ TemplateIndex(18),
+ /* parameters */ ParameterIndex(185),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5580,10 +5542,10 @@
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
- /* num_templates */ 2,
- /* templates */ TemplateIndex(1),
- /* parameters */ ParameterIndex(291),
- /* return_matcher_indices */ MatcherIndicesIndex(186),
+ /* num_templates */ 4,
+ /* templates */ TemplateIndex(22),
+ /* parameters */ ParameterIndex(185),
+ /* return_matcher_indices */ MatcherIndicesIndex(126),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5591,10 +5553,10 @@
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
- /* num_templates */ 2,
- /* templates */ TemplateIndex(1),
- /* parameters */ ParameterIndex(294),
- /* return_matcher_indices */ MatcherIndicesIndex(188),
+ /* num_templates */ 4,
+ /* templates */ TemplateIndex(26),
+ /* parameters */ ParameterIndex(185),
+ /* return_matcher_indices */ MatcherIndicesIndex(128),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5602,10 +5564,10 @@
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
- /* num_templates */ 1,
- /* templates */ TemplateIndex(1),
- /* parameters */ ParameterIndex(344),
- /* return_matcher_indices */ MatcherIndicesIndex(184),
+ /* num_templates */ 3,
+ /* templates */ TemplateIndex(18),
+ /* parameters */ ParameterIndex(249),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5613,10 +5575,10 @@
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
- /* num_templates */ 1,
- /* templates */ TemplateIndex(1),
- /* parameters */ ParameterIndex(346),
- /* return_matcher_indices */ MatcherIndicesIndex(186),
+ /* num_templates */ 3,
+ /* templates */ TemplateIndex(22),
+ /* parameters */ ParameterIndex(249),
+ /* return_matcher_indices */ MatcherIndicesIndex(126),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5624,10 +5586,10 @@
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
- /* num_templates */ 1,
- /* templates */ TemplateIndex(1),
- /* parameters */ ParameterIndex(348),
- /* return_matcher_indices */ MatcherIndicesIndex(188),
+ /* num_templates */ 3,
+ /* templates */ TemplateIndex(26),
+ /* parameters */ ParameterIndex(249),
+ /* return_matcher_indices */ MatcherIndicesIndex(128),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5638,7 +5600,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(/* invalid */),
- /* return_matcher_indices */ MatcherIndicesIndex(236),
+ /* return_matcher_indices */ MatcherIndicesIndex(176),
/* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
@@ -5647,9 +5609,9 @@
/* num_parameters */ 0,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(72),
+ /* templates */ TemplateIndex(98),
/* parameters */ ParameterIndex(/* invalid */),
- /* return_matcher_indices */ MatcherIndicesIndex(176),
+ /* return_matcher_indices */ MatcherIndicesIndex(116),
/* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
@@ -5658,9 +5620,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(72),
+ /* templates */ TemplateIndex(98),
/* parameters */ ParameterIndex(213),
- /* return_matcher_indices */ MatcherIndicesIndex(176),
+ /* return_matcher_indices */ MatcherIndicesIndex(116),
/* const_eval_fn */ ConstEvalFunctionIndex(82),
},
{
@@ -5669,9 +5631,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(39),
+ /* templates */ TemplateIndex(65),
/* parameters */ ParameterIndex(213),
- /* return_matcher_indices */ MatcherIndicesIndex(176),
+ /* return_matcher_indices */ MatcherIndicesIndex(116),
/* const_eval_fn */ ConstEvalFunctionIndex(82),
},
{
@@ -5680,9 +5642,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(72),
+ /* templates */ TemplateIndex(98),
/* parameters */ ParameterIndex(1),
- /* return_matcher_indices */ MatcherIndicesIndex(176),
+ /* return_matcher_indices */ MatcherIndicesIndex(116),
/* const_eval_fn */ ConstEvalFunctionIndex(109),
},
{
@@ -5691,9 +5653,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(39),
+ /* templates */ TemplateIndex(65),
/* parameters */ ParameterIndex(1),
- /* return_matcher_indices */ MatcherIndicesIndex(176),
+ /* return_matcher_indices */ MatcherIndicesIndex(116),
/* const_eval_fn */ ConstEvalFunctionIndex(109),
},
{
@@ -5702,9 +5664,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(72),
+ /* templates */ TemplateIndex(98),
/* parameters */ ParameterIndex(205),
- /* return_matcher_indices */ MatcherIndicesIndex(176),
+ /* return_matcher_indices */ MatcherIndicesIndex(116),
/* const_eval_fn */ ConstEvalFunctionIndex(110),
},
{
@@ -5713,9 +5675,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(39),
+ /* templates */ TemplateIndex(65),
/* parameters */ ParameterIndex(205),
- /* return_matcher_indices */ MatcherIndicesIndex(176),
+ /* return_matcher_indices */ MatcherIndicesIndex(116),
/* const_eval_fn */ ConstEvalFunctionIndex(110),
},
{
@@ -5724,9 +5686,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(72),
- /* parameters */ ParameterIndex(297),
- /* return_matcher_indices */ MatcherIndicesIndex(176),
+ /* templates */ TemplateIndex(98),
+ /* parameters */ ParameterIndex(288),
+ /* return_matcher_indices */ MatcherIndicesIndex(116),
/* const_eval_fn */ ConstEvalFunctionIndex(111),
},
{
@@ -5735,9 +5697,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(39),
- /* parameters */ ParameterIndex(297),
- /* return_matcher_indices */ MatcherIndicesIndex(176),
+ /* templates */ TemplateIndex(65),
+ /* parameters */ ParameterIndex(288),
+ /* return_matcher_indices */ MatcherIndicesIndex(116),
/* const_eval_fn */ ConstEvalFunctionIndex(111),
},
{
@@ -5746,9 +5708,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(72),
- /* parameters */ ParameterIndex(300),
- /* return_matcher_indices */ MatcherIndicesIndex(176),
+ /* templates */ TemplateIndex(98),
+ /* parameters */ ParameterIndex(291),
+ /* return_matcher_indices */ MatcherIndicesIndex(116),
/* const_eval_fn */ ConstEvalFunctionIndex(111),
},
{
@@ -5757,9 +5719,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(39),
- /* parameters */ ParameterIndex(300),
- /* return_matcher_indices */ MatcherIndicesIndex(176),
+ /* templates */ TemplateIndex(65),
+ /* parameters */ ParameterIndex(291),
+ /* return_matcher_indices */ MatcherIndicesIndex(116),
/* const_eval_fn */ ConstEvalFunctionIndex(111),
},
{
@@ -5768,9 +5730,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 2,
- /* templates */ TemplateIndex(56),
- /* parameters */ ParameterIndex(396),
- /* return_matcher_indices */ MatcherIndicesIndex(176),
+ /* templates */ TemplateIndex(82),
+ /* parameters */ ParameterIndex(369),
+ /* return_matcher_indices */ MatcherIndicesIndex(116),
/* const_eval_fn */ ConstEvalFunctionIndex(108),
},
{
@@ -5779,9 +5741,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 2,
- /* templates */ TemplateIndex(58),
- /* parameters */ ParameterIndex(396),
- /* return_matcher_indices */ MatcherIndicesIndex(176),
+ /* templates */ TemplateIndex(84),
+ /* parameters */ ParameterIndex(369),
+ /* return_matcher_indices */ MatcherIndicesIndex(116),
/* const_eval_fn */ ConstEvalFunctionIndex(108),
},
{
@@ -5790,9 +5752,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 2,
- /* templates */ TemplateIndex(60),
- /* parameters */ ParameterIndex(396),
- /* return_matcher_indices */ MatcherIndicesIndex(176),
+ /* templates */ TemplateIndex(86),
+ /* parameters */ ParameterIndex(369),
+ /* return_matcher_indices */ MatcherIndicesIndex(116),
/* const_eval_fn */ ConstEvalFunctionIndex(108),
},
{
@@ -5801,9 +5763,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 2,
- /* templates */ TemplateIndex(62),
- /* parameters */ ParameterIndex(396),
- /* return_matcher_indices */ MatcherIndicesIndex(176),
+ /* templates */ TemplateIndex(88),
+ /* parameters */ ParameterIndex(369),
+ /* return_matcher_indices */ MatcherIndicesIndex(116),
/* const_eval_fn */ ConstEvalFunctionIndex(108),
},
{
@@ -5812,9 +5774,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 2,
- /* templates */ TemplateIndex(64),
- /* parameters */ ParameterIndex(396),
- /* return_matcher_indices */ MatcherIndicesIndex(176),
+ /* templates */ TemplateIndex(90),
+ /* parameters */ ParameterIndex(369),
+ /* return_matcher_indices */ MatcherIndicesIndex(116),
/* const_eval_fn */ ConstEvalFunctionIndex(108),
},
{
@@ -5825,7 +5787,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(237),
- /* return_matcher_indices */ MatcherIndicesIndex(184),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5836,7 +5798,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(44),
- /* return_matcher_indices */ MatcherIndicesIndex(184),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5847,7 +5809,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(165),
- /* return_matcher_indices */ MatcherIndicesIndex(184),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5856,9 +5818,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(2),
+ /* templates */ TemplateIndex(4),
/* parameters */ ParameterIndex(19),
- /* return_matcher_indices */ MatcherIndicesIndex(184),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5867,9 +5829,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(2),
+ /* templates */ TemplateIndex(4),
/* parameters */ ParameterIndex(99),
- /* return_matcher_indices */ MatcherIndicesIndex(184),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5880,7 +5842,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(50),
- /* return_matcher_indices */ MatcherIndicesIndex(184),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5891,7 +5853,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(169),
- /* return_matcher_indices */ MatcherIndicesIndex(184),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5902,7 +5864,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(119),
- /* return_matcher_indices */ MatcherIndicesIndex(184),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5911,9 +5873,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(2),
+ /* templates */ TemplateIndex(4),
/* parameters */ ParameterIndex(56),
- /* return_matcher_indices */ MatcherIndicesIndex(184),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -5944,7 +5906,7 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(2),
+ /* templates */ TemplateIndex(4),
/* parameters */ ParameterIndex(68),
/* return_matcher_indices */ MatcherIndicesIndex(68),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -5955,7 +5917,7 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(2),
+ /* templates */ TemplateIndex(4),
/* parameters */ ParameterIndex(84),
/* return_matcher_indices */ MatcherIndicesIndex(68),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -5977,7 +5939,7 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(2),
+ /* templates */ TemplateIndex(4),
/* parameters */ ParameterIndex(144),
/* return_matcher_indices */ MatcherIndicesIndex(68),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -5990,7 +5952,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(124),
- /* return_matcher_indices */ MatcherIndicesIndex(184),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -6001,7 +5963,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(124),
- /* return_matcher_indices */ MatcherIndicesIndex(184),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -6010,9 +5972,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(2),
+ /* templates */ TemplateIndex(4),
/* parameters */ ParameterIndex(62),
- /* return_matcher_indices */ MatcherIndicesIndex(184),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -6021,9 +5983,9 @@
/* num_parameters */ 6,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(2),
+ /* templates */ TemplateIndex(4),
/* parameters */ ParameterIndex(62),
- /* return_matcher_indices */ MatcherIndicesIndex(184),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -6034,7 +5996,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(129),
- /* return_matcher_indices */ MatcherIndicesIndex(184),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -6045,7 +6007,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(129),
- /* return_matcher_indices */ MatcherIndicesIndex(184),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -6056,7 +6018,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(177),
- /* return_matcher_indices */ MatcherIndicesIndex(184),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -6065,9 +6027,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(2),
+ /* templates */ TemplateIndex(4),
/* parameters */ ParameterIndex(134),
- /* return_matcher_indices */ MatcherIndicesIndex(184),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -6076,7 +6038,7 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(3),
+ /* templates */ TemplateIndex(5),
/* parameters */ ParameterIndex(139),
/* return_matcher_indices */ MatcherIndicesIndex(68),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -6087,7 +6049,7 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(3),
+ /* templates */ TemplateIndex(5),
/* parameters */ ParameterIndex(139),
/* return_matcher_indices */ MatcherIndicesIndex(68),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -6098,7 +6060,7 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(2),
+ /* templates */ TemplateIndex(4),
/* parameters */ ParameterIndex(68),
/* return_matcher_indices */ MatcherIndicesIndex(68),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -6109,7 +6071,7 @@
/* num_parameters */ 6,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(2),
+ /* templates */ TemplateIndex(4),
/* parameters */ ParameterIndex(68),
/* return_matcher_indices */ MatcherIndicesIndex(68),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -6120,7 +6082,7 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(3),
+ /* templates */ TemplateIndex(5),
/* parameters */ ParameterIndex(181),
/* return_matcher_indices */ MatcherIndicesIndex(68),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -6131,7 +6093,7 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(2),
+ /* templates */ TemplateIndex(4),
/* parameters */ ParameterIndex(144),
/* return_matcher_indices */ MatcherIndicesIndex(68),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -6144,7 +6106,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(/* invalid */),
- /* return_matcher_indices */ MatcherIndicesIndex(234),
+ /* return_matcher_indices */ MatcherIndicesIndex(174),
/* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
@@ -6153,9 +6115,9 @@
/* num_parameters */ 0,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(72),
+ /* templates */ TemplateIndex(98),
/* parameters */ ParameterIndex(/* invalid */),
- /* return_matcher_indices */ MatcherIndicesIndex(228),
+ /* return_matcher_indices */ MatcherIndicesIndex(168),
/* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
@@ -6164,9 +6126,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(72),
+ /* templates */ TemplateIndex(98),
/* parameters */ ParameterIndex(209),
- /* return_matcher_indices */ MatcherIndicesIndex(228),
+ /* return_matcher_indices */ MatcherIndicesIndex(168),
/* const_eval_fn */ ConstEvalFunctionIndex(82),
},
{
@@ -6175,9 +6137,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(39),
+ /* templates */ TemplateIndex(65),
/* parameters */ ParameterIndex(209),
- /* return_matcher_indices */ MatcherIndicesIndex(228),
+ /* return_matcher_indices */ MatcherIndicesIndex(168),
/* const_eval_fn */ ConstEvalFunctionIndex(82),
},
{
@@ -6186,9 +6148,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(72),
+ /* templates */ TemplateIndex(98),
/* parameters */ ParameterIndex(1),
- /* return_matcher_indices */ MatcherIndicesIndex(228),
+ /* return_matcher_indices */ MatcherIndicesIndex(168),
/* const_eval_fn */ ConstEvalFunctionIndex(109),
},
{
@@ -6197,9 +6159,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(39),
+ /* templates */ TemplateIndex(65),
/* parameters */ ParameterIndex(1),
- /* return_matcher_indices */ MatcherIndicesIndex(228),
+ /* return_matcher_indices */ MatcherIndicesIndex(168),
/* const_eval_fn */ ConstEvalFunctionIndex(109),
},
{
@@ -6208,9 +6170,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(72),
+ /* templates */ TemplateIndex(98),
/* parameters */ ParameterIndex(205),
- /* return_matcher_indices */ MatcherIndicesIndex(228),
+ /* return_matcher_indices */ MatcherIndicesIndex(168),
/* const_eval_fn */ ConstEvalFunctionIndex(110),
},
{
@@ -6219,9 +6181,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(39),
+ /* templates */ TemplateIndex(65),
/* parameters */ ParameterIndex(205),
- /* return_matcher_indices */ MatcherIndicesIndex(228),
+ /* return_matcher_indices */ MatcherIndicesIndex(168),
/* const_eval_fn */ ConstEvalFunctionIndex(110),
},
{
@@ -6230,9 +6192,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 2,
- /* templates */ TemplateIndex(56),
- /* parameters */ ParameterIndex(381),
- /* return_matcher_indices */ MatcherIndicesIndex(228),
+ /* templates */ TemplateIndex(82),
+ /* parameters */ ParameterIndex(354),
+ /* return_matcher_indices */ MatcherIndicesIndex(168),
/* const_eval_fn */ ConstEvalFunctionIndex(108),
},
{
@@ -6241,9 +6203,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 2,
- /* templates */ TemplateIndex(58),
- /* parameters */ ParameterIndex(381),
- /* return_matcher_indices */ MatcherIndicesIndex(228),
+ /* templates */ TemplateIndex(84),
+ /* parameters */ ParameterIndex(354),
+ /* return_matcher_indices */ MatcherIndicesIndex(168),
/* const_eval_fn */ ConstEvalFunctionIndex(108),
},
{
@@ -6252,9 +6214,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 2,
- /* templates */ TemplateIndex(60),
- /* parameters */ ParameterIndex(381),
- /* return_matcher_indices */ MatcherIndicesIndex(228),
+ /* templates */ TemplateIndex(86),
+ /* parameters */ ParameterIndex(354),
+ /* return_matcher_indices */ MatcherIndicesIndex(168),
/* const_eval_fn */ ConstEvalFunctionIndex(108),
},
{
@@ -6263,9 +6225,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 2,
- /* templates */ TemplateIndex(62),
- /* parameters */ ParameterIndex(381),
- /* return_matcher_indices */ MatcherIndicesIndex(228),
+ /* templates */ TemplateIndex(88),
+ /* parameters */ ParameterIndex(354),
+ /* return_matcher_indices */ MatcherIndicesIndex(168),
/* const_eval_fn */ ConstEvalFunctionIndex(108),
},
{
@@ -6274,9 +6236,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 2,
- /* templates */ TemplateIndex(64),
- /* parameters */ ParameterIndex(381),
- /* return_matcher_indices */ MatcherIndicesIndex(228),
+ /* templates */ TemplateIndex(90),
+ /* parameters */ ParameterIndex(354),
+ /* return_matcher_indices */ MatcherIndicesIndex(168),
/* const_eval_fn */ ConstEvalFunctionIndex(108),
},
{
@@ -6287,7 +6249,7 @@
/* num_templates */ 2,
/* templates */ TemplateIndex(0),
/* parameters */ ParameterIndex(74),
- /* return_matcher_indices */ MatcherIndicesIndex(208),
+ /* return_matcher_indices */ MatcherIndicesIndex(148),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -6298,7 +6260,7 @@
/* num_templates */ 2,
/* templates */ TemplateIndex(0),
/* parameters */ ParameterIndex(74),
- /* return_matcher_indices */ MatcherIndicesIndex(208),
+ /* return_matcher_indices */ MatcherIndicesIndex(148),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -6307,9 +6269,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(0),
+ /* templates */ TemplateIndex(14),
/* parameters */ ParameterIndex(26),
- /* return_matcher_indices */ MatcherIndicesIndex(208),
+ /* return_matcher_indices */ MatcherIndicesIndex(148),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -6318,9 +6280,9 @@
/* num_parameters */ 6,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(0),
+ /* templates */ TemplateIndex(14),
/* parameters */ ParameterIndex(26),
- /* return_matcher_indices */ MatcherIndicesIndex(208),
+ /* return_matcher_indices */ MatcherIndicesIndex(148),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -6331,7 +6293,7 @@
/* num_templates */ 2,
/* templates */ TemplateIndex(0),
/* parameters */ ParameterIndex(153),
- /* return_matcher_indices */ MatcherIndicesIndex(208),
+ /* return_matcher_indices */ MatcherIndicesIndex(148),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -6340,9 +6302,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(0),
+ /* templates */ TemplateIndex(14),
/* parameters */ ParameterIndex(79),
- /* return_matcher_indices */ MatcherIndicesIndex(208),
+ /* return_matcher_indices */ MatcherIndicesIndex(148),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -6353,7 +6315,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(139),
- /* return_matcher_indices */ MatcherIndicesIndex(184),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -6364,7 +6326,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(157),
- /* return_matcher_indices */ MatcherIndicesIndex(184),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -6373,9 +6335,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(2),
+ /* templates */ TemplateIndex(4),
/* parameters */ ParameterIndex(68),
- /* return_matcher_indices */ MatcherIndicesIndex(184),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -6384,9 +6346,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(2),
+ /* templates */ TemplateIndex(4),
/* parameters */ ParameterIndex(84),
- /* return_matcher_indices */ MatcherIndicesIndex(184),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -6397,7 +6359,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(181),
- /* return_matcher_indices */ MatcherIndicesIndex(184),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -6406,9 +6368,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(2),
+ /* templates */ TemplateIndex(4),
/* parameters */ ParameterIndex(144),
- /* return_matcher_indices */ MatcherIndicesIndex(184),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -6416,7 +6378,7 @@
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
- /* num_templates */ 1,
+ /* num_templates */ 3,
/* templates */ TemplateIndex(1),
/* parameters */ ParameterIndex(243),
/* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
@@ -6427,7 +6389,7 @@
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
- /* num_templates */ 1,
+ /* num_templates */ 3,
/* templates */ TemplateIndex(1),
/* parameters */ ParameterIndex(246),
/* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
@@ -6438,7 +6400,7 @@
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
- /* num_templates */ 2,
+ /* num_templates */ 4,
/* templates */ TemplateIndex(1),
/* parameters */ ParameterIndex(185),
/* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
@@ -6449,7 +6411,7 @@
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
- /* num_templates */ 1,
+ /* num_templates */ 3,
/* templates */ TemplateIndex(1),
/* parameters */ ParameterIndex(249),
/* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
@@ -6460,8 +6422,8 @@
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
- /* num_templates */ 1,
- /* templates */ TemplateIndex(1),
+ /* num_templates */ 3,
+ /* templates */ TemplateIndex(6),
/* parameters */ ParameterIndex(252),
/* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -6471,8 +6433,8 @@
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
- /* num_templates */ 1,
- /* templates */ TemplateIndex(1),
+ /* num_templates */ 3,
+ /* templates */ TemplateIndex(6),
/* parameters */ ParameterIndex(255),
/* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -6482,8 +6444,8 @@
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
- /* num_templates */ 2,
- /* templates */ TemplateIndex(1),
+ /* num_templates */ 4,
+ /* templates */ TemplateIndex(6),
/* parameters */ ParameterIndex(189),
/* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -6493,8 +6455,8 @@
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
- /* num_templates */ 1,
- /* templates */ TemplateIndex(1),
+ /* num_templates */ 3,
+ /* templates */ TemplateIndex(6),
/* parameters */ ParameterIndex(258),
/* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -6504,8 +6466,8 @@
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
- /* num_templates */ 1,
- /* templates */ TemplateIndex(1),
+ /* num_templates */ 3,
+ /* templates */ TemplateIndex(10),
/* parameters */ ParameterIndex(261),
/* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -6515,8 +6477,8 @@
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
- /* num_templates */ 1,
- /* templates */ TemplateIndex(1),
+ /* num_templates */ 3,
+ /* templates */ TemplateIndex(10),
/* parameters */ ParameterIndex(264),
/* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -6526,8 +6488,8 @@
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
- /* num_templates */ 2,
- /* templates */ TemplateIndex(1),
+ /* num_templates */ 4,
+ /* templates */ TemplateIndex(10),
/* parameters */ ParameterIndex(193),
/* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -6537,8 +6499,8 @@
/* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
- /* num_templates */ 1,
- /* templates */ TemplateIndex(1),
+ /* num_templates */ 3,
+ /* templates */ TemplateIndex(10),
/* parameters */ ParameterIndex(267),
/* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -6549,7 +6511,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 2,
- /* templates */ TemplateIndex(35),
+ /* templates */ TemplateIndex(61),
/* parameters */ ParameterIndex(229),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(10),
@@ -6560,8 +6522,8 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(58),
- /* parameters */ ParameterIndex(374),
+ /* templates */ TemplateIndex(84),
+ /* parameters */ ParameterIndex(347),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(10),
},
@@ -6571,8 +6533,8 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 3,
- /* templates */ TemplateIndex(8),
- /* parameters */ ParameterIndex(375),
+ /* templates */ TemplateIndex(34),
+ /* parameters */ ParameterIndex(348),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(10),
},
@@ -6582,8 +6544,8 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 2,
- /* templates */ TemplateIndex(37),
- /* parameters */ ParameterIndex(376),
+ /* templates */ TemplateIndex(63),
+ /* parameters */ ParameterIndex(349),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(10),
},
@@ -6593,8 +6555,8 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(62),
- /* parameters */ ParameterIndex(377),
+ /* templates */ TemplateIndex(88),
+ /* parameters */ ParameterIndex(350),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(10),
},
@@ -6604,8 +6566,8 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 2,
- /* templates */ TemplateIndex(44),
- /* parameters */ ParameterIndex(378),
+ /* templates */ TemplateIndex(70),
+ /* parameters */ ParameterIndex(351),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(10),
},
@@ -6616,7 +6578,7 @@
/* num_explicit_templates */ 1,
/* num_templates */ 1,
/* templates */ TemplateIndex(0),
- /* parameters */ ParameterIndex(379),
+ /* parameters */ ParameterIndex(352),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(10),
},
@@ -6626,8 +6588,8 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(66),
- /* parameters */ ParameterIndex(380),
+ /* templates */ TemplateIndex(92),
+ /* parameters */ ParameterIndex(353),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(10),
},
@@ -6637,7 +6599,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 2,
- /* templates */ TemplateIndex(46),
+ /* templates */ TemplateIndex(72),
/* parameters */ ParameterIndex(229),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(10),
@@ -6648,8 +6610,8 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 2,
- /* templates */ TemplateIndex(48),
- /* parameters */ ParameterIndex(381),
+ /* templates */ TemplateIndex(74),
+ /* parameters */ ParameterIndex(354),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(10),
},
@@ -6769,7 +6731,7 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(29),
+ /* templates */ TemplateIndex(55),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(88),
@@ -6780,7 +6742,7 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(29),
+ /* templates */ TemplateIndex(55),
/* parameters */ ParameterIndex(221),
/* return_matcher_indices */ MatcherIndicesIndex(48),
/* const_eval_fn */ ConstEvalFunctionIndex(88),
@@ -6791,8 +6753,8 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(29),
- /* parameters */ ParameterIndex(354),
+ /* templates */ TemplateIndex(55),
+ /* parameters */ ParameterIndex(327),
/* return_matcher_indices */ MatcherIndicesIndex(48),
/* const_eval_fn */ ConstEvalFunctionIndex(88),
},
@@ -6802,8 +6764,8 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(29),
- /* parameters */ ParameterIndex(355),
+ /* templates */ TemplateIndex(55),
+ /* parameters */ ParameterIndex(328),
/* return_matcher_indices */ MatcherIndicesIndex(48),
/* const_eval_fn */ ConstEvalFunctionIndex(88),
},
@@ -6813,8 +6775,8 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(16),
- /* parameters */ ParameterIndex(360),
+ /* templates */ TemplateIndex(42),
+ /* parameters */ ParameterIndex(333),
/* return_matcher_indices */ MatcherIndicesIndex(26),
/* const_eval_fn */ ConstEvalFunctionIndex(88),
},
@@ -6824,8 +6786,8 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(16),
- /* parameters */ ParameterIndex(359),
+ /* templates */ TemplateIndex(42),
+ /* parameters */ ParameterIndex(332),
/* return_matcher_indices */ MatcherIndicesIndex(26),
/* const_eval_fn */ ConstEvalFunctionIndex(88),
},
@@ -6835,9 +6797,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(25),
- /* parameters */ ParameterIndex(361),
- /* return_matcher_indices */ MatcherIndicesIndex(162),
+ /* templates */ TemplateIndex(51),
+ /* parameters */ ParameterIndex(334),
+ /* return_matcher_indices */ MatcherIndicesIndex(102),
/* const_eval_fn */ ConstEvalFunctionIndex(89),
},
{
@@ -6846,8 +6808,8 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(25),
- /* parameters */ ParameterIndex(363),
+ /* templates */ TemplateIndex(51),
+ /* parameters */ ParameterIndex(336),
/* return_matcher_indices */ MatcherIndicesIndex(48),
/* const_eval_fn */ ConstEvalFunctionIndex(90),
},
@@ -6857,8 +6819,8 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 4,
- /* templates */ TemplateIndex(4),
- /* parameters */ ParameterIndex(365),
+ /* templates */ TemplateIndex(30),
+ /* parameters */ ParameterIndex(338),
/* return_matcher_indices */ MatcherIndicesIndex(30),
/* const_eval_fn */ ConstEvalFunctionIndex(91),
},
@@ -6868,7 +6830,7 @@
/* num_parameters */ 0,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(73),
+ /* templates */ TemplateIndex(99),
/* parameters */ ParameterIndex(/* invalid */),
/* return_matcher_indices */ MatcherIndicesIndex(23),
/* const_eval_fn */ ConstEvalFunctionIndex(107),
@@ -6879,8 +6841,8 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(73),
- /* parameters */ ParameterIndex(398),
+ /* templates */ TemplateIndex(99),
+ /* parameters */ ParameterIndex(371),
/* return_matcher_indices */ MatcherIndicesIndex(23),
/* const_eval_fn */ ConstEvalFunctionIndex(82),
},
@@ -6890,8 +6852,8 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
- /* parameters */ ParameterIndex(398),
+ /* templates */ TemplateIndex(30),
+ /* parameters */ ParameterIndex(371),
/* return_matcher_indices */ MatcherIndicesIndex(23),
/* const_eval_fn */ ConstEvalFunctionIndex(82),
},
@@ -6901,7 +6863,7 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(23),
/* const_eval_fn */ ConstEvalFunctionIndex(112),
@@ -6912,7 +6874,7 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(23),
/* const_eval_fn */ ConstEvalFunctionIndex(112),
@@ -6923,7 +6885,7 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(209),
/* return_matcher_indices */ MatcherIndicesIndex(23),
/* const_eval_fn */ ConstEvalFunctionIndex(113),
@@ -6934,7 +6896,7 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(209),
/* return_matcher_indices */ MatcherIndicesIndex(23),
/* const_eval_fn */ ConstEvalFunctionIndex(113),
@@ -6945,8 +6907,8 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(58),
- /* parameters */ ParameterIndex(399),
+ /* templates */ TemplateIndex(84),
+ /* parameters */ ParameterIndex(372),
/* return_matcher_indices */ MatcherIndicesIndex(23),
/* const_eval_fn */ ConstEvalFunctionIndex(108),
},
@@ -6956,8 +6918,8 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(56),
- /* parameters */ ParameterIndex(400),
+ /* templates */ TemplateIndex(82),
+ /* parameters */ ParameterIndex(373),
/* return_matcher_indices */ MatcherIndicesIndex(23),
/* const_eval_fn */ ConstEvalFunctionIndex(108),
},
@@ -6967,9 +6929,9 @@
/* num_parameters */ 0,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(73),
+ /* templates */ TemplateIndex(99),
/* parameters */ ParameterIndex(/* invalid */),
- /* return_matcher_indices */ MatcherIndicesIndex(246),
+ /* return_matcher_indices */ MatcherIndicesIndex(186),
/* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
@@ -6978,9 +6940,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(73),
- /* parameters */ ParameterIndex(401),
- /* return_matcher_indices */ MatcherIndicesIndex(246),
+ /* templates */ TemplateIndex(99),
+ /* parameters */ ParameterIndex(374),
+ /* return_matcher_indices */ MatcherIndicesIndex(186),
/* const_eval_fn */ ConstEvalFunctionIndex(82),
},
{
@@ -6989,9 +6951,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
- /* parameters */ ParameterIndex(401),
- /* return_matcher_indices */ MatcherIndicesIndex(246),
+ /* templates */ TemplateIndex(30),
+ /* parameters */ ParameterIndex(374),
+ /* return_matcher_indices */ MatcherIndicesIndex(186),
/* const_eval_fn */ ConstEvalFunctionIndex(82),
},
{
@@ -7000,9 +6962,9 @@
/* num_parameters */ 6,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(1),
- /* return_matcher_indices */ MatcherIndicesIndex(246),
+ /* return_matcher_indices */ MatcherIndicesIndex(186),
/* const_eval_fn */ ConstEvalFunctionIndex(112),
},
{
@@ -7011,9 +6973,9 @@
/* num_parameters */ 6,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(1),
- /* return_matcher_indices */ MatcherIndicesIndex(246),
+ /* return_matcher_indices */ MatcherIndicesIndex(186),
/* const_eval_fn */ ConstEvalFunctionIndex(112),
},
{
@@ -7022,9 +6984,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(213),
- /* return_matcher_indices */ MatcherIndicesIndex(246),
+ /* return_matcher_indices */ MatcherIndicesIndex(186),
/* const_eval_fn */ ConstEvalFunctionIndex(113),
},
{
@@ -7033,9 +6995,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(213),
- /* return_matcher_indices */ MatcherIndicesIndex(246),
+ /* return_matcher_indices */ MatcherIndicesIndex(186),
/* const_eval_fn */ ConstEvalFunctionIndex(113),
},
{
@@ -7044,9 +7006,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(58),
- /* parameters */ ParameterIndex(402),
- /* return_matcher_indices */ MatcherIndicesIndex(246),
+ /* templates */ TemplateIndex(84),
+ /* parameters */ ParameterIndex(375),
+ /* return_matcher_indices */ MatcherIndicesIndex(186),
/* const_eval_fn */ ConstEvalFunctionIndex(108),
},
{
@@ -7055,9 +7017,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(56),
- /* parameters */ ParameterIndex(403),
- /* return_matcher_indices */ MatcherIndicesIndex(246),
+ /* templates */ TemplateIndex(82),
+ /* parameters */ ParameterIndex(376),
+ /* return_matcher_indices */ MatcherIndicesIndex(186),
/* const_eval_fn */ ConstEvalFunctionIndex(108),
},
{
@@ -7066,9 +7028,9 @@
/* num_parameters */ 0,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(73),
+ /* templates */ TemplateIndex(99),
/* parameters */ ParameterIndex(/* invalid */),
- /* return_matcher_indices */ MatcherIndicesIndex(252),
+ /* return_matcher_indices */ MatcherIndicesIndex(192),
/* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
@@ -7077,9 +7039,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(73),
- /* parameters */ ParameterIndex(404),
- /* return_matcher_indices */ MatcherIndicesIndex(252),
+ /* templates */ TemplateIndex(99),
+ /* parameters */ ParameterIndex(377),
+ /* return_matcher_indices */ MatcherIndicesIndex(192),
/* const_eval_fn */ ConstEvalFunctionIndex(82),
},
{
@@ -7088,9 +7050,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
- /* parameters */ ParameterIndex(404),
- /* return_matcher_indices */ MatcherIndicesIndex(252),
+ /* templates */ TemplateIndex(30),
+ /* parameters */ ParameterIndex(377),
+ /* return_matcher_indices */ MatcherIndicesIndex(192),
/* const_eval_fn */ ConstEvalFunctionIndex(82),
},
{
@@ -7099,9 +7061,9 @@
/* num_parameters */ 8,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(1),
- /* return_matcher_indices */ MatcherIndicesIndex(252),
+ /* return_matcher_indices */ MatcherIndicesIndex(192),
/* const_eval_fn */ ConstEvalFunctionIndex(112),
},
{
@@ -7110,9 +7072,9 @@
/* num_parameters */ 8,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(1),
- /* return_matcher_indices */ MatcherIndicesIndex(252),
+ /* return_matcher_indices */ MatcherIndicesIndex(192),
/* const_eval_fn */ ConstEvalFunctionIndex(112),
},
{
@@ -7121,9 +7083,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(217),
- /* return_matcher_indices */ MatcherIndicesIndex(252),
+ /* return_matcher_indices */ MatcherIndicesIndex(192),
/* const_eval_fn */ ConstEvalFunctionIndex(113),
},
{
@@ -7132,9 +7094,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(217),
- /* return_matcher_indices */ MatcherIndicesIndex(252),
+ /* return_matcher_indices */ MatcherIndicesIndex(192),
/* const_eval_fn */ ConstEvalFunctionIndex(113),
},
{
@@ -7143,9 +7105,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(58),
- /* parameters */ ParameterIndex(405),
- /* return_matcher_indices */ MatcherIndicesIndex(252),
+ /* templates */ TemplateIndex(84),
+ /* parameters */ ParameterIndex(378),
+ /* return_matcher_indices */ MatcherIndicesIndex(192),
/* const_eval_fn */ ConstEvalFunctionIndex(108),
},
{
@@ -7154,9 +7116,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(56),
- /* parameters */ ParameterIndex(406),
- /* return_matcher_indices */ MatcherIndicesIndex(252),
+ /* templates */ TemplateIndex(82),
+ /* parameters */ ParameterIndex(379),
+ /* return_matcher_indices */ MatcherIndicesIndex(192),
/* const_eval_fn */ ConstEvalFunctionIndex(108),
},
{
@@ -7165,9 +7127,9 @@
/* num_parameters */ 0,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(73),
+ /* templates */ TemplateIndex(99),
/* parameters */ ParameterIndex(/* invalid */),
- /* return_matcher_indices */ MatcherIndicesIndex(258),
+ /* return_matcher_indices */ MatcherIndicesIndex(198),
/* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
@@ -7176,9 +7138,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(73),
- /* parameters */ ParameterIndex(407),
- /* return_matcher_indices */ MatcherIndicesIndex(258),
+ /* templates */ TemplateIndex(99),
+ /* parameters */ ParameterIndex(380),
+ /* return_matcher_indices */ MatcherIndicesIndex(198),
/* const_eval_fn */ ConstEvalFunctionIndex(82),
},
{
@@ -7187,9 +7149,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
- /* parameters */ ParameterIndex(407),
- /* return_matcher_indices */ MatcherIndicesIndex(258),
+ /* templates */ TemplateIndex(30),
+ /* parameters */ ParameterIndex(380),
+ /* return_matcher_indices */ MatcherIndicesIndex(198),
/* const_eval_fn */ ConstEvalFunctionIndex(82),
},
{
@@ -7198,9 +7160,9 @@
/* num_parameters */ 6,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(1),
- /* return_matcher_indices */ MatcherIndicesIndex(258),
+ /* return_matcher_indices */ MatcherIndicesIndex(198),
/* const_eval_fn */ ConstEvalFunctionIndex(112),
},
{
@@ -7209,9 +7171,9 @@
/* num_parameters */ 6,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(1),
- /* return_matcher_indices */ MatcherIndicesIndex(258),
+ /* return_matcher_indices */ MatcherIndicesIndex(198),
/* const_eval_fn */ ConstEvalFunctionIndex(112),
},
{
@@ -7220,9 +7182,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(209),
- /* return_matcher_indices */ MatcherIndicesIndex(258),
+ /* return_matcher_indices */ MatcherIndicesIndex(198),
/* const_eval_fn */ ConstEvalFunctionIndex(113),
},
{
@@ -7231,9 +7193,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(209),
- /* return_matcher_indices */ MatcherIndicesIndex(258),
+ /* return_matcher_indices */ MatcherIndicesIndex(198),
/* const_eval_fn */ ConstEvalFunctionIndex(113),
},
{
@@ -7242,9 +7204,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(58),
- /* parameters */ ParameterIndex(408),
- /* return_matcher_indices */ MatcherIndicesIndex(258),
+ /* templates */ TemplateIndex(84),
+ /* parameters */ ParameterIndex(381),
+ /* return_matcher_indices */ MatcherIndicesIndex(198),
/* const_eval_fn */ ConstEvalFunctionIndex(108),
},
{
@@ -7253,9 +7215,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(56),
- /* parameters */ ParameterIndex(409),
- /* return_matcher_indices */ MatcherIndicesIndex(258),
+ /* templates */ TemplateIndex(82),
+ /* parameters */ ParameterIndex(382),
+ /* return_matcher_indices */ MatcherIndicesIndex(198),
/* const_eval_fn */ ConstEvalFunctionIndex(108),
},
{
@@ -7264,9 +7226,9 @@
/* num_parameters */ 0,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(73),
+ /* templates */ TemplateIndex(99),
/* parameters */ ParameterIndex(/* invalid */),
- /* return_matcher_indices */ MatcherIndicesIndex(264),
+ /* return_matcher_indices */ MatcherIndicesIndex(204),
/* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
@@ -7275,9 +7237,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(73),
- /* parameters */ ParameterIndex(410),
- /* return_matcher_indices */ MatcherIndicesIndex(264),
+ /* templates */ TemplateIndex(99),
+ /* parameters */ ParameterIndex(383),
+ /* return_matcher_indices */ MatcherIndicesIndex(204),
/* const_eval_fn */ ConstEvalFunctionIndex(82),
},
{
@@ -7286,9 +7248,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
- /* parameters */ ParameterIndex(410),
- /* return_matcher_indices */ MatcherIndicesIndex(264),
+ /* templates */ TemplateIndex(30),
+ /* parameters */ ParameterIndex(383),
+ /* return_matcher_indices */ MatcherIndicesIndex(204),
/* const_eval_fn */ ConstEvalFunctionIndex(82),
},
{
@@ -7297,9 +7259,9 @@
/* num_parameters */ 9,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(1),
- /* return_matcher_indices */ MatcherIndicesIndex(264),
+ /* return_matcher_indices */ MatcherIndicesIndex(204),
/* const_eval_fn */ ConstEvalFunctionIndex(112),
},
{
@@ -7308,9 +7270,9 @@
/* num_parameters */ 9,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(1),
- /* return_matcher_indices */ MatcherIndicesIndex(264),
+ /* return_matcher_indices */ MatcherIndicesIndex(204),
/* const_eval_fn */ ConstEvalFunctionIndex(112),
},
{
@@ -7319,9 +7281,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(213),
- /* return_matcher_indices */ MatcherIndicesIndex(264),
+ /* return_matcher_indices */ MatcherIndicesIndex(204),
/* const_eval_fn */ ConstEvalFunctionIndex(113),
},
{
@@ -7330,9 +7292,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(213),
- /* return_matcher_indices */ MatcherIndicesIndex(264),
+ /* return_matcher_indices */ MatcherIndicesIndex(204),
/* const_eval_fn */ ConstEvalFunctionIndex(113),
},
{
@@ -7341,9 +7303,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(58),
- /* parameters */ ParameterIndex(411),
- /* return_matcher_indices */ MatcherIndicesIndex(264),
+ /* templates */ TemplateIndex(84),
+ /* parameters */ ParameterIndex(384),
+ /* return_matcher_indices */ MatcherIndicesIndex(204),
/* const_eval_fn */ ConstEvalFunctionIndex(108),
},
{
@@ -7352,9 +7314,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(56),
- /* parameters */ ParameterIndex(412),
- /* return_matcher_indices */ MatcherIndicesIndex(264),
+ /* templates */ TemplateIndex(82),
+ /* parameters */ ParameterIndex(385),
+ /* return_matcher_indices */ MatcherIndicesIndex(204),
/* const_eval_fn */ ConstEvalFunctionIndex(108),
},
{
@@ -7363,9 +7325,9 @@
/* num_parameters */ 0,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(73),
+ /* templates */ TemplateIndex(99),
/* parameters */ ParameterIndex(/* invalid */),
- /* return_matcher_indices */ MatcherIndicesIndex(270),
+ /* return_matcher_indices */ MatcherIndicesIndex(210),
/* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
@@ -7374,9 +7336,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(73),
- /* parameters */ ParameterIndex(413),
- /* return_matcher_indices */ MatcherIndicesIndex(270),
+ /* templates */ TemplateIndex(99),
+ /* parameters */ ParameterIndex(386),
+ /* return_matcher_indices */ MatcherIndicesIndex(210),
/* const_eval_fn */ ConstEvalFunctionIndex(82),
},
{
@@ -7385,9 +7347,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
- /* parameters */ ParameterIndex(413),
- /* return_matcher_indices */ MatcherIndicesIndex(270),
+ /* templates */ TemplateIndex(30),
+ /* parameters */ ParameterIndex(386),
+ /* return_matcher_indices */ MatcherIndicesIndex(210),
/* const_eval_fn */ ConstEvalFunctionIndex(82),
},
{
@@ -7396,9 +7358,9 @@
/* num_parameters */ 12,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(1),
- /* return_matcher_indices */ MatcherIndicesIndex(270),
+ /* return_matcher_indices */ MatcherIndicesIndex(210),
/* const_eval_fn */ ConstEvalFunctionIndex(112),
},
{
@@ -7407,9 +7369,9 @@
/* num_parameters */ 12,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(1),
- /* return_matcher_indices */ MatcherIndicesIndex(270),
+ /* return_matcher_indices */ MatcherIndicesIndex(210),
/* const_eval_fn */ ConstEvalFunctionIndex(112),
},
{
@@ -7418,9 +7380,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(217),
- /* return_matcher_indices */ MatcherIndicesIndex(270),
+ /* return_matcher_indices */ MatcherIndicesIndex(210),
/* const_eval_fn */ ConstEvalFunctionIndex(113),
},
{
@@ -7429,9 +7391,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(217),
- /* return_matcher_indices */ MatcherIndicesIndex(270),
+ /* return_matcher_indices */ MatcherIndicesIndex(210),
/* const_eval_fn */ ConstEvalFunctionIndex(113),
},
{
@@ -7440,9 +7402,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(58),
- /* parameters */ ParameterIndex(414),
- /* return_matcher_indices */ MatcherIndicesIndex(270),
+ /* templates */ TemplateIndex(84),
+ /* parameters */ ParameterIndex(387),
+ /* return_matcher_indices */ MatcherIndicesIndex(210),
/* const_eval_fn */ ConstEvalFunctionIndex(108),
},
{
@@ -7451,9 +7413,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(56),
- /* parameters */ ParameterIndex(415),
- /* return_matcher_indices */ MatcherIndicesIndex(270),
+ /* templates */ TemplateIndex(82),
+ /* parameters */ ParameterIndex(388),
+ /* return_matcher_indices */ MatcherIndicesIndex(210),
/* const_eval_fn */ ConstEvalFunctionIndex(108),
},
{
@@ -7462,9 +7424,9 @@
/* num_parameters */ 0,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(73),
+ /* templates */ TemplateIndex(99),
/* parameters */ ParameterIndex(/* invalid */),
- /* return_matcher_indices */ MatcherIndicesIndex(276),
+ /* return_matcher_indices */ MatcherIndicesIndex(216),
/* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
@@ -7473,9 +7435,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(73),
- /* parameters */ ParameterIndex(416),
- /* return_matcher_indices */ MatcherIndicesIndex(276),
+ /* templates */ TemplateIndex(99),
+ /* parameters */ ParameterIndex(389),
+ /* return_matcher_indices */ MatcherIndicesIndex(216),
/* const_eval_fn */ ConstEvalFunctionIndex(82),
},
{
@@ -7484,9 +7446,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
- /* parameters */ ParameterIndex(416),
- /* return_matcher_indices */ MatcherIndicesIndex(276),
+ /* templates */ TemplateIndex(30),
+ /* parameters */ ParameterIndex(389),
+ /* return_matcher_indices */ MatcherIndicesIndex(216),
/* const_eval_fn */ ConstEvalFunctionIndex(82),
},
{
@@ -7495,9 +7457,9 @@
/* num_parameters */ 8,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(1),
- /* return_matcher_indices */ MatcherIndicesIndex(276),
+ /* return_matcher_indices */ MatcherIndicesIndex(216),
/* const_eval_fn */ ConstEvalFunctionIndex(112),
},
{
@@ -7506,9 +7468,9 @@
/* num_parameters */ 8,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(1),
- /* return_matcher_indices */ MatcherIndicesIndex(276),
+ /* return_matcher_indices */ MatcherIndicesIndex(216),
/* const_eval_fn */ ConstEvalFunctionIndex(112),
},
{
@@ -7517,9 +7479,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(209),
- /* return_matcher_indices */ MatcherIndicesIndex(276),
+ /* return_matcher_indices */ MatcherIndicesIndex(216),
/* const_eval_fn */ ConstEvalFunctionIndex(113),
},
{
@@ -7528,9 +7490,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(209),
- /* return_matcher_indices */ MatcherIndicesIndex(276),
+ /* return_matcher_indices */ MatcherIndicesIndex(216),
/* const_eval_fn */ ConstEvalFunctionIndex(113),
},
{
@@ -7539,9 +7501,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(58),
- /* parameters */ ParameterIndex(417),
- /* return_matcher_indices */ MatcherIndicesIndex(276),
+ /* templates */ TemplateIndex(84),
+ /* parameters */ ParameterIndex(390),
+ /* return_matcher_indices */ MatcherIndicesIndex(216),
/* const_eval_fn */ ConstEvalFunctionIndex(108),
},
{
@@ -7550,9 +7512,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(56),
- /* parameters */ ParameterIndex(418),
- /* return_matcher_indices */ MatcherIndicesIndex(276),
+ /* templates */ TemplateIndex(82),
+ /* parameters */ ParameterIndex(391),
+ /* return_matcher_indices */ MatcherIndicesIndex(216),
/* const_eval_fn */ ConstEvalFunctionIndex(108),
},
{
@@ -7561,9 +7523,9 @@
/* num_parameters */ 0,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(73),
+ /* templates */ TemplateIndex(99),
/* parameters */ ParameterIndex(/* invalid */),
- /* return_matcher_indices */ MatcherIndicesIndex(282),
+ /* return_matcher_indices */ MatcherIndicesIndex(222),
/* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
@@ -7572,9 +7534,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(73),
- /* parameters */ ParameterIndex(419),
- /* return_matcher_indices */ MatcherIndicesIndex(282),
+ /* templates */ TemplateIndex(99),
+ /* parameters */ ParameterIndex(392),
+ /* return_matcher_indices */ MatcherIndicesIndex(222),
/* const_eval_fn */ ConstEvalFunctionIndex(82),
},
{
@@ -7583,9 +7545,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
- /* parameters */ ParameterIndex(419),
- /* return_matcher_indices */ MatcherIndicesIndex(282),
+ /* templates */ TemplateIndex(30),
+ /* parameters */ ParameterIndex(392),
+ /* return_matcher_indices */ MatcherIndicesIndex(222),
/* const_eval_fn */ ConstEvalFunctionIndex(82),
},
{
@@ -7594,9 +7556,9 @@
/* num_parameters */ 12,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(1),
- /* return_matcher_indices */ MatcherIndicesIndex(282),
+ /* return_matcher_indices */ MatcherIndicesIndex(222),
/* const_eval_fn */ ConstEvalFunctionIndex(112),
},
{
@@ -7605,9 +7567,9 @@
/* num_parameters */ 12,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(1),
- /* return_matcher_indices */ MatcherIndicesIndex(282),
+ /* return_matcher_indices */ MatcherIndicesIndex(222),
/* const_eval_fn */ ConstEvalFunctionIndex(112),
},
{
@@ -7616,9 +7578,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(213),
- /* return_matcher_indices */ MatcherIndicesIndex(282),
+ /* return_matcher_indices */ MatcherIndicesIndex(222),
/* const_eval_fn */ ConstEvalFunctionIndex(113),
},
{
@@ -7627,9 +7589,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(213),
- /* return_matcher_indices */ MatcherIndicesIndex(282),
+ /* return_matcher_indices */ MatcherIndicesIndex(222),
/* const_eval_fn */ ConstEvalFunctionIndex(113),
},
{
@@ -7638,9 +7600,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(58),
- /* parameters */ ParameterIndex(420),
- /* return_matcher_indices */ MatcherIndicesIndex(282),
+ /* templates */ TemplateIndex(84),
+ /* parameters */ ParameterIndex(393),
+ /* return_matcher_indices */ MatcherIndicesIndex(222),
/* const_eval_fn */ ConstEvalFunctionIndex(108),
},
{
@@ -7649,9 +7611,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(56),
- /* parameters */ ParameterIndex(421),
- /* return_matcher_indices */ MatcherIndicesIndex(282),
+ /* templates */ TemplateIndex(82),
+ /* parameters */ ParameterIndex(394),
+ /* return_matcher_indices */ MatcherIndicesIndex(222),
/* const_eval_fn */ ConstEvalFunctionIndex(108),
},
{
@@ -7660,9 +7622,9 @@
/* num_parameters */ 0,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(73),
+ /* templates */ TemplateIndex(99),
/* parameters */ ParameterIndex(/* invalid */),
- /* return_matcher_indices */ MatcherIndicesIndex(288),
+ /* return_matcher_indices */ MatcherIndicesIndex(228),
/* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
@@ -7671,9 +7633,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(73),
- /* parameters */ ParameterIndex(422),
- /* return_matcher_indices */ MatcherIndicesIndex(288),
+ /* templates */ TemplateIndex(99),
+ /* parameters */ ParameterIndex(395),
+ /* return_matcher_indices */ MatcherIndicesIndex(228),
/* const_eval_fn */ ConstEvalFunctionIndex(82),
},
{
@@ -7682,9 +7644,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
- /* parameters */ ParameterIndex(422),
- /* return_matcher_indices */ MatcherIndicesIndex(288),
+ /* templates */ TemplateIndex(30),
+ /* parameters */ ParameterIndex(395),
+ /* return_matcher_indices */ MatcherIndicesIndex(228),
/* const_eval_fn */ ConstEvalFunctionIndex(82),
},
{
@@ -7693,9 +7655,9 @@
/* num_parameters */ 16,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(1),
- /* return_matcher_indices */ MatcherIndicesIndex(288),
+ /* return_matcher_indices */ MatcherIndicesIndex(228),
/* const_eval_fn */ ConstEvalFunctionIndex(112),
},
{
@@ -7704,9 +7666,9 @@
/* num_parameters */ 16,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(1),
- /* return_matcher_indices */ MatcherIndicesIndex(288),
+ /* return_matcher_indices */ MatcherIndicesIndex(228),
/* const_eval_fn */ ConstEvalFunctionIndex(112),
},
{
@@ -7715,9 +7677,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(217),
- /* return_matcher_indices */ MatcherIndicesIndex(288),
+ /* return_matcher_indices */ MatcherIndicesIndex(228),
/* const_eval_fn */ ConstEvalFunctionIndex(113),
},
{
@@ -7726,9 +7688,9 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(217),
- /* return_matcher_indices */ MatcherIndicesIndex(288),
+ /* return_matcher_indices */ MatcherIndicesIndex(228),
/* const_eval_fn */ ConstEvalFunctionIndex(113),
},
{
@@ -7737,9 +7699,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(58),
- /* parameters */ ParameterIndex(423),
- /* return_matcher_indices */ MatcherIndicesIndex(288),
+ /* templates */ TemplateIndex(84),
+ /* parameters */ ParameterIndex(396),
+ /* return_matcher_indices */ MatcherIndicesIndex(228),
/* const_eval_fn */ ConstEvalFunctionIndex(108),
},
{
@@ -7748,9 +7710,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(56),
- /* parameters */ ParameterIndex(424),
- /* return_matcher_indices */ MatcherIndicesIndex(288),
+ /* templates */ TemplateIndex(82),
+ /* parameters */ ParameterIndex(397),
+ /* return_matcher_indices */ MatcherIndicesIndex(228),
/* const_eval_fn */ ConstEvalFunctionIndex(108),
},
{
@@ -7761,7 +7723,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(104),
- /* return_matcher_indices */ MatcherIndicesIndex(184),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7772,7 +7734,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(104),
- /* return_matcher_indices */ MatcherIndicesIndex(184),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7781,9 +7743,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(2),
+ /* templates */ TemplateIndex(4),
/* parameters */ ParameterIndex(38),
- /* return_matcher_indices */ MatcherIndicesIndex(184),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7792,9 +7754,9 @@
/* num_parameters */ 6,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(2),
+ /* templates */ TemplateIndex(4),
/* parameters */ ParameterIndex(38),
- /* return_matcher_indices */ MatcherIndicesIndex(184),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7805,7 +7767,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(109),
- /* return_matcher_indices */ MatcherIndicesIndex(184),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7816,7 +7778,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(109),
- /* return_matcher_indices */ MatcherIndicesIndex(184),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7827,7 +7789,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(173),
- /* return_matcher_indices */ MatcherIndicesIndex(184),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7836,9 +7798,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(2),
+ /* templates */ TemplateIndex(4),
/* parameters */ ParameterIndex(114),
- /* return_matcher_indices */ MatcherIndicesIndex(184),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7849,7 +7811,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(44),
- /* return_matcher_indices */ MatcherIndicesIndex(184),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7860,7 +7822,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(44),
- /* return_matcher_indices */ MatcherIndicesIndex(184),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7869,9 +7831,9 @@
/* num_parameters */ 6,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(2),
+ /* templates */ TemplateIndex(4),
/* parameters */ ParameterIndex(19),
- /* return_matcher_indices */ MatcherIndicesIndex(184),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7880,9 +7842,9 @@
/* num_parameters */ 7,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(2),
+ /* templates */ TemplateIndex(4),
/* parameters */ ParameterIndex(19),
- /* return_matcher_indices */ MatcherIndicesIndex(184),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7893,7 +7855,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(50),
- /* return_matcher_indices */ MatcherIndicesIndex(184),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7904,7 +7866,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(50),
- /* return_matcher_indices */ MatcherIndicesIndex(184),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7915,7 +7877,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(119),
- /* return_matcher_indices */ MatcherIndicesIndex(184),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7924,9 +7886,9 @@
/* num_parameters */ 6,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(2),
+ /* templates */ TemplateIndex(4),
/* parameters */ ParameterIndex(56),
- /* return_matcher_indices */ MatcherIndicesIndex(184),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7937,7 +7899,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(89),
- /* return_matcher_indices */ MatcherIndicesIndex(184),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7948,7 +7910,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(89),
- /* return_matcher_indices */ MatcherIndicesIndex(184),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7957,9 +7919,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(2),
+ /* templates */ TemplateIndex(4),
/* parameters */ ParameterIndex(32),
- /* return_matcher_indices */ MatcherIndicesIndex(184),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7968,9 +7930,9 @@
/* num_parameters */ 6,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(2),
+ /* templates */ TemplateIndex(4),
/* parameters */ ParameterIndex(32),
- /* return_matcher_indices */ MatcherIndicesIndex(184),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7981,7 +7943,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(161),
- /* return_matcher_indices */ MatcherIndicesIndex(184),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -7990,9 +7952,9 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(2),
+ /* templates */ TemplateIndex(4),
/* parameters */ ParameterIndex(94),
- /* return_matcher_indices */ MatcherIndicesIndex(184),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -8023,7 +7985,7 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(2),
+ /* templates */ TemplateIndex(4),
/* parameters */ ParameterIndex(32),
/* return_matcher_indices */ MatcherIndicesIndex(68),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -8034,7 +7996,7 @@
/* num_parameters */ 6,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(2),
+ /* templates */ TemplateIndex(4),
/* parameters */ ParameterIndex(32),
/* return_matcher_indices */ MatcherIndicesIndex(68),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -8056,7 +8018,7 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(2),
+ /* templates */ TemplateIndex(4),
/* parameters */ ParameterIndex(94),
/* return_matcher_indices */ MatcherIndicesIndex(68),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -8089,7 +8051,7 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(2),
+ /* templates */ TemplateIndex(4),
/* parameters */ ParameterIndex(32),
/* return_matcher_indices */ MatcherIndicesIndex(68),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -8100,7 +8062,7 @@
/* num_parameters */ 6,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(2),
+ /* templates */ TemplateIndex(4),
/* parameters */ ParameterIndex(32),
/* return_matcher_indices */ MatcherIndicesIndex(68),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -8122,7 +8084,7 @@
/* num_parameters */ 5,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(2),
+ /* templates */ TemplateIndex(4),
/* parameters */ ParameterIndex(94),
/* return_matcher_indices */ MatcherIndicesIndex(68),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -8177,8 +8139,8 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(52),
- /* parameters */ ParameterIndex(393),
+ /* templates */ TemplateIndex(78),
+ /* parameters */ ParameterIndex(366),
/* return_matcher_indices */ MatcherIndicesIndex(9),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -8188,7 +8150,7 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(29),
+ /* templates */ TemplateIndex(55),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(86),
@@ -8199,7 +8161,7 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(29),
+ /* templates */ TemplateIndex(55),
/* parameters */ ParameterIndex(221),
/* return_matcher_indices */ MatcherIndicesIndex(48),
/* const_eval_fn */ ConstEvalFunctionIndex(86),
@@ -8210,8 +8172,8 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(29),
- /* parameters */ ParameterIndex(354),
+ /* templates */ TemplateIndex(55),
+ /* parameters */ ParameterIndex(327),
/* return_matcher_indices */ MatcherIndicesIndex(48),
/* const_eval_fn */ ConstEvalFunctionIndex(86),
},
@@ -8221,8 +8183,8 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(29),
- /* parameters */ ParameterIndex(355),
+ /* templates */ TemplateIndex(55),
+ /* parameters */ ParameterIndex(328),
/* return_matcher_indices */ MatcherIndicesIndex(48),
/* const_eval_fn */ ConstEvalFunctionIndex(86),
},
@@ -8232,8 +8194,8 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(16),
- /* parameters */ ParameterIndex(358),
+ /* templates */ TemplateIndex(42),
+ /* parameters */ ParameterIndex(331),
/* return_matcher_indices */ MatcherIndicesIndex(26),
/* const_eval_fn */ ConstEvalFunctionIndex(86),
},
@@ -8243,7 +8205,7 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(29),
+ /* templates */ TemplateIndex(55),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(87),
@@ -8254,7 +8216,7 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(29),
+ /* templates */ TemplateIndex(55),
/* parameters */ ParameterIndex(221),
/* return_matcher_indices */ MatcherIndicesIndex(48),
/* const_eval_fn */ ConstEvalFunctionIndex(87),
@@ -8265,8 +8227,8 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(29),
- /* parameters */ ParameterIndex(354),
+ /* templates */ TemplateIndex(55),
+ /* parameters */ ParameterIndex(327),
/* return_matcher_indices */ MatcherIndicesIndex(48),
/* const_eval_fn */ ConstEvalFunctionIndex(87),
},
@@ -8276,8 +8238,8 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(29),
- /* parameters */ ParameterIndex(355),
+ /* templates */ TemplateIndex(55),
+ /* parameters */ ParameterIndex(328),
/* return_matcher_indices */ MatcherIndicesIndex(48),
/* const_eval_fn */ ConstEvalFunctionIndex(87),
},
@@ -8287,8 +8249,8 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(16),
- /* parameters */ ParameterIndex(358),
+ /* templates */ TemplateIndex(42),
+ /* parameters */ ParameterIndex(331),
/* return_matcher_indices */ MatcherIndicesIndex(26),
/* const_eval_fn */ ConstEvalFunctionIndex(87),
},
@@ -8298,7 +8260,7 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(29),
+ /* templates */ TemplateIndex(55),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(92),
@@ -8309,7 +8271,7 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(29),
+ /* templates */ TemplateIndex(55),
/* parameters */ ParameterIndex(221),
/* return_matcher_indices */ MatcherIndicesIndex(48),
/* const_eval_fn */ ConstEvalFunctionIndex(92),
@@ -8320,8 +8282,8 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(29),
- /* parameters */ ParameterIndex(354),
+ /* templates */ TemplateIndex(55),
+ /* parameters */ ParameterIndex(327),
/* return_matcher_indices */ MatcherIndicesIndex(48),
/* const_eval_fn */ ConstEvalFunctionIndex(92),
},
@@ -8331,8 +8293,8 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(29),
- /* parameters */ ParameterIndex(355),
+ /* templates */ TemplateIndex(55),
+ /* parameters */ ParameterIndex(328),
/* return_matcher_indices */ MatcherIndicesIndex(48),
/* const_eval_fn */ ConstEvalFunctionIndex(92),
},
@@ -8342,7 +8304,7 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(29),
+ /* templates */ TemplateIndex(55),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(93),
@@ -8353,7 +8315,7 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(29),
+ /* templates */ TemplateIndex(55),
/* parameters */ ParameterIndex(221),
/* return_matcher_indices */ MatcherIndicesIndex(48),
/* const_eval_fn */ ConstEvalFunctionIndex(93),
@@ -8364,8 +8326,8 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(29),
- /* parameters */ ParameterIndex(354),
+ /* templates */ TemplateIndex(55),
+ /* parameters */ ParameterIndex(327),
/* return_matcher_indices */ MatcherIndicesIndex(48),
/* const_eval_fn */ ConstEvalFunctionIndex(93),
},
@@ -8375,8 +8337,8 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(29),
- /* parameters */ ParameterIndex(355),
+ /* templates */ TemplateIndex(55),
+ /* parameters */ ParameterIndex(328),
/* return_matcher_indices */ MatcherIndicesIndex(48),
/* const_eval_fn */ ConstEvalFunctionIndex(93),
},
@@ -8397,7 +8359,7 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(9),
+ /* templates */ TemplateIndex(35),
/* parameters */ ParameterIndex(235),
/* return_matcher_indices */ MatcherIndicesIndex(45),
/* const_eval_fn */ ConstEvalFunctionIndex(95),
@@ -8408,7 +8370,7 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(54),
+ /* templates */ TemplateIndex(80),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(95),
@@ -8419,7 +8381,7 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(54),
+ /* templates */ TemplateIndex(80),
/* parameters */ ParameterIndex(221),
/* return_matcher_indices */ MatcherIndicesIndex(48),
/* const_eval_fn */ ConstEvalFunctionIndex(95),
@@ -8441,7 +8403,7 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(9),
+ /* templates */ TemplateIndex(35),
/* parameters */ ParameterIndex(235),
/* return_matcher_indices */ MatcherIndicesIndex(45),
/* const_eval_fn */ ConstEvalFunctionIndex(96),
@@ -8452,7 +8414,7 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(54),
+ /* templates */ TemplateIndex(80),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(96),
@@ -8463,7 +8425,7 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(54),
+ /* templates */ TemplateIndex(80),
/* parameters */ ParameterIndex(221),
/* return_matcher_indices */ MatcherIndicesIndex(48),
/* const_eval_fn */ ConstEvalFunctionIndex(96),
@@ -8474,7 +8436,7 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(43),
@@ -8485,7 +8447,7 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(11),
+ /* templates */ TemplateIndex(37),
/* parameters */ ParameterIndex(226),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(43),
@@ -8496,7 +8458,7 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(11),
+ /* templates */ TemplateIndex(37),
/* parameters */ ParameterIndex(227),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(43),
@@ -8507,7 +8469,7 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(39),
+ /* templates */ TemplateIndex(65),
/* parameters */ ParameterIndex(230),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(63),
@@ -8518,7 +8480,7 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(39),
+ /* templates */ TemplateIndex(65),
/* parameters */ ParameterIndex(222),
/* return_matcher_indices */ MatcherIndicesIndex(48),
/* const_eval_fn */ ConstEvalFunctionIndex(63),
@@ -8529,7 +8491,7 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(38),
+ /* templates */ TemplateIndex(64),
/* parameters */ ParameterIndex(233),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(64),
@@ -8542,7 +8504,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(/* invalid */),
- /* return_matcher_indices */ MatcherIndicesIndex(187),
+ /* return_matcher_indices */ MatcherIndicesIndex(127),
/* const_eval_fn */ ConstEvalFunctionIndex(107),
},
{
@@ -8552,8 +8514,8 @@
/* num_explicit_templates */ 0,
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
- /* parameters */ ParameterIndex(395),
- /* return_matcher_indices */ MatcherIndicesIndex(187),
+ /* parameters */ ParameterIndex(368),
+ /* return_matcher_indices */ MatcherIndicesIndex(127),
/* const_eval_fn */ ConstEvalFunctionIndex(82),
},
{
@@ -8562,9 +8524,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(67),
+ /* templates */ TemplateIndex(93),
/* parameters */ ParameterIndex(1),
- /* return_matcher_indices */ MatcherIndicesIndex(187),
+ /* return_matcher_indices */ MatcherIndicesIndex(127),
/* const_eval_fn */ ConstEvalFunctionIndex(108),
},
{
@@ -8595,7 +8557,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(68),
+ /* templates */ TemplateIndex(94),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(9),
/* const_eval_fn */ ConstEvalFunctionIndex(108),
@@ -8618,7 +8580,7 @@
/* num_explicit_templates */ 0,
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
- /* parameters */ ParameterIndex(383),
+ /* parameters */ ParameterIndex(356),
/* return_matcher_indices */ MatcherIndicesIndex(68),
/* const_eval_fn */ ConstEvalFunctionIndex(82),
},
@@ -8628,7 +8590,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(69),
+ /* templates */ TemplateIndex(95),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(68),
/* const_eval_fn */ ConstEvalFunctionIndex(108),
@@ -8651,7 +8613,7 @@
/* num_explicit_templates */ 0,
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
- /* parameters */ ParameterIndex(374),
+ /* parameters */ ParameterIndex(347),
/* return_matcher_indices */ MatcherIndicesIndex(59),
/* const_eval_fn */ ConstEvalFunctionIndex(82),
},
@@ -8661,7 +8623,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(70),
+ /* templates */ TemplateIndex(96),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(59),
/* const_eval_fn */ ConstEvalFunctionIndex(108),
@@ -8694,7 +8656,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(71),
+ /* templates */ TemplateIndex(97),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(47),
/* const_eval_fn */ ConstEvalFunctionIndex(108),
@@ -8705,7 +8667,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(29),
+ /* templates */ TemplateIndex(55),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(0),
@@ -8716,7 +8678,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(28),
+ /* templates */ TemplateIndex(54),
/* parameters */ ParameterIndex(149),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(0),
@@ -8727,7 +8689,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(1),
@@ -8738,7 +8700,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(11),
+ /* templates */ TemplateIndex(37),
/* parameters */ ParameterIndex(149),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(1),
@@ -8749,7 +8711,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(2),
@@ -8760,7 +8722,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(11),
+ /* templates */ TemplateIndex(37),
/* parameters */ ParameterIndex(149),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(2),
@@ -8782,7 +8744,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(9),
+ /* templates */ TemplateIndex(35),
/* parameters */ ParameterIndex(235),
/* return_matcher_indices */ MatcherIndicesIndex(47),
/* const_eval_fn */ ConstEvalFunctionIndex(3),
@@ -8804,7 +8766,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(9),
+ /* templates */ TemplateIndex(35),
/* parameters */ ParameterIndex(235),
/* return_matcher_indices */ MatcherIndicesIndex(47),
/* const_eval_fn */ ConstEvalFunctionIndex(4),
@@ -8815,7 +8777,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(5),
@@ -8826,7 +8788,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(11),
+ /* templates */ TemplateIndex(37),
/* parameters */ ParameterIndex(149),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(5),
@@ -8837,7 +8799,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(6),
@@ -8848,7 +8810,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(11),
+ /* templates */ TemplateIndex(37),
/* parameters */ ParameterIndex(149),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(6),
@@ -8859,7 +8821,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(7),
@@ -8870,7 +8832,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(11),
+ /* templates */ TemplateIndex(37),
/* parameters */ ParameterIndex(149),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(7),
@@ -8881,7 +8843,7 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(8),
@@ -8892,7 +8854,7 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(16),
+ /* templates */ TemplateIndex(42),
/* parameters */ ParameterIndex(221),
/* return_matcher_indices */ MatcherIndicesIndex(48),
/* const_eval_fn */ ConstEvalFunctionIndex(8),
@@ -8903,7 +8865,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(9),
@@ -8914,7 +8876,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(11),
+ /* templates */ TemplateIndex(37),
/* parameters */ ParameterIndex(149),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(9),
@@ -8925,7 +8887,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(11),
@@ -8936,7 +8898,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(11),
+ /* templates */ TemplateIndex(37),
/* parameters */ ParameterIndex(149),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(11),
@@ -8947,7 +8909,7 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(29),
+ /* templates */ TemplateIndex(55),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(12),
@@ -8958,7 +8920,7 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(29),
+ /* templates */ TemplateIndex(55),
/* parameters */ ParameterIndex(221),
/* return_matcher_indices */ MatcherIndicesIndex(48),
/* const_eval_fn */ ConstEvalFunctionIndex(12),
@@ -8969,7 +8931,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(13),
@@ -8980,7 +8942,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(11),
+ /* templates */ TemplateIndex(37),
/* parameters */ ParameterIndex(149),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(13),
@@ -8991,7 +8953,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(14),
@@ -9002,7 +8964,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(11),
+ /* templates */ TemplateIndex(37),
/* parameters */ ParameterIndex(149),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(14),
@@ -9013,7 +8975,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(31),
+ /* templates */ TemplateIndex(57),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(15),
@@ -9024,7 +8986,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(30),
+ /* templates */ TemplateIndex(56),
/* parameters */ ParameterIndex(149),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(15),
@@ -9035,7 +8997,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(31),
+ /* templates */ TemplateIndex(57),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(16),
@@ -9046,7 +9008,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(30),
+ /* templates */ TemplateIndex(56),
/* parameters */ ParameterIndex(149),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(16),
@@ -9057,7 +9019,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(31),
+ /* templates */ TemplateIndex(57),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(17),
@@ -9068,7 +9030,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(30),
+ /* templates */ TemplateIndex(56),
/* parameters */ ParameterIndex(149),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(17),
@@ -9079,7 +9041,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(19),
@@ -9090,7 +9052,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(11),
+ /* templates */ TemplateIndex(37),
/* parameters */ ParameterIndex(149),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(19),
@@ -9101,7 +9063,7 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(21),
@@ -9112,7 +9074,7 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(11),
+ /* templates */ TemplateIndex(37),
/* parameters */ ParameterIndex(149),
/* return_matcher_indices */ MatcherIndicesIndex(4),
/* const_eval_fn */ ConstEvalFunctionIndex(21),
@@ -9124,7 +9086,7 @@
/* num_explicit_templates */ 0,
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
- /* parameters */ ParameterIndex(383),
+ /* parameters */ ParameterIndex(356),
/* return_matcher_indices */ MatcherIndicesIndex(68),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -9134,8 +9096,8 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(9),
- /* parameters */ ParameterIndex(384),
+ /* templates */ TemplateIndex(35),
+ /* parameters */ ParameterIndex(357),
/* return_matcher_indices */ MatcherIndicesIndex(66),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -9145,7 +9107,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(25),
@@ -9156,7 +9118,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(11),
+ /* templates */ TemplateIndex(37),
/* parameters */ ParameterIndex(149),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(25),
@@ -9167,7 +9129,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(26),
@@ -9178,7 +9140,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(11),
+ /* templates */ TemplateIndex(37),
/* parameters */ ParameterIndex(149),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(26),
@@ -9189,7 +9151,7 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(31),
+ /* templates */ TemplateIndex(57),
/* parameters */ ParameterIndex(16),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(27),
@@ -9200,7 +9162,7 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(30),
+ /* templates */ TemplateIndex(56),
/* parameters */ ParameterIndex(150),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(27),
@@ -9211,7 +9173,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(31),
+ /* templates */ TemplateIndex(57),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(29),
@@ -9222,7 +9184,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(30),
+ /* templates */ TemplateIndex(56),
/* parameters */ ParameterIndex(149),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(29),
@@ -9233,7 +9195,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(31),
+ /* templates */ TemplateIndex(57),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(30),
@@ -9244,7 +9206,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(30),
+ /* templates */ TemplateIndex(56),
/* parameters */ ParameterIndex(149),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(30),
@@ -9255,7 +9217,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(31),
@@ -9266,7 +9228,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(11),
+ /* templates */ TemplateIndex(37),
/* parameters */ ParameterIndex(149),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(31),
@@ -9277,7 +9239,7 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(32),
@@ -9288,7 +9250,7 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(11),
+ /* templates */ TemplateIndex(37),
/* parameters */ ParameterIndex(226),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(32),
@@ -9299,7 +9261,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(33),
@@ -9310,7 +9272,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(11),
+ /* templates */ TemplateIndex(37),
/* parameters */ ParameterIndex(149),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(33),
@@ -9321,9 +9283,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(1),
- /* return_matcher_indices */ MatcherIndicesIndex(178),
+ /* return_matcher_indices */ MatcherIndicesIndex(118),
/* const_eval_fn */ ConstEvalFunctionIndex(34),
},
{
@@ -9332,7 +9294,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(11),
+ /* templates */ TemplateIndex(37),
/* parameters */ ParameterIndex(149),
/* return_matcher_indices */ MatcherIndicesIndex(69),
/* const_eval_fn */ ConstEvalFunctionIndex(34),
@@ -9343,7 +9305,7 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(31),
+ /* templates */ TemplateIndex(57),
/* parameters */ ParameterIndex(15),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(35),
@@ -9354,7 +9316,7 @@
/* num_parameters */ 4,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(30),
+ /* templates */ TemplateIndex(56),
/* parameters */ ParameterIndex(149),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(35),
@@ -9365,7 +9327,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(36),
@@ -9376,7 +9338,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(11),
+ /* templates */ TemplateIndex(37),
/* parameters */ ParameterIndex(149),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(36),
@@ -9387,8 +9349,8 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(12),
- /* parameters */ ParameterIndex(306),
+ /* templates */ TemplateIndex(38),
+ /* parameters */ ParameterIndex(297),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(37),
},
@@ -9398,8 +9360,8 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(11),
- /* parameters */ ParameterIndex(308),
+ /* templates */ TemplateIndex(37),
+ /* parameters */ ParameterIndex(299),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(37),
},
@@ -9409,7 +9371,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(38),
@@ -9420,7 +9382,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(11),
+ /* templates */ TemplateIndex(37),
/* parameters */ ParameterIndex(149),
/* return_matcher_indices */ MatcherIndicesIndex(4),
/* const_eval_fn */ ConstEvalFunctionIndex(38),
@@ -9431,7 +9393,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(39),
@@ -9442,7 +9404,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(11),
+ /* templates */ TemplateIndex(37),
/* parameters */ ParameterIndex(149),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(39),
@@ -9453,7 +9415,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(40),
@@ -9464,7 +9426,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(11),
+ /* templates */ TemplateIndex(37),
/* parameters */ ParameterIndex(149),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(40),
@@ -9475,7 +9437,7 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(29),
+ /* templates */ TemplateIndex(55),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(41),
@@ -9486,7 +9448,7 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(28),
+ /* templates */ TemplateIndex(54),
/* parameters */ ParameterIndex(149),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(41),
@@ -9497,7 +9459,7 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(29),
+ /* templates */ TemplateIndex(55),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(42),
@@ -9508,7 +9470,7 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(28),
+ /* templates */ TemplateIndex(54),
/* parameters */ ParameterIndex(149),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(42),
@@ -9519,9 +9481,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(1),
- /* return_matcher_indices */ MatcherIndicesIndex(180),
+ /* return_matcher_indices */ MatcherIndicesIndex(120),
/* const_eval_fn */ ConstEvalFunctionIndex(44),
},
{
@@ -9530,7 +9492,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(11),
+ /* templates */ TemplateIndex(37),
/* parameters */ ParameterIndex(149),
/* return_matcher_indices */ MatcherIndicesIndex(75),
/* const_eval_fn */ ConstEvalFunctionIndex(44),
@@ -9541,7 +9503,7 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(55),
@@ -9552,7 +9514,7 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(11),
+ /* templates */ TemplateIndex(37),
/* parameters */ ParameterIndex(149),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(55),
@@ -9564,7 +9526,7 @@
/* num_explicit_templates */ 0,
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
- /* parameters */ ParameterIndex(383),
+ /* parameters */ ParameterIndex(356),
/* return_matcher_indices */ MatcherIndicesIndex(68),
/* const_eval_fn */ ConstEvalFunctionIndex(56),
},
@@ -9574,8 +9536,8 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(9),
- /* parameters */ ParameterIndex(384),
+ /* templates */ TemplateIndex(35),
+ /* parameters */ ParameterIndex(357),
/* return_matcher_indices */ MatcherIndicesIndex(66),
/* const_eval_fn */ ConstEvalFunctionIndex(56),
},
@@ -9585,7 +9547,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(57),
@@ -9596,7 +9558,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(11),
+ /* templates */ TemplateIndex(37),
/* parameters */ ParameterIndex(149),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(57),
@@ -9607,7 +9569,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(31),
+ /* templates */ TemplateIndex(57),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(60),
@@ -9618,7 +9580,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(30),
+ /* templates */ TemplateIndex(56),
/* parameters */ ParameterIndex(149),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(60),
@@ -9629,7 +9591,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(61),
@@ -9640,7 +9602,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(11),
+ /* templates */ TemplateIndex(37),
/* parameters */ ParameterIndex(149),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(61),
@@ -9651,7 +9613,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(62),
@@ -9662,7 +9624,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(16),
+ /* templates */ TemplateIndex(42),
/* parameters */ ParameterIndex(221),
/* return_matcher_indices */ MatcherIndicesIndex(48),
/* const_eval_fn */ ConstEvalFunctionIndex(62),
@@ -9673,7 +9635,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(41),
+ /* templates */ TemplateIndex(67),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(65),
@@ -9684,7 +9646,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(40),
+ /* templates */ TemplateIndex(66),
/* parameters */ ParameterIndex(149),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(65),
@@ -9695,7 +9657,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(66),
@@ -9706,7 +9668,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(11),
+ /* templates */ TemplateIndex(37),
/* parameters */ ParameterIndex(149),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(66),
@@ -9717,7 +9679,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(67),
@@ -9728,7 +9690,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(11),
+ /* templates */ TemplateIndex(37),
/* parameters */ ParameterIndex(149),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(67),
@@ -9739,7 +9701,7 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(68),
@@ -9750,7 +9712,7 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(11),
+ /* templates */ TemplateIndex(37),
/* parameters */ ParameterIndex(226),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(68),
@@ -9761,7 +9723,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(69),
@@ -9772,7 +9734,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(11),
+ /* templates */ TemplateIndex(37),
/* parameters */ ParameterIndex(149),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(69),
@@ -9783,7 +9745,7 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(70),
@@ -9794,7 +9756,7 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(11),
+ /* templates */ TemplateIndex(37),
/* parameters */ ParameterIndex(149),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(70),
@@ -9805,7 +9767,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(71),
@@ -9816,7 +9778,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(11),
+ /* templates */ TemplateIndex(37),
/* parameters */ ParameterIndex(149),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(71),
@@ -9827,7 +9789,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(72),
@@ -9838,7 +9800,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(11),
+ /* templates */ TemplateIndex(37),
/* parameters */ ParameterIndex(149),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(72),
@@ -9849,7 +9811,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(74),
@@ -9860,7 +9822,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(11),
+ /* templates */ TemplateIndex(37),
/* parameters */ ParameterIndex(149),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(74),
@@ -9895,7 +9857,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(44),
- /* return_matcher_indices */ MatcherIndicesIndex(184),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -9906,7 +9868,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(240),
- /* return_matcher_indices */ MatcherIndicesIndex(184),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -9915,8 +9877,8 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(43),
- /* parameters */ ParameterIndex(350),
+ /* templates */ TemplateIndex(69),
+ /* parameters */ ParameterIndex(323),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -9926,8 +9888,8 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(42),
- /* parameters */ ParameterIndex(352),
+ /* templates */ TemplateIndex(68),
+ /* parameters */ ParameterIndex(325),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -9948,7 +9910,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(9),
+ /* templates */ TemplateIndex(35),
/* parameters */ ParameterIndex(235),
/* return_matcher_indices */ MatcherIndicesIndex(45),
/* const_eval_fn */ ConstEvalFunctionIndex(83),
@@ -9959,7 +9921,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(54),
+ /* templates */ TemplateIndex(80),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(84),
@@ -9970,7 +9932,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(54),
+ /* templates */ TemplateIndex(80),
/* parameters */ ParameterIndex(221),
/* return_matcher_indices */ MatcherIndicesIndex(48),
/* const_eval_fn */ ConstEvalFunctionIndex(84),
@@ -9981,7 +9943,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(41),
+ /* templates */ TemplateIndex(67),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(85),
@@ -9992,7 +9954,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(41),
+ /* templates */ TemplateIndex(67),
/* parameters */ ParameterIndex(221),
/* return_matcher_indices */ MatcherIndicesIndex(48),
/* const_eval_fn */ ConstEvalFunctionIndex(85),
@@ -10003,7 +9965,7 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(54),
+ /* templates */ TemplateIndex(80),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(94),
@@ -10014,7 +9976,7 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(54),
+ /* templates */ TemplateIndex(80),
/* parameters */ ParameterIndex(221),
/* return_matcher_indices */ MatcherIndicesIndex(48),
/* const_eval_fn */ ConstEvalFunctionIndex(94),
@@ -10025,7 +9987,7 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(39),
+ /* templates */ TemplateIndex(65),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(47),
/* const_eval_fn */ ConstEvalFunctionIndex(99),
@@ -10036,9 +9998,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(39),
+ /* templates */ TemplateIndex(65),
/* parameters */ ParameterIndex(221),
- /* return_matcher_indices */ MatcherIndicesIndex(165),
+ /* return_matcher_indices */ MatcherIndicesIndex(105),
/* const_eval_fn */ ConstEvalFunctionIndex(99),
},
{
@@ -10047,7 +10009,7 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(39),
+ /* templates */ TemplateIndex(65),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(47),
/* const_eval_fn */ ConstEvalFunctionIndex(100),
@@ -10058,9 +10020,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(39),
+ /* templates */ TemplateIndex(65),
/* parameters */ ParameterIndex(221),
- /* return_matcher_indices */ MatcherIndicesIndex(165),
+ /* return_matcher_indices */ MatcherIndicesIndex(105),
/* const_eval_fn */ ConstEvalFunctionIndex(100),
},
{
@@ -10069,7 +10031,7 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(29),
+ /* templates */ TemplateIndex(55),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(47),
/* const_eval_fn */ ConstEvalFunctionIndex(101),
@@ -10080,9 +10042,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(29),
+ /* templates */ TemplateIndex(55),
/* parameters */ ParameterIndex(221),
- /* return_matcher_indices */ MatcherIndicesIndex(165),
+ /* return_matcher_indices */ MatcherIndicesIndex(105),
/* const_eval_fn */ ConstEvalFunctionIndex(101),
},
{
@@ -10091,7 +10053,7 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(29),
+ /* templates */ TemplateIndex(55),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(47),
/* const_eval_fn */ ConstEvalFunctionIndex(102),
@@ -10102,9 +10064,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(29),
+ /* templates */ TemplateIndex(55),
/* parameters */ ParameterIndex(221),
- /* return_matcher_indices */ MatcherIndicesIndex(165),
+ /* return_matcher_indices */ MatcherIndicesIndex(105),
/* const_eval_fn */ ConstEvalFunctionIndex(102),
},
{
@@ -10113,7 +10075,7 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(29),
+ /* templates */ TemplateIndex(55),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(47),
/* const_eval_fn */ ConstEvalFunctionIndex(103),
@@ -10124,9 +10086,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(29),
+ /* templates */ TemplateIndex(55),
/* parameters */ ParameterIndex(221),
- /* return_matcher_indices */ MatcherIndicesIndex(165),
+ /* return_matcher_indices */ MatcherIndicesIndex(105),
/* const_eval_fn */ ConstEvalFunctionIndex(103),
},
{
@@ -10135,7 +10097,7 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(29),
+ /* templates */ TemplateIndex(55),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(47),
/* const_eval_fn */ ConstEvalFunctionIndex(104),
@@ -10146,9 +10108,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(29),
+ /* templates */ TemplateIndex(55),
/* parameters */ ParameterIndex(221),
- /* return_matcher_indices */ MatcherIndicesIndex(165),
+ /* return_matcher_indices */ MatcherIndicesIndex(105),
/* const_eval_fn */ ConstEvalFunctionIndex(104),
},
{
@@ -10157,7 +10119,7 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(54),
+ /* templates */ TemplateIndex(80),
/* parameters */ ParameterIndex(16),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(105),
@@ -10168,8 +10130,8 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(54),
- /* parameters */ ParameterIndex(356),
+ /* templates */ TemplateIndex(80),
+ /* parameters */ ParameterIndex(329),
/* return_matcher_indices */ MatcherIndicesIndex(48),
/* const_eval_fn */ ConstEvalFunctionIndex(105),
},
@@ -10179,7 +10141,7 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(54),
+ /* templates */ TemplateIndex(80),
/* parameters */ ParameterIndex(16),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(106),
@@ -10190,8 +10152,8 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(54),
- /* parameters */ ParameterIndex(356),
+ /* templates */ TemplateIndex(80),
+ /* parameters */ ParameterIndex(329),
/* return_matcher_indices */ MatcherIndicesIndex(48),
/* const_eval_fn */ ConstEvalFunctionIndex(106),
},
@@ -10201,9 +10163,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 1,
/* num_templates */ 1,
- /* templates */ TemplateIndex(72),
+ /* templates */ TemplateIndex(98),
/* parameters */ ParameterIndex(213),
- /* return_matcher_indices */ MatcherIndicesIndex(294),
+ /* return_matcher_indices */ MatcherIndicesIndex(234),
/* const_eval_fn */ ConstEvalFunctionIndex(108),
},
{
@@ -10212,9 +10174,9 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(72),
+ /* templates */ TemplateIndex(98),
/* parameters */ ParameterIndex(213),
- /* return_matcher_indices */ MatcherIndicesIndex(294),
+ /* return_matcher_indices */ MatcherIndicesIndex(234),
/* const_eval_fn */ ConstEvalFunctionIndex(108),
},
{
@@ -10223,8 +10185,8 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(33),
- /* parameters */ ParameterIndex(373),
+ /* templates */ TemplateIndex(59),
+ /* parameters */ ParameterIndex(346),
/* return_matcher_indices */ MatcherIndicesIndex(9),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -10234,9 +10196,9 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(4),
+ /* templates */ TemplateIndex(30),
/* parameters */ ParameterIndex(213),
- /* return_matcher_indices */ MatcherIndicesIndex(176),
+ /* return_matcher_indices */ MatcherIndicesIndex(116),
/* const_eval_fn */ ConstEvalFunctionIndex(18),
},
{
@@ -10245,8 +10207,8 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(11),
- /* parameters */ ParameterIndex(382),
+ /* templates */ TemplateIndex(37),
+ /* parameters */ ParameterIndex(355),
/* return_matcher_indices */ MatcherIndicesIndex(4),
/* const_eval_fn */ ConstEvalFunctionIndex(20),
},
@@ -10256,7 +10218,7 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(28),
+ /* templates */ TemplateIndex(54),
/* parameters */ ParameterIndex(149),
/* return_matcher_indices */ MatcherIndicesIndex(4),
/* const_eval_fn */ ConstEvalFunctionIndex(22),
@@ -10269,7 +10231,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(17),
- /* return_matcher_indices */ MatcherIndicesIndex(187),
+ /* return_matcher_indices */ MatcherIndicesIndex(127),
/* const_eval_fn */ ConstEvalFunctionIndex(23),
},
{
@@ -10289,7 +10251,7 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(11),
+ /* templates */ TemplateIndex(37),
/* parameters */ ParameterIndex(226),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(28),
@@ -10300,7 +10262,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(11),
+ /* templates */ TemplateIndex(37),
/* parameters */ ParameterIndex(149),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(45),
@@ -10312,7 +10274,7 @@
/* num_explicit_templates */ 0,
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
- /* parameters */ ParameterIndex(385),
+ /* parameters */ ParameterIndex(358),
/* return_matcher_indices */ MatcherIndicesIndex(9),
/* const_eval_fn */ ConstEvalFunctionIndex(46),
},
@@ -10323,7 +10285,7 @@
/* num_explicit_templates */ 0,
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
- /* parameters */ ParameterIndex(385),
+ /* parameters */ ParameterIndex(358),
/* return_matcher_indices */ MatcherIndicesIndex(9),
/* const_eval_fn */ ConstEvalFunctionIndex(47),
},
@@ -10334,7 +10296,7 @@
/* num_explicit_templates */ 0,
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
- /* parameters */ ParameterIndex(385),
+ /* parameters */ ParameterIndex(358),
/* return_matcher_indices */ MatcherIndicesIndex(9),
/* const_eval_fn */ ConstEvalFunctionIndex(48),
},
@@ -10345,7 +10307,7 @@
/* num_explicit_templates */ 0,
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
- /* parameters */ ParameterIndex(386),
+ /* parameters */ ParameterIndex(359),
/* return_matcher_indices */ MatcherIndicesIndex(9),
/* const_eval_fn */ ConstEvalFunctionIndex(49),
},
@@ -10356,7 +10318,7 @@
/* num_explicit_templates */ 0,
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
- /* parameters */ ParameterIndex(386),
+ /* parameters */ ParameterIndex(359),
/* return_matcher_indices */ MatcherIndicesIndex(9),
/* const_eval_fn */ ConstEvalFunctionIndex(50),
},
@@ -10367,7 +10329,7 @@
/* num_explicit_templates */ 0,
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
- /* parameters */ ParameterIndex(387),
+ /* parameters */ ParameterIndex(360),
/* return_matcher_indices */ MatcherIndicesIndex(9),
/* const_eval_fn */ ConstEvalFunctionIndex(51),
},
@@ -10378,7 +10340,7 @@
/* num_explicit_templates */ 0,
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
- /* parameters */ ParameterIndex(388),
+ /* parameters */ ParameterIndex(361),
/* return_matcher_indices */ MatcherIndicesIndex(9),
/* const_eval_fn */ ConstEvalFunctionIndex(52),
},
@@ -10389,7 +10351,7 @@
/* num_explicit_templates */ 0,
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
- /* parameters */ ParameterIndex(387),
+ /* parameters */ ParameterIndex(360),
/* return_matcher_indices */ MatcherIndicesIndex(9),
/* const_eval_fn */ ConstEvalFunctionIndex(53),
},
@@ -10400,7 +10362,7 @@
/* num_explicit_templates */ 0,
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
- /* parameters */ ParameterIndex(388),
+ /* parameters */ ParameterIndex(361),
/* return_matcher_indices */ MatcherIndicesIndex(9),
/* const_eval_fn */ ConstEvalFunctionIndex(54),
},
@@ -10410,7 +10372,7 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(11),
+ /* templates */ TemplateIndex(37),
/* parameters */ ParameterIndex(149),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(58),
@@ -10421,7 +10383,7 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(11),
+ /* templates */ TemplateIndex(37),
/* parameters */ ParameterIndex(227),
/* return_matcher_indices */ MatcherIndicesIndex(42),
/* const_eval_fn */ ConstEvalFunctionIndex(59),
@@ -10443,8 +10405,8 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 3,
- /* templates */ TemplateIndex(14),
- /* parameters */ ParameterIndex(389),
+ /* templates */ TemplateIndex(40),
+ /* parameters */ ParameterIndex(362),
/* return_matcher_indices */ MatcherIndicesIndex(14),
/* const_eval_fn */ ConstEvalFunctionIndex(73),
},
@@ -10456,7 +10418,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(17),
- /* return_matcher_indices */ MatcherIndicesIndex(182),
+ /* return_matcher_indices */ MatcherIndicesIndex(122),
/* const_eval_fn */ ConstEvalFunctionIndex(75),
},
{
@@ -10467,7 +10429,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(17),
- /* return_matcher_indices */ MatcherIndicesIndex(182),
+ /* return_matcher_indices */ MatcherIndicesIndex(122),
/* const_eval_fn */ ConstEvalFunctionIndex(76),
},
{
@@ -10478,7 +10440,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(17),
- /* return_matcher_indices */ MatcherIndicesIndex(182),
+ /* return_matcher_indices */ MatcherIndicesIndex(122),
/* const_eval_fn */ ConstEvalFunctionIndex(77),
},
{
@@ -10489,7 +10451,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(17),
- /* return_matcher_indices */ MatcherIndicesIndex(184),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(78),
},
{
@@ -10500,7 +10462,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(17),
- /* return_matcher_indices */ MatcherIndicesIndex(184),
+ /* return_matcher_indices */ MatcherIndicesIndex(124),
/* const_eval_fn */ ConstEvalFunctionIndex(79),
},
{
@@ -10511,7 +10473,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(17),
- /* return_matcher_indices */ MatcherIndicesIndex(186),
+ /* return_matcher_indices */ MatcherIndicesIndex(126),
/* const_eval_fn */ ConstEvalFunctionIndex(80),
},
{
@@ -10522,7 +10484,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(17),
- /* return_matcher_indices */ MatcherIndicesIndex(188),
+ /* return_matcher_indices */ MatcherIndicesIndex(128),
/* const_eval_fn */ ConstEvalFunctionIndex(81),
},
{
@@ -10531,8 +10493,8 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(33),
- /* parameters */ ParameterIndex(390),
+ /* templates */ TemplateIndex(59),
+ /* parameters */ ParameterIndex(363),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
@@ -10542,7 +10504,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(31),
+ /* templates */ TemplateIndex(57),
/* parameters */ ParameterIndex(0),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -10553,7 +10515,7 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(31),
+ /* templates */ TemplateIndex(57),
/* parameters */ ParameterIndex(0),
/* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -10564,7 +10526,7 @@
/* num_parameters */ 2,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(31),
+ /* templates */ TemplateIndex(57),
/* parameters */ ParameterIndex(0),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
@@ -10575,9 +10537,9 @@
/* num_parameters */ 3,
/* num_explicit_templates */ 0,
/* num_templates */ 2,
- /* templates */ TemplateIndex(31),
+ /* templates */ TemplateIndex(57),
/* parameters */ ParameterIndex(0),
- /* return_matcher_indices */ MatcherIndicesIndex(232),
+ /* return_matcher_indices */ MatcherIndicesIndex(172),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -10588,7 +10550,7 @@
/* num_templates */ 0,
/* templates */ TemplateIndex(/* invalid */),
/* parameters */ ParameterIndex(/* invalid */),
- /* return_matcher_indices */ MatcherIndicesIndex(188),
+ /* return_matcher_indices */ MatcherIndicesIndex(128),
/* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
},
{
@@ -10597,7 +10559,7 @@
/* num_parameters */ 1,
/* num_explicit_templates */ 0,
/* num_templates */ 1,
- /* templates */ TemplateIndex(33),
+ /* templates */ TemplateIndex(59),
/* parameters */ ParameterIndex(1),
/* return_matcher_indices */ MatcherIndicesIndex(3),
/* const_eval_fn */ ConstEvalFunctionIndex(82),
@@ -11462,18 +11424,18 @@
},
{
/* [108] */
- /* fn textureStore[C : iu32](texture: texture_storage_1d<f32_texel_format, writable>, coords: C, value: vec4<f32>) */
- /* fn textureStore[C : iu32](texture: texture_storage_2d<f32_texel_format, writable>, coords: vec2<C>, value: vec4<f32>) */
- /* fn textureStore[C : iu32, A : iu32](texture: texture_storage_2d_array<f32_texel_format, writable>, coords: vec2<C>, array_index: A, value: vec4<f32>) */
- /* fn textureStore[C : iu32](texture: texture_storage_3d<f32_texel_format, writable>, coords: vec3<C>, value: vec4<f32>) */
- /* fn textureStore[C : iu32](texture: texture_storage_1d<i32_texel_format, writable>, coords: C, value: vec4<i32>) */
- /* fn textureStore[C : iu32](texture: texture_storage_2d<i32_texel_format, writable>, coords: vec2<C>, value: vec4<i32>) */
- /* fn textureStore[C : iu32, A : iu32](texture: texture_storage_2d_array<i32_texel_format, writable>, coords: vec2<C>, array_index: A, value: vec4<i32>) */
- /* fn textureStore[C : iu32](texture: texture_storage_3d<i32_texel_format, writable>, coords: vec3<C>, value: vec4<i32>) */
- /* fn textureStore[C : iu32](texture: texture_storage_1d<u32_texel_format, writable>, coords: C, value: vec4<u32>) */
- /* fn textureStore[C : iu32](texture: texture_storage_2d<u32_texel_format, writable>, coords: vec2<C>, value: vec4<u32>) */
- /* fn textureStore[C : iu32, A : iu32](texture: texture_storage_2d_array<u32_texel_format, writable>, coords: vec2<C>, array_index: A, value: vec4<u32>) */
- /* fn textureStore[C : iu32](texture: texture_storage_3d<u32_texel_format, writable>, coords: vec3<C>, value: vec4<u32>) */
+ /* fn textureStore[C : iu32, F : f32_texel_format, W : writable](texture: texture_storage_1d<F, W>, coords: C, value: vec4<f32>) */
+ /* fn textureStore[C : iu32, F : f32_texel_format, W : writable](texture: texture_storage_2d<F, W>, coords: vec2<C>, value: vec4<f32>) */
+ /* fn textureStore[C : iu32, F : f32_texel_format, W : writable, A : iu32](texture: texture_storage_2d_array<F, W>, coords: vec2<C>, array_index: A, value: vec4<f32>) */
+ /* fn textureStore[C : iu32, F : f32_texel_format, W : writable](texture: texture_storage_3d<F, W>, coords: vec3<C>, value: vec4<f32>) */
+ /* fn textureStore[C : iu32, F : i32_texel_format, W : writable](texture: texture_storage_1d<F, W>, coords: C, value: vec4<i32>) */
+ /* fn textureStore[C : iu32, F : i32_texel_format, W : writable](texture: texture_storage_2d<F, W>, coords: vec2<C>, value: vec4<i32>) */
+ /* fn textureStore[C : iu32, F : i32_texel_format, W : writable, A : iu32](texture: texture_storage_2d_array<F, W>, coords: vec2<C>, array_index: A, value: vec4<i32>) */
+ /* fn textureStore[C : iu32, F : i32_texel_format, W : writable](texture: texture_storage_3d<F, W>, coords: vec3<C>, value: vec4<i32>) */
+ /* fn textureStore[C : iu32, F : u32_texel_format, W : writable](texture: texture_storage_1d<F, W>, coords: C, value: vec4<u32>) */
+ /* fn textureStore[C : iu32, F : u32_texel_format, W : writable](texture: texture_storage_2d<F, W>, coords: vec2<C>, value: vec4<u32>) */
+ /* fn textureStore[C : iu32, F : u32_texel_format, W : writable, A : iu32](texture: texture_storage_2d_array<F, W>, coords: vec2<C>, array_index: A, value: vec4<u32>) */
+ /* fn textureStore[C : iu32, F : u32_texel_format, W : writable](texture: texture_storage_3d<F, W>, coords: vec3<C>, value: vec4<u32>) */
/* num overloads */ 12,
/* overloads */ OverloadIndex(144),
},
@@ -11488,18 +11450,18 @@
/* fn textureLoad[C : iu32, A : iu32, L : iu32](texture: texture_depth_2d_array, coords: vec2<C>, array_index: A, level: L) -> f32 */
/* fn textureLoad[C : iu32, S : iu32](texture: texture_depth_multisampled_2d, coords: vec2<C>, sample_index: S) -> f32 */
/* fn textureLoad[C : iu32](texture: texture_external, coords: vec2<C>) -> vec4<f32> */
- /* fn textureLoad[C : iu32](texture: texture_storage_1d<f32_texel_format, readable>, coords: C) -> vec4<f32> */
- /* fn textureLoad[C : iu32](texture: texture_storage_1d<i32_texel_format, readable>, coords: C) -> vec4<i32> */
- /* fn textureLoad[C : iu32](texture: texture_storage_1d<u32_texel_format, readable>, coords: C) -> vec4<u32> */
- /* fn textureLoad[C : iu32](texture: texture_storage_2d<f32_texel_format, readable>, coords: vec2<C>) -> vec4<f32> */
- /* fn textureLoad[C : iu32](texture: texture_storage_2d<i32_texel_format, readable>, coords: vec2<C>) -> vec4<i32> */
- /* fn textureLoad[C : iu32](texture: texture_storage_2d<u32_texel_format, readable>, coords: vec2<C>) -> vec4<u32> */
- /* fn textureLoad[C : iu32, A : iu32](texture: texture_storage_2d_array<f32_texel_format, readable>, coords: vec2<C>, array_index: A) -> vec4<f32> */
- /* fn textureLoad[C : iu32, A : iu32](texture: texture_storage_2d_array<i32_texel_format, readable>, coords: vec2<C>, array_index: A) -> vec4<i32> */
- /* fn textureLoad[C : iu32, A : iu32](texture: texture_storage_2d_array<u32_texel_format, readable>, coords: vec2<C>, array_index: A) -> vec4<u32> */
- /* fn textureLoad[C : iu32](texture: texture_storage_3d<f32_texel_format, readable>, coords: vec3<C>) -> vec4<f32> */
- /* fn textureLoad[C : iu32](texture: texture_storage_3d<i32_texel_format, readable>, coords: vec3<C>) -> vec4<i32> */
- /* fn textureLoad[C : iu32](texture: texture_storage_3d<u32_texel_format, readable>, coords: vec3<C>) -> vec4<u32> */
+ /* fn textureLoad[C : iu32, F : f32_texel_format, R : readable](texture: texture_storage_1d<F, R>, coords: C) -> vec4<f32> */
+ /* fn textureLoad[C : iu32, F : i32_texel_format, R : readable](texture: texture_storage_1d<F, R>, coords: C) -> vec4<i32> */
+ /* fn textureLoad[C : iu32, F : u32_texel_format, R : readable](texture: texture_storage_1d<F, R>, coords: C) -> vec4<u32> */
+ /* fn textureLoad[C : iu32, F : f32_texel_format, R : readable](texture: texture_storage_2d<F, R>, coords: vec2<C>) -> vec4<f32> */
+ /* fn textureLoad[C : iu32, F : i32_texel_format, R : readable](texture: texture_storage_2d<F, R>, coords: vec2<C>) -> vec4<i32> */
+ /* fn textureLoad[C : iu32, F : u32_texel_format, R : readable](texture: texture_storage_2d<F, R>, coords: vec2<C>) -> vec4<u32> */
+ /* fn textureLoad[C : iu32, F : f32_texel_format, R : readable, A : iu32](texture: texture_storage_2d_array<F, R>, coords: vec2<C>, array_index: A) -> vec4<f32> */
+ /* fn textureLoad[C : iu32, F : i32_texel_format, R : readable, A : iu32](texture: texture_storage_2d_array<F, R>, coords: vec2<C>, array_index: A) -> vec4<i32> */
+ /* fn textureLoad[C : iu32, F : u32_texel_format, R : readable, A : iu32](texture: texture_storage_2d_array<F, R>, coords: vec2<C>, array_index: A) -> vec4<u32> */
+ /* fn textureLoad[C : iu32, F : f32_texel_format, R : readable](texture: texture_storage_3d<F, R>, coords: vec3<C>) -> vec4<f32> */
+ /* fn textureLoad[C : iu32, F : i32_texel_format, R : readable](texture: texture_storage_3d<F, R>, coords: vec3<C>) -> vec4<i32> */
+ /* fn textureLoad[C : iu32, F : u32_texel_format, R : readable](texture: texture_storage_3d<F, R>, coords: vec3<C>) -> vec4<u32> */
/* num overloads */ 21,
/* overloads */ OverloadIndex(52),
},
diff --git a/src/tint/lang/wgsl/intrinsic/table_test.cc b/src/tint/lang/wgsl/intrinsic/table_test.cc
index cbbeeda..4912c68 100644
--- a/src/tint/lang/wgsl/intrinsic/table_test.cc
+++ b/src/tint/lang/wgsl/intrinsic/table_test.cc
@@ -548,33 +548,56 @@
R"(no matching call to 'textureDimensions(bool, bool)'
27 candidate functions:
- 'textureDimensions(texture: texture_1d<T>, level: L) -> u32' where: 'T' is 'f32', 'i32' or 'u32', 'L' is 'i32' or 'u32'
- 'textureDimensions(texture: texture_2d<T>, level: L) -> vec2<u32>' where: 'T' is 'f32', 'i32' or 'u32', 'L' is 'i32' or 'u32'
- 'textureDimensions(texture: texture_2d_array<T>, level: L) -> vec2<u32>' where: 'T' is 'f32', 'i32' or 'u32', 'L' is 'i32' or 'u32'
- 'textureDimensions(texture: texture_3d<T>, level: L) -> vec3<u32>' where: 'T' is 'f32', 'i32' or 'u32', 'L' is 'i32' or 'u32'
- 'textureDimensions(texture: texture_cube<T>, level: L) -> vec2<u32>' where: 'T' is 'f32', 'i32' or 'u32', 'L' is 'i32' or 'u32'
- 'textureDimensions(texture: texture_cube_array<T>, level: L) -> vec2<u32>' where: 'T' is 'f32', 'i32' or 'u32', 'L' is 'i32' or 'u32'
- 'textureDimensions(texture: texture_depth_2d, level: L) -> vec2<u32>' where: 'L' is 'i32' or 'u32'
- 'textureDimensions(texture: texture_depth_2d_array, level: L) -> vec2<u32>' where: 'L' is 'i32' or 'u32'
- 'textureDimensions(texture: texture_depth_cube, level: L) -> vec2<u32>' where: 'L' is 'i32' or 'u32'
- 'textureDimensions(texture: texture_depth_cube_array, level: L) -> vec2<u32>' where: 'L' is 'i32' or 'u32'
- 'textureDimensions(texture: texture_1d<T>) -> u32' where: 'T' is 'f32', 'i32' or 'u32'
- 'textureDimensions(texture: texture_2d<T>) -> vec2<u32>' where: 'T' is 'f32', 'i32' or 'u32'
- 'textureDimensions(texture: texture_2d_array<T>) -> vec2<u32>' where: 'T' is 'f32', 'i32' or 'u32'
- 'textureDimensions(texture: texture_3d<T>) -> vec3<u32>' where: 'T' is 'f32', 'i32' or 'u32'
- 'textureDimensions(texture: texture_cube<T>) -> vec2<u32>' where: 'T' is 'f32', 'i32' or 'u32'
- 'textureDimensions(texture: texture_cube_array<T>) -> vec2<u32>' where: 'T' is 'f32', 'i32' or 'u32'
- 'textureDimensions(texture: texture_multisampled_2d<T>) -> vec2<u32>' where: 'T' is 'f32', 'i32' or 'u32'
- 'textureDimensions(texture: texture_depth_2d) -> vec2<u32>'
- 'textureDimensions(texture: texture_depth_2d_array) -> vec2<u32>'
- 'textureDimensions(texture: texture_depth_cube) -> vec2<u32>'
- 'textureDimensions(texture: texture_depth_cube_array) -> vec2<u32>'
- 'textureDimensions(texture: texture_depth_multisampled_2d) -> vec2<u32>'
- 'textureDimensions(texture: texture_storage_1d<F, A>) -> u32'
- 'textureDimensions(texture: texture_storage_2d<F, A>) -> vec2<u32>'
- 'textureDimensions(texture: texture_storage_2d_array<F, A>) -> vec2<u32>'
- 'textureDimensions(texture: texture_storage_3d<F, A>) -> vec3<u32>'
- 'textureDimensions(texture: texture_external) -> vec2<u32>'
+ • 'textureDimensions(texture: texture_depth_2d ✗ , level: L ✗ ) -> vec2<u32>' where:
+ ✗ 'L' is 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_depth_2d_array ✗ , level: L ✗ ) -> vec2<u32>' where:
+ ✗ 'L' is 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_depth_cube ✗ , level: L ✗ ) -> vec2<u32>' where:
+ ✗ 'L' is 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_depth_cube_array ✗ , level: L ✗ ) -> vec2<u32>' where:
+ ✗ 'L' is 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_1d<T> ✗ , level: L ✗ ) -> u32' where:
+ ✗ 'T' is 'f32', 'i32' or 'u32'
+ ✗ 'L' is 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_2d<T> ✗ , level: L ✗ ) -> vec2<u32>' where:
+ ✗ 'T' is 'f32', 'i32' or 'u32'
+ ✗ 'L' is 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_2d_array<T> ✗ , level: L ✗ ) -> vec2<u32>' where:
+ ✗ 'T' is 'f32', 'i32' or 'u32'
+ ✗ 'L' is 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_3d<T> ✗ , level: L ✗ ) -> vec3<u32>' where:
+ ✗ 'T' is 'f32', 'i32' or 'u32'
+ ✗ 'L' is 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_cube<T> ✗ , level: L ✗ ) -> vec2<u32>' where:
+ ✗ 'T' is 'f32', 'i32' or 'u32'
+ ✗ 'L' is 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_cube_array<T> ✗ , level: L ✗ ) -> vec2<u32>' where:
+ ✗ 'T' is 'f32', 'i32' or 'u32'
+ ✗ 'L' is 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_depth_2d ✗ ) -> vec2<u32>'
+ • 'textureDimensions(texture: texture_depth_2d_array ✗ ) -> vec2<u32>'
+ • 'textureDimensions(texture: texture_depth_cube ✗ ) -> vec2<u32>'
+ • 'textureDimensions(texture: texture_depth_cube_array ✗ ) -> vec2<u32>'
+ • 'textureDimensions(texture: texture_depth_multisampled_2d ✗ ) -> vec2<u32>'
+ • 'textureDimensions(texture: texture_storage_1d<F, A> ✗ ) -> u32'
+ • 'textureDimensions(texture: texture_storage_2d<F, A> ✗ ) -> vec2<u32>'
+ • 'textureDimensions(texture: texture_storage_2d_array<F, A> ✗ ) -> vec2<u32>'
+ • 'textureDimensions(texture: texture_storage_3d<F, A> ✗ ) -> vec3<u32>'
+ • 'textureDimensions(texture: texture_external ✗ ) -> vec2<u32>'
+ • 'textureDimensions(texture: texture_1d<T> ✗ ) -> u32' where:
+ ✗ 'T' is 'f32', 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_2d<T> ✗ ) -> vec2<u32>' where:
+ ✗ 'T' is 'f32', 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_2d_array<T> ✗ ) -> vec2<u32>' where:
+ ✗ 'T' is 'f32', 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_3d<T> ✗ ) -> vec3<u32>' where:
+ ✗ 'T' is 'f32', 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_cube<T> ✗ ) -> vec2<u32>' where:
+ ✗ 'T' is 'f32', 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_cube_array<T> ✗ ) -> vec2<u32>' where:
+ ✗ 'T' is 'f32', 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_multisampled_2d<T> ✗ ) -> vec2<u32>' where:
+ ✗ 'T' is 'f32', 'i32' or 'u32'
)");
}
@@ -588,33 +611,56 @@
R"(no matching call to 'textureDimensions(texture_depth_2d, bool)'
27 candidate functions:
- 'textureDimensions(texture: texture_depth_2d, level: L) -> vec2<u32>' where: 'L' is 'i32' or 'u32'
- 'textureDimensions(texture: texture_1d<T>, level: L) -> u32' where: 'T' is 'f32', 'i32' or 'u32', 'L' is 'i32' or 'u32'
- 'textureDimensions(texture: texture_2d<T>, level: L) -> vec2<u32>' where: 'T' is 'f32', 'i32' or 'u32', 'L' is 'i32' or 'u32'
- 'textureDimensions(texture: texture_2d_array<T>, level: L) -> vec2<u32>' where: 'T' is 'f32', 'i32' or 'u32', 'L' is 'i32' or 'u32'
- 'textureDimensions(texture: texture_3d<T>, level: L) -> vec3<u32>' where: 'T' is 'f32', 'i32' or 'u32', 'L' is 'i32' or 'u32'
- 'textureDimensions(texture: texture_cube<T>, level: L) -> vec2<u32>' where: 'T' is 'f32', 'i32' or 'u32', 'L' is 'i32' or 'u32'
- 'textureDimensions(texture: texture_cube_array<T>, level: L) -> vec2<u32>' where: 'T' is 'f32', 'i32' or 'u32', 'L' is 'i32' or 'u32'
- 'textureDimensions(texture: texture_depth_2d_array, level: L) -> vec2<u32>' where: 'L' is 'i32' or 'u32'
- 'textureDimensions(texture: texture_depth_cube, level: L) -> vec2<u32>' where: 'L' is 'i32' or 'u32'
- 'textureDimensions(texture: texture_depth_cube_array, level: L) -> vec2<u32>' where: 'L' is 'i32' or 'u32'
- 'textureDimensions(texture: texture_depth_2d) -> vec2<u32>'
- 'textureDimensions(texture: texture_1d<T>) -> u32' where: 'T' is 'f32', 'i32' or 'u32'
- 'textureDimensions(texture: texture_2d<T>) -> vec2<u32>' where: 'T' is 'f32', 'i32' or 'u32'
- 'textureDimensions(texture: texture_2d_array<T>) -> vec2<u32>' where: 'T' is 'f32', 'i32' or 'u32'
- 'textureDimensions(texture: texture_3d<T>) -> vec3<u32>' where: 'T' is 'f32', 'i32' or 'u32'
- 'textureDimensions(texture: texture_cube<T>) -> vec2<u32>' where: 'T' is 'f32', 'i32' or 'u32'
- 'textureDimensions(texture: texture_cube_array<T>) -> vec2<u32>' where: 'T' is 'f32', 'i32' or 'u32'
- 'textureDimensions(texture: texture_multisampled_2d<T>) -> vec2<u32>' where: 'T' is 'f32', 'i32' or 'u32'
- 'textureDimensions(texture: texture_depth_2d_array) -> vec2<u32>'
- 'textureDimensions(texture: texture_depth_cube) -> vec2<u32>'
- 'textureDimensions(texture: texture_depth_cube_array) -> vec2<u32>'
- 'textureDimensions(texture: texture_depth_multisampled_2d) -> vec2<u32>'
- 'textureDimensions(texture: texture_storage_1d<F, A>) -> u32'
- 'textureDimensions(texture: texture_storage_2d<F, A>) -> vec2<u32>'
- 'textureDimensions(texture: texture_storage_2d_array<F, A>) -> vec2<u32>'
- 'textureDimensions(texture: texture_storage_3d<F, A>) -> vec3<u32>'
- 'textureDimensions(texture: texture_external) -> vec2<u32>'
+ • 'textureDimensions(texture: texture_depth_2d ✓ , level: L ✗ ) -> vec2<u32>' where:
+ ✗ 'L' is 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_depth_2d ✓ ) -> vec2<u32>'
+ • 'textureDimensions(texture: texture_depth_2d_array ✗ , level: L ✗ ) -> vec2<u32>' where:
+ ✗ 'L' is 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_depth_cube ✗ , level: L ✗ ) -> vec2<u32>' where:
+ ✗ 'L' is 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_depth_cube_array ✗ , level: L ✗ ) -> vec2<u32>' where:
+ ✗ 'L' is 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_1d<T> ✗ , level: L ✗ ) -> u32' where:
+ ✗ 'T' is 'f32', 'i32' or 'u32'
+ ✗ 'L' is 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_2d<T> ✗ , level: L ✗ ) -> vec2<u32>' where:
+ ✗ 'T' is 'f32', 'i32' or 'u32'
+ ✗ 'L' is 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_2d_array<T> ✗ , level: L ✗ ) -> vec2<u32>' where:
+ ✗ 'T' is 'f32', 'i32' or 'u32'
+ ✗ 'L' is 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_3d<T> ✗ , level: L ✗ ) -> vec3<u32>' where:
+ ✗ 'T' is 'f32', 'i32' or 'u32'
+ ✗ 'L' is 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_cube<T> ✗ , level: L ✗ ) -> vec2<u32>' where:
+ ✗ 'T' is 'f32', 'i32' or 'u32'
+ ✗ 'L' is 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_cube_array<T> ✗ , level: L ✗ ) -> vec2<u32>' where:
+ ✗ 'T' is 'f32', 'i32' or 'u32'
+ ✗ 'L' is 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_depth_2d_array ✗ ) -> vec2<u32>'
+ • 'textureDimensions(texture: texture_depth_cube ✗ ) -> vec2<u32>'
+ • 'textureDimensions(texture: texture_depth_cube_array ✗ ) -> vec2<u32>'
+ • 'textureDimensions(texture: texture_depth_multisampled_2d ✗ ) -> vec2<u32>'
+ • 'textureDimensions(texture: texture_storage_1d<F, A> ✗ ) -> u32'
+ • 'textureDimensions(texture: texture_storage_2d<F, A> ✗ ) -> vec2<u32>'
+ • 'textureDimensions(texture: texture_storage_2d_array<F, A> ✗ ) -> vec2<u32>'
+ • 'textureDimensions(texture: texture_storage_3d<F, A> ✗ ) -> vec3<u32>'
+ • 'textureDimensions(texture: texture_external ✗ ) -> vec2<u32>'
+ • 'textureDimensions(texture: texture_1d<T> ✗ ) -> u32' where:
+ ✗ 'T' is 'f32', 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_2d<T> ✗ ) -> vec2<u32>' where:
+ ✗ 'T' is 'f32', 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_2d_array<T> ✗ ) -> vec2<u32>' where:
+ ✗ 'T' is 'f32', 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_3d<T> ✗ ) -> vec3<u32>' where:
+ ✗ 'T' is 'f32', 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_cube<T> ✗ ) -> vec2<u32>' where:
+ ✗ 'T' is 'f32', 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_cube_array<T> ✗ ) -> vec2<u32>' where:
+ ✗ 'T' is 'f32', 'i32' or 'u32'
+ • 'textureDimensions(texture: texture_multisampled_2d<T> ✗ ) -> vec2<u32>' where:
+ ✗ 'T' is 'f32', 'i32' or 'u32'
)");
}
@@ -633,8 +679,10 @@
EXPECT_EQ(result.Failure().Plain(), R"(no matching overload for 'operator - (bool)'
2 candidate operators:
- 'operator - (T) -> T' where: 'T' is 'abstract-float', 'abstract-int', 'f32', 'i32' or 'f16'
- 'operator - (vecN<T>) -> vecN<T>' where: 'T' is 'abstract-float', 'abstract-int', 'f32', 'i32' or 'f16'
+ • 'operator - (T ✗ ) -> T' where:
+ ✗ 'T' is 'abstract-float', 'abstract-int', 'f32', 'i32' or 'f16'
+ • 'operator - (vecN<T> ✗ ) -> vecN<T>' where:
+ ✗ 'T' is 'abstract-float', 'abstract-int', 'f32', 'i32' or 'f16'
)");
}
@@ -675,15 +723,24 @@
EXPECT_EQ(result.Failure().Plain(), R"(no matching overload for 'operator * (f32, bool)'
9 candidate operators:
- 'operator * (T, T) -> T' where: 'T' is 'abstract-float', 'abstract-int', 'f32', 'i32', 'u32' or 'f16'
- 'operator * (vecN<T>, T) -> vecN<T>' where: 'T' is 'abstract-float', 'abstract-int', 'f32', 'i32', 'u32' or 'f16'
- 'operator * (T, vecN<T>) -> vecN<T>' where: 'T' is 'abstract-float', 'abstract-int', 'f32', 'i32', 'u32' or 'f16'
- 'operator * (T, matNxM<T>) -> matNxM<T>' where: 'T' is 'abstract-float', 'f32' or 'f16'
- 'operator * (matNxM<T>, T) -> matNxM<T>' where: 'T' is 'abstract-float', 'f32' or 'f16'
- 'operator * (vecN<T>, vecN<T>) -> vecN<T>' where: 'T' is 'abstract-float', 'abstract-int', 'f32', 'i32', 'u32' or 'f16'
- 'operator * (matCxR<T>, vecC<T>) -> vecR<T>' where: 'T' is 'abstract-float', 'f32' or 'f16'
- 'operator * (vecR<T>, matCxR<T>) -> vecC<T>' where: 'T' is 'abstract-float', 'f32' or 'f16'
- 'operator * (matKxR<T>, matCxK<T>) -> matCxR<T>' where: 'T' is 'abstract-float', 'f32' or 'f16'
+ • 'operator * (T ✓ , T ✗ ) -> T' where:
+ ✓ 'T' is 'abstract-float', 'abstract-int', 'f32', 'i32', 'u32' or 'f16'
+ • 'operator * (T ✓ , vecN<T> ✗ ) -> vecN<T>' where:
+ ✓ 'T' is 'abstract-float', 'abstract-int', 'f32', 'i32', 'u32' or 'f16'
+ • 'operator * (T ✓ , matNxM<T> ✗ ) -> matNxM<T>' where:
+ ✓ 'T' is 'abstract-float', 'f32' or 'f16'
+ • 'operator * (vecN<T> ✗ , T ✗ ) -> vecN<T>' where:
+ ✗ 'T' is 'abstract-float', 'abstract-int', 'f32', 'i32', 'u32' or 'f16'
+ • 'operator * (matNxM<T> ✗ , T ✗ ) -> matNxM<T>' where:
+ ✗ 'T' is 'abstract-float', 'f32' or 'f16'
+ • 'operator * (vecN<T> ✗ , vecN<T> ✗ ) -> vecN<T>' where:
+ ✗ 'T' is 'abstract-float', 'abstract-int', 'f32', 'i32', 'u32' or 'f16'
+ • 'operator * (matCxR<T> ✗ , vecC<T> ✗ ) -> vecR<T>' where:
+ ✗ 'T' is 'abstract-float', 'f32' or 'f16'
+ • 'operator * (vecR<T> ✗ , matCxR<T> ✗ ) -> vecC<T>' where:
+ ✗ 'T' is 'abstract-float', 'f32' or 'f16'
+ • 'operator * (matKxR<T> ✗ , matCxK<T> ✗ ) -> matCxR<T>' where:
+ ✗ 'T' is 'abstract-float', 'f32' or 'f16'
)");
}
@@ -709,15 +766,24 @@
EXPECT_EQ(result.Failure().Plain(), R"(no matching overload for 'operator *= (f32, bool)'
9 candidate operators:
- 'operator *= (T, T) -> T' where: 'T' is 'abstract-float', 'abstract-int', 'f32', 'i32', 'u32' or 'f16'
- 'operator *= (vecN<T>, T) -> vecN<T>' where: 'T' is 'abstract-float', 'abstract-int', 'f32', 'i32', 'u32' or 'f16'
- 'operator *= (T, vecN<T>) -> vecN<T>' where: 'T' is 'abstract-float', 'abstract-int', 'f32', 'i32', 'u32' or 'f16'
- 'operator *= (T, matNxM<T>) -> matNxM<T>' where: 'T' is 'abstract-float', 'f32' or 'f16'
- 'operator *= (matNxM<T>, T) -> matNxM<T>' where: 'T' is 'abstract-float', 'f32' or 'f16'
- 'operator *= (vecN<T>, vecN<T>) -> vecN<T>' where: 'T' is 'abstract-float', 'abstract-int', 'f32', 'i32', 'u32' or 'f16'
- 'operator *= (matCxR<T>, vecC<T>) -> vecR<T>' where: 'T' is 'abstract-float', 'f32' or 'f16'
- 'operator *= (vecR<T>, matCxR<T>) -> vecC<T>' where: 'T' is 'abstract-float', 'f32' or 'f16'
- 'operator *= (matKxR<T>, matCxK<T>) -> matCxR<T>' where: 'T' is 'abstract-float', 'f32' or 'f16'
+ • 'operator *= (T ✓ , T ✗ ) -> T' where:
+ ✓ 'T' is 'abstract-float', 'abstract-int', 'f32', 'i32', 'u32' or 'f16'
+ • 'operator *= (T ✓ , vecN<T> ✗ ) -> vecN<T>' where:
+ ✓ 'T' is 'abstract-float', 'abstract-int', 'f32', 'i32', 'u32' or 'f16'
+ • 'operator *= (T ✓ , matNxM<T> ✗ ) -> matNxM<T>' where:
+ ✓ 'T' is 'abstract-float', 'f32' or 'f16'
+ • 'operator *= (vecN<T> ✗ , T ✗ ) -> vecN<T>' where:
+ ✗ 'T' is 'abstract-float', 'abstract-int', 'f32', 'i32', 'u32' or 'f16'
+ • 'operator *= (matNxM<T> ✗ , T ✗ ) -> matNxM<T>' where:
+ ✗ 'T' is 'abstract-float', 'f32' or 'f16'
+ • 'operator *= (vecN<T> ✗ , vecN<T> ✗ ) -> vecN<T>' where:
+ ✗ 'T' is 'abstract-float', 'abstract-int', 'f32', 'i32', 'u32' or 'f16'
+ • 'operator *= (matCxR<T> ✗ , vecC<T> ✗ ) -> vecR<T>' where:
+ ✗ 'T' is 'abstract-float', 'f32' or 'f16'
+ • 'operator *= (vecR<T> ✗ , matCxR<T> ✗ ) -> vecC<T>' where:
+ ✗ 'T' is 'abstract-float', 'f32' or 'f16'
+ • 'operator *= (matKxR<T> ✗ , matCxK<T> ✗ ) -> matCxR<T>' where:
+ ✗ 'T' is 'abstract-float', 'f32' or 'f16'
)");
}
@@ -761,25 +827,46 @@
R"(no matching constructor for 'vec3(i32, f32, i32)'
12 candidate constructors:
- 'vec3(x: T, y: T, z: T) -> vec3<T>' where: 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
- 'vec3<T>(xy: vec2<T>, z: T) -> vec3<T>' where: 'T' is '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<T>(x: T, yz: vec2<T>) -> vec3<T>' where: 'T' is '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>(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<T>(vec3<T>) -> vec3<T>' where: 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
- 'vec3(vec3<T>) -> vec3<T>' where: 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
- 'vec3() -> vec3<abstract-int>'
- 'vec3<T>() -> vec3<T>' where: 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
- 'vec3<T>(x: T, y: T, z: T) -> vec3<T>' where: 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • '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'
+ • 'vec3(T ✓ ) -> vec3<T>' where:
+ ✓ 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'vec3() -> vec3<abstract-int>'
+ • 'vec3(vec3<T> ✗ ) -> vec3<T>' where:
+ ✗ 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'vec3<T ✗ >(x: T ✓ , y: T ✗ , z: T ✓ ) -> vec3<T>' where:
+ ✓ 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'vec3<T ✗ >(xy: vec2<T> ✗ , z: T ✓ ) -> vec3<T>' where:
+ ✓ 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'vec3<T ✗ >(x: T ✓ , yz: vec2<T> ✗ ) -> vec3<T>' where:
+ ✓ 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'vec3<T ✗ >(T ✓ ) -> vec3<T>' where:
+ ✓ 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'vec3<T ✗ >(vec3<T> ✗ ) -> vec3<T>' where:
+ ✗ 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'vec3<T ✗ >() -> vec3<T>' where:
+ ✗ 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
5 candidate conversions:
- 'vec3<T>(vec3<U>) -> vec3<T>' where: 'T' is 'f32', 'U' is 'abstract-int', 'abstract-float', 'i32', 'f16', 'u32' or 'bool'
- 'vec3<T>(vec3<U>) -> vec3<T>' where: 'T' is 'f16', 'U' is 'abstract-int', 'abstract-float', 'f32', 'i32', 'u32' or 'bool'
- 'vec3<T>(vec3<U>) -> vec3<T>' where: 'T' is 'i32', 'U' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'u32' or 'bool'
- 'vec3<T>(vec3<U>) -> vec3<T>' where: 'T' is 'u32', 'U' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32' or 'bool'
- 'vec3<T>(vec3<U>) -> vec3<T>' where: 'T' is 'bool', 'U' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32' or 'u32'
+ • 'vec3<T ✗ >(vec3<U> ✗ ) -> vec3<T>' where:
+ ✗ 'T' is 'f32'
+ ✗ 'U' is 'abstract-int', 'abstract-float', 'i32', 'f16', 'u32' or 'bool'
+ • 'vec3<T ✗ >(vec3<U> ✗ ) -> vec3<T>' where:
+ ✗ 'T' is 'f16'
+ ✗ 'U' is 'abstract-int', 'abstract-float', 'f32', 'i32', 'u32' or 'bool'
+ • 'vec3<T ✗ >(vec3<U> ✗ ) -> vec3<T>' where:
+ ✗ 'T' is 'i32'
+ ✗ 'U' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'u32' or 'bool'
+ • 'vec3<T ✗ >(vec3<U> ✗ ) -> vec3<T>' where:
+ ✗ 'T' is 'u32'
+ ✗ 'U' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32' or 'bool'
+ • 'vec3<T ✗ >(vec3<U> ✗ ) -> vec3<T>' where:
+ ✗ 'T' is 'bool'
+ ✗ 'U' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32' or 'u32'
)");
}
@@ -793,25 +880,48 @@
R"(no matching constructor for 'vec3<i32>(i32, f32, i32)'
12 candidate constructors:
- 'vec3<T>(x: T, y: T, z: T) -> vec3<T>' where: 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
- 'vec3<T>(xy: vec2<T>, z: T) -> vec3<T>' where: 'T' is '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<T>(x: T, yz: vec2<T>) -> vec3<T>' where: 'T' is '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>(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<T>(vec3<T>) -> vec3<T>' where: 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
- 'vec3(vec3<T>) -> vec3<T>' where: 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
- 'vec3() -> vec3<abstract-int>'
- 'vec3<T>() -> vec3<T>' where: 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
- 'vec3(x: T, y: T, z: T) -> vec3<T>' where: 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'vec3<T ✓ >(x: T ✓ , y: T ✗ , z: T ✓ ) -> vec3<T>' where:
+ ✓ 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'vec3<T ✓ >(x: T ✓ , yz: vec2<T> ✗ ) -> vec3<T>' where:
+ ✓ 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'vec3<T ✓ >(T ✓ ) -> vec3<T>' where:
+ ✓ 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'vec3<T ✓ >(xy: vec2<T> ✗ , z: T ✗ ) -> vec3<T>' where:
+ ✓ 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'vec3<T ✓ >(vec3<T> ✗ ) -> vec3<T>' where:
+ ✓ 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'vec3<T ✓ >() -> vec3<T>' where:
+ ✓ 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • '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'
+ • 'vec3(T ✓ ) -> vec3<T>' where:
+ ✗ overload expects 0 template arguments
+ ✓ 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'vec3() -> vec3<abstract-int>' where:
+ ✗ overload expects 0 template arguments
+ • 'vec3(vec3<T> ✗ ) -> vec3<T>' where:
+ ✗ 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
5 candidate conversions:
- 'vec3<T>(vec3<U>) -> vec3<T>' where: 'T' is 'f32', 'U' is 'abstract-int', 'abstract-float', 'i32', 'f16', 'u32' or 'bool'
- 'vec3<T>(vec3<U>) -> vec3<T>' where: 'T' is 'f16', 'U' is 'abstract-int', 'abstract-float', 'f32', 'i32', 'u32' or 'bool'
- 'vec3<T>(vec3<U>) -> vec3<T>' where: 'T' is 'i32', 'U' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'u32' or 'bool'
- 'vec3<T>(vec3<U>) -> vec3<T>' where: 'T' is 'u32', 'U' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32' or 'bool'
- 'vec3<T>(vec3<U>) -> vec3<T>' where: 'T' is 'bool', 'U' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32' or 'u32'
+ • 'vec3<T ✓ >(vec3<U> ✗ ) -> vec3<T>' where:
+ ✓ 'T' is 'i32'
+ ✗ 'U' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'u32' or 'bool'
+ • 'vec3<T ✗ >(vec3<U> ✗ ) -> vec3<T>' where:
+ ✗ 'T' is 'f32'
+ ✗ 'U' is 'abstract-int', 'abstract-float', 'i32', 'f16', 'u32' or 'bool'
+ • 'vec3<T ✗ >(vec3<U> ✗ ) -> vec3<T>' where:
+ ✗ 'T' is 'f16'
+ ✗ 'U' is 'abstract-int', 'abstract-float', 'f32', 'i32', 'u32' or 'bool'
+ • 'vec3<T ✗ >(vec3<U> ✗ ) -> vec3<T>' where:
+ ✗ 'T' is 'u32'
+ ✗ 'U' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32' or 'bool'
+ • 'vec3<T ✗ >(vec3<U> ✗ ) -> vec3<T>' where:
+ ✗ 'T' is 'bool'
+ ✗ 'U' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32' or 'u32'
)");
}
@@ -902,25 +1012,47 @@
R"(no matching constructor for 'vec3<f32>(array<u32>)'
12 candidate constructors:
- 'vec3<T>(vec3<T>) -> vec3<T>' where: 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
- 'vec3<T>(T) -> vec3<T>' where: 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
- 'vec3() -> vec3<abstract-int>'
- 'vec3<T>() -> vec3<T>' where: 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
- 'vec3<T>(x: T, yz: vec2<T>) -> vec3<T>' where: 'T' is '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>(xy: vec2<T>, z: T) -> vec3<T>' where: 'T' is '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<T>(x: T, y: T, z: T) -> vec3<T>' where: 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
- 'vec3(x: T, y: T, z: 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'
- 'vec3(vec3<T>) -> vec3<T>' where: 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'vec3<T ✓ >(vec3<T> ✗ ) -> vec3<T>' where:
+ ✓ 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'vec3<T ✓ >(T ✗ ) -> vec3<T>' where:
+ ✓ 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'vec3<T ✓ >() -> vec3<T>' where:
+ ✓ 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'vec3<T ✓ >(xy: vec2<T> ✗ , z: T ✗ ) -> vec3<T>' where:
+ ✓ 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'vec3<T ✓ >(x: T ✗ , yz: vec2<T> ✗ ) -> vec3<T>' where:
+ ✓ 'T' is 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'vec3<T ✓ >(x: T ✗ , y: T ✗ , z: 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<abstract-int>' where:
+ ✗ overload expects 0 template arguments
+ • 'vec3(vec3<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(xy: vec2<T> ✗ , z: T ✗ ) -> vec3<T>' where:
+ ✗ 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'vec3(x: T ✗ , y: T ✗ , z: T ✗ ) -> vec3<T>' where:
+ ✗ 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
5 candidate conversions:
- 'vec3<T>(vec3<U>) -> vec3<T>' where: 'T' is 'f32', 'U' is 'abstract-int', 'abstract-float', 'i32', 'f16', 'u32' or 'bool'
- 'vec3<T>(vec3<U>) -> vec3<T>' where: 'T' is 'f16', 'U' is 'abstract-int', 'abstract-float', 'f32', 'i32', 'u32' or 'bool'
- 'vec3<T>(vec3<U>) -> vec3<T>' where: 'T' is 'i32', 'U' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'u32' or 'bool'
- 'vec3<T>(vec3<U>) -> vec3<T>' where: 'T' is 'u32', 'U' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32' or 'bool'
- 'vec3<T>(vec3<U>) -> vec3<T>' where: 'T' is 'bool', 'U' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32' or 'u32'
+ • 'vec3<T ✓ >(vec3<U> ✗ ) -> vec3<T>' where:
+ ✓ 'T' is 'f32'
+ ✗ 'U' is 'abstract-int', 'abstract-float', 'i32', 'f16', 'u32' or 'bool'
+ • 'vec3<T ✗ >(vec3<U> ✗ ) -> vec3<T>' where:
+ ✗ 'T' is 'f16'
+ ✗ 'U' is 'abstract-int', 'abstract-float', 'f32', 'i32', 'u32' or 'bool'
+ • 'vec3<T ✗ >(vec3<U> ✗ ) -> vec3<T>' where:
+ ✗ 'T' is 'i32'
+ ✗ 'U' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'u32' or 'bool'
+ • 'vec3<T ✗ >(vec3<U> ✗ ) -> vec3<T>' where:
+ ✗ 'T' is 'u32'
+ ✗ 'U' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32' or 'bool'
+ • 'vec3<T ✗ >(vec3<U> ✗ ) -> vec3<T>' where:
+ ✗ 'T' is 'bool'
+ ✗ 'U' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32' or 'u32'
)");
}
diff --git a/src/tint/lang/wgsl/resolver/builtin_test.cc b/src/tint/lang/wgsl/resolver/builtin_test.cc
index 7dfdf9f..b29c901 100644
--- a/src/tint/lang/wgsl/resolver/builtin_test.cc
+++ b/src/tint/lang/wgsl/resolver/builtin_test.cc
@@ -166,9 +166,12 @@
R"(error: no matching call to 'select()'
3 candidate functions:
- 'select(T, T, bool) -> T' where: 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
- 'select(vecN<T>, vecN<T>, bool) -> vecN<T>' where: 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
- 'select(vecN<T>, vecN<T>, vecN<bool>) -> vecN<T>' where: 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'select(T ✗ , T ✗ , bool ✗ ) -> T' where:
+ ✗ 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'select(vecN<T> ✗ , vecN<T> ✗ , bool ✗ ) -> vecN<T>' where:
+ ✗ 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'select(vecN<T> ✗ , vecN<T> ✗ , vecN<bool> ✗ ) -> vecN<T>' where:
+ ✗ 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
)");
}
@@ -182,9 +185,12 @@
R"(error: no matching call to 'select(i32, i32, i32)'
3 candidate functions:
- 'select(T, T, bool) -> T' where: 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
- 'select(vecN<T>, vecN<T>, bool) -> vecN<T>' where: 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
- 'select(vecN<T>, vecN<T>, vecN<bool>) -> vecN<T>' where: 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'select(T ✓ , T ✓ , bool ✗ ) -> T' where:
+ ✓ 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'select(vecN<T> ✗ , vecN<T> ✗ , bool ✗ ) -> vecN<T>' where:
+ ✗ 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'select(vecN<T> ✗ , vecN<T> ✗ , vecN<bool> ✗ ) -> vecN<T>' where:
+ ✗ 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
)");
}
@@ -200,9 +206,12 @@
R"(error: no matching call to 'select(mat2x2<f32>, mat2x2<f32>, bool)'
3 candidate functions:
- 'select(T, T, bool) -> T' where: 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
- 'select(vecN<T>, vecN<T>, bool) -> vecN<T>' where: 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
- 'select(vecN<T>, vecN<T>, vecN<bool>) -> vecN<T>' where: 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'select(T ✗ , T ✗ , bool ✓ ) -> T' where:
+ ✗ 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'select(vecN<T> ✗ , vecN<T> ✗ , bool ✓ ) -> vecN<T>' where:
+ ✗ 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'select(vecN<T> ✗ , vecN<T> ✗ , vecN<bool> ✗ ) -> vecN<T>' where:
+ ✗ 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
)");
}
@@ -216,9 +225,12 @@
R"(error: no matching call to 'select(f32, vec2<f32>, bool)'
3 candidate functions:
- 'select(T, T, bool) -> T' where: 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
- 'select(vecN<T>, vecN<T>, bool) -> vecN<T>' where: 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
- 'select(vecN<T>, vecN<T>, vecN<bool>) -> vecN<T>' where: 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'select(T ✓ , T ✗ , bool ✓ ) -> T' where:
+ ✓ 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'select(vecN<T> ✗ , vecN<T> ✓ , bool ✓ ) -> vecN<T>' where:
+ ✓ 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'select(vecN<T> ✗ , vecN<T> ✓ , vecN<bool> ✗ ) -> vecN<T>' where:
+ ✓ 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
)");
}
@@ -232,9 +244,12 @@
R"(error: no matching call to 'select(vec2<f32>, vec3<f32>, bool)'
3 candidate functions:
- 'select(T, T, bool) -> T' where: 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
- 'select(vecN<T>, vecN<T>, bool) -> vecN<T>' where: 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
- 'select(vecN<T>, vecN<T>, vecN<bool>) -> vecN<T>' where: 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'select(vecN<T> ✓ , vecN<T> ✗ , bool ✓ ) -> vecN<T>' where:
+ ✓ 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'select(T ✗ , T ✗ , bool ✓ ) -> T' where:
+ ✗ 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
+ • 'select(vecN<T> ✓ , vecN<T> ✗ , vecN<bool> ✗ ) -> vecN<T>' where:
+ ✓ 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'i32', 'u32' or 'bool'
)");
}
@@ -271,7 +286,7 @@
R"(error: no matching call to 'arrayLength(ptr<private, array<i32, 4>, read_write>)'
1 candidate function:
- 'arrayLength(ptr<storage, array<T>, A>) -> u32'
+ • 'arrayLength(ptr<storage, array<T>, A> ✗ ) -> u32'
)");
}
@@ -800,7 +815,8 @@
EXPECT_EQ(r()->error(), R"(error: no matching call to 'cross()'
1 candidate function:
- 'cross(vec3<T>, vec3<T>) -> vec3<T>' where: 'T' is 'abstract-float', 'f32' or 'f16'
+ • 'cross(vec3<T> ✗ , vec3<T> ✗ ) -> vec3<T>' where:
+ ✗ 'T' is 'abstract-float', 'f32' or 'f16'
)");
}
@@ -813,7 +829,8 @@
EXPECT_EQ(r()->error(), R"(error: no matching call to 'cross(f32, f32)'
1 candidate function:
- 'cross(vec3<T>, vec3<T>) -> vec3<T>' where: 'T' is 'abstract-float', 'f32' or 'f16'
+ • 'cross(vec3<T> ✗ , vec3<T> ✗ ) -> vec3<T>' where:
+ ✗ 'T' is 'abstract-float', 'f32' or 'f16'
)");
}
@@ -827,7 +844,8 @@
R"(error: no matching call to 'cross(vec3<i32>, vec3<i32>)'
1 candidate function:
- 'cross(vec3<T>, vec3<T>) -> vec3<T>' where: 'T' is 'abstract-float', 'f32' or 'f16'
+ • 'cross(vec3<T> ✗ , vec3<T> ✗ ) -> vec3<T>' where:
+ ✗ 'T' is 'abstract-float', 'f32' or 'f16'
)");
}
@@ -843,7 +861,8 @@
R"(error: no matching call to 'cross(vec4<f32>, vec4<f32>)'
1 candidate function:
- 'cross(vec3<T>, vec3<T>) -> vec3<T>' where: 'T' is 'abstract-float', 'f32' or 'f16'
+ • 'cross(vec3<T> ✗ , vec3<T> ✗ ) -> vec3<T>' where:
+ ✗ 'T' is 'abstract-float', 'f32' or 'f16'
)");
}
@@ -859,7 +878,8 @@
R"(error: no matching call to 'cross(vec3<f32>, vec3<f32>, vec3<f32>)'
1 candidate function:
- 'cross(vec3<T>, vec3<T>) -> vec3<T>' where: 'T' is 'abstract-float', 'f32' or 'f16'
+ • 'cross(vec3<T> ✓ , vec3<T> ✓ ) -> vec3<T>' where:
+ ✓ 'T' is 'abstract-float', 'f32' or 'f16'
)");
}
@@ -919,8 +939,10 @@
R"(error: no matching call to 'distance(vec3<f32>, vec3<f32>, vec3<f32>)'
2 candidate functions:
- 'distance(T, T) -> T' where: 'T' is 'abstract-float', 'f32' or 'f16'
- 'distance(vecN<T>, vecN<T>) -> T' where: 'T' is 'abstract-float', 'f32' or 'f16'
+ • 'distance(vecN<T> ✓ , vecN<T> ✓ ) -> T' where:
+ ✓ 'T' is 'abstract-float', 'f32' or 'f16'
+ • 'distance(T ✗ , T ✗ ) -> T' where:
+ ✗ 'T' is 'abstract-float', 'f32' or 'f16'
)");
}
@@ -933,8 +955,10 @@
EXPECT_EQ(r()->error(), R"(error: no matching call to 'distance(vec3<f32>)'
2 candidate functions:
- 'distance(T, T) -> T' where: 'T' is 'abstract-float', 'f32' or 'f16'
- 'distance(vecN<T>, vecN<T>) -> T' where: 'T' is 'abstract-float', 'f32' or 'f16'
+ • 'distance(vecN<T> ✓ , vecN<T> ✗ ) -> T' where:
+ ✓ 'T' is 'abstract-float', 'f32' or 'f16'
+ • 'distance(T ✗ , T ✗ ) -> T' where:
+ ✗ 'T' is 'abstract-float', 'f32' or 'f16'
)");
}
@@ -947,8 +971,10 @@
EXPECT_EQ(r()->error(), R"(error: no matching call to 'distance()'
2 candidate functions:
- 'distance(T, T) -> T' where: 'T' is 'abstract-float', 'f32' or 'f16'
- 'distance(vecN<T>, vecN<T>) -> T' where: 'T' is 'abstract-float', 'f32' or 'f16'
+ • 'distance(T ✗ , T ✗ ) -> T' where:
+ ✗ 'T' is 'abstract-float', 'f32' or 'f16'
+ • 'distance(vecN<T> ✗ , vecN<T> ✗ ) -> T' where:
+ ✗ 'T' is 'abstract-float', 'f32' or 'f16'
)");
}
@@ -1093,8 +1119,10 @@
R"(error: no matching call to 'frexp(i32, ptr<workgroup, i32, read_write>)'
2 candidate functions:
- 'frexp(T) -> __frexp_result_T' where: 'T' is 'abstract-float', 'f32' or 'f16'
- 'frexp(vecN<T>) -> __frexp_result_vecN_T' where: 'T' is 'abstract-float', 'f32' or 'f16'
+ • 'frexp(T ✗ ) -> __frexp_result_T' where:
+ ✗ 'T' is 'abstract-float', 'f32' or 'f16'
+ • 'frexp(vecN<T> ✗ ) -> __frexp_result_vecN_T' where:
+ ✗ 'T' is 'abstract-float', 'f32' or 'f16'
)");
}
@@ -1152,8 +1180,10 @@
EXPECT_EQ(r()->error(), R"(error: no matching call to 'length()'
2 candidate functions:
- 'length(T) -> T' where: 'T' is 'abstract-float', 'f32' or 'f16'
- 'length(vecN<T>) -> T' where: 'T' is 'abstract-float', 'f32' or 'f16'
+ • 'length(T ✗ ) -> T' where:
+ ✗ 'T' is 'abstract-float', 'f32' or 'f16'
+ • 'length(vecN<T> ✗ ) -> T' where:
+ ✗ 'T' is 'abstract-float', 'f32' or 'f16'
)");
}
@@ -1166,8 +1196,10 @@
EXPECT_EQ(r()->error(), R"(error: no matching call to 'length(f32, f32)'
2 candidate functions:
- 'length(T) -> T' where: 'T' is 'abstract-float', 'f32' or 'f16'
- 'length(vecN<T>) -> T' where: 'T' is 'abstract-float', 'f32' or 'f16'
+ • 'length(T ✓ ) -> T' where:
+ ✓ 'T' is 'abstract-float', 'f32' or 'f16'
+ • 'length(vecN<T> ✗ ) -> T' where:
+ ✗ 'T' is 'abstract-float', 'f32' or 'f16'
)");
}
@@ -1342,8 +1374,10 @@
R"(error: no matching call to 'modf(i32, ptr<workgroup, f32, read_write>)'
2 candidate functions:
- 'modf(T) -> __modf_result_T' where: 'T' is 'abstract-float', 'f32' or 'f16'
- 'modf(vecN<T>) -> __modf_result_vecN_T' where: 'T' is 'abstract-float', 'f32' or 'f16'
+ • 'modf(T ✗ ) -> __modf_result_T' where:
+ ✗ 'T' is 'abstract-float', 'f32' or 'f16'
+ • 'modf(vecN<T> ✗ ) -> __modf_result_vecN_T' where:
+ ✗ 'T' is 'abstract-float', 'f32' or 'f16'
)");
}
@@ -1358,8 +1392,10 @@
R"(error: no matching call to 'modf(f32, ptr<workgroup, i32, read_write>)'
2 candidate functions:
- 'modf(T) -> __modf_result_T' where: 'T' is 'abstract-float', 'f32' or 'f16'
- 'modf(vecN<T>) -> __modf_result_vecN_T' where: 'T' is 'abstract-float', 'f32' or 'f16'
+ • 'modf(T ✓ ) -> __modf_result_T' where:
+ ✓ 'T' is 'abstract-float', 'f32' or 'f16'
+ • 'modf(vecN<T> ✗ ) -> __modf_result_vecN_T' where:
+ ✗ 'T' is 'abstract-float', 'f32' or 'f16'
)");
}
@@ -1372,8 +1408,10 @@
EXPECT_EQ(r()->error(), R"(error: no matching call to 'modf(f32, f32)'
2 candidate functions:
- 'modf(T) -> __modf_result_T' where: 'T' is 'abstract-float', 'f32' or 'f16'
- 'modf(vecN<T>) -> __modf_result_vecN_T' where: 'T' is 'abstract-float', 'f32' or 'f16'
+ • 'modf(T ✓ ) -> __modf_result_T' where:
+ ✓ 'T' is 'abstract-float', 'f32' or 'f16'
+ • 'modf(vecN<T> ✗ ) -> __modf_result_vecN_T' where:
+ ✗ 'T' is 'abstract-float', 'f32' or 'f16'
)");
}
@@ -1388,8 +1426,10 @@
R"(error: no matching call to 'modf(vec2<f32>, ptr<workgroup, vec4<f32>, read_write>)'
2 candidate functions:
- 'modf(T) -> __modf_result_T' where: 'T' is 'abstract-float', 'f32' or 'f16'
- 'modf(vecN<T>) -> __modf_result_vecN_T' where: 'T' is 'abstract-float', 'f32' or 'f16'
+ • 'modf(vecN<T> ✓ ) -> __modf_result_vecN_T' where:
+ ✓ 'T' is 'abstract-float', 'f32' or 'f16'
+ • 'modf(T ✗ ) -> __modf_result_T' where:
+ ✗ 'T' is 'abstract-float', 'f32' or 'f16'
)");
}
@@ -1429,7 +1469,8 @@
EXPECT_EQ(r()->error(), R"(error: no matching call to 'normalize()'
1 candidate function:
- 'normalize(vecN<T>) -> vecN<T>' where: 'T' is 'abstract-float', 'f32' or 'f16'
+ • 'normalize(vecN<T> ✗ ) -> vecN<T>' where:
+ ✗ 'T' is 'abstract-float', 'f32' or 'f16'
)");
}
@@ -1946,7 +1987,8 @@
EXPECT_EQ(r()->error(), R"(error: no matching call to 'determinant(mat2x3<f32>)'
1 candidate function:
- 'determinant(matNxN<T>) -> T' where: 'T' is 'abstract-float', 'f32' or 'f16'
+ • 'determinant(matNxN<T> ✗ ) -> T' where:
+ ✗ 'T' is 'abstract-float', 'f32' or 'f16'
)");
}
@@ -1961,7 +2003,8 @@
EXPECT_EQ(r()->error(), R"(error: no matching call to 'determinant(f32)'
1 candidate function:
- 'determinant(matNxN<T>) -> T' where: 'T' is 'abstract-float', 'f32' or 'f16'
+ • 'determinant(matNxN<T> ✗ ) -> T' where:
+ ✗ 'T' is 'abstract-float', 'f32' or 'f16'
)");
}
@@ -2030,7 +2073,8 @@
R"(error: no matching call to 'dot(f32, f32)'
1 candidate function:
- 'dot(vecN<T>, vecN<T>) -> T' where: 'T' is 'abstract-float', 'abstract-int', 'f32', 'i32', 'u32' or 'f16'
+ • 'dot(vecN<T> ✗ , vecN<T> ✗ ) -> T' where:
+ ✗ 'T' is 'abstract-float', 'abstract-int', 'f32', 'i32', 'u32' or 'f16'
)");
}
@@ -2082,8 +2126,12 @@
EXPECT_EQ(r()->error(), "error: no matching call to '" + name +
"()'\n\n"
- "2 candidate functions:\n '" +
- name + "(f32) -> f32'\n '" + name + "(vecN<f32>) -> vecN<f32>'\n");
+ "2 candidate functions:\n"
+ " • '" +
+ name +
+ "(f32 ✗ ) -> f32'\n"
+ " • '" +
+ name + "(vecN<f32> ✗ ) -> vecN<f32>'\n");
}
INSTANTIATE_TEST_SUITE_P(ResolverTest,
diff --git a/src/tint/lang/wgsl/resolver/builtin_validation_test.cc b/src/tint/lang/wgsl/resolver/builtin_validation_test.cc
index 0c063d8..6b55f36 100644
--- a/src/tint/lang/wgsl/resolver/builtin_validation_test.cc
+++ b/src/tint/lang/wgsl/resolver/builtin_validation_test.cc
@@ -167,11 +167,12 @@
EXPECT_EQ(r()->error(), R"(56:78 error: no matching constructor for 'i32(f32, f32, f32)'
2 candidate constructors:
- 'i32(i32) -> i32'
- 'i32() -> i32'
+ • 'i32(i32 ✗ ) -> i32'
+ • 'i32() -> i32'
1 candidate conversion:
- 'i32(T) -> i32' where: 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'u32' or 'bool'
+ • 'i32(T ✓ ) -> i32' where:
+ ✓ 'T' is 'abstract-int', 'abstract-float', 'f32', 'f16', 'u32' or 'bool'
)");
}
@@ -781,7 +782,7 @@
R"(error: no matching call to 'workgroupUniformLoad(ptr<storage, i32, read_write>)'
1 candidate function:
- 'workgroupUniformLoad(ptr<workgroup, T, read_write>) -> T'
+ • 'workgroupUniformLoad(ptr<workgroup, T, read_write> ✗ ) -> T'
)");
}
diff --git a/src/tint/lang/wgsl/resolver/call_validation_test.cc b/src/tint/lang/wgsl/resolver/call_validation_test.cc
index 001fb4e..b10f3fc 100644
--- a/src/tint/lang/wgsl/resolver/call_validation_test.cc
+++ b/src/tint/lang/wgsl/resolver/call_validation_test.cc
@@ -522,8 +522,11 @@
R"(12:34 error: no matching call to 'min<i32>(abstract-int, abstract-int)'
2 candidate functions:
- 'min(T, T) -> T' where: 'T' is 'abstract-float', 'abstract-int', 'f32', 'i32', 'u32' or 'f16'
- 'min(vecN<T>, vecN<T>) -> vecN<T>' where: 'T' is 'abstract-float', 'abstract-int', 'f32', 'i32', 'u32' or 'f16'
+ • 'min(T ✓ , T ✓ ) -> T' where:
+ ✗ overload expects 0 template arguments
+ ✓ 'T' is 'abstract-float', 'abstract-int', 'f32', 'i32', 'u32' or 'f16'
+ • 'min(vecN<T> ✗ , vecN<T> ✗ ) -> vecN<T>' where:
+ ✗ 'T' is 'abstract-float', 'abstract-int', 'f32', 'i32', 'u32' or 'f16'
)");
}
diff --git a/src/tint/lang/wgsl/wgsl.def b/src/tint/lang/wgsl/wgsl.def
index e61ab87..8a1740b 100644
--- a/src/tint/lang/wgsl/wgsl.def
+++ b/src/tint/lang/wgsl/wgsl.def
@@ -542,18 +542,18 @@
@must_use fn textureSampleLevel[A: iu32, L: iu32](texture: texture_depth_cube_array,sampler: sampler, coords: vec3<f32>, array_index: A, level: L) -> f32
@must_use fn textureSampleBaseClampToEdge(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>) -> vec4<f32>
@must_use fn textureSampleBaseClampToEdge(texture: texture_external, sampler: sampler, coords: vec2<f32>) -> vec4<f32>
-fn textureStore[C: iu32](texture: texture_storage_1d<f32_texel_format, writable>, coords: C, value: vec4<f32>)
-fn textureStore[C: iu32](texture: texture_storage_2d<f32_texel_format, writable>, coords: vec2<C>, value: vec4<f32>)
-fn textureStore[C: iu32, A: iu32](texture: texture_storage_2d_array<f32_texel_format, writable>, coords: vec2<C>, array_index: A, value: vec4<f32>)
-fn textureStore[C: iu32](texture: texture_storage_3d<f32_texel_format, writable>, coords: vec3<C>, value: vec4<f32>)
-fn textureStore[C: iu32](texture: texture_storage_1d<i32_texel_format, writable>, coords: C, value: vec4<i32>)
-fn textureStore[C: iu32](texture: texture_storage_2d<i32_texel_format, writable>, coords: vec2<C>, value: vec4<i32>)
-fn textureStore[C: iu32, A: iu32](texture: texture_storage_2d_array<i32_texel_format, writable>, coords: vec2<C>, array_index: A, value: vec4<i32>)
-fn textureStore[C: iu32](texture: texture_storage_3d<i32_texel_format, writable>, coords: vec3<C>, value: vec4<i32>)
-fn textureStore[C: iu32](texture: texture_storage_1d<u32_texel_format, writable>, coords: C, value: vec4<u32>)
-fn textureStore[C: iu32](texture: texture_storage_2d<u32_texel_format, writable>, coords: vec2<C>, value: vec4<u32>)
-fn textureStore[C: iu32, A: iu32](texture: texture_storage_2d_array<u32_texel_format, writable>, coords: vec2<C>, array_index: A, value: vec4<u32>)
-fn textureStore[C: iu32](texture: texture_storage_3d<u32_texel_format, writable>, coords: vec3<C>, value: vec4<u32>)
+fn textureStore[C: iu32, F: f32_texel_format, W: writable](texture: texture_storage_1d<F, W>, coords: C, value: vec4<f32>)
+fn textureStore[C: iu32, F: f32_texel_format, W: writable](texture: texture_storage_2d<F, W>, coords: vec2<C>, value: vec4<f32>)
+fn textureStore[C: iu32, F: f32_texel_format, W: writable, A: iu32](texture: texture_storage_2d_array<F, W>, coords: vec2<C>, array_index: A, value: vec4<f32>)
+fn textureStore[C: iu32, F: f32_texel_format, W: writable](texture: texture_storage_3d<F, W>, coords: vec3<C>, value: vec4<f32>)
+fn textureStore[C: iu32, F: i32_texel_format, W: writable](texture: texture_storage_1d<F, W>, coords: C, value: vec4<i32>)
+fn textureStore[C: iu32, F: i32_texel_format, W: writable](texture: texture_storage_2d<F, W>, coords: vec2<C>, value: vec4<i32>)
+fn textureStore[C: iu32, F: i32_texel_format, W: writable, A: iu32](texture: texture_storage_2d_array<F, W>, coords: vec2<C>, array_index: A, value: vec4<i32>)
+fn textureStore[C: iu32, F: i32_texel_format, W: writable](texture: texture_storage_3d<F, W>, coords: vec3<C>, value: vec4<i32>)
+fn textureStore[C: iu32, F: u32_texel_format, W: writable](texture: texture_storage_1d<F, W>, coords: C, value: vec4<u32>)
+fn textureStore[C: iu32, F: u32_texel_format, W: writable](texture: texture_storage_2d<F, W>, coords: vec2<C>, value: vec4<u32>)
+fn textureStore[C: iu32, F: u32_texel_format, W: writable, A: iu32](texture: texture_storage_2d_array<F, W>, coords: vec2<C>, array_index: A, value: vec4<u32>)
+fn textureStore[C: iu32, F: u32_texel_format, W: writable](texture: texture_storage_3d<F, W>, coords: vec3<C>, value: vec4<u32>)
@must_use fn textureLoad[T: fiu32, C: iu32, L: iu32](texture: texture_1d<T>, coords: C, level: L) -> vec4<T>
@must_use fn textureLoad[T: fiu32, C: iu32, L: iu32](texture: texture_2d<T>, coords: vec2<C>, level: L) -> vec4<T>
@must_use fn textureLoad[T: fiu32, C: iu32, A: iu32, L: iu32](texture: texture_2d_array<T>, coords: vec2<C>, array_index: A, level: L) -> vec4<T>
@@ -563,18 +563,18 @@
@must_use fn textureLoad[C: iu32, A: iu32, L: iu32](texture: texture_depth_2d_array, coords: vec2<C>, array_index: A, level: L) -> f32
@must_use fn textureLoad[C: iu32, S: iu32](texture: texture_depth_multisampled_2d, coords: vec2<C>, sample_index: S) -> f32
@must_use fn textureLoad[C: iu32](texture: texture_external, coords: vec2<C>) -> vec4<f32>
-@must_use fn textureLoad[C: iu32](texture: texture_storage_1d<f32_texel_format, readable>, coords: C) -> vec4<f32>
-@must_use fn textureLoad[C: iu32](texture: texture_storage_1d<i32_texel_format, readable>, coords: C) -> vec4<i32>
-@must_use fn textureLoad[C: iu32](texture: texture_storage_1d<u32_texel_format, readable>, coords: C) -> vec4<u32>
-@must_use fn textureLoad[C: iu32](texture: texture_storage_2d<f32_texel_format, readable>, coords: vec2<C>) -> vec4<f32>
-@must_use fn textureLoad[C: iu32](texture: texture_storage_2d<i32_texel_format, readable>, coords: vec2<C>) -> vec4<i32>
-@must_use fn textureLoad[C: iu32](texture: texture_storage_2d<u32_texel_format, readable>, coords: vec2<C>) -> vec4<u32>
-@must_use fn textureLoad[C: iu32, A: iu32](texture: texture_storage_2d_array<f32_texel_format, readable>, coords: vec2<C>, array_index: A) -> vec4<f32>
-@must_use fn textureLoad[C: iu32, A: iu32](texture: texture_storage_2d_array<i32_texel_format, readable>, coords: vec2<C>, array_index: A) -> vec4<i32>
-@must_use fn textureLoad[C: iu32, A: iu32](texture: texture_storage_2d_array<u32_texel_format, readable>, coords: vec2<C>, array_index: A) -> vec4<u32>
-@must_use fn textureLoad[C: iu32](texture: texture_storage_3d<f32_texel_format, readable>, coords: vec3<C>) -> vec4<f32>
-@must_use fn textureLoad[C: iu32](texture: texture_storage_3d<i32_texel_format, readable>, coords: vec3<C>) -> vec4<i32>
-@must_use fn textureLoad[C: iu32](texture: texture_storage_3d<u32_texel_format, readable>, coords: vec3<C>) -> vec4<u32>
+@must_use fn textureLoad[C: iu32, F: f32_texel_format, R: readable](texture: texture_storage_1d<F, R>, coords: C) -> vec4<f32>
+@must_use fn textureLoad[C: iu32, F: i32_texel_format, R: readable](texture: texture_storage_1d<F, R>, coords: C) -> vec4<i32>
+@must_use fn textureLoad[C: iu32, F: u32_texel_format, R: readable](texture: texture_storage_1d<F, R>, coords: C) -> vec4<u32>
+@must_use fn textureLoad[C: iu32, F: f32_texel_format, R: readable](texture: texture_storage_2d<F, R>, coords: vec2<C>) -> vec4<f32>
+@must_use fn textureLoad[C: iu32, F: i32_texel_format, R: readable](texture: texture_storage_2d<F, R>, coords: vec2<C>) -> vec4<i32>
+@must_use fn textureLoad[C: iu32, F: u32_texel_format, R: readable](texture: texture_storage_2d<F, R>, coords: vec2<C>) -> vec4<u32>
+@must_use fn textureLoad[C: iu32, F: f32_texel_format, R: readable, A: iu32](texture: texture_storage_2d_array<F, R>, coords: vec2<C>, array_index: A) -> vec4<f32>
+@must_use fn textureLoad[C: iu32, F: i32_texel_format, R: readable, A: iu32](texture: texture_storage_2d_array<F, R>, coords: vec2<C>, array_index: A) -> vec4<i32>
+@must_use fn textureLoad[C: iu32, F: u32_texel_format, R: readable, A: iu32](texture: texture_storage_2d_array<F, R>, coords: vec2<C>, array_index: A) -> vec4<u32>
+@must_use fn textureLoad[C: iu32, F: f32_texel_format, R: readable](texture: texture_storage_3d<F, R>, coords: vec3<C>) -> vec4<f32>
+@must_use fn textureLoad[C: iu32, F: i32_texel_format, R: readable](texture: texture_storage_3d<F, R>, coords: vec3<C>) -> vec4<i32>
+@must_use fn textureLoad[C: iu32, F: u32_texel_format, R: readable](texture: texture_storage_3d<F, R>, coords: vec3<C>) -> vec4<u32>
@stage("fragment", "compute") fn atomicLoad[T: iu32, S: workgroup_or_storage](ptr<S, atomic<T>, read_write>) -> T
@stage("fragment", "compute") fn atomicStore[T: iu32, S: workgroup_or_storage](ptr<S, atomic<T>, read_write>, T)
diff --git a/src/tint/utils/BUILD.cmake b/src/tint/utils/BUILD.cmake
index badeb73..1771b07 100644
--- a/src/tint/utils/BUILD.cmake
+++ b/src/tint/utils/BUILD.cmake
@@ -53,5 +53,6 @@
include(utils/socket/BUILD.cmake)
include(utils/strconv/BUILD.cmake)
include(utils/symbol/BUILD.cmake)
+include(utils/system/BUILD.cmake)
include(utils/text/BUILD.cmake)
include(utils/traits/BUILD.cmake)
diff --git a/src/tint/utils/system/BUILD.bazel b/src/tint/utils/system/BUILD.bazel
new file mode 100644
index 0000000..1cac5ca
--- /dev/null
+++ b/src/tint/utils/system/BUILD.bazel
@@ -0,0 +1,121 @@
+# Copyright 2024 The Dawn & Tint Authors
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# 1. Redistributions of source code must retain the above copyright notice, this
+# list of conditions and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright notice,
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+#
+# 3. Neither the name of the copyright holder nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+################################################################################
+# File generated by 'tools/src/cmd/gen' using the template:
+# tools/src/cmd/gen/build/BUILD.bazel.tmpl
+#
+# To regenerate run: './tools/run gen'
+#
+# Do not modify this file directly
+################################################################################
+
+load("//src/tint:flags.bzl", "COPTS")
+load("@bazel_skylib//lib:selects.bzl", "selects")
+cc_library(
+ name = "system",
+ srcs = [
+ ] + select({
+ ":_not_tint_build_is_linux__and__not_tint_build_is_mac__and__not_tint_build_is_win_": [
+ "terminal_other.cc",
+ ],
+ "//conditions:default": [],
+ }) + select({
+ ":_not_tint_build_is_win_": [
+ "env_other.cc",
+ ],
+ "//conditions:default": [],
+ }) + select({
+ ":tint_build_is_linux_or_tint_build_is_mac": [
+ "terminal_posix.cc",
+ ],
+ "//conditions:default": [],
+ }) + select({
+ ":tint_build_is_win": [
+ "env_windows.cc",
+ "terminal_windows.cc",
+ ],
+ "//conditions:default": [],
+ }),
+ hdrs = [
+ "env.h",
+ "terminal.h",
+ ],
+ deps = [
+ "//src/tint/utils/macros",
+ ],
+ copts = COPTS,
+ visibility = ["//visibility:public"],
+)
+
+alias(
+ name = "tint_build_is_linux",
+ actual = "//src/tint:tint_build_is_linux_true",
+)
+
+alias(
+ name = "_not_tint_build_is_linux_",
+ actual = "//src/tint:tint_build_is_linux_false",
+)
+
+alias(
+ name = "tint_build_is_mac",
+ actual = "//src/tint:tint_build_is_mac_true",
+)
+
+alias(
+ name = "_not_tint_build_is_mac_",
+ actual = "//src/tint:tint_build_is_mac_false",
+)
+
+alias(
+ name = "tint_build_is_win",
+ actual = "//src/tint:tint_build_is_win_true",
+)
+
+alias(
+ name = "_not_tint_build_is_win_",
+ actual = "//src/tint:tint_build_is_win_false",
+)
+
+selects.config_setting_group(
+ name = "tint_build_is_linux_or_tint_build_is_mac",
+ match_any = [
+ "tint_build_is_linux",
+ "tint_build_is_mac",
+ ],
+)
+
+selects.config_setting_group(
+ name = "_not_tint_build_is_linux__and__not_tint_build_is_mac__and__not_tint_build_is_win_",
+ match_all = [
+ ":_not_tint_build_is_linux_",
+ ":_not_tint_build_is_mac_",
+ ":_not_tint_build_is_win_",
+ ],
+)
+
diff --git a/src/tint/utils/system/BUILD.cmake b/src/tint/utils/system/BUILD.cmake
new file mode 100644
index 0000000..748da7d
--- /dev/null
+++ b/src/tint/utils/system/BUILD.cmake
@@ -0,0 +1,73 @@
+# Copyright 2024 The Dawn & Tint Authors
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# 1. Redistributions of source code must retain the above copyright notice, this
+# list of conditions and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright notice,
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+#
+# 3. Neither the name of the copyright holder nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+################################################################################
+# File generated by 'tools/src/cmd/gen' using the template:
+# tools/src/cmd/gen/build/BUILD.cmake.tmpl
+#
+# To regenerate run: './tools/run gen'
+#
+# Do not modify this file directly
+################################################################################
+
+################################################################################
+# Target: tint_utils_system
+# Kind: lib
+################################################################################
+tint_add_target(tint_utils_system lib
+ utils/system/env.h
+ utils/system/terminal.h
+)
+
+tint_target_add_dependencies(tint_utils_system lib
+ tint_utils_macros
+)
+
+if((NOT TINT_BUILD_IS_LINUX) AND (NOT TINT_BUILD_IS_MAC) AND (NOT TINT_BUILD_IS_WIN))
+ tint_target_add_sources(tint_utils_system lib
+ "utils/system/terminal_other.cc"
+ )
+endif((NOT TINT_BUILD_IS_LINUX) AND (NOT TINT_BUILD_IS_MAC) AND (NOT TINT_BUILD_IS_WIN))
+
+if((NOT TINT_BUILD_IS_WIN))
+ tint_target_add_sources(tint_utils_system lib
+ "utils/system/env_other.cc"
+ )
+endif((NOT TINT_BUILD_IS_WIN))
+
+if(TINT_BUILD_IS_LINUX OR TINT_BUILD_IS_MAC)
+ tint_target_add_sources(tint_utils_system lib
+ "utils/system/terminal_posix.cc"
+ )
+endif(TINT_BUILD_IS_LINUX OR TINT_BUILD_IS_MAC)
+
+if(TINT_BUILD_IS_WIN)
+ tint_target_add_sources(tint_utils_system lib
+ "utils/system/env_windows.cc"
+ "utils/system/terminal_windows.cc"
+ )
+endif(TINT_BUILD_IS_WIN)
diff --git a/src/tint/utils/system/BUILD.gn b/src/tint/utils/system/BUILD.gn
new file mode 100644
index 0000000..5f101c1
--- /dev/null
+++ b/src/tint/utils/system/BUILD.gn
@@ -0,0 +1,66 @@
+# Copyright 2024 The Dawn & Tint Authors
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# 1. Redistributions of source code must retain the above copyright notice, this
+# list of conditions and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright notice,
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+#
+# 3. Neither the name of the copyright holder nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+################################################################################
+# File generated by 'tools/src/cmd/gen' using the template:
+# tools/src/cmd/gen/build/BUILD.gn.tmpl
+#
+# To regenerate run: './tools/run gen'
+#
+# Do not modify this file directly
+################################################################################
+
+import("../../../../scripts/tint_overrides_with_defaults.gni")
+
+import("${tint_src_dir}/tint.gni")
+
+libtint_source_set("system") {
+ sources = [
+ "env.h",
+ "terminal.h",
+ ]
+ deps = [ "${tint_src_dir}/utils/macros" ]
+
+ if (!tint_build_is_linux && !tint_build_is_mac && !tint_build_is_win) {
+ sources += [ "terminal_other.cc" ]
+ }
+
+ if (!tint_build_is_win) {
+ sources += [ "env_other.cc" ]
+ }
+
+ if (tint_build_is_linux || tint_build_is_mac) {
+ sources += [ "terminal_posix.cc" ]
+ }
+
+ if (tint_build_is_win) {
+ sources += [
+ "env_windows.cc",
+ "terminal_windows.cc",
+ ]
+ }
+}
diff --git a/src/tint/api/options/array_length_from_uniform_test.cc b/src/tint/utils/system/env.h
similarity index 81%
copy from src/tint/api/options/array_length_from_uniform_test.cc
copy to src/tint/utils/system/env.h
index c62092a..bcf2b46 100644
--- a/src/tint/api/options/array_length_from_uniform_test.cc
+++ b/src/tint/utils/system/env.h
@@ -25,16 +25,18 @@
// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#include "src/tint/api/options/array_length_from_uniform.h"
+#ifndef SRC_TINT_UTILS_SYSTEM_ENV_H_
+#define SRC_TINT_UTILS_SYSTEM_ENV_H_
-#include <gtest/gtest.h>
+#include <string>
namespace tint {
-namespace {
-TEST(TintCheckAllFieldsReflected, ApiOptionsArrayLengthFromUniformTest) {
- TINT_ASSERT_ALL_FIELDS_REFLECTED(ArrayLengthFromUniformOptions);
-}
+/// @param name the name of the environment variable
+/// @returns the environment variable value with the given name, or an empty string if the variable
+/// was not found.
+std::string GetEnvVar(std::string_view name);
-} // namespace
} // namespace tint
+
+#endif // SRC_TINT_UTILS_SYSTEM_ENV_H_
diff --git a/src/tint/api/options/array_length_from_uniform_test.cc b/src/tint/utils/system/env_other.cc
similarity index 85%
copy from src/tint/api/options/array_length_from_uniform_test.cc
copy to src/tint/utils/system/env_other.cc
index c62092a..cdf5759 100644
--- a/src/tint/api/options/array_length_from_uniform_test.cc
+++ b/src/tint/utils/system/env_other.cc
@@ -25,16 +25,20 @@
// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#include "src/tint/api/options/array_length_from_uniform.h"
+// GEN_BUILD:CONDITION(!tint_build_is_win)
-#include <gtest/gtest.h>
+#include "src/tint/utils/system/env.h"
+
+#include <cstdlib>
+#include <string_view>
namespace tint {
-namespace {
-TEST(TintCheckAllFieldsReflected, ApiOptionsArrayLengthFromUniformTest) {
- TINT_ASSERT_ALL_FIELDS_REFLECTED(ArrayLengthFromUniformOptions);
+std::string GetEnvVar(std::string_view name) {
+ if (auto* val = std::getenv(name.data())) {
+ return val;
+ }
+ return "";
}
-} // namespace
} // namespace tint
diff --git a/src/tint/api/options/array_length_from_uniform_test.cc b/src/tint/utils/system/env_windows.cc
similarity index 78%
copy from src/tint/api/options/array_length_from_uniform_test.cc
copy to src/tint/utils/system/env_windows.cc
index c62092a..534b358 100644
--- a/src/tint/api/options/array_length_from_uniform_test.cc
+++ b/src/tint/utils/system/env_windows.cc
@@ -25,16 +25,25 @@
// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#include "src/tint/api/options/array_length_from_uniform.h"
+// GEN_BUILD:CONDITION(tint_build_is_win)
-#include <gtest/gtest.h>
+#include "src/tint/utils/system/env.h"
+
+#include <stdlib.h>
+#include <string_view>
namespace tint {
-namespace {
-TEST(TintCheckAllFieldsReflected, ApiOptionsArrayLengthFromUniformTest) {
- TINT_ASSERT_ALL_FIELDS_REFLECTED(ArrayLengthFromUniformOptions);
+std::string GetEnvVar(std::string_view name) {
+ // Use _dupenv_s to avoid unsafe warnings about std::getenv
+ char* value = nullptr;
+ _dupenv_s(&value, nullptr, name.data());
+ if (value) {
+ std::string result = value;
+ free(value);
+ return result;
+ }
+ return "";
}
-} // namespace
} // namespace tint
diff --git a/src/tint/api/options/array_length_from_uniform_test.cc b/src/tint/utils/system/terminal.h
similarity index 71%
copy from src/tint/api/options/array_length_from_uniform_test.cc
copy to src/tint/utils/system/terminal.h
index c62092a..2374496 100644
--- a/src/tint/api/options/array_length_from_uniform_test.cc
+++ b/src/tint/utils/system/terminal.h
@@ -25,16 +25,25 @@
// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#include "src/tint/api/options/array_length_from_uniform.h"
+#ifndef SRC_TINT_UTILS_SYSTEM_TERMINAL_H_
+#define SRC_TINT_UTILS_SYSTEM_TERMINAL_H_
-#include <gtest/gtest.h>
+#include <cstdio>
+#include <optional>
namespace tint {
-namespace {
-TEST(TintCheckAllFieldsReflected, ApiOptionsArrayLengthFromUniformTest) {
- TINT_ASSERT_ALL_FIELDS_REFLECTED(ArrayLengthFromUniformOptions);
-}
+/// Detects whether the terminal at @p out supports color output.
+/// @param out the file to print to.
+/// @return true if the terminal supports colors.
+bool TerminalSupportsColors(FILE* out);
-} // namespace
+/// Attempts to detect whether the terminal at @p out is dark.
+/// @param out the file to print to.
+/// @returns true if the terminal is dark, false if the terminal is light, or nullopt if
+/// unknown.
+std::optional<bool> TerminalIsDark(FILE* out);
+
} // namespace tint
+
+#endif // SRC_TINT_UTILS_SYSTEM_TERMINAL_H_
diff --git a/src/tint/api/options/array_length_from_uniform_test.cc b/src/tint/utils/system/terminal_other.cc
similarity index 85%
rename from src/tint/api/options/array_length_from_uniform_test.cc
rename to src/tint/utils/system/terminal_other.cc
index c62092a..96e7263 100644
--- a/src/tint/api/options/array_length_from_uniform_test.cc
+++ b/src/tint/utils/system/terminal_other.cc
@@ -25,16 +25,18 @@
// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#include "src/tint/api/options/array_length_from_uniform.h"
+// GEN_BUILD:CONDITION((!tint_build_is_linux) && (!tint_build_is_mac) && (!tint_build_is_win))
-#include <gtest/gtest.h>
+#include "src/tint/utils/system/terminal.h"
namespace tint {
-namespace {
-TEST(TintCheckAllFieldsReflected, ApiOptionsArrayLengthFromUniformTest) {
- TINT_ASSERT_ALL_FIELDS_REFLECTED(ArrayLengthFromUniformOptions);
+bool TerminalSupportsColors(FILE*) {
+ return false;
}
-} // namespace
+std::optional<bool> TerminalIsDark(FILE*) {
+ return std::nullopt;
+}
+
} // namespace tint
diff --git a/src/tint/utils/system/terminal_posix.cc b/src/tint/utils/system/terminal_posix.cc
new file mode 100644
index 0000000..699966d
--- /dev/null
+++ b/src/tint/utils/system/terminal_posix.cc
@@ -0,0 +1,184 @@
+// Copyright 2024 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// GEN_BUILD:CONDITION(tint_build_is_linux || tint_build_is_mac)
+
+#include <unistd.h>
+
+#include <termios.h>
+#include <chrono>
+#include <cstdint>
+#include <cstdio>
+#include <cstring>
+#include <optional>
+#include <string_view>
+#include <utility>
+
+#include "src/tint/utils/macros/defer.h"
+#include "src/tint/utils/system/env.h"
+#include "src/tint/utils/system/terminal.h"
+
+namespace tint {
+
+bool TerminalSupportsColors(FILE* f) {
+ if (!isatty(fileno(f))) {
+ return false;
+ }
+
+ if (auto term = GetEnvVar("TERM"); !term.empty()) {
+ return term == "cygwin" || term == "linux" || term == "rxvt-unicode-256color" ||
+ term == "rxvt-unicode" || term == "screen-256color" || term == "screen" ||
+ term == "tmux-256color" || term == "tmux" || term == "xterm-256color" ||
+ term == "xterm-color" || term == "xterm";
+ }
+
+ return false;
+}
+
+/// Probes the terminal using a Device Control escape sequence to get the background color.
+/// @see https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Device-Control-functions
+std::optional<bool> TerminalIsDark(FILE* out) {
+ if (!TerminalSupportsColors(out)) {
+ return std::nullopt;
+ }
+
+ // Get the file descriptor for 'out'
+ int out_fd = fileno(out);
+ if (out_fd == -1) {
+ return std::nullopt;
+ }
+
+ // Store the current attributes for 'out', restore it before returning
+ termios original_state{};
+ tcgetattr(out_fd, &original_state);
+ TINT_DEFER(tcsetattr(out_fd, TCSADRAIN, &original_state));
+
+ // Prevent echoing.
+ termios state = original_state;
+ state.c_lflag &= ~static_cast<tcflag_t>(ECHO | ICANON);
+ tcsetattr(out_fd, TCSADRAIN, &state);
+
+ // Emit the device control escape sequence to query the terminal colors.
+ static constexpr std::string_view kQuery = "\x1b]11;?\x07";
+ fwrite(kQuery.data(), 1, kQuery.length(), out);
+ fflush(out);
+
+ // Timeout for attempting to read the response.
+ static constexpr auto kTimeout = std::chrono::milliseconds(100);
+
+ // Record the start time.
+ auto start = std::chrono::steady_clock::now();
+
+ // Helpers for parsing the response.
+ std::optional<char> peek;
+ auto read = [&]() -> std::optional<char> {
+ if (peek) {
+ char c = *peek;
+ peek.reset();
+ return c;
+ }
+ while ((std::chrono::steady_clock::now() - start) < kTimeout) {
+ char c;
+ if (fread(&c, 1, 1, stdin) == 1) {
+ return c;
+ }
+ }
+ return std::nullopt;
+ };
+
+ auto match = [&](std::string_view str) {
+ for (char c : str) {
+ if (c != read()) {
+ return false;
+ }
+ }
+ return true;
+ };
+
+ struct Hex {
+ uint32_t num = 0; // The parsed hex number
+ uint32_t len = 0; // Number of hex digits parsed
+ };
+ auto hex = [&] {
+ uint32_t num = 0;
+ uint32_t len = 0;
+ while (auto c = read()) {
+ if (c >= '0' && c <= '9') {
+ num = num * 16 + static_cast<uint32_t>(*c - '0');
+ len++;
+ } else if (c >= 'a' && c <= 'z') {
+ num = num * 16 + 10 + static_cast<uint32_t>(*c - 'a');
+ len++;
+ } else if (c >= 'A' && c <= 'Z') {
+ num = num * 16 + 10 + static_cast<uint32_t>(*c - 'A');
+ len++;
+ } else {
+ peek = c;
+ break;
+ }
+ }
+ return Hex{num, len};
+ };
+
+ if (!match("\033]11;rgb:")) {
+ return std::nullopt;
+ }
+
+ auto r_i = hex();
+ if (!match("/")) {
+ return std::nullopt;
+ }
+ auto g_i = hex();
+ if (!match("/")) {
+ return std::nullopt;
+ }
+ auto b_i = hex();
+
+ if (r_i.len != g_i.len || g_i.len != b_i.len) {
+ return std::nullopt;
+ }
+
+ uint32_t max = 0;
+ switch (r_i.len) {
+ case 2: // rr/gg/bb
+ max = 0xff;
+ break;
+ case 4: // rrrr/gggg/bbbb
+ max = 0xffff;
+ break;
+ default:
+ return std::nullopt;
+ }
+
+ // https://en.wikipedia.org/wiki/Relative_luminance
+ float r = static_cast<float>(r_i.num) / static_cast<float>(max);
+ float g = static_cast<float>(g_i.num) / static_cast<float>(max);
+ float b = static_cast<float>(b_i.num) / static_cast<float>(max);
+ return (0.2126f * r + 0.7152f * g + 0.0722f * b) < 0.5f;
+}
+
+} // namespace tint
diff --git a/src/tint/utils/system/terminal_windows.cc b/src/tint/utils/system/terminal_windows.cc
new file mode 100644
index 0000000..4ed2f78
--- /dev/null
+++ b/src/tint/utils/system/terminal_windows.cc
@@ -0,0 +1,92 @@
+// Copyright 2024 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// GEN_BUILD:CONDITION(tint_build_is_win)
+
+#include "src/tint/utils/macros/defer.h"
+#include "src/tint/utils/system/env.h"
+#include "src/tint/utils/system/terminal.h"
+
+#define WIN32_LEAN_AND_MEAN 1
+#include <Windows.h>
+
+namespace tint {
+namespace {
+
+HANDLE ConsoleHandleFrom(FILE* file) {
+ HANDLE handle = INVALID_HANDLE_VALUE;
+ if (file == stdout) {
+ handle = GetStdHandle(STD_OUTPUT_HANDLE);
+ } else if (file == stderr) {
+ handle = GetStdHandle(STD_ERROR_HANDLE);
+ } else {
+ return INVALID_HANDLE_VALUE;
+ }
+
+ CONSOLE_SCREEN_BUFFER_INFO info{};
+ if (GetConsoleScreenBufferInfo(handle, &info) == 0) {
+ return INVALID_HANDLE_VALUE;
+ }
+ return handle;
+}
+
+} // namespace
+
+bool TerminalSupportsColors(FILE* out) {
+ return ConsoleHandleFrom(out) != INVALID_HANDLE_VALUE;
+}
+
+std::optional<bool> TerminalIsDark(FILE* out) {
+ if (!GetEnvVar("WT_SESSION").empty()) {
+ // Windows terminal does not support querying the palette
+ // See: https://github.com/microsoft/terminal/issues/10639
+ return std::nullopt;
+ }
+
+ if (HANDLE handle = ConsoleHandleFrom(out); handle != INVALID_HANDLE_VALUE) {
+ if (HANDLE screen_buffer = CreateConsoleScreenBuffer(GENERIC_READ, FILE_SHARE_READ,
+ /* lpSecurityAttributes */ nullptr,
+ CONSOLE_TEXTMODE_BUFFER, nullptr)) {
+ TINT_DEFER(CloseHandle(screen_buffer));
+ CONSOLE_SCREEN_BUFFER_INFOEX info{};
+ info.cbSize = sizeof(info);
+ if (GetConsoleScreenBufferInfoEx(screen_buffer, &info)) {
+ COLORREF background = info.ColorTable[(info.wAttributes & 0xf0) >> 4];
+ // https://en.wikipedia.org/wiki/Relative_luminance
+ float r = static_cast<float>((background >> 0) & 0xff) / 255.0f;
+ float g = static_cast<float>((background >> 8) & 0xff) / 255.0f;
+ float b = static_cast<float>((background >> 16) & 0xff) / 255.0f;
+ return (0.2126f * r + 0.7152f * g + 0.0722f * b) < 0.5f;
+ }
+ }
+ }
+
+ // Unknown
+ return std::nullopt;
+}
+
+} // namespace tint
diff --git a/src/tint/utils/text/BUILD.bazel b/src/tint/utils/text/BUILD.bazel
index 0e7ee03..e73f66e 100644
--- a/src/tint/utils/text/BUILD.bazel
+++ b/src/tint/utils/text/BUILD.bazel
@@ -80,6 +80,7 @@
"//src/tint/utils/math",
"//src/tint/utils/memory",
"//src/tint/utils/rtti",
+ "//src/tint/utils/system",
"//src/tint/utils/traits",
],
copts = COPTS,
diff --git a/src/tint/utils/text/BUILD.cmake b/src/tint/utils/text/BUILD.cmake
index 7b19a11..2aa69bf 100644
--- a/src/tint/utils/text/BUILD.cmake
+++ b/src/tint/utils/text/BUILD.cmake
@@ -64,6 +64,7 @@
tint_utils_math
tint_utils_memory
tint_utils_rtti
+ tint_utils_system
tint_utils_traits
)
diff --git a/src/tint/utils/text/BUILD.gn b/src/tint/utils/text/BUILD.gn
index 8aaadd2..5460394 100644
--- a/src/tint/utils/text/BUILD.gn
+++ b/src/tint/utils/text/BUILD.gn
@@ -68,6 +68,7 @@
"${tint_src_dir}/utils/math",
"${tint_src_dir}/utils/memory",
"${tint_src_dir}/utils/rtti",
+ "${tint_src_dir}/utils/system",
"${tint_src_dir}/utils/traits",
]
diff --git a/src/tint/utils/text/styled_text_printer.cc b/src/tint/utils/text/styled_text_printer.cc
index be83c03..557b3ff 100644
--- a/src/tint/utils/text/styled_text_printer.cc
+++ b/src/tint/utils/text/styled_text_printer.cc
@@ -27,6 +27,7 @@
#include <cstring>
+#include "src/tint/utils/system/terminal.h"
#include "src/tint/utils/text/styled_text_printer.h"
namespace tint {
@@ -51,7 +52,8 @@
return std::make_unique<Plain>(out);
}
std::unique_ptr<StyledTextPrinter> StyledTextPrinter::Create(FILE* out) {
- return Create(out, StyledTextTheme::kDefault);
+ bool is_dark = TerminalIsDark(out).value_or(true);
+ return Create(out, is_dark ? StyledTextTheme::kDefaultDark : StyledTextTheme::kDefaultLight);
}
StyledTextPrinter::~StyledTextPrinter() = default;
diff --git a/src/tint/utils/text/styled_text_printer_other.cc b/src/tint/utils/text/styled_text_printer_other.cc
index eec09c0..4f32526 100644
--- a/src/tint/utils/text/styled_text_printer_other.cc
+++ b/src/tint/utils/text/styled_text_printer_other.cc
@@ -27,8 +27,6 @@
// GEN_BUILD:CONDITION((!tint_build_is_linux) && (!tint_build_is_mac) && (!tint_build_is_win))
-#include <cstring>
-
#include "src/tint/utils/text/styled_text_printer.h"
namespace tint {
diff --git a/src/tint/utils/text/styled_text_printer_posix.cc b/src/tint/utils/text/styled_text_printer_posix.cc
index e03ab52..7d34fed 100644
--- a/src/tint/utils/text/styled_text_printer_posix.cc
+++ b/src/tint/utils/text/styled_text_printer_posix.cc
@@ -28,43 +28,16 @@
// GEN_BUILD:CONDITION(tint_build_is_linux || tint_build_is_mac)
#include <unistd.h>
+#include <memory>
-#include <cstring>
-
-#include "src/tint/utils/text/styled_text.h"
+#include "src/tint/utils/system/terminal.h"
#include "src/tint/utils/text/styled_text_printer.h"
-#include "src/tint/utils/text/styled_text_theme.h"
-#include "src/tint/utils/text/text_style.h"
namespace tint {
-namespace {
-
-bool SupportsANSIEscape(FILE* f) {
- if (!isatty(fileno(f))) {
- return false;
- }
-
- const char* cterm = getenv("TERM");
- if (cterm == nullptr) {
- return false;
- }
-
- std::string term = getenv("TERM");
- if (term != "cygwin" && term != "linux" && term != "rxvt-unicode-256color" &&
- term != "rxvt-unicode" && term != "screen-256color" && term != "screen" &&
- term != "tmux-256color" && term != "tmux" && term != "xterm-256color" &&
- term != "xterm-color" && term != "xterm") {
- return false;
- }
-
- return true;
-}
-
-} // namespace
std::unique_ptr<StyledTextPrinter> StyledTextPrinter::Create(FILE* out,
const StyledTextTheme& theme) {
- if (SupportsANSIEscape(out)) {
+ if (TerminalSupportsColors(out)) {
return CreateANSI(out, theme);
}
return CreatePlain(out);
diff --git a/src/tint/utils/text/styled_text_printer_windows.cc b/src/tint/utils/text/styled_text_printer_windows.cc
index eb5b32b..ee9373b 100644
--- a/src/tint/utils/text/styled_text_printer_windows.cc
+++ b/src/tint/utils/text/styled_text_printer_windows.cc
@@ -59,6 +59,7 @@
std::unique_ptr<StyledTextPrinter> StyledTextPrinter::Create(FILE* out,
const StyledTextTheme& theme) {
if (HANDLE handle = ConsoleHandleFrom(out); handle != INVALID_HANDLE_VALUE) {
+ SetConsoleOutputCP(CP_UTF8);
if (SetConsoleMode(handle, ENABLE_PROCESSED_OUTPUT | ENABLE_VIRTUAL_TERMINAL_PROCESSING)) {
return CreateANSI(out, theme);
}
diff --git a/src/tint/utils/text/styled_text_theme.cc b/src/tint/utils/text/styled_text_theme.cc
index ba2944a..e243cd5 100644
--- a/src/tint/utils/text/styled_text_theme.cc
+++ b/src/tint/utils/text/styled_text_theme.cc
@@ -30,7 +30,7 @@
namespace tint {
-const StyledTextTheme StyledTextTheme::kDefault{
+const StyledTextTheme StyledTextTheme::kDefaultDark{
/* compare_match */ StyledTextTheme::Attributes{
/* foreground */ std::nullopt,
/* background */ Color{20, 100, 20},
@@ -137,6 +137,113 @@
},
};
+const StyledTextTheme StyledTextTheme::kDefaultLight{
+ /* compare_match */ StyledTextTheme::Attributes{
+ /* foreground */ std::nullopt,
+ /* background */ Color{190, 240, 190},
+ /* bold */ std::nullopt,
+ /* underlined */ std::nullopt,
+ },
+ /* compare_mismatch */
+ StyledTextTheme::Attributes{
+ /* foreground */ std::nullopt,
+ /* background */ Color{240, 190, 190},
+ /* bold */ std::nullopt,
+ /* underlined */ std::nullopt,
+ },
+ /* severity_success */
+ StyledTextTheme::Attributes{
+ /* foreground */ Color{0, 200, 0},
+ /* background */ std::nullopt,
+ /* bold */ std::nullopt,
+ /* underlined */ std::nullopt,
+ },
+ /* severity_warning */
+ StyledTextTheme::Attributes{
+ /* foreground */ Color{200, 200, 0},
+ /* background */ std::nullopt,
+ /* bold */ std::nullopt,
+ /* underlined */ std::nullopt,
+ },
+ /* severity_failure */
+ StyledTextTheme::Attributes{
+ /* foreground */ Color{200, 0, 0},
+ /* background */ std::nullopt,
+ /* bold */ std::nullopt,
+ /* underlined */ std::nullopt,
+ },
+ /* severity_fatal */
+ StyledTextTheme::Attributes{
+ /* foreground */ Color{200, 0, 200},
+ /* background */ std::nullopt,
+ /* bold */ std::nullopt,
+ /* underlined */ std::nullopt,
+ },
+ /* kind_code */
+ StyledTextTheme::Attributes{
+ /* foreground */ Color{10, 10, 10},
+ /* background */ Color{248, 248, 248},
+ /* bold */ std::nullopt,
+ /* underlined */ std::nullopt,
+ },
+ /* kind_keyword */
+ StyledTextTheme::Attributes{
+ /* foreground */ Color{175, 0, 219},
+ /* background */ std::nullopt,
+ /* bold */ std::nullopt,
+ /* underlined */ std::nullopt,
+ },
+ /* kind_variable */
+ StyledTextTheme::Attributes{
+ /* foreground */ Color{0, 16, 128},
+ /* background */ std::nullopt,
+ /* bold */ std::nullopt,
+ /* underlined */ std::nullopt,
+ },
+ /* kind_type */
+ StyledTextTheme::Attributes{
+ /* foreground */ Color{38, 127, 153},
+ /* background */ std::nullopt,
+ /* bold */ std::nullopt,
+ /* underlined */ std::nullopt,
+ },
+ /* kind_function */
+ StyledTextTheme::Attributes{
+ /* foreground */ Color{121, 94, 38},
+ /* background */ std::nullopt,
+ /* bold */ std::nullopt,
+ /* underlined */ std::nullopt,
+ },
+ /* kind_enum */
+ StyledTextTheme::Attributes{
+ /* foreground */ Color{0, 112, 193},
+ /* background */ std::nullopt,
+ /* bold */ std::nullopt,
+ /* underlined */ std::nullopt,
+ },
+ /* kind_literal */
+ StyledTextTheme::Attributes{
+ /* foreground */ Color{9, 134, 88},
+ /* background */ std::nullopt,
+ /* bold */ std::nullopt,
+ /* underlined */ std::nullopt,
+ },
+ /* kind_attribute */
+ StyledTextTheme::Attributes{
+ /* foreground */ Color{156, 220, 254},
+ /* background */ std::nullopt,
+ /* bold */ std::nullopt,
+ /* underlined */ std::nullopt,
+ },
+ /* kind_squiggle */
+ StyledTextTheme::Attributes{
+ /* foreground */ Color{0, 200, 255},
+ /* background */ std::nullopt,
+ /* bold */ std::nullopt,
+ /* underlined */ std::nullopt,
+ },
+};
+
StyledTextTheme::Attributes StyledTextTheme::Get(TextStyle text_style) const {
Attributes out;
out.bold = false;
diff --git a/src/tint/utils/text/styled_text_theme.h b/src/tint/utils/text/styled_text_theme.h
index c9dcfbb..b36db4f 100644
--- a/src/tint/utils/text/styled_text_theme.h
+++ b/src/tint/utils/text/styled_text_theme.h
@@ -40,8 +40,10 @@
/// StyledTextTheme describes the display theming for TextStyles
struct StyledTextTheme {
- /// The default theme
- static const StyledTextTheme kDefault;
+ /// The default dark theme
+ static const StyledTextTheme kDefaultDark;
+ /// The default light theme
+ static const StyledTextTheme kDefaultLight;
/// Color holds a 24-bit RGB color
struct Color {