From 4de90f0bb158271919658ec169bd9ba24ebb3d0c Mon Sep 17 00:00:00 2001 From: Antonio Maiorano Date: Wed, 27 Jul 2022 14:51:27 +0000 Subject: [PATCH] const eval of atan2 Bug: tint:1581 Change-Id: I6268e291540bc8c712f6925f0bcb82c5873359c7 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/96902 Commit-Queue: Antonio Maiorano Reviewed-by: Ben Clayton Kokoro: Kokoro --- src/tint/intrinsics.def | 5 +- src/tint/resolver/builtin_test.cc | 71 +- src/tint/resolver/const_eval.cc | 101 +- src/tint/resolver/const_eval.h | 11 + src/tint/resolver/const_eval_test.cc | 260 ++++- src/tint/resolver/intrinsic_table.inl | 970 +++++++++--------- src/tint/writer/spirv/builder_builtin_test.cc | 132 ++- .../builtins/gen/literal/atan2/034ace.wgsl | 43 + .../atan2/034ace.wgsl.expected.dxc.hlsl | 30 + .../atan2/034ace.wgsl.expected.fxc.hlsl | 30 + .../literal/atan2/034ace.wgsl.expected.glsl | 49 + .../literal/atan2/034ace.wgsl.expected.msl | 33 + .../literal/atan2/034ace.wgsl.expected.spvasm | 64 ++ .../literal/atan2/034ace.wgsl.expected.wgsl | 19 + .../builtins/gen/literal/atan2/3c2865.wgsl | 43 + .../atan2/3c2865.wgsl.expected.dxc.hlsl | 30 + .../atan2/3c2865.wgsl.expected.fxc.hlsl | 30 + .../literal/atan2/3c2865.wgsl.expected.glsl | 49 + .../literal/atan2/3c2865.wgsl.expected.msl | 33 + .../literal/atan2/3c2865.wgsl.expected.spvasm | 67 ++ .../literal/atan2/3c2865.wgsl.expected.wgsl | 19 + .../atan2/57fb13.wgsl.expected.dxc.hlsl | 2 +- .../atan2/57fb13.wgsl.expected.fxc.hlsl | 2 +- .../literal/atan2/57fb13.wgsl.expected.glsl | 6 +- .../literal/atan2/57fb13.wgsl.expected.msl | 2 +- .../literal/atan2/57fb13.wgsl.expected.spvasm | 37 +- .../atan2/96057c.wgsl.expected.dxc.hlsl | 2 +- .../atan2/96057c.wgsl.expected.fxc.hlsl | 2 +- .../literal/atan2/96057c.wgsl.expected.glsl | 6 +- .../literal/atan2/96057c.wgsl.expected.msl | 2 +- .../literal/atan2/96057c.wgsl.expected.spvasm | 31 +- .../atan2/a70d0d.wgsl.expected.dxc.hlsl | 2 +- .../atan2/a70d0d.wgsl.expected.fxc.hlsl | 2 +- .../literal/atan2/a70d0d.wgsl.expected.glsl | 6 +- .../literal/atan2/a70d0d.wgsl.expected.msl | 2 +- .../literal/atan2/a70d0d.wgsl.expected.spvasm | 37 +- .../atan2/ae713e.wgsl.expected.dxc.hlsl | 2 +- .../atan2/ae713e.wgsl.expected.fxc.hlsl | 2 +- .../literal/atan2/ae713e.wgsl.expected.glsl | 6 +- .../literal/atan2/ae713e.wgsl.expected.msl | 2 +- .../literal/atan2/ae713e.wgsl.expected.spvasm | 33 +- .../builtins/gen/literal/atan2/c19683.wgsl | 43 + .../atan2/c19683.wgsl.expected.dxc.hlsl | 30 + .../atan2/c19683.wgsl.expected.fxc.hlsl | 30 + .../literal/atan2/c19683.wgsl.expected.glsl | 49 + .../literal/atan2/c19683.wgsl.expected.msl | 33 + .../literal/atan2/c19683.wgsl.expected.spvasm | 67 ++ .../literal/atan2/c19683.wgsl.expected.wgsl | 19 + .../builtins/gen/literal/atan2/c4be45.wgsl | 43 + .../atan2/c4be45.wgsl.expected.dxc.hlsl | 30 + .../atan2/c4be45.wgsl.expected.fxc.hlsl | 30 + .../literal/atan2/c4be45.wgsl.expected.glsl | 49 + .../literal/atan2/c4be45.wgsl.expected.msl | 33 + .../literal/atan2/c4be45.wgsl.expected.spvasm | 65 ++ .../literal/atan2/c4be45.wgsl.expected.wgsl | 19 + test/tint/builtins/gen/var/atan2/034ace.wgsl | 45 + .../var/atan2/034ace.wgsl.expected.dxc.hlsl | 30 + .../var/atan2/034ace.wgsl.expected.fxc.hlsl | 30 + .../gen/var/atan2/034ace.wgsl.expected.glsl | 49 + .../gen/var/atan2/034ace.wgsl.expected.msl | 33 + .../gen/var/atan2/034ace.wgsl.expected.spvasm | 64 ++ .../gen/var/atan2/034ace.wgsl.expected.wgsl | 21 + test/tint/builtins/gen/var/atan2/3c2865.wgsl | 45 + .../var/atan2/3c2865.wgsl.expected.dxc.hlsl | 30 + .../var/atan2/3c2865.wgsl.expected.fxc.hlsl | 30 + .../gen/var/atan2/3c2865.wgsl.expected.glsl | 49 + .../gen/var/atan2/3c2865.wgsl.expected.msl | 33 + .../gen/var/atan2/3c2865.wgsl.expected.spvasm | 67 ++ .../gen/var/atan2/3c2865.wgsl.expected.wgsl | 21 + test/tint/builtins/gen/var/atan2/c19683.wgsl | 45 + .../var/atan2/c19683.wgsl.expected.dxc.hlsl | 30 + .../var/atan2/c19683.wgsl.expected.fxc.hlsl | 30 + .../gen/var/atan2/c19683.wgsl.expected.glsl | 49 + .../gen/var/atan2/c19683.wgsl.expected.msl | 33 + .../gen/var/atan2/c19683.wgsl.expected.spvasm | 67 ++ .../gen/var/atan2/c19683.wgsl.expected.wgsl | 21 + test/tint/builtins/gen/var/atan2/c4be45.wgsl | 45 + .../var/atan2/c4be45.wgsl.expected.dxc.hlsl | 30 + .../var/atan2/c4be45.wgsl.expected.fxc.hlsl | 30 + .../gen/var/atan2/c4be45.wgsl.expected.glsl | 49 + .../gen/var/atan2/c4be45.wgsl.expected.msl | 33 + .../gen/var/atan2/c4be45.wgsl.expected.spvasm | 65 ++ .../gen/var/atan2/c4be45.wgsl.expected.wgsl | 21 + 83 files changed, 3228 insertions(+), 682 deletions(-) create mode 100644 test/tint/builtins/gen/literal/atan2/034ace.wgsl create mode 100644 test/tint/builtins/gen/literal/atan2/034ace.wgsl.expected.dxc.hlsl create mode 100644 test/tint/builtins/gen/literal/atan2/034ace.wgsl.expected.fxc.hlsl create mode 100644 test/tint/builtins/gen/literal/atan2/034ace.wgsl.expected.glsl create mode 100644 test/tint/builtins/gen/literal/atan2/034ace.wgsl.expected.msl create mode 100644 test/tint/builtins/gen/literal/atan2/034ace.wgsl.expected.spvasm create mode 100644 test/tint/builtins/gen/literal/atan2/034ace.wgsl.expected.wgsl create mode 100644 test/tint/builtins/gen/literal/atan2/3c2865.wgsl create mode 100644 test/tint/builtins/gen/literal/atan2/3c2865.wgsl.expected.dxc.hlsl create mode 100644 test/tint/builtins/gen/literal/atan2/3c2865.wgsl.expected.fxc.hlsl create mode 100644 test/tint/builtins/gen/literal/atan2/3c2865.wgsl.expected.glsl create mode 100644 test/tint/builtins/gen/literal/atan2/3c2865.wgsl.expected.msl create mode 100644 test/tint/builtins/gen/literal/atan2/3c2865.wgsl.expected.spvasm create mode 100644 test/tint/builtins/gen/literal/atan2/3c2865.wgsl.expected.wgsl create mode 100644 test/tint/builtins/gen/literal/atan2/c19683.wgsl create mode 100644 test/tint/builtins/gen/literal/atan2/c19683.wgsl.expected.dxc.hlsl create mode 100644 test/tint/builtins/gen/literal/atan2/c19683.wgsl.expected.fxc.hlsl create mode 100644 test/tint/builtins/gen/literal/atan2/c19683.wgsl.expected.glsl create mode 100644 test/tint/builtins/gen/literal/atan2/c19683.wgsl.expected.msl create mode 100644 test/tint/builtins/gen/literal/atan2/c19683.wgsl.expected.spvasm create mode 100644 test/tint/builtins/gen/literal/atan2/c19683.wgsl.expected.wgsl create mode 100644 test/tint/builtins/gen/literal/atan2/c4be45.wgsl create mode 100644 test/tint/builtins/gen/literal/atan2/c4be45.wgsl.expected.dxc.hlsl create mode 100644 test/tint/builtins/gen/literal/atan2/c4be45.wgsl.expected.fxc.hlsl create mode 100644 test/tint/builtins/gen/literal/atan2/c4be45.wgsl.expected.glsl create mode 100644 test/tint/builtins/gen/literal/atan2/c4be45.wgsl.expected.msl create mode 100644 test/tint/builtins/gen/literal/atan2/c4be45.wgsl.expected.spvasm create mode 100644 test/tint/builtins/gen/literal/atan2/c4be45.wgsl.expected.wgsl create mode 100644 test/tint/builtins/gen/var/atan2/034ace.wgsl create mode 100644 test/tint/builtins/gen/var/atan2/034ace.wgsl.expected.dxc.hlsl create mode 100644 test/tint/builtins/gen/var/atan2/034ace.wgsl.expected.fxc.hlsl create mode 100644 test/tint/builtins/gen/var/atan2/034ace.wgsl.expected.glsl create mode 100644 test/tint/builtins/gen/var/atan2/034ace.wgsl.expected.msl create mode 100644 test/tint/builtins/gen/var/atan2/034ace.wgsl.expected.spvasm create mode 100644 test/tint/builtins/gen/var/atan2/034ace.wgsl.expected.wgsl create mode 100644 test/tint/builtins/gen/var/atan2/3c2865.wgsl create mode 100644 test/tint/builtins/gen/var/atan2/3c2865.wgsl.expected.dxc.hlsl create mode 100644 test/tint/builtins/gen/var/atan2/3c2865.wgsl.expected.fxc.hlsl create mode 100644 test/tint/builtins/gen/var/atan2/3c2865.wgsl.expected.glsl create mode 100644 test/tint/builtins/gen/var/atan2/3c2865.wgsl.expected.msl create mode 100644 test/tint/builtins/gen/var/atan2/3c2865.wgsl.expected.spvasm create mode 100644 test/tint/builtins/gen/var/atan2/3c2865.wgsl.expected.wgsl create mode 100644 test/tint/builtins/gen/var/atan2/c19683.wgsl create mode 100644 test/tint/builtins/gen/var/atan2/c19683.wgsl.expected.dxc.hlsl create mode 100644 test/tint/builtins/gen/var/atan2/c19683.wgsl.expected.fxc.hlsl create mode 100644 test/tint/builtins/gen/var/atan2/c19683.wgsl.expected.glsl create mode 100644 test/tint/builtins/gen/var/atan2/c19683.wgsl.expected.msl create mode 100644 test/tint/builtins/gen/var/atan2/c19683.wgsl.expected.spvasm create mode 100644 test/tint/builtins/gen/var/atan2/c19683.wgsl.expected.wgsl create mode 100644 test/tint/builtins/gen/var/atan2/c4be45.wgsl create mode 100644 test/tint/builtins/gen/var/atan2/c4be45.wgsl.expected.dxc.hlsl create mode 100644 test/tint/builtins/gen/var/atan2/c4be45.wgsl.expected.fxc.hlsl create mode 100644 test/tint/builtins/gen/var/atan2/c4be45.wgsl.expected.glsl create mode 100644 test/tint/builtins/gen/var/atan2/c4be45.wgsl.expected.msl create mode 100644 test/tint/builtins/gen/var/atan2/c4be45.wgsl.expected.spvasm create mode 100644 test/tint/builtins/gen/var/atan2/c4be45.wgsl.expected.wgsl diff --git a/src/tint/intrinsics.def b/src/tint/intrinsics.def index c971af5499..cc073da869 100644 --- a/src/tint/intrinsics.def +++ b/src/tint/intrinsics.def @@ -135,6 +135,7 @@ match scalar_no_i32: f32 | f16 | u32 | bool match scalar_no_u32: f32 | f16 | i32 | bool match scalar_no_bool: f32 | f16 | i32 | u32 match fia_fi32_f16: fa | ia | f32 | i32 | f16 +match fa_f32: fa | f32 match fa_f32_f16: fa | f32 | f16 match ia_iu32: ia | i32 | u32 match fiu32_f16: f32 | i32 | u32 | f16 @@ -370,8 +371,8 @@ fn asinh(f32) -> f32 fn asinh(vec) -> vec fn atan(f32) -> f32 fn atan(vec) -> vec -fn atan2(f32, f32) -> f32 -fn atan2(vec, vec) -> vec +@const fn atan2(T, T) -> T +@const fn atan2(vec, vec) -> vec fn atanh(f32) -> f32 fn atanh(vec) -> vec fn ceil(f32) -> f32 diff --git a/src/tint/resolver/builtin_test.cc b/src/tint/resolver/builtin_test.cc index 9d8d11ee85..b1d5744e7b 100644 --- a/src/tint/resolver/builtin_test.cc +++ b/src/tint/resolver/builtin_test.cc @@ -1068,6 +1068,70 @@ TEST_P(ResolverBuiltinTest_TwoParam, Error_NoTooManyParams) { EXPECT_FALSE(r()->Resolve()); + EXPECT_EQ(r()->error(), + "error: no matching call to " + std::string(param.name) + + "(i32, i32, i32)\n\n" + "2 candidate functions:\n " + + std::string(param.name) + "(T, T) -> T where: T is abstract-float or f32\n " + + std::string(param.name) + + "(vecN, vecN) -> vecN where: T is abstract-float or f32\n"); +} + +TEST_P(ResolverBuiltinTest_TwoParam, Error_NoParams) { + auto param = GetParam(); + + auto* call = Call(param.name); + WrapInFunction(call); + + EXPECT_FALSE(r()->Resolve()); + + EXPECT_EQ(r()->error(), + "error: no matching call to " + std::string(param.name) + + "()\n\n" + "2 candidate functions:\n " + + std::string(param.name) + "(T, T) -> T where: T is abstract-float or f32\n " + + std::string(param.name) + + "(vecN, vecN) -> vecN where: T is abstract-float or f32\n"); +} + +INSTANTIATE_TEST_SUITE_P(ResolverTest, + ResolverBuiltinTest_TwoParam, + testing::Values(BuiltinData{"atan2", BuiltinType::kAtan2})); + +using ResolverBuiltinTest_TwoParam_NoConstEval = ResolverTestWithParam; +TEST_P(ResolverBuiltinTest_TwoParam_NoConstEval, Scalar) { + auto param = GetParam(); + + auto* call = Call(param.name, 1_f, 1_f); + WrapInFunction(call); + + EXPECT_TRUE(r()->Resolve()) << r()->error(); + + ASSERT_NE(TypeOf(call), nullptr); + EXPECT_TRUE(TypeOf(call)->is_float_scalar()); +} + +TEST_P(ResolverBuiltinTest_TwoParam_NoConstEval, Vector) { + auto param = GetParam(); + + auto* call = Call(param.name, vec3(1_f, 1_f, 3_f), vec3(1_f, 1_f, 3_f)); + WrapInFunction(call); + + EXPECT_TRUE(r()->Resolve()) << r()->error(); + + ASSERT_NE(TypeOf(call), nullptr); + EXPECT_TRUE(TypeOf(call)->is_float_vector()); + EXPECT_EQ(TypeOf(call)->As()->Width(), 3u); +} + +TEST_P(ResolverBuiltinTest_TwoParam_NoConstEval, Error_NoTooManyParams) { + auto param = GetParam(); + + auto* call = Call(param.name, 1_i, 2_i, 3_i); + WrapInFunction(call); + + EXPECT_FALSE(r()->Resolve()); + EXPECT_EQ(r()->error(), "error: no matching call to " + std::string(param.name) + "(i32, i32, i32)\n\n" "2 candidate functions:\n " + @@ -1075,7 +1139,7 @@ TEST_P(ResolverBuiltinTest_TwoParam, Error_NoTooManyParams) { std::string(param.name) + "(vecN, vecN) -> vecN\n"); } -TEST_P(ResolverBuiltinTest_TwoParam, Error_NoParams) { +TEST_P(ResolverBuiltinTest_TwoParam_NoConstEval, Error_NoParams) { auto param = GetParam(); auto* call = Call(param.name); @@ -1091,9 +1155,8 @@ TEST_P(ResolverBuiltinTest_TwoParam, Error_NoParams) { } INSTANTIATE_TEST_SUITE_P(ResolverTest, - ResolverBuiltinTest_TwoParam, - testing::Values(BuiltinData{"atan2", BuiltinType::kAtan2}, - BuiltinData{"pow", BuiltinType::kPow}, + ResolverBuiltinTest_TwoParam_NoConstEval, + testing::Values(BuiltinData{"pow", BuiltinType::kPow}, BuiltinData{"step", BuiltinType::kStep})); TEST_F(ResolverBuiltinTest, Distance_Scalar) { diff --git a/src/tint/resolver/const_eval.cc b/src/tint/resolver/const_eval.cc index e1c3416657..56b7aa355c 100644 --- a/src/tint/resolver/const_eval.cc +++ b/src/tint/resolver/const_eval.cc @@ -46,29 +46,49 @@ namespace tint::resolver { namespace { -/// Helper that calls 'f' passing in `c`'s value -template -auto Dispatch_ia_iu32(const sem::Constant* c, F&& f) { - return Switch( - c->Type(), [&](const sem::AbstractInt*) { return f(c->As()); }, - [&](const sem::I32*) { return f(c->As()); }, - [&](const sem::U32*) { return f(c->As()); }); +/// Returns the first element of a parameter pack +template +T First(T&& first, ...) { + return std::forward(first); } -/// Helper that calls 'f' passing in `c`'s value -template -auto Dispatch_fia_fi32_f16(const sem::Constant* c, F&& f) { +/// Helper that calls `f` passing in the value of all `cs`. +/// Assumes all `cs` are of the same type. +template +auto Dispatch_ia_iu32(F&& f, CONSTANTS&&... cs) { return Switch( - c->Type(), [&](const sem::AbstractInt*) { return f(c->As()); }, - [&](const sem::AbstractFloat*) { return f(c->As()); }, - [&](const sem::F32*) { return f(c->As()); }, - [&](const sem::I32*) { return f(c->As()); }, + First(cs...)->Type(), // + [&](const sem::AbstractInt*) { return f(cs->template As()...); }, + [&](const sem::I32*) { return f(cs->template As()...); }, + [&](const sem::U32*) { return f(cs->template As()...); }); +} + +/// Helper that calls `f` passing in the value of all `cs`. +/// Assumes all `cs` are of the same type. +template +auto Dispatch_fia_fi32_f16(F&& f, CONSTANTS&&... cs) { + return Switch( + First(cs...)->Type(), // + [&](const sem::AbstractInt*) { return f(cs->template As()...); }, + [&](const sem::AbstractFloat*) { return f(cs->template As()...); }, + [&](const sem::F32*) { return f(cs->template As()...); }, + [&](const sem::I32*) { return f(cs->template As()...); }, [&](const sem::F16*) { // TODO(crbug.com/tint/1502): Support const eval for f16 return nullptr; }); } +/// Helper that calls `f` passing in the value of all `cs`. +/// Assumes all `cs` are of the same type. +template +auto Dispatch_fa_f32(F&& f, CONSTANTS&&... cs) { + return Switch( + First(cs...)->Type(), // + [&](const sem::AbstractFloat*) { return f(cs->template As()...); }, + [&](const sem::F32*) { return f(cs->template As()...); }); +} + /// ZeroTypeDispatch is a helper for calling the function `f`, passing a single zero-value argument /// of the C++ type that corresponds to the sem::Type `type`. For example, calling /// `ZeroTypeDispatch()` with a type of `sem::I32*` will call the function f with a single argument @@ -427,21 +447,21 @@ const Constant* CreateComposite(ProgramBuilder& builder, } /// TransformElements constructs a new constant by applying the transformation function 'f' on each -/// of the most deeply nested elements of 'c'. -template -const Constant* TransformElements(ProgramBuilder& builder, const sem::Constant* c, F&& f) { +/// of the most deeply nested elements of 'cs'. +template +const Constant* TransformElements(ProgramBuilder& builder, F&& f, CONSTANTS&&... cs) { uint32_t n = 0; - auto* ty = c->Type(); + auto* ty = First(cs...)->Type(); auto* el_ty = sem::Type::ElementOf(ty, &n); if (el_ty == ty) { - return f(c); + return f(cs...); } utils::Vector els; els.Reserve(n); for (uint32_t i = 0; i < n; i++) { - els.Push(TransformElements(builder, c->Index(i), f)); + els.Push(TransformElements(builder, f, cs->Index(i)...)); } - return CreateComposite(builder, c->Type(), std::move(els)); + return CreateComposite(builder, ty, std::move(els)); } } // namespace @@ -658,20 +678,23 @@ const sem::Constant* ConstEval::Bitcast(const sem::Type*, const sem::Expression* const sem::Constant* ConstEval::OpComplement(const sem::Type*, utils::ConstVectorRef args) { - return TransformElements(builder, args[0]->ConstantValue(), [&](const sem::Constant* c) { - return Dispatch_ia_iu32(c, [&](auto i) { // + auto transform = [&](const sem::Constant* c) { + auto create = [&](auto i) { return CreateElement(builder, c->Type(), decltype(i)(~i.value)); - }); - }); + }; + return Dispatch_ia_iu32(create, c); + }; + return TransformElements(builder, transform, args[0]->ConstantValue()); } const sem::Constant* ConstEval::OpMinus(const sem::Type*, utils::ConstVectorRef args) { - return TransformElements(builder, args[0]->ConstantValue(), [&](const sem::Constant* c) { - return Dispatch_fia_fi32_f16(c, [&](auto i) { // - // For signed integrals, avoid C++ UB by not negating the smallest negative number. In - // WGSL, this operation is well defined to return the same value, see: - // https://gpuweb.github.io/gpuweb/wgsl/#arithmetic-expr. + auto transform = [&](const sem::Constant* c) { + auto create = [&](auto i) { // + // For signed integrals, avoid C++ UB by not negating the + // smallest negative number. In WGSL, this operation is well + // defined to return the same value, see: + // https://gpuweb.github.io/gpuweb/wgsl/#arithmetic-expr. using T = UnwrapNumber; if constexpr (std::is_integral_v) { auto v = i.value; @@ -682,8 +705,22 @@ const sem::Constant* ConstEval::OpMinus(const sem::Type*, } else { return CreateElement(builder, c->Type(), decltype(i)(-i.value)); } - }); - }); + }; + return Dispatch_fia_fi32_f16(create, c); + }; + return TransformElements(builder, transform, args[0]->ConstantValue()); +} + +const sem::Constant* ConstEval::atan2(const sem::Type*, + utils::ConstVectorRef args) { + auto transform = [&](const sem::Constant* c0, const sem::Constant* c1) { + auto create = [&](auto i, auto j) { + return CreateElement(builder, c0->Type(), decltype(i)(std::atan2(i.value, j.value))); + }; + return Dispatch_fa_f32(create, c0, c1); + }; + return TransformElements(builder, transform, args[0]->ConstantValue(), + args[1]->ConstantValue()); } utils::Result ConstEval::Convert(const sem::Type* target_ty, diff --git a/src/tint/resolver/const_eval.h b/src/tint/resolver/const_eval.h index 9b8a3b1dfa..a9be358798 100644 --- a/src/tint/resolver/const_eval.h +++ b/src/tint/resolver/const_eval.h @@ -187,6 +187,17 @@ class ConstEval { const sem::Constant* OpMinus(const sem::Type* ty, utils::ConstVectorRef args); + //////////////////////////////////////////////////////////////////////////// + // Builtins + //////////////////////////////////////////////////////////////////////////// + + /// atan2 builtin + /// @param ty the expression type + /// @param args the input arguments + /// @return the result value, or null if the value cannot be calculated + const sem::Constant* atan2(const sem::Type* ty, + utils::ConstVectorRef args); + private: /// Adds the given error message to the diagnostics void AddError(const std::string& msg, const Source& source) const; diff --git a/src/tint/resolver/const_eval_test.cc b/src/tint/resolver/const_eval_test.cc index 7991f6f945..06763053c8 100644 --- a/src/tint/resolver/const_eval_test.cc +++ b/src/tint/resolver/const_eval_test.cc @@ -17,16 +17,73 @@ #include "gtest/gtest.h" #include "src/tint/resolver/resolver_test_helper.h" +#include "src/tint/sem/builtin_type.h" #include "src/tint/sem/expression.h" #include "src/tint/sem/index_accessor_expression.h" #include "src/tint/sem/member_accessor_expression.h" #include "src/tint/sem/test_helper.h" +#include "src/tint/utils/transform.h" using namespace tint::number_suffixes; // NOLINT namespace tint::resolver { namespace { +template +const auto kHighest = T(T::kHighest); + +template +const auto kLowest = T(T::kLowest); + +template +const auto kNaN = T(std::numeric_limits>::quiet_NaN()); + +template +const auto kInf = T(std::numeric_limits>::infinity()); + +template +const auto kPi = T(UnwrapNumber(3.14159265358979323846)); + +template +const auto kPiOver2 = T(UnwrapNumber(1.57079632679489661923)); + +template +const auto kPiOver4 = T(UnwrapNumber(0.785398163397448309616)); + +template +const auto k3PiOver4 = T(UnwrapNumber(2.356194490192344928846)); + +template +constexpr auto Negate(const Number& v) { + // For signed integrals, avoid C++ UB by not negating the smallest negative number. In + // WGSL, this operation is well defined to return the same value, see: + // https://gpuweb.github.io/gpuweb/wgsl/#arithmetic-expr. + if constexpr (std::is_integral_v && std::is_signed_v) { + if (v == std::numeric_limits::min()) { + return v; + } + } + return -v; +} + +template +auto Abs(const Number& v) { + if constexpr (std::is_integral_v && std::is_unsigned_v) { + return v; + } else { + return Number(std::abs(v)); + } +} + +// Concats any number of std::vectors +template +auto Concat(Vec&& v1, Vecs&&... vs) { + auto total_size = v1.size() + (vs.size() + ...); + v1.reserve(total_size); + (std::move(vs.begin(), vs.end(), std::back_inserter(v1)), ...); + return std::move(v1); +} + using ResolverConstEvalTest = ResolverTest; //////////////////////////////////////////////////////////////////////////////////////////////////// @@ -1333,7 +1390,7 @@ TEST_F(ResolverConstEvalTest, Vec3_Convert_Large_f32_to_f16) { EXPECT_TRUE(r()->Resolve()) << r()->error(); - constexpr auto kInf = std::numeric_limits::infinity(); + constexpr auto kInfinity = std::numeric_limits::infinity(); auto* sem = Sem().Get(expr); ASSERT_NE(sem, nullptr); @@ -1349,17 +1406,17 @@ TEST_F(ResolverConstEvalTest, Vec3_Convert_Large_f32_to_f16) { EXPECT_TRUE(sem->ConstantValue()->Index(0)->AllEqual()); EXPECT_FALSE(sem->ConstantValue()->Index(0)->AnyZero()); EXPECT_FALSE(sem->ConstantValue()->Index(0)->AllZero()); - EXPECT_EQ(sem->ConstantValue()->Index(0)->As(), kInf); + EXPECT_EQ(sem->ConstantValue()->Index(0)->As(), kInfinity); EXPECT_TRUE(sem->ConstantValue()->Index(1)->AllEqual()); EXPECT_FALSE(sem->ConstantValue()->Index(1)->AnyZero()); EXPECT_FALSE(sem->ConstantValue()->Index(1)->AllZero()); - EXPECT_EQ(sem->ConstantValue()->Index(1)->As(), -kInf); + EXPECT_EQ(sem->ConstantValue()->Index(1)->As(), -kInfinity); EXPECT_TRUE(sem->ConstantValue()->Index(2)->AllEqual()); EXPECT_FALSE(sem->ConstantValue()->Index(2)->AnyZero()); EXPECT_FALSE(sem->ConstantValue()->Index(2)->AllZero()); - EXPECT_EQ(sem->ConstantValue()->Index(2)->As(), kInf); + EXPECT_EQ(sem->ConstantValue()->Index(2)->As(), kInfinity); } TEST_F(ResolverConstEvalTest, Vec3_Convert_Small_f32_to_f16) { @@ -2930,29 +2987,6 @@ TEST_F(ResolverConstEvalTest, MemberAccess) { //////////////////////////////////////////////////////////////////////////////////////////////////// namespace unary_op { -template -auto Highest() { - return T(T::kHighest); -} - -template -auto Lowest() { - return T(T::kLowest); -} - -template -constexpr auto Negate(const Number& v) { - // For signed integrals, avoid C++ UB by not negating the smallest negative number. In - // WGSL, this operation is well defined to return the same value, see: - // https://gpuweb.github.io/gpuweb/wgsl/#arithmetic-expr. - if constexpr (std::is_integral_v && std::is_signed_v) { - if (v == std::numeric_limits::min()) { - return v; - } - } - return -v; -} - template struct Values { T input; @@ -3036,37 +3070,37 @@ INSTANTIATE_TEST_SUITE_P(Negation, C(-0_a, 0_a), C(1_a, -1_a), C(-1_a, 1_a), - C(Highest(), -Highest()), - C(-Highest(), Highest()), - C(Lowest(), Negate(Lowest())), - C(Negate(Lowest()), Lowest()), + C(kHighest, -kHighest), + C(-kHighest, kHighest), + C(kLowest, Negate(kLowest)), + C(Negate(kLowest), kLowest), // i32 C(0_i, -0_i), C(-0_i, 0_i), C(1_i, -1_i), C(-1_i, 1_i), - C(Highest(), -Highest()), - C(-Highest(), Highest()), - C(Lowest(), Negate(Lowest())), - C(Negate(Lowest()), Lowest()), + C(kHighest, -kHighest), + C(-kHighest, kHighest), + C(kLowest, Negate(kLowest)), + C(Negate(kLowest), kLowest), // AFloat C(0.0_a, -0.0_a), C(-0.0_a, 0.0_a), C(1.0_a, -1.0_a), C(-1.0_a, 1.0_a), - C(Highest(), -Highest()), - C(-Highest(), Highest()), - C(Lowest(), Negate(Lowest())), - C(Negate(Lowest()), Lowest()), + C(kHighest, -kHighest), + C(-kHighest, kHighest), + C(kLowest, Negate(kLowest)), + C(Negate(kLowest), kLowest), // f32 C(0.0_f, -0.0_f), C(-0.0_f, 0.0_f), C(1.0_f, -1.0_f), C(-1.0_f, 1.0_f), - C(Highest(), -Highest()), - C(-Highest(), Highest()), - C(Lowest(), Negate(Lowest())), - C(Negate(Lowest()), Lowest()), + C(kHighest, -kHighest), + C(-kHighest, kHighest), + C(kLowest, Negate(kLowest)), + C(Negate(kLowest), kLowest), }))); // Make sure UBSan doesn't trip on C++'s undefined behaviour of negating the smallest negative @@ -3082,5 +3116,145 @@ TEST_F(ResolverConstEvalTest, UnaryNegateLowestAbstract) { } // namespace unary_op +namespace builtin { + +template +struct Values { + std::vector args; + T result; + bool result_pos_or_neg; +}; + +struct Case { + std::variant, Values, Values, Values, Values, Values> + values; +}; + +static std::ostream& operator<<(std::ostream& o, const Case& c) { + std::visit( + [&](auto&& v) { + for (auto& e : v.args) { + o << e << ((&e != &v.args.back()) ? " " : ""); + } + }, + c.values); + return o; +} + +template +Case C(std::vector args, T result, bool result_pos_or_neg = false) { + return Case{Values{std::move(args), result, result_pos_or_neg}}; +} + +using ResolverConstEvalBuiltinTest = ResolverTestWithParam>; + +TEST_P(ResolverConstEvalBuiltinTest, Test) { + Enable(ast::Extension::kF16); + + auto builtin = std::get<0>(GetParam()); + auto c = std::get<1>(GetParam()); + std::visit( + [&](auto&& values) { + using T = decltype(values.result); + auto args = utils::Transform(values.args, [&](auto&& a) { + return static_cast(Expr(a)); + }); + auto* expr = Call(sem::str(builtin), std::move(args)); + + GlobalConst("C", nullptr, expr); + + EXPECT_TRUE(r()->Resolve()) << r()->error(); + + auto* sem = Sem().Get(expr); + const sem::Constant* value = sem->ConstantValue(); + ASSERT_NE(value, nullptr); + EXPECT_TYPE(value->Type(), sem->Type()); + + auto actual = value->As(); + + if constexpr (IsFloatingPoint>) { + if (std::isnan(values.result)) { + EXPECT_TRUE(std::isnan(actual)); + } else { + EXPECT_FLOAT_EQ(values.result_pos_or_neg ? Abs(actual) : actual, values.result); + } + } else { + EXPECT_EQ(values.result_pos_or_neg ? Abs(actual) : actual, values.result); + } + + if constexpr (IsInteger>) { + // Check that the constant's integer doesn't contain unexpected data in the MSBs + // that are outside of the bit-width of T. + EXPECT_EQ(value->As(), AInt(values.result)); + } + }, + c.values); +} + +template +std::vector Atan2Cases() { + std::vector cases = { + // If y is +/-0 and x is negative or -0, +/-PI is returned + C({T(0.0), -T(0.0)}, kPi, true), + + // If y is +/-0 and x is positive or +0, +/-0 is returned + C({T(0.0), T(0.0)}, T(0.0), true), + + // If x is +/-0 and y is negative, -PI/2 is returned + C({-T(1.0), T(0.0)}, -kPiOver2), + C({-T(1.0), -T(0.0)}, -kPiOver2), + + // If x is +/-0 and y is positive, +PI/2 is returned + C({T(1.0), T(0.0)}, kPiOver2), + C({T(1.0), -T(0.0)}, kPiOver2), + }; + + if constexpr (!finite_only) { + std::vector non_finite_cases = { + // If y is +/-INF and x is finite, +/-PI/2 is returned + C({kInf, T(0.0)}, kPiOver2, true), + C({-kInf, T(0.0)}, kPiOver2, true), + + // If y is +/-INF and x is -INF, +/-3PI/4 is returned + C({kInf, -kInf}, k3PiOver4, true), + C({-kInf, -kInf}, k3PiOver4, true), + + // If y is +/-INF and x is +INF, +/-PI/4 is returned + C({kInf, kInf}, kPiOver4, true), + C({-kInf, kInf}, kPiOver4, true), + + // If x is -INF and y is finite and positive, +PI is returned + C({T(0.0), -kInf}, kPi), + + // If x is -INF and y is finite and negative, -PI is returned + C({-T(0.0), -kInf}, -kPi), + + // If x is +INF and y is finite and positive, +0 is returned + C({T(0.0), kInf}, T(0.0)), + + // If x is +INF and y is finite and negative, -0 is returned + C({-T(0.0), kInf}, -T(0.0)), + + // If either x is NaN or y is NaN, NaN is returned + C({kNaN, T(0.0)}, kNaN), + C({T(0.0), kNaN}, kNaN), + C({kNaN, kNaN}, kNaN), + }; + + cases = Concat(cases, non_finite_cases); + } + + return cases; +} + +INSTANTIATE_TEST_SUITE_P( // + Atan2, + ResolverConstEvalBuiltinTest, + testing::Combine(testing::Values(sem::BuiltinType::kAtan2), + testing::ValuesIn(Concat(Atan2Cases(), // + Atan2Cases())))); + +} // namespace builtin + } // namespace } // namespace tint::resolver diff --git a/src/tint/resolver/intrinsic_table.inl b/src/tint/resolver/intrinsic_table.inl index 632b4a76cf..3c065b6752 100644 --- a/src/tint/resolver/intrinsic_table.inl +++ b/src/tint/resolver/intrinsic_table.inl @@ -1913,8 +1913,43 @@ std::string FiaFi32F16::String(MatchState*) const { return ss.str(); } -/// TypeMatcher for 'match fa_f32_f16' +/// TypeMatcher for 'match fa_f32' /// @see src/tint/intrinsics.def:138:7 +class FaF32 : public TypeMatcher { + public: + /// Checks whether the given type matches the matcher rules, and returns the + /// expected, canonicalized type on success. + /// Match may define and refine the template types and numbers in state. + /// @param state the MatchState + /// @param type the type to match + /// @returns the canonicalized type on match, otherwise nullptr + const sem::Type* Match(MatchState& state, + const sem::Type* type) const override; + /// @param state the MatchState + /// @return a string representation of the matcher. + std::string String(MatchState* state) const override; +}; + +const sem::Type* FaF32::Match(MatchState& state, const sem::Type* ty) const { + if (match_fa(ty)) { + return build_fa(state); + } + if (match_f32(ty)) { + return build_f32(state); + } + return nullptr; +} + +std::string FaF32::String(MatchState*) const { + std::stringstream ss; + // Note: We pass nullptr to the TypeMatcher::String() functions, as 'matcher's do not support + // template arguments, nor can they match sub-types. As such, they have no use for the MatchState. + ss << Fa().String(nullptr) << " or " << F32().String(nullptr); + return ss.str(); +} + +/// TypeMatcher for 'match fa_f32_f16' +/// @see src/tint/intrinsics.def:139:7 class FaF32F16 : public TypeMatcher { public: /// Checks whether the given type matches the matcher rules, and returns the @@ -1952,7 +1987,7 @@ std::string FaF32F16::String(MatchState*) const { } /// TypeMatcher for 'match ia_iu32' -/// @see src/tint/intrinsics.def:139:7 +/// @see src/tint/intrinsics.def:140:7 class IaIu32 : public TypeMatcher { public: /// Checks whether the given type matches the matcher rules, and returns the @@ -1990,7 +2025,7 @@ std::string IaIu32::String(MatchState*) const { } /// TypeMatcher for 'match fiu32_f16' -/// @see src/tint/intrinsics.def:140:7 +/// @see src/tint/intrinsics.def:141:7 class Fiu32F16 : public TypeMatcher { public: /// Checks whether the given type matches the matcher rules, and returns the @@ -2031,7 +2066,7 @@ std::string Fiu32F16::String(MatchState*) const { } /// TypeMatcher for 'match fiu32' -/// @see src/tint/intrinsics.def:141:7 +/// @see src/tint/intrinsics.def:142:7 class Fiu32 : public TypeMatcher { public: /// Checks whether the given type matches the matcher rules, and returns the @@ -2069,7 +2104,7 @@ std::string Fiu32::String(MatchState*) const { } /// TypeMatcher for 'match fi32_f16' -/// @see src/tint/intrinsics.def:142:7 +/// @see src/tint/intrinsics.def:143:7 class Fi32F16 : public TypeMatcher { public: /// Checks whether the given type matches the matcher rules, and returns the @@ -2107,7 +2142,7 @@ std::string Fi32F16::String(MatchState*) const { } /// TypeMatcher for 'match fi32' -/// @see src/tint/intrinsics.def:143:7 +/// @see src/tint/intrinsics.def:144:7 class Fi32 : public TypeMatcher { public: /// Checks whether the given type matches the matcher rules, and returns the @@ -2142,7 +2177,7 @@ std::string Fi32::String(MatchState*) const { } /// TypeMatcher for 'match f32_f16' -/// @see src/tint/intrinsics.def:144:7 +/// @see src/tint/intrinsics.def:145:7 class F32F16 : public TypeMatcher { public: /// Checks whether the given type matches the matcher rules, and returns the @@ -2177,7 +2212,7 @@ std::string F32F16::String(MatchState*) const { } /// TypeMatcher for 'match iu32' -/// @see src/tint/intrinsics.def:145:7 +/// @see src/tint/intrinsics.def:146:7 class Iu32 : public TypeMatcher { public: /// Checks whether the given type matches the matcher rules, and returns the @@ -2212,7 +2247,7 @@ std::string Iu32::String(MatchState*) const { } /// EnumMatcher for 'match f32_texel_format' -/// @see src/tint/intrinsics.def:156:7 +/// @see src/tint/intrinsics.def:157:7 class F32TexelFormat : public NumberMatcher { public: /// Checks whether the given number matches the enum matcher rules. @@ -2245,7 +2280,7 @@ std::string F32TexelFormat::String(MatchState*) const { } /// EnumMatcher for 'match i32_texel_format' -/// @see src/tint/intrinsics.def:163:7 +/// @see src/tint/intrinsics.def:164:7 class I32TexelFormat : public NumberMatcher { public: /// Checks whether the given number matches the enum matcher rules. @@ -2277,7 +2312,7 @@ std::string I32TexelFormat::String(MatchState*) const { } /// EnumMatcher for 'match u32_texel_format' -/// @see src/tint/intrinsics.def:169:7 +/// @see src/tint/intrinsics.def:170:7 class U32TexelFormat : public NumberMatcher { public: /// Checks whether the given number matches the enum matcher rules. @@ -2309,7 +2344,7 @@ std::string U32TexelFormat::String(MatchState*) const { } /// EnumMatcher for 'match write' -/// @see src/tint/intrinsics.def:176:7 +/// @see src/tint/intrinsics.def:177:7 class Write : public NumberMatcher { public: /// Checks whether the given number matches the enum matcher rules. @@ -2335,7 +2370,7 @@ std::string Write::String(MatchState*) const { } /// EnumMatcher for 'match read_write' -/// @see src/tint/intrinsics.def:177:7 +/// @see src/tint/intrinsics.def:178:7 class ReadWrite : public NumberMatcher { public: /// Checks whether the given number matches the enum matcher rules. @@ -2361,7 +2396,7 @@ std::string ReadWrite::String(MatchState*) const { } /// EnumMatcher for 'match function_private_workgroup' -/// @see src/tint/intrinsics.def:179:7 +/// @see src/tint/intrinsics.def:180:7 class FunctionPrivateWorkgroup : public NumberMatcher { public: /// Checks whether the given number matches the enum matcher rules. @@ -2391,7 +2426,7 @@ std::string FunctionPrivateWorkgroup::String(MatchState*) const { } /// EnumMatcher for 'match workgroup_or_storage' -/// @see src/tint/intrinsics.def:183:7 +/// @see src/tint/intrinsics.def:184:7 class WorkgroupOrStorage : public NumberMatcher { public: /// Checks whether the given number matches the enum matcher rules. @@ -2420,7 +2455,7 @@ std::string WorkgroupOrStorage::String(MatchState*) const { } /// EnumMatcher for 'match storage' -/// @see src/tint/intrinsics.def:186:7 +/// @see src/tint/intrinsics.def:187:7 class Storage : public NumberMatcher { public: /// Checks whether the given number matches the enum matcher rules. @@ -2509,6 +2544,7 @@ class Matchers { ScalarNoU32 ScalarNoU32_; ScalarNoBool ScalarNoBool_; FiaFi32F16 FiaFi32F16_; + FaF32 FaF32_; FaF32F16 FaF32F16_; IaIu32 IaIu32_; Fiu32F16 Fiu32F16_; @@ -2533,7 +2569,7 @@ class Matchers { ~Matchers(); /// The template types, types, and type matchers - TypeMatcher const* const type[66] = { + TypeMatcher const* const type[67] = { /* [0] */ &template_type_0_, /* [1] */ &template_type_1_, /* [2] */ &Bool_, @@ -2592,14 +2628,15 @@ class Matchers { /* [55] */ &ScalarNoU32_, /* [56] */ &ScalarNoBool_, /* [57] */ &FiaFi32F16_, - /* [58] */ &FaF32F16_, - /* [59] */ &IaIu32_, - /* [60] */ &Fiu32F16_, - /* [61] */ &Fiu32_, - /* [62] */ &Fi32F16_, - /* [63] */ &Fi32_, - /* [64] */ &F32F16_, - /* [65] */ &Iu32_, + /* [58] */ &FaF32_, + /* [59] */ &FaF32F16_, + /* [60] */ &IaIu32_, + /* [61] */ &Fiu32F16_, + /* [62] */ &Fiu32_, + /* [63] */ &Fi32F16_, + /* [64] */ &Fi32_, + /* [65] */ &F32F16_, + /* [66] */ &Iu32_, }; /// The template numbers, and number matchers @@ -5941,12 +5978,12 @@ constexpr ParameterInfo kParameters[] = { { /* [613] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[4], + /* matcher indices */ &kMatcherIndices[1], }, { /* [614] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[4], + /* matcher indices */ &kMatcherIndices[1], }, { /* [615] */ @@ -6631,12 +6668,12 @@ constexpr ParameterInfo kParameters[] = { { /* [751] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[41], + /* matcher indices */ &kMatcherIndices[38], }, { /* [752] */ /* usage */ ParameterUsage::kNone, - /* matcher indices */ &kMatcherIndices[41], + /* matcher indices */ &kMatcherIndices[38], }, { /* [753] */ @@ -7909,72 +7946,72 @@ constexpr TemplateTypeInfo kTemplateTypes[] = { { /* [2] */ /* name */ "T", - /* matcher index */ 7, + /* matcher index */ 8, }, { /* [3] */ /* name */ "U", - /* matcher index */ 52, + /* matcher index */ 53, }, { /* [4] */ /* name */ "T", - /* matcher index */ 8, + /* matcher index */ 5, }, { /* [5] */ /* name */ "U", - /* matcher index */ 53, + /* matcher index */ 54, }, { /* [6] */ /* name */ "T", - /* matcher index */ 5, + /* matcher index */ 6, }, { /* [7] */ /* name */ "U", - /* matcher index */ 54, + /* matcher index */ 55, }, { /* [8] */ /* name */ "T", - /* matcher index */ 6, + /* matcher index */ 7, }, { /* [9] */ /* name */ "U", - /* matcher index */ 55, + /* matcher index */ 52, }, { /* [10] */ /* name */ "T", - /* matcher index */ 65, + /* matcher index */ 66, }, { /* [11] */ /* name */ "T", - /* matcher index */ 58, + /* matcher index */ 59, }, { /* [12] */ /* name */ "T", - /* matcher index */ 64, + /* matcher index */ 58, }, { /* [13] */ /* name */ "T", - /* matcher index */ 61, + /* matcher index */ 65, }, { /* [14] */ /* name */ "T", - /* matcher index */ 50, + /* matcher index */ 62, }, { /* [15] */ /* name */ "T", - /* matcher index */ 51, + /* matcher index */ 50, }, { /* [16] */ @@ -7984,42 +8021,47 @@ constexpr TemplateTypeInfo kTemplateTypes[] = { { /* [17] */ /* name */ "T", - /* matcher index */ 56, + /* matcher index */ 51, }, { /* [18] */ /* name */ "T", - /* matcher index */ 53, + /* matcher index */ 56, }, { /* [19] */ /* name */ "T", - /* matcher index */ 52, + /* matcher index */ 53, }, { /* [20] */ /* name */ "T", - /* matcher index */ 55, + /* matcher index */ 52, }, { /* [21] */ /* name */ "T", - /* matcher index */ 54, + /* matcher index */ 55, }, { /* [22] */ /* name */ "T", - /* matcher index */ 60, + /* matcher index */ 54, }, { /* [23] */ /* name */ "T", - /* matcher index */ 57, + /* matcher index */ 61, }, { /* [24] */ /* name */ "T", - /* matcher index */ 59, + /* matcher index */ 57, + }, + { + /* [25] */ + /* name */ "T", + /* matcher index */ 60, }, }; @@ -8082,7 +8124,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[13], + /* template types */ &kTemplateTypes[14], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[918], /* return matcher indices */ &kMatcherIndices[45], @@ -8094,7 +8136,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[13], + /* template types */ &kTemplateTypes[14], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[617], /* return matcher indices */ &kMatcherIndices[45], @@ -8106,7 +8148,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[13], + /* template types */ &kTemplateTypes[14], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[917], /* return matcher indices */ &kMatcherIndices[132], @@ -8118,7 +8160,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[13], + /* template types */ &kTemplateTypes[14], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[621], /* return matcher indices */ &kMatcherIndices[132], @@ -8130,7 +8172,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[13], + /* template types */ &kTemplateTypes[14], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[916], /* return matcher indices */ &kMatcherIndices[132], @@ -8142,7 +8184,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[13], + /* template types */ &kTemplateTypes[14], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[625], /* return matcher indices */ &kMatcherIndices[132], @@ -8154,7 +8196,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[13], + /* template types */ &kTemplateTypes[14], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[915], /* return matcher indices */ &kMatcherIndices[112], @@ -8166,7 +8208,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[13], + /* template types */ &kTemplateTypes[14], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[629], /* return matcher indices */ &kMatcherIndices[112], @@ -8178,7 +8220,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[13], + /* template types */ &kTemplateTypes[14], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[914], /* return matcher indices */ &kMatcherIndices[132], @@ -8190,7 +8232,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[13], + /* template types */ &kTemplateTypes[14], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[633], /* return matcher indices */ &kMatcherIndices[132], @@ -8202,7 +8244,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[13], + /* template types */ &kTemplateTypes[14], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[913], /* return matcher indices */ &kMatcherIndices[132], @@ -8214,7 +8256,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[13], + /* template types */ &kTemplateTypes[14], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[637], /* return matcher indices */ &kMatcherIndices[132], @@ -8226,7 +8268,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[13], + /* template types */ &kTemplateTypes[14], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[912], /* return matcher indices */ &kMatcherIndices[132], @@ -8238,7 +8280,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[911], /* return matcher indices */ &kMatcherIndices[132], @@ -8250,7 +8292,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[643], /* return matcher indices */ &kMatcherIndices[132], @@ -8262,7 +8304,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[910], /* return matcher indices */ &kMatcherIndices[132], @@ -8274,7 +8316,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[647], /* return matcher indices */ &kMatcherIndices[132], @@ -8286,7 +8328,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[909], /* return matcher indices */ &kMatcherIndices[132], @@ -8298,7 +8340,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[651], /* return matcher indices */ &kMatcherIndices[132], @@ -8310,7 +8352,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[835], /* return matcher indices */ &kMatcherIndices[132], @@ -8322,7 +8364,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[655], /* return matcher indices */ &kMatcherIndices[132], @@ -8334,7 +8376,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[907], /* return matcher indices */ &kMatcherIndices[132], @@ -8346,7 +8388,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 2, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[3], /* parameters */ &kParameters[905], /* return matcher indices */ &kMatcherIndices[45], @@ -8358,7 +8400,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 2, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[3], /* parameters */ &kParameters[904], /* return matcher indices */ &kMatcherIndices[132], @@ -8370,7 +8412,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 2, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[3], /* parameters */ &kParameters[903], /* return matcher indices */ &kMatcherIndices[132], @@ -8382,7 +8424,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 2, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[3], /* parameters */ &kParameters[902], /* return matcher indices */ &kMatcherIndices[112], @@ -8394,7 +8436,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[901], /* return matcher indices */ &kMatcherIndices[132], @@ -8406,7 +8448,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 0, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[15], + /* template types */ &kTemplateTypes[17], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[1004], /* return matcher indices */ &kMatcherIndices[122], @@ -8418,7 +8460,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[15], + /* template types */ &kTemplateTypes[17], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[955], /* return matcher indices */ &kMatcherIndices[122], @@ -8430,7 +8472,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[14], + /* template types */ &kTemplateTypes[15], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[956], /* return matcher indices */ &kMatcherIndices[122], @@ -8442,7 +8484,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 4, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[14], + /* template types */ &kTemplateTypes[15], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[399], /* return matcher indices */ &kMatcherIndices[122], @@ -8454,7 +8496,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[14], + /* template types */ &kTemplateTypes[15], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[564], /* return matcher indices */ &kMatcherIndices[122], @@ -8466,7 +8508,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[14], + /* template types */ &kTemplateTypes[15], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[573], /* return matcher indices */ &kMatcherIndices[122], @@ -8478,7 +8520,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[14], + /* template types */ &kTemplateTypes[15], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[576], /* return matcher indices */ &kMatcherIndices[122], @@ -8490,7 +8532,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[14], + /* template types */ &kTemplateTypes[15], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[605], /* return matcher indices */ &kMatcherIndices[122], @@ -8502,7 +8544,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[14], + /* template types */ &kTemplateTypes[15], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[603], /* return matcher indices */ &kMatcherIndices[122], @@ -8514,7 +8556,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[14], + /* template types */ &kTemplateTypes[15], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[601], /* return matcher indices */ &kMatcherIndices[122], @@ -8526,7 +8568,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 2, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[2], + /* template types */ &kTemplateTypes[8], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[1003], /* return matcher indices */ &kMatcherIndices[128], @@ -8538,7 +8580,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 2, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[4], + /* template types */ &kTemplateTypes[2], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[965], /* return matcher indices */ &kMatcherIndices[148], @@ -8550,7 +8592,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 2, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[6], + /* template types */ &kTemplateTypes[4], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[966], /* return matcher indices */ &kMatcherIndices[152], @@ -8562,7 +8604,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 2, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[8], + /* template types */ &kTemplateTypes[6], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[967], /* return matcher indices */ &kMatcherIndices[158], @@ -8586,7 +8628,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[510], /* return matcher indices */ &kMatcherIndices[128], @@ -8598,7 +8640,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[507], /* return matcher indices */ &kMatcherIndices[128], @@ -8610,7 +8652,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 4, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[351], /* return matcher indices */ &kMatcherIndices[128], @@ -8622,7 +8664,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 4, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[347], /* return matcher indices */ &kMatcherIndices[128], @@ -8634,7 +8676,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 5, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[230], /* return matcher indices */ &kMatcherIndices[128], @@ -8646,7 +8688,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[495], /* return matcher indices */ &kMatcherIndices[128], @@ -8658,7 +8700,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 4, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[331], /* return matcher indices */ &kMatcherIndices[128], @@ -8670,7 +8712,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[489], /* return matcher indices */ &kMatcherIndices[128], @@ -8682,7 +8724,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 4, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[327], /* return matcher indices */ &kMatcherIndices[128], @@ -8694,7 +8736,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[474], /* return matcher indices */ &kMatcherIndices[4], @@ -8706,7 +8748,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 4, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[323], /* return matcher indices */ &kMatcherIndices[4], @@ -8718,7 +8760,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 4, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[319], /* return matcher indices */ &kMatcherIndices[4], @@ -8730,7 +8772,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 5, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[165], /* return matcher indices */ &kMatcherIndices[4], @@ -8742,7 +8784,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[462], /* return matcher indices */ &kMatcherIndices[4], @@ -8754,7 +8796,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 4, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[339], /* return matcher indices */ &kMatcherIndices[4], @@ -8766,7 +8808,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 4, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[315], /* return matcher indices */ &kMatcherIndices[128], @@ -8778,7 +8820,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 5, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[265], /* return matcher indices */ &kMatcherIndices[128], @@ -8790,7 +8832,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 5, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[260], /* return matcher indices */ &kMatcherIndices[128], @@ -8802,7 +8844,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 6, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[132], /* return matcher indices */ &kMatcherIndices[128], @@ -8814,7 +8856,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 4, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[299], /* return matcher indices */ &kMatcherIndices[128], @@ -8826,7 +8868,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 5, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[205], /* return matcher indices */ &kMatcherIndices[128], @@ -8838,7 +8880,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 4, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[295], /* return matcher indices */ &kMatcherIndices[128], @@ -8850,7 +8892,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 5, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[285], /* return matcher indices */ &kMatcherIndices[128], @@ -8862,7 +8904,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 4, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[303], /* return matcher indices */ &kMatcherIndices[4], @@ -8874,7 +8916,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 5, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[275], /* return matcher indices */ &kMatcherIndices[4], @@ -8886,7 +8928,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 5, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[270], /* return matcher indices */ &kMatcherIndices[4], @@ -8898,7 +8940,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 6, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[90], /* return matcher indices */ &kMatcherIndices[4], @@ -8910,7 +8952,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 4, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[307], /* return matcher indices */ &kMatcherIndices[4], @@ -8922,7 +8964,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 5, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[255], /* return matcher indices */ &kMatcherIndices[4], @@ -8934,7 +8976,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[471], /* return matcher indices */ &kMatcherIndices[128], @@ -8946,7 +8988,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 4, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[13], + /* template types */ &kTemplateTypes[14], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[431], /* return matcher indices */ &kMatcherIndices[122], @@ -8958,7 +9000,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 5, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[13], + /* template types */ &kTemplateTypes[14], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[250], /* return matcher indices */ &kMatcherIndices[122], @@ -8970,7 +9012,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 5, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[13], + /* template types */ &kTemplateTypes[14], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[215], /* return matcher indices */ &kMatcherIndices[122], @@ -8982,7 +9024,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 6, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[13], + /* template types */ &kTemplateTypes[14], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[96], /* return matcher indices */ &kMatcherIndices[122], @@ -8994,7 +9036,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 4, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[13], + /* template types */ &kTemplateTypes[14], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[407], /* return matcher indices */ &kMatcherIndices[122], @@ -9006,7 +9048,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 5, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[13], + /* template types */ &kTemplateTypes[14], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[170], /* return matcher indices */ &kMatcherIndices[122], @@ -9018,7 +9060,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[558], /* return matcher indices */ &kMatcherIndices[128], @@ -9030,7 +9072,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 4, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[387], /* return matcher indices */ &kMatcherIndices[128], @@ -9042,7 +9084,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 4, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[379], /* return matcher indices */ &kMatcherIndices[128], @@ -9054,7 +9096,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 5, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[160], /* return matcher indices */ &kMatcherIndices[128], @@ -9066,7 +9108,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[585], /* return matcher indices */ &kMatcherIndices[128], @@ -9078,7 +9120,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 4, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[375], /* return matcher indices */ &kMatcherIndices[128], @@ -9090,7 +9132,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[486], /* return matcher indices */ nullptr, @@ -9102,7 +9144,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[492], /* return matcher indices */ nullptr, @@ -9114,7 +9156,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 4, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[335], /* return matcher indices */ nullptr, @@ -9126,7 +9168,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[498], /* return matcher indices */ nullptr, @@ -9138,7 +9180,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[501], /* return matcher indices */ nullptr, @@ -9150,7 +9192,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[504], /* return matcher indices */ nullptr, @@ -9162,7 +9204,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 4, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[311], /* return matcher indices */ nullptr, @@ -9174,7 +9216,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[513], /* return matcher indices */ nullptr, @@ -9186,7 +9228,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[516], /* return matcher indices */ nullptr, @@ -9198,7 +9240,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[465], /* return matcher indices */ nullptr, @@ -9210,7 +9252,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 4, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[359], /* return matcher indices */ nullptr, @@ -9222,7 +9264,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[519], /* return matcher indices */ nullptr, @@ -9234,7 +9276,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 0, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[15], + /* template types */ &kTemplateTypes[17], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[1004], /* return matcher indices */ &kMatcherIndices[116], @@ -9246,7 +9288,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[15], + /* template types */ &kTemplateTypes[17], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[944], /* return matcher indices */ &kMatcherIndices[116], @@ -9258,7 +9300,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[14], + /* template types */ &kTemplateTypes[15], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[945], /* return matcher indices */ &kMatcherIndices[116], @@ -9270,7 +9312,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[14], + /* template types */ &kTemplateTypes[15], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[588], /* return matcher indices */ &kMatcherIndices[116], @@ -9282,7 +9324,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[14], + /* template types */ &kTemplateTypes[15], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[609], /* return matcher indices */ &kMatcherIndices[116], @@ -9294,7 +9336,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[14], + /* template types */ &kTemplateTypes[15], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[607], /* return matcher indices */ &kMatcherIndices[116], @@ -9306,7 +9348,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 2, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[2], + /* template types */ &kTemplateTypes[8], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[949], /* return matcher indices */ &kMatcherIndices[108], @@ -9318,7 +9360,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 2, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[4], + /* template types */ &kTemplateTypes[2], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[950], /* return matcher indices */ &kMatcherIndices[110], @@ -9330,7 +9372,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 2, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[6], + /* template types */ &kTemplateTypes[4], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[951], /* return matcher indices */ &kMatcherIndices[112], @@ -9342,7 +9384,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 2, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[8], + /* template types */ &kTemplateTypes[6], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[952], /* return matcher indices */ &kMatcherIndices[118], @@ -9366,7 +9408,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[13], + /* template types */ &kTemplateTypes[14], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[880], /* return matcher indices */ &kMatcherIndices[45], @@ -9378,7 +9420,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[13], + /* template types */ &kTemplateTypes[14], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[879], /* return matcher indices */ &kMatcherIndices[45], @@ -9390,7 +9432,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[13], + /* template types */ &kTemplateTypes[14], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[878], /* return matcher indices */ &kMatcherIndices[45], @@ -9402,7 +9444,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[13], + /* template types */ &kTemplateTypes[14], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[877], /* return matcher indices */ &kMatcherIndices[45], @@ -9414,7 +9456,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[13], + /* template types */ &kTemplateTypes[14], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[876], /* return matcher indices */ &kMatcherIndices[45], @@ -9426,7 +9468,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[13], + /* template types */ &kTemplateTypes[14], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[875], /* return matcher indices */ &kMatcherIndices[45], @@ -9438,7 +9480,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[874], /* return matcher indices */ &kMatcherIndices[45], @@ -9450,7 +9492,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[873], /* return matcher indices */ &kMatcherIndices[45], @@ -9462,7 +9504,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[872], /* return matcher indices */ &kMatcherIndices[45], @@ -9474,7 +9516,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[871], /* return matcher indices */ &kMatcherIndices[45], @@ -9486,7 +9528,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[22], + /* template types */ &kTemplateTypes[23], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[727], /* return matcher indices */ &kMatcherIndices[1], @@ -9498,7 +9540,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[22], + /* template types */ &kTemplateTypes[23], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[725], /* return matcher indices */ &kMatcherIndices[38], @@ -9510,7 +9552,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[22], + /* template types */ &kTemplateTypes[23], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[723], /* return matcher indices */ &kMatcherIndices[38], @@ -9522,7 +9564,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[22], + /* template types */ &kTemplateTypes[23], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[721], /* return matcher indices */ &kMatcherIndices[38], @@ -9534,7 +9576,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 2, - /* template types */ &kTemplateTypes[12], + /* template types */ &kTemplateTypes[13], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[719], /* return matcher indices */ &kMatcherIndices[10], @@ -9546,7 +9588,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 2, - /* template types */ &kTemplateTypes[12], + /* template types */ &kTemplateTypes[13], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[717], /* return matcher indices */ &kMatcherIndices[10], @@ -9558,7 +9600,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 2, - /* template types */ &kTemplateTypes[12], + /* template types */ &kTemplateTypes[13], /* template numbers */ &kTemplateNumbers[1], /* parameters */ &kParameters[715], /* return matcher indices */ &kMatcherIndices[77], @@ -9570,7 +9612,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 2, - /* template types */ &kTemplateTypes[12], + /* template types */ &kTemplateTypes[13], /* template numbers */ &kTemplateNumbers[1], /* parameters */ &kParameters[713], /* return matcher indices */ &kMatcherIndices[38], @@ -9582,7 +9624,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 3, - /* template types */ &kTemplateTypes[12], + /* template types */ &kTemplateTypes[13], /* template numbers */ &kTemplateNumbers[0], /* parameters */ &kParameters[711], /* return matcher indices */ &kMatcherIndices[22], @@ -9594,7 +9636,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[13], + /* template types */ &kTemplateTypes[14], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[522], /* return matcher indices */ &kMatcherIndices[122], @@ -9606,7 +9648,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[13], + /* template types */ &kTemplateTypes[14], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[528], /* return matcher indices */ &kMatcherIndices[122], @@ -9618,7 +9660,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 4, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[13], + /* template types */ &kTemplateTypes[14], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[363], /* return matcher indices */ &kMatcherIndices[122], @@ -9630,7 +9672,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[13], + /* template types */ &kTemplateTypes[14], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[531], /* return matcher indices */ &kMatcherIndices[122], @@ -9642,7 +9684,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[13], + /* template types */ &kTemplateTypes[14], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[549], /* return matcher indices */ &kMatcherIndices[122], @@ -9654,7 +9696,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[552], /* return matcher indices */ &kMatcherIndices[4], @@ -9666,7 +9708,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 4, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[383], /* return matcher indices */ &kMatcherIndices[4], @@ -9678,7 +9720,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[555], /* return matcher indices */ &kMatcherIndices[4], @@ -9690,7 +9732,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[783], /* return matcher indices */ &kMatcherIndices[128], @@ -9702,7 +9744,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 0, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[15], + /* template types */ &kTemplateTypes[17], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[1004], /* return matcher indices */ &kMatcherIndices[114], @@ -9714,7 +9756,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[15], + /* template types */ &kTemplateTypes[17], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[935], /* return matcher indices */ &kMatcherIndices[114], @@ -9726,7 +9768,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[14], + /* template types */ &kTemplateTypes[15], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[936], /* return matcher indices */ &kMatcherIndices[114], @@ -9738,7 +9780,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[14], + /* template types */ &kTemplateTypes[15], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[611], /* return matcher indices */ &kMatcherIndices[114], @@ -9750,7 +9792,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 2, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[2], + /* template types */ &kTemplateTypes[8], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[938], /* return matcher indices */ &kMatcherIndices[136], @@ -9762,7 +9804,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 2, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[4], + /* template types */ &kTemplateTypes[2], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[939], /* return matcher indices */ &kMatcherIndices[134], @@ -9774,7 +9816,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 2, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[6], + /* template types */ &kTemplateTypes[4], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[940], /* return matcher indices */ &kMatcherIndices[132], @@ -9786,7 +9828,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 2, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[8], + /* template types */ &kTemplateTypes[6], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[941], /* return matcher indices */ &kMatcherIndices[130], @@ -9810,7 +9852,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 5, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[180], /* return matcher indices */ &kMatcherIndices[128], @@ -9822,7 +9864,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 6, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[108], /* return matcher indices */ &kMatcherIndices[128], @@ -9834,7 +9876,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 6, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[102], /* return matcher indices */ &kMatcherIndices[128], @@ -9846,7 +9888,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 7, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[65], /* return matcher indices */ &kMatcherIndices[128], @@ -9858,7 +9900,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 5, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[235], /* return matcher indices */ &kMatcherIndices[128], @@ -9870,7 +9912,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 6, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[78], /* return matcher indices */ &kMatcherIndices[128], @@ -9882,7 +9924,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 5, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[245], /* return matcher indices */ &kMatcherIndices[128], @@ -9894,7 +9936,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 6, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[120], /* return matcher indices */ &kMatcherIndices[128], @@ -9906,7 +9948,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 4, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[343], /* return matcher indices */ &kMatcherIndices[128], @@ -9918,7 +9960,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 5, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[225], /* return matcher indices */ &kMatcherIndices[128], @@ -9930,7 +9972,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 5, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[150], /* return matcher indices */ &kMatcherIndices[128], @@ -9942,7 +9984,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 6, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[144], /* return matcher indices */ &kMatcherIndices[128], @@ -9954,7 +9996,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 4, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[439], /* return matcher indices */ &kMatcherIndices[128], @@ -9966,7 +10008,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 5, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[200], /* return matcher indices */ &kMatcherIndices[128], @@ -9978,7 +10020,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 4, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[435], /* return matcher indices */ &kMatcherIndices[128], @@ -9990,7 +10032,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 5, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[280], /* return matcher indices */ &kMatcherIndices[128], @@ -10002,7 +10044,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 0, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[12], + /* template types */ &kTemplateTypes[13], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[1004], /* return matcher indices */ &kMatcherIndices[226], @@ -10014,7 +10056,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[12], + /* template types */ &kTemplateTypes[13], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[922], /* return matcher indices */ &kMatcherIndices[226], @@ -10050,7 +10092,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[4], + /* template types */ &kTemplateTypes[2], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[908], /* return matcher indices */ &kMatcherIndices[230], @@ -10062,7 +10104,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[2], + /* template types */ &kTemplateTypes[8], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[906], /* return matcher indices */ &kMatcherIndices[228], @@ -10074,7 +10116,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 4, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[419], /* return matcher indices */ &kMatcherIndices[4], @@ -10086,7 +10128,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 5, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[240], /* return matcher indices */ &kMatcherIndices[4], @@ -10098,7 +10140,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 5, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[220], /* return matcher indices */ &kMatcherIndices[4], @@ -10110,7 +10152,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 6, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[138], /* return matcher indices */ &kMatcherIndices[4], @@ -10122,7 +10164,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 4, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[403], /* return matcher indices */ &kMatcherIndices[4], @@ -10134,7 +10176,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 5, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[290], /* return matcher indices */ &kMatcherIndices[4], @@ -10146,7 +10188,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 0, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[12], + /* template types */ &kTemplateTypes[13], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[1004], /* return matcher indices */ &kMatcherIndices[180], @@ -10158,7 +10200,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[12], + /* template types */ &kTemplateTypes[13], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[982], /* return matcher indices */ &kMatcherIndices[180], @@ -10194,7 +10236,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[4], + /* template types */ &kTemplateTypes[2], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[985], /* return matcher indices */ &kMatcherIndices[184], @@ -10206,7 +10248,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[2], + /* template types */ &kTemplateTypes[8], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[986], /* return matcher indices */ &kMatcherIndices[182], @@ -10218,7 +10260,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 0, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[12], + /* template types */ &kTemplateTypes[13], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[1004], /* return matcher indices */ &kMatcherIndices[164], @@ -10230,7 +10272,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[12], + /* template types */ &kTemplateTypes[13], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[970], /* return matcher indices */ &kMatcherIndices[164], @@ -10266,7 +10308,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[4], + /* template types */ &kTemplateTypes[2], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[973], /* return matcher indices */ &kMatcherIndices[170], @@ -10278,7 +10320,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[2], + /* template types */ &kTemplateTypes[8], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[974], /* return matcher indices */ &kMatcherIndices[166], @@ -10290,7 +10332,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 4, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[395], /* return matcher indices */ &kMatcherIndices[4], @@ -10302,7 +10344,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 5, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[195], /* return matcher indices */ &kMatcherIndices[4], @@ -10314,7 +10356,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 5, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[155], /* return matcher indices */ &kMatcherIndices[4], @@ -10326,7 +10368,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 6, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[72], /* return matcher indices */ &kMatcherIndices[4], @@ -10338,7 +10380,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 4, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[371], /* return matcher indices */ &kMatcherIndices[4], @@ -10350,7 +10392,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 5, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[175], /* return matcher indices */ &kMatcherIndices[4], @@ -10362,7 +10404,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 4, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[367], /* return matcher indices */ &kMatcherIndices[128], @@ -10374,7 +10416,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 5, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[185], /* return matcher indices */ &kMatcherIndices[128], @@ -10386,7 +10428,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 5, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[190], /* return matcher indices */ &kMatcherIndices[128], @@ -10398,7 +10440,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 6, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[126], /* return matcher indices */ &kMatcherIndices[128], @@ -10410,7 +10452,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 4, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[355], /* return matcher indices */ &kMatcherIndices[128], @@ -10422,7 +10464,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 5, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[210], /* return matcher indices */ &kMatcherIndices[128], @@ -10434,7 +10476,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 0, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[12], + /* template types */ &kTemplateTypes[13], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[1004], /* return matcher indices */ &kMatcherIndices[172], @@ -10446,7 +10488,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[12], + /* template types */ &kTemplateTypes[13], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[976], /* return matcher indices */ &kMatcherIndices[172], @@ -10482,7 +10524,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[4], + /* template types */ &kTemplateTypes[2], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[979], /* return matcher indices */ &kMatcherIndices[178], @@ -10494,7 +10536,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[2], + /* template types */ &kTemplateTypes[8], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[980], /* return matcher indices */ &kMatcherIndices[176], @@ -10506,7 +10548,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 0, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[12], + /* template types */ &kTemplateTypes[13], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[1004], /* return matcher indices */ &kMatcherIndices[202], @@ -10518,7 +10560,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[12], + /* template types */ &kTemplateTypes[13], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[987], /* return matcher indices */ &kMatcherIndices[202], @@ -10554,7 +10596,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[4], + /* template types */ &kTemplateTypes[2], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[969], /* return matcher indices */ &kMatcherIndices[206], @@ -10566,7 +10608,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[2], + /* template types */ &kTemplateTypes[8], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[954], /* return matcher indices */ &kMatcherIndices[204], @@ -10578,7 +10620,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 0, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[12], + /* template types */ &kTemplateTypes[13], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[1004], /* return matcher indices */ &kMatcherIndices[208], @@ -10590,7 +10632,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[12], + /* template types */ &kTemplateTypes[13], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[943], /* return matcher indices */ &kMatcherIndices[208], @@ -10626,7 +10668,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[4], + /* template types */ &kTemplateTypes[2], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[928], /* return matcher indices */ &kMatcherIndices[220], @@ -10638,7 +10680,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[2], + /* template types */ &kTemplateTypes[8], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[925], /* return matcher indices */ &kMatcherIndices[218], @@ -10650,7 +10692,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 0, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[12], + /* template types */ &kTemplateTypes[13], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[1004], /* return matcher indices */ &kMatcherIndices[104], @@ -10662,7 +10704,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[12], + /* template types */ &kTemplateTypes[13], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[1000], /* return matcher indices */ &kMatcherIndices[104], @@ -10698,7 +10740,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[4], + /* template types */ &kTemplateTypes[2], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[999], /* return matcher indices */ &kMatcherIndices[200], @@ -10710,7 +10752,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[2], + /* template types */ &kTemplateTypes[8], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[993], /* return matcher indices */ &kMatcherIndices[198], @@ -10722,7 +10764,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 0, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[12], + /* template types */ &kTemplateTypes[13], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[1004], /* return matcher indices */ &kMatcherIndices[192], @@ -10734,7 +10776,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[12], + /* template types */ &kTemplateTypes[13], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[994], /* return matcher indices */ &kMatcherIndices[192], @@ -10770,7 +10812,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[4], + /* template types */ &kTemplateTypes[2], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[997], /* return matcher indices */ &kMatcherIndices[196], @@ -10782,7 +10824,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[2], + /* template types */ &kTemplateTypes[8], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[998], /* return matcher indices */ &kMatcherIndices[194], @@ -10794,7 +10836,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 0, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[12], + /* template types */ &kTemplateTypes[13], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[1004], /* return matcher indices */ &kMatcherIndices[186], @@ -10806,7 +10848,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[12], + /* template types */ &kTemplateTypes[13], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[988], /* return matcher indices */ &kMatcherIndices[186], @@ -10842,7 +10884,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[4], + /* template types */ &kTemplateTypes[2], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[991], /* return matcher indices */ &kMatcherIndices[190], @@ -10854,7 +10896,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[2], + /* template types */ &kTemplateTypes[8], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[992], /* return matcher indices */ &kMatcherIndices[188], @@ -10866,7 +10908,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[22], + /* template types */ &kTemplateTypes[23], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[737], /* return matcher indices */ &kMatcherIndices[1], @@ -10878,7 +10920,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[22], + /* template types */ &kTemplateTypes[23], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[735], /* return matcher indices */ &kMatcherIndices[38], @@ -10890,7 +10932,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[22], + /* template types */ &kTemplateTypes[23], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[733], /* return matcher indices */ &kMatcherIndices[38], @@ -10902,7 +10944,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[22], + /* template types */ &kTemplateTypes[23], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[731], /* return matcher indices */ &kMatcherIndices[38], @@ -10914,7 +10956,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 2, - /* template types */ &kTemplateTypes[12], + /* template types */ &kTemplateTypes[13], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[729], /* return matcher indices */ &kMatcherIndices[10], @@ -10926,7 +10968,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[13], + /* template types */ &kTemplateTypes[14], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[885], /* return matcher indices */ &kMatcherIndices[45], @@ -10938,7 +10980,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[13], + /* template types */ &kTemplateTypes[14], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[884], /* return matcher indices */ &kMatcherIndices[45], @@ -10950,7 +10992,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[883], /* return matcher indices */ &kMatcherIndices[45], @@ -10962,7 +11004,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[882], /* return matcher indices */ &kMatcherIndices[45], @@ -10974,7 +11016,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 2, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[3], /* parameters */ &kParameters[881], /* return matcher indices */ &kMatcherIndices[45], @@ -10986,7 +11028,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[22], + /* template types */ &kTemplateTypes[23], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[749], /* return matcher indices */ &kMatcherIndices[1], @@ -10998,7 +11040,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[22], + /* template types */ &kTemplateTypes[23], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[747], /* return matcher indices */ &kMatcherIndices[38], @@ -11010,7 +11052,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[22], + /* template types */ &kTemplateTypes[23], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[745], /* return matcher indices */ &kMatcherIndices[38], @@ -11022,7 +11064,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[22], + /* template types */ &kTemplateTypes[23], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[743], /* return matcher indices */ &kMatcherIndices[38], @@ -11034,7 +11076,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 2, - /* template types */ &kTemplateTypes[12], + /* template types */ &kTemplateTypes[13], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[741], /* return matcher indices */ &kMatcherIndices[10], @@ -11046,7 +11088,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[22], + /* template types */ &kTemplateTypes[23], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[701], /* return matcher indices */ &kMatcherIndices[1], @@ -11058,7 +11100,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[22], + /* template types */ &kTemplateTypes[23], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[699], /* return matcher indices */ &kMatcherIndices[38], @@ -11070,7 +11112,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[22], + /* template types */ &kTemplateTypes[23], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[695], /* return matcher indices */ &kMatcherIndices[38], @@ -11082,7 +11124,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[22], + /* template types */ &kTemplateTypes[23], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[693], /* return matcher indices */ &kMatcherIndices[38], @@ -11094,7 +11136,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[687], /* return matcher indices */ &kMatcherIndices[16], @@ -11106,7 +11148,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[685], /* return matcher indices */ &kMatcherIndices[50], @@ -11142,7 +11184,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[679], /* return matcher indices */ &kMatcherIndices[16], @@ -11154,7 +11196,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[677], /* return matcher indices */ &kMatcherIndices[50], @@ -11190,7 +11232,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[22], + /* template types */ &kTemplateTypes[23], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[709], /* return matcher indices */ &kMatcherIndices[1], @@ -11202,7 +11244,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[22], + /* template types */ &kTemplateTypes[23], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[707], /* return matcher indices */ &kMatcherIndices[38], @@ -11214,7 +11256,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[22], + /* template types */ &kTemplateTypes[23], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[705], /* return matcher indices */ &kMatcherIndices[38], @@ -11226,7 +11268,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[22], + /* template types */ &kTemplateTypes[23], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[781], /* return matcher indices */ &kMatcherIndices[38], @@ -11238,7 +11280,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 0, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[1004], /* return matcher indices */ &kMatcherIndices[45], @@ -11250,7 +11292,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[920], /* return matcher indices */ &kMatcherIndices[45], @@ -11262,7 +11304,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[21], + /* template types */ &kTemplateTypes[22], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[921], /* return matcher indices */ &kMatcherIndices[45], @@ -11274,7 +11316,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 0, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[1004], /* return matcher indices */ &kMatcherIndices[16], @@ -11286,7 +11328,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[932], /* return matcher indices */ &kMatcherIndices[16], @@ -11298,7 +11340,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[17], + /* template types */ &kTemplateTypes[18], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[933], /* return matcher indices */ &kMatcherIndices[16], @@ -11310,7 +11352,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 0, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[1004], /* return matcher indices */ &kMatcherIndices[111], @@ -11322,7 +11364,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[929], /* return matcher indices */ &kMatcherIndices[111], @@ -11334,7 +11376,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[18], + /* template types */ &kTemplateTypes[19], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[930], /* return matcher indices */ &kMatcherIndices[111], @@ -11346,7 +11388,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 0, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[1004], /* return matcher indices */ &kMatcherIndices[4], @@ -11358,7 +11400,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[926], /* return matcher indices */ &kMatcherIndices[4], @@ -11370,7 +11412,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[19], + /* template types */ &kTemplateTypes[20], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[927], /* return matcher indices */ &kMatcherIndices[4], @@ -11382,7 +11424,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[18], + /* template types */ &kTemplateTypes[19], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[540], /* return matcher indices */ &kMatcherIndices[1], @@ -11394,7 +11436,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[18], + /* template types */ &kTemplateTypes[19], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[543], /* return matcher indices */ &kMatcherIndices[38], @@ -11406,7 +11448,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[18], + /* template types */ &kTemplateTypes[19], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[546], /* return matcher indices */ &kMatcherIndices[38], @@ -11418,7 +11460,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 0, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[1004], /* return matcher indices */ &kMatcherIndices[46], @@ -11430,7 +11472,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[923], /* return matcher indices */ &kMatcherIndices[46], @@ -11442,7 +11484,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[20], + /* template types */ &kTemplateTypes[21], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[924], /* return matcher indices */ &kMatcherIndices[46], @@ -11454,7 +11496,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[477], /* return matcher indices */ &kMatcherIndices[4], @@ -11466,7 +11508,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[480], /* return matcher indices */ &kMatcherIndices[41], @@ -11478,7 +11520,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[483], /* return matcher indices */ &kMatcherIndices[41], @@ -11490,7 +11532,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[24], + /* template types */ &kTemplateTypes[25], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[860], /* return matcher indices */ &kMatcherIndices[1], @@ -11502,7 +11544,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[24], + /* template types */ &kTemplateTypes[25], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[861], /* return matcher indices */ &kMatcherIndices[38], @@ -11514,7 +11556,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[798], /* return matcher indices */ &kMatcherIndices[241], @@ -11526,7 +11568,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[810], /* return matcher indices */ &kMatcherIndices[174], @@ -11538,7 +11580,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[822], /* return matcher indices */ &kMatcherIndices[4], @@ -11550,7 +11592,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[823], /* return matcher indices */ &kMatcherIndices[41], @@ -11562,7 +11604,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[800], /* return matcher indices */ &kMatcherIndices[4], @@ -11574,7 +11616,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[799], /* return matcher indices */ &kMatcherIndices[41], @@ -11586,7 +11628,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[826], /* return matcher indices */ &kMatcherIndices[4], @@ -11598,7 +11640,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[830], /* return matcher indices */ &kMatcherIndices[41], @@ -11634,7 +11676,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[846], /* return matcher indices */ &kMatcherIndices[4], @@ -11646,7 +11688,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[848], /* return matcher indices */ &kMatcherIndices[41], @@ -11658,7 +11700,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[779], /* return matcher indices */ &kMatcherIndices[4], @@ -11670,7 +11712,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[777], /* return matcher indices */ &kMatcherIndices[41], @@ -11682,7 +11724,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[849], /* return matcher indices */ &kMatcherIndices[4], @@ -11694,7 +11736,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[850], /* return matcher indices */ &kMatcherIndices[4], @@ -11706,7 +11748,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[851], /* return matcher indices */ &kMatcherIndices[4], @@ -11718,7 +11760,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[852], /* return matcher indices */ &kMatcherIndices[41], @@ -11730,7 +11772,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[853], /* return matcher indices */ &kMatcherIndices[4], @@ -11742,7 +11784,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[854], /* return matcher indices */ &kMatcherIndices[41], @@ -11754,7 +11796,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[13], + /* template types */ &kTemplateTypes[14], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[763], /* return matcher indices */ &kMatcherIndices[1], @@ -11766,7 +11808,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[13], + /* template types */ &kTemplateTypes[14], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[761], /* return matcher indices */ &kMatcherIndices[38], @@ -11778,7 +11820,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[13], + /* template types */ &kTemplateTypes[14], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[759], /* return matcher indices */ &kMatcherIndices[1], @@ -11790,7 +11832,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[13], + /* template types */ &kTemplateTypes[14], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[757], /* return matcher indices */ &kMatcherIndices[38], @@ -11802,7 +11844,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[450], /* return matcher indices */ &kMatcherIndices[4], @@ -11814,7 +11856,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[447], /* return matcher indices */ &kMatcherIndices[41], @@ -11826,7 +11868,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[855], /* return matcher indices */ &kMatcherIndices[240], @@ -11838,7 +11880,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[856], /* return matcher indices */ &kMatcherIndices[138], @@ -11850,7 +11892,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[802], /* return matcher indices */ &kMatcherIndices[4], @@ -11862,7 +11904,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[801], /* return matcher indices */ &kMatcherIndices[41], @@ -11874,7 +11916,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[824], /* return matcher indices */ &kMatcherIndices[4], @@ -11886,7 +11928,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[825], /* return matcher indices */ &kMatcherIndices[41], @@ -11946,7 +11988,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[808], /* return matcher indices */ &kMatcherIndices[4], @@ -11958,7 +12000,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[807], /* return matcher indices */ &kMatcherIndices[41], @@ -11970,7 +12012,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[886], /* return matcher indices */ &kMatcherIndices[4], @@ -11982,7 +12024,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[809], /* return matcher indices */ &kMatcherIndices[41], @@ -11994,7 +12036,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[739], /* return matcher indices */ &kMatcherIndices[4], @@ -12006,7 +12048,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[703], /* return matcher indices */ &kMatcherIndices[41], @@ -12018,7 +12060,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[887], /* return matcher indices */ &kMatcherIndices[4], @@ -12030,7 +12072,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[888], /* return matcher indices */ &kMatcherIndices[41], @@ -12042,7 +12084,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[811], /* return matcher indices */ &kMatcherIndices[4], @@ -12054,7 +12096,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[1001], /* return matcher indices */ &kMatcherIndices[41], @@ -12066,7 +12108,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[813], /* return matcher indices */ &kMatcherIndices[4], @@ -12078,7 +12120,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[812], /* return matcher indices */ &kMatcherIndices[41], @@ -12114,7 +12156,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[891], /* return matcher indices */ &kMatcherIndices[4], @@ -12126,7 +12168,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[892], /* return matcher indices */ &kMatcherIndices[41], @@ -12138,7 +12180,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[815], /* return matcher indices */ &kMatcherIndices[4], @@ -12150,7 +12192,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[814], /* return matcher indices */ &kMatcherIndices[41], @@ -12162,7 +12204,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[893], /* return matcher indices */ &kMatcherIndices[4], @@ -12174,7 +12216,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[894], /* return matcher indices */ &kMatcherIndices[41], @@ -12186,7 +12228,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[895], /* return matcher indices */ &kMatcherIndices[4], @@ -12198,7 +12240,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[896], /* return matcher indices */ &kMatcherIndices[41], @@ -12210,7 +12252,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[897], /* return matcher indices */ &kMatcherIndices[4], @@ -12222,7 +12264,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[898], /* return matcher indices */ &kMatcherIndices[41], @@ -12234,7 +12276,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[567], /* return matcher indices */ &kMatcherIndices[4], @@ -12246,7 +12288,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[570], /* return matcher indices */ &kMatcherIndices[41], @@ -12258,7 +12300,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[899], /* return matcher indices */ &kMatcherIndices[4], @@ -12270,7 +12312,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[900], /* return matcher indices */ &kMatcherIndices[41], @@ -12282,7 +12324,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[671], /* return matcher indices */ &kMatcherIndices[4], @@ -12294,7 +12336,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[669], /* return matcher indices */ &kMatcherIndices[41], @@ -12330,7 +12372,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[919], /* return matcher indices */ &kMatcherIndices[4], @@ -12342,7 +12384,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[797], /* return matcher indices */ &kMatcherIndices[41], @@ -12354,7 +12396,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[984], /* return matcher indices */ &kMatcherIndices[4], @@ -12366,7 +12408,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[978], /* return matcher indices */ &kMatcherIndices[41], @@ -12378,7 +12420,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[817], /* return matcher indices */ &kMatcherIndices[4], @@ -12390,7 +12432,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[816], /* return matcher indices */ &kMatcherIndices[41], @@ -12402,7 +12444,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[964], /* return matcher indices */ &kMatcherIndices[4], @@ -12414,7 +12456,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[963], /* return matcher indices */ &kMatcherIndices[41], @@ -12426,7 +12468,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[819], /* return matcher indices */ &kMatcherIndices[4], @@ -12438,7 +12480,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[818], /* return matcher indices */ &kMatcherIndices[41], @@ -12474,7 +12516,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[821], /* return matcher indices */ &kMatcherIndices[4], @@ -12486,7 +12528,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[820], /* return matcher indices */ &kMatcherIndices[41], @@ -12498,7 +12540,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[22], + /* template types */ &kTemplateTypes[23], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[635], /* return matcher indices */ &kMatcherIndices[16], @@ -12510,7 +12552,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[22], + /* template types */ &kTemplateTypes[23], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[631], /* return matcher indices */ &kMatcherIndices[50], @@ -12522,7 +12564,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[22], + /* template types */ &kTemplateTypes[23], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[641], /* return matcher indices */ &kMatcherIndices[16], @@ -12534,7 +12576,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[22], + /* template types */ &kTemplateTypes[23], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[639], /* return matcher indices */ &kMatcherIndices[50], @@ -12546,7 +12588,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[22], + /* template types */ &kTemplateTypes[23], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[649], /* return matcher indices */ &kMatcherIndices[16], @@ -12558,7 +12600,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[22], + /* template types */ &kTemplateTypes[23], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[645], /* return matcher indices */ &kMatcherIndices[50], @@ -12570,7 +12612,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[787], /* return matcher indices */ &kMatcherIndices[4], @@ -12582,7 +12624,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[789], /* return matcher indices */ &kMatcherIndices[4], @@ -12594,7 +12636,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[829], /* return matcher indices */ &kMatcherIndices[4], @@ -12606,7 +12648,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[828], /* return matcher indices */ &kMatcherIndices[41], @@ -12618,7 +12660,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[13], + /* template types */ &kTemplateTypes[14], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[1002], /* return matcher indices */ &kMatcherIndices[1], @@ -12630,7 +12672,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[13], + /* template types */ &kTemplateTypes[14], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[996], /* return matcher indices */ &kMatcherIndices[38], @@ -12690,7 +12732,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[13], + /* template types */ &kTemplateTypes[14], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[870], /* return matcher indices */ &kMatcherIndices[45], @@ -12702,7 +12744,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[869], /* return matcher indices */ &kMatcherIndices[45], @@ -12738,7 +12780,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[22], + /* template types */ &kTemplateTypes[23], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[657], /* return matcher indices */ &kMatcherIndices[16], @@ -12750,7 +12792,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[22], + /* template types */ &kTemplateTypes[23], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[653], /* return matcher indices */ &kMatcherIndices[50], @@ -12762,7 +12804,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[839], /* return matcher indices */ &kMatcherIndices[4], @@ -12774,7 +12816,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[838], /* return matcher indices */ &kMatcherIndices[41], @@ -12786,7 +12828,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[841], /* return matcher indices */ &kMatcherIndices[4], @@ -12798,7 +12840,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[840], /* return matcher indices */ &kMatcherIndices[41], @@ -12810,7 +12852,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[13], + /* template types */ &kTemplateTypes[14], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[537], /* return matcher indices */ &kMatcherIndices[1], @@ -12822,7 +12864,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[13], + /* template types */ &kTemplateTypes[14], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[534], /* return matcher indices */ &kMatcherIndices[38], @@ -12834,7 +12876,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[843], /* return matcher indices */ &kMatcherIndices[4], @@ -12846,7 +12888,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[842], /* return matcher indices */ &kMatcherIndices[41], @@ -12858,7 +12900,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[845], /* return matcher indices */ &kMatcherIndices[4], @@ -12870,7 +12912,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[844], /* return matcher indices */ &kMatcherIndices[41], @@ -12880,33 +12922,33 @@ constexpr OverloadInfo kOverloads[] = { { /* [400] */ /* num parameters */ 2, - /* num template types */ 0, + /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[12], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[613], - /* return matcher indices */ &kMatcherIndices[4], + /* return matcher indices */ &kMatcherIndices[1], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* const eval */ nullptr, + /* const eval */ &ConstEval::atan2, }, { /* [401] */ /* num parameters */ 2, - /* num template types */ 0, + /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[12], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[751], - /* return matcher indices */ &kMatcherIndices[41], + /* return matcher indices */ &kMatcherIndices[38], /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline), - /* const eval */ nullptr, + /* const eval */ &ConstEval::atan2, }, { /* [402] */ /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[15], + /* template types */ &kTemplateTypes[17], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[659], /* return matcher indices */ &kMatcherIndices[16], @@ -12918,7 +12960,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[15], + /* template types */ &kTemplateTypes[17], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[599], /* return matcher indices */ &kMatcherIndices[50], @@ -12930,7 +12972,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[15], + /* template types */ &kTemplateTypes[17], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[663], /* return matcher indices */ &kMatcherIndices[16], @@ -12942,7 +12984,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[15], + /* template types */ &kTemplateTypes[17], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[661], /* return matcher indices */ &kMatcherIndices[50], @@ -12954,7 +12996,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[934], /* return matcher indices */ &kMatcherIndices[4], @@ -12966,7 +13008,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[931], /* return matcher indices */ &kMatcherIndices[41], @@ -12978,7 +13020,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[957], /* return matcher indices */ &kMatcherIndices[4], @@ -12990,7 +13032,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[946], /* return matcher indices */ &kMatcherIndices[41], @@ -13026,7 +13068,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[959], /* return matcher indices */ &kMatcherIndices[4], @@ -13038,7 +13080,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[958], /* return matcher indices */ &kMatcherIndices[41], @@ -13050,7 +13092,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[975], /* return matcher indices */ &kMatcherIndices[16], @@ -13062,7 +13104,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[971], /* return matcher indices */ &kMatcherIndices[16], @@ -13074,7 +13116,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[981], /* return matcher indices */ &kMatcherIndices[16], @@ -13086,7 +13128,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[977], /* return matcher indices */ &kMatcherIndices[16], @@ -13098,7 +13140,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[989], /* return matcher indices */ &kMatcherIndices[4], @@ -13110,7 +13152,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[983], /* return matcher indices */ &kMatcherIndices[41], @@ -13122,7 +13164,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[995], /* return matcher indices */ &kMatcherIndices[4], @@ -13134,7 +13176,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[990], /* return matcher indices */ &kMatcherIndices[41], @@ -13146,7 +13188,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[23], + /* template types */ &kTemplateTypes[24], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[862], /* return matcher indices */ &kMatcherIndices[1], @@ -13158,7 +13200,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[23], + /* template types */ &kTemplateTypes[24], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[863], /* return matcher indices */ &kMatcherIndices[38], @@ -13170,7 +13212,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[858], /* return matcher indices */ &kMatcherIndices[16], @@ -13182,7 +13224,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[859], /* return matcher indices */ &kMatcherIndices[50], @@ -13326,7 +13368,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[667], /* return matcher indices */ &kMatcherIndices[16], @@ -13338,7 +13380,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[665], /* return matcher indices */ &kMatcherIndices[16], @@ -13374,7 +13416,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 0, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[1004], /* return matcher indices */ nullptr, @@ -13386,7 +13428,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 0, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[1004], /* return matcher indices */ nullptr, @@ -13398,7 +13440,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[937], /* return matcher indices */ &kMatcherIndices[128], @@ -13410,7 +13452,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[947], /* return matcher indices */ &kMatcherIndices[128], @@ -13422,7 +13464,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[948], /* return matcher indices */ &kMatcherIndices[136], @@ -13434,7 +13476,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[961], /* return matcher indices */ &kMatcherIndices[136], @@ -13446,7 +13488,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[962], /* return matcher indices */ &kMatcherIndices[136], @@ -13458,7 +13500,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 2, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[5], /* parameters */ &kParameters[972], /* return matcher indices */ &kMatcherIndices[26], @@ -13470,7 +13512,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[525], /* return matcher indices */ &kMatcherIndices[41], @@ -13482,7 +13524,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[697], /* return matcher indices */ &kMatcherIndices[41], @@ -13494,7 +13536,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[868], /* return matcher indices */ &kMatcherIndices[46], @@ -13506,7 +13548,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[867], /* return matcher indices */ &kMatcherIndices[46], @@ -13518,7 +13560,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[866], /* return matcher indices */ &kMatcherIndices[46], @@ -13530,7 +13572,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[865], /* return matcher indices */ &kMatcherIndices[46], @@ -13542,7 +13584,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[857], /* return matcher indices */ &kMatcherIndices[41], @@ -13554,7 +13596,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[785], /* return matcher indices */ &kMatcherIndices[108], @@ -13566,7 +13608,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 3, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[453], /* return matcher indices */ &kMatcherIndices[41], @@ -13578,7 +13620,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[795], /* return matcher indices */ &kMatcherIndices[46], @@ -13590,7 +13632,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[793], /* return matcher indices */ &kMatcherIndices[45], @@ -13602,7 +13644,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 2, /* num template types */ 1, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[13], + /* template types */ &kTemplateTypes[14], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[791], /* return matcher indices */ &kMatcherIndices[1], @@ -13614,7 +13656,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 1, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[6], /* parameters */ &kParameters[827], /* return matcher indices */ &kMatcherIndices[4], @@ -13638,7 +13680,7 @@ constexpr OverloadInfo kOverloads[] = { /* num parameters */ 1, /* num template types */ 0, /* num template numbers */ 0, - /* template types */ &kTemplateTypes[25], + /* template types */ &kTemplateTypes[26], /* template numbers */ &kTemplateNumbers[10], /* parameters */ &kParameters[864], /* return matcher indices */ &kMatcherIndices[46], @@ -13712,8 +13754,8 @@ constexpr IntrinsicInfo kBuiltins[] = { }, { /* [9] */ - /* fn atan2(f32, f32) -> f32 */ - /* fn atan2(vec, vec) -> vec */ + /* fn atan2(T, T) -> T */ + /* fn atan2(vec, vec) -> vec */ /* num overloads */ 2, /* overloads */ &kOverloads[400], }, diff --git a/src/tint/writer/spirv/builder_builtin_test.cc b/src/tint/writer/spirv/builder_builtin_test.cc index c4bf27e5ff..f9f009df41 100644 --- a/src/tint/writer/spirv/builder_builtin_test.cc +++ b/src/tint/writer/spirv/builder_builtin_test.cc @@ -918,9 +918,11 @@ OpFunctionEnd using Builtin_Builtin_ThreeParam_Float_Test = BuiltinBuilderTestWithParam; TEST_P(Builtin_Builtin_ThreeParam_Float_Test, Call_Scalar) { auto param = GetParam(); - auto* expr = Call(param.name, 1_f, 1_f, 1_f); + auto* decl = Decl(Var("a", nullptr, Expr(1_f))); + auto* expr = Call(param.name, Expr("a"), 1_f, 1_f); auto* func = Func("a_func", {}, ty.void_(), { + decl, Assign(Phony(), expr), }); @@ -929,17 +931,23 @@ TEST_P(Builtin_Builtin_ThreeParam_Float_Test, Call_Scalar) { ASSERT_TRUE(b.GenerateFunction(func)) << b.error(); auto got = DumpBuilder(b); - auto expect = R"(%7 = OpExtInstImport "GLSL.std.450" + auto expect = R"(%11 = OpExtInstImport "GLSL.std.450" OpName %3 "a_func" +OpName %7 "a" %2 = OpTypeVoid %1 = OpTypeFunction %2 -%6 = OpTypeFloat 32 -%8 = OpConstant %6 1 +%5 = OpTypeFloat 32 +%6 = OpConstant %5 1 +%8 = OpTypePointer Function %5 +%9 = OpConstantNull %5 %3 = OpFunction %2 None %1 %4 = OpLabel -%5 = OpExtInst %6 %7 )" + +%7 = OpVariable %8 Function %9 +OpStore %7 %6 +%12 = OpLoad %5 %7 +%10 = OpExtInst %5 %11 )" + param.op + - R"( %8 %8 %8 + R"( %12 %6 %6 OpReturn OpFunctionEnd )"; @@ -948,9 +956,11 @@ OpFunctionEnd TEST_P(Builtin_Builtin_ThreeParam_Float_Test, Call_Vector) { auto param = GetParam(); - auto* expr = Call(param.name, vec2(1_f, 1_f), vec2(1_f, 1_f), vec2(1_f, 1_f)); + auto* decl = Decl(Var("a", nullptr, vec2(1_f, 1_f))); + auto* expr = Call(param.name, Expr("a"), vec2(1_f, 1_f), vec2(1_f, 1_f)); auto* func = Func("a_func", {}, ty.void_(), { + decl, Assign(Phony(), expr), }); @@ -959,19 +969,25 @@ TEST_P(Builtin_Builtin_ThreeParam_Float_Test, Call_Vector) { ASSERT_TRUE(b.GenerateFunction(func)) << b.error(); auto got = DumpBuilder(b); - auto expect = R"(%8 = OpExtInstImport "GLSL.std.450" + auto expect = R"(%13 = OpExtInstImport "GLSL.std.450" OpName %3 "a_func" +OpName %9 "a" %2 = OpTypeVoid %1 = OpTypeFunction %2 -%7 = OpTypeFloat 32 -%6 = OpTypeVector %7 2 -%9 = OpConstant %7 1 -%10 = OpConstantComposite %6 %9 %9 +%6 = OpTypeFloat 32 +%5 = OpTypeVector %6 2 +%7 = OpConstant %6 1 +%8 = OpConstantComposite %5 %7 %7 +%10 = OpTypePointer Function %5 +%11 = OpConstantNull %5 %3 = OpFunction %2 None %1 %4 = OpLabel -%5 = OpExtInst %6 %8 )" + +%9 = OpVariable %10 Function %11 +OpStore %9 %8 +%14 = OpLoad %5 %9 +%12 = OpExtInst %5 %13 )" + param.op + - R"( %10 %10 %10 + R"( %14 %8 %8 OpReturn OpFunctionEnd )"; @@ -1305,9 +1321,11 @@ INSTANTIATE_TEST_SUITE_P(BuiltinBuilderTest, using Builtin_Builtin_ThreeParam_Sint_Test = BuiltinBuilderTestWithParam; TEST_P(Builtin_Builtin_ThreeParam_Sint_Test, Call_Scalar) { auto param = GetParam(); - auto* expr = Call(param.name, 1_i, 1_i, 1_i); + auto* decl = Decl(Var("a", nullptr, Expr(1_i))); + auto* expr = Call(param.name, Expr("a"), 1_i, 1_i); auto* func = Func("a_func", {}, ty.void_(), { + decl, Assign(Phony(), expr), }); @@ -1316,17 +1334,23 @@ TEST_P(Builtin_Builtin_ThreeParam_Sint_Test, Call_Scalar) { ASSERT_TRUE(b.GenerateFunction(func)) << b.error(); auto got = DumpBuilder(b); - auto expect = R"(%7 = OpExtInstImport "GLSL.std.450" + auto expect = R"(%11 = OpExtInstImport "GLSL.std.450" OpName %3 "a_func" +OpName %7 "a" %2 = OpTypeVoid %1 = OpTypeFunction %2 -%6 = OpTypeInt 32 1 -%8 = OpConstant %6 1 +%5 = OpTypeInt 32 1 +%6 = OpConstant %5 1 +%8 = OpTypePointer Function %5 +%9 = OpConstantNull %5 %3 = OpFunction %2 None %1 %4 = OpLabel -%5 = OpExtInst %6 %7 )" + +%7 = OpVariable %8 Function %9 +OpStore %7 %6 +%12 = OpLoad %5 %7 +%10 = OpExtInst %5 %11 )" + param.op + - R"( %8 %8 %8 + R"( %12 %6 %6 OpReturn OpFunctionEnd )"; @@ -1335,9 +1359,11 @@ OpFunctionEnd TEST_P(Builtin_Builtin_ThreeParam_Sint_Test, Call_Vector) { auto param = GetParam(); - auto* expr = Call(param.name, vec2(1_i, 1_i), vec2(1_i, 1_i), vec2(1_i, 1_i)); + auto* decl = Decl(Var("a", nullptr, vec2(1_i, 1_i))); + auto* expr = Call(param.name, Expr("a"), vec2(1_i, 1_i), vec2(1_i, 1_i)); auto* func = Func("a_func", {}, ty.void_(), { + decl, Assign(Phony(), expr), }); @@ -1346,19 +1372,25 @@ TEST_P(Builtin_Builtin_ThreeParam_Sint_Test, Call_Vector) { ASSERT_TRUE(b.GenerateFunction(func)) << b.error(); auto got = DumpBuilder(b); - auto expect = R"(%8 = OpExtInstImport "GLSL.std.450" + auto expect = R"(%13 = OpExtInstImport "GLSL.std.450" OpName %3 "a_func" +OpName %9 "a" %2 = OpTypeVoid %1 = OpTypeFunction %2 -%7 = OpTypeInt 32 1 -%6 = OpTypeVector %7 2 -%9 = OpConstant %7 1 -%10 = OpConstantComposite %6 %9 %9 +%6 = OpTypeInt 32 1 +%5 = OpTypeVector %6 2 +%7 = OpConstant %6 1 +%8 = OpConstantComposite %5 %7 %7 +%10 = OpTypePointer Function %5 +%11 = OpConstantNull %5 %3 = OpFunction %2 None %1 %4 = OpLabel -%5 = OpExtInst %6 %8 )" + +%9 = OpVariable %10 Function %11 +OpStore %9 %8 +%14 = OpLoad %5 %9 +%12 = OpExtInst %5 %13 )" + param.op + - R"( %10 %10 %10 + R"( %14 %8 %8 OpReturn OpFunctionEnd )"; @@ -1371,9 +1403,11 @@ INSTANTIATE_TEST_SUITE_P(BuiltinBuilderTest, using Builtin_Builtin_ThreeParam_Uint_Test = BuiltinBuilderTestWithParam; TEST_P(Builtin_Builtin_ThreeParam_Uint_Test, Call_Scalar) { auto param = GetParam(); - auto* expr = Call(param.name, 1_u, 1_u, 1_u); + auto* decl = Decl(Var("a", nullptr, Expr(1_u))); + auto* expr = Call(param.name, Expr("a"), 1_u, 1_u); auto* func = Func("a_func", {}, ty.void_(), { + decl, Assign(Phony(), expr), }); @@ -1382,17 +1416,23 @@ TEST_P(Builtin_Builtin_ThreeParam_Uint_Test, Call_Scalar) { ASSERT_TRUE(b.GenerateFunction(func)) << b.error(); auto got = DumpBuilder(b); - auto expect = R"(%7 = OpExtInstImport "GLSL.std.450" + auto expect = R"(%11 = OpExtInstImport "GLSL.std.450" OpName %3 "a_func" +OpName %7 "a" %2 = OpTypeVoid %1 = OpTypeFunction %2 -%6 = OpTypeInt 32 0 -%8 = OpConstant %6 1 +%5 = OpTypeInt 32 0 +%6 = OpConstant %5 1 +%8 = OpTypePointer Function %5 +%9 = OpConstantNull %5 %3 = OpFunction %2 None %1 %4 = OpLabel -%5 = OpExtInst %6 %7 )" + +%7 = OpVariable %8 Function %9 +OpStore %7 %6 +%12 = OpLoad %5 %7 +%10 = OpExtInst %5 %11 )" + param.op + - R"( %8 %8 %8 + R"( %12 %6 %6 OpReturn OpFunctionEnd )"; @@ -1401,9 +1441,11 @@ OpFunctionEnd TEST_P(Builtin_Builtin_ThreeParam_Uint_Test, Call_Vector) { auto param = GetParam(); - auto* expr = Call(param.name, vec2(1_u, 1_u), vec2(1_u, 1_u), vec2(1_u, 1_u)); + auto* decl = Decl(Var("a", nullptr, vec2(1_u, 1_u))); + auto* expr = Call(param.name, Expr("a"), vec2(1_u, 1_u), vec2(1_u, 1_u)); auto* func = Func("a_func", {}, ty.void_(), { + decl, Assign(Phony(), expr), }); @@ -1412,19 +1454,25 @@ TEST_P(Builtin_Builtin_ThreeParam_Uint_Test, Call_Vector) { ASSERT_TRUE(b.GenerateFunction(func)) << b.error(); auto got = DumpBuilder(b); - auto expect = R"(%8 = OpExtInstImport "GLSL.std.450" + auto expect = R"(%13 = OpExtInstImport "GLSL.std.450" OpName %3 "a_func" +OpName %9 "a" %2 = OpTypeVoid %1 = OpTypeFunction %2 -%7 = OpTypeInt 32 0 -%6 = OpTypeVector %7 2 -%9 = OpConstant %7 1 -%10 = OpConstantComposite %6 %9 %9 +%6 = OpTypeInt 32 0 +%5 = OpTypeVector %6 2 +%7 = OpConstant %6 1 +%8 = OpConstantComposite %5 %7 %7 +%10 = OpTypePointer Function %5 +%11 = OpConstantNull %5 %3 = OpFunction %2 None %1 %4 = OpLabel -%5 = OpExtInst %6 %8 )" + +%9 = OpVariable %10 Function %11 +OpStore %9 %8 +%14 = OpLoad %5 %9 +%12 = OpExtInst %5 %13 )" + param.op + - R"( %10 %10 %10 + R"( %14 %8 %8 OpReturn OpFunctionEnd )"; diff --git a/test/tint/builtins/gen/literal/atan2/034ace.wgsl b/test/tint/builtins/gen/literal/atan2/034ace.wgsl new file mode 100644 index 0000000000..2e7ead5212 --- /dev/null +++ b/test/tint/builtins/gen/literal/atan2/034ace.wgsl @@ -0,0 +1,43 @@ +// Copyright 2021 The Tint Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//////////////////////////////////////////////////////////////////////////////// +// File generated by tools/src/cmd/gen +// using the template: +// test/tint/builtins/gen/gen.wgsl.tmpl +// +// Do not modify this file directly +//////////////////////////////////////////////////////////////////////////////// + + +// fn atan2(fa, fa) -> fa +fn atan2_034ace() { + var res = atan2(1, 1); +} + +@vertex +fn vertex_main() -> @builtin(position) vec4 { + atan2_034ace(); + return vec4(); +} + +@fragment +fn fragment_main() { + atan2_034ace(); +} + +@compute @workgroup_size(1) +fn compute_main() { + atan2_034ace(); +} diff --git a/test/tint/builtins/gen/literal/atan2/034ace.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/atan2/034ace.wgsl.expected.dxc.hlsl new file mode 100644 index 0000000000..dce0209f87 --- /dev/null +++ b/test/tint/builtins/gen/literal/atan2/034ace.wgsl.expected.dxc.hlsl @@ -0,0 +1,30 @@ +void atan2_034ace() { + float res = 0.785398185f; +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + atan2_034ace(); + return (0.0f).xxxx; +} + +tint_symbol vertex_main() { + const float4 inner_result = vertex_main_inner(); + tint_symbol wrapper_result = (tint_symbol)0; + wrapper_result.value = inner_result; + return wrapper_result; +} + +void fragment_main() { + atan2_034ace(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + atan2_034ace(); + return; +} diff --git a/test/tint/builtins/gen/literal/atan2/034ace.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/atan2/034ace.wgsl.expected.fxc.hlsl new file mode 100644 index 0000000000..dce0209f87 --- /dev/null +++ b/test/tint/builtins/gen/literal/atan2/034ace.wgsl.expected.fxc.hlsl @@ -0,0 +1,30 @@ +void atan2_034ace() { + float res = 0.785398185f; +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + atan2_034ace(); + return (0.0f).xxxx; +} + +tint_symbol vertex_main() { + const float4 inner_result = vertex_main_inner(); + tint_symbol wrapper_result = (tint_symbol)0; + wrapper_result.value = inner_result; + return wrapper_result; +} + +void fragment_main() { + atan2_034ace(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + atan2_034ace(); + return; +} diff --git a/test/tint/builtins/gen/literal/atan2/034ace.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atan2/034ace.wgsl.expected.glsl new file mode 100644 index 0000000000..4919787a0b --- /dev/null +++ b/test/tint/builtins/gen/literal/atan2/034ace.wgsl.expected.glsl @@ -0,0 +1,49 @@ +#version 310 es + +void atan2_034ace() { + float res = 0.785398185f; +} + +vec4 vertex_main() { + atan2_034ace(); + return vec4(0.0f); +} + +void main() { + gl_PointSize = 1.0; + vec4 inner_result = vertex_main(); + gl_Position = inner_result; + gl_Position.y = -(gl_Position.y); + gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w); + return; +} +#version 310 es +precision mediump float; + +void atan2_034ace() { + float res = 0.785398185f; +} + +void fragment_main() { + atan2_034ace(); +} + +void main() { + fragment_main(); + return; +} +#version 310 es + +void atan2_034ace() { + float res = 0.785398185f; +} + +void compute_main() { + atan2_034ace(); +} + +layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; +void main() { + compute_main(); + return; +} diff --git a/test/tint/builtins/gen/literal/atan2/034ace.wgsl.expected.msl b/test/tint/builtins/gen/literal/atan2/034ace.wgsl.expected.msl new file mode 100644 index 0000000000..fb91e8d5e4 --- /dev/null +++ b/test/tint/builtins/gen/literal/atan2/034ace.wgsl.expected.msl @@ -0,0 +1,33 @@ +#include + +using namespace metal; +void atan2_034ace() { + float res = 0.785398185f; +} + +struct tint_symbol { + float4 value [[position]]; +}; + +float4 vertex_main_inner() { + atan2_034ace(); + return float4(0.0f); +} + +vertex tint_symbol vertex_main() { + float4 const inner_result = vertex_main_inner(); + tint_symbol wrapper_result = {}; + wrapper_result.value = inner_result; + return wrapper_result; +} + +fragment void fragment_main() { + atan2_034ace(); + return; +} + +kernel void compute_main() { + atan2_034ace(); + return; +} + diff --git a/test/tint/builtins/gen/literal/atan2/034ace.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/atan2/034ace.wgsl.expected.spvasm new file mode 100644 index 0000000000..abac9b451f --- /dev/null +++ b/test/tint/builtins/gen/literal/atan2/034ace.wgsl.expected.spvasm @@ -0,0 +1,64 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 30 +; Schema: 0 + OpCapability Shader + OpMemoryModel Logical GLSL450 + OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size + OpEntryPoint Fragment %fragment_main "fragment_main" + OpEntryPoint GLCompute %compute_main "compute_main" + OpExecutionMode %fragment_main OriginUpperLeft + OpExecutionMode %compute_main LocalSize 1 1 1 + OpName %value "value" + OpName %vertex_point_size "vertex_point_size" + OpName %atan2_034ace "atan2_034ace" + OpName %res "res" + OpName %vertex_main_inner "vertex_main_inner" + OpName %vertex_main "vertex_main" + OpName %fragment_main "fragment_main" + OpName %compute_main "compute_main" + OpDecorate %value BuiltIn Position + OpDecorate %vertex_point_size BuiltIn PointSize + %float = OpTypeFloat 32 + %v4float = OpTypeVector %float 4 +%_ptr_Output_v4float = OpTypePointer Output %v4float + %5 = OpConstantNull %v4float + %value = OpVariable %_ptr_Output_v4float Output %5 +%_ptr_Output_float = OpTypePointer Output %float + %8 = OpConstantNull %float +%vertex_point_size = OpVariable %_ptr_Output_float Output %8 + %void = OpTypeVoid + %9 = OpTypeFunction %void +%float_0_785398185 = OpConstant %float 0.785398185 +%_ptr_Function_float = OpTypePointer Function %float + %16 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%atan2_034ace = OpFunction %void None %9 + %12 = OpLabel + %res = OpVariable %_ptr_Function_float Function %8 + OpStore %res %float_0_785398185 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %16 + %18 = OpLabel + %19 = OpFunctionCall %void %atan2_034ace + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %9 + %21 = OpLabel + %22 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %22 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %9 + %25 = OpLabel + %26 = OpFunctionCall %void %atan2_034ace + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %9 + %28 = OpLabel + %29 = OpFunctionCall %void %atan2_034ace + OpReturn + OpFunctionEnd diff --git a/test/tint/builtins/gen/literal/atan2/034ace.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atan2/034ace.wgsl.expected.wgsl new file mode 100644 index 0000000000..5e22efa7fc --- /dev/null +++ b/test/tint/builtins/gen/literal/atan2/034ace.wgsl.expected.wgsl @@ -0,0 +1,19 @@ +fn atan2_034ace() { + var res = atan2(1, 1); +} + +@vertex +fn vertex_main() -> @builtin(position) vec4 { + atan2_034ace(); + return vec4(); +} + +@fragment +fn fragment_main() { + atan2_034ace(); +} + +@compute @workgroup_size(1) +fn compute_main() { + atan2_034ace(); +} diff --git a/test/tint/builtins/gen/literal/atan2/3c2865.wgsl b/test/tint/builtins/gen/literal/atan2/3c2865.wgsl new file mode 100644 index 0000000000..e0da8cf611 --- /dev/null +++ b/test/tint/builtins/gen/literal/atan2/3c2865.wgsl @@ -0,0 +1,43 @@ +// Copyright 2021 The Tint Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//////////////////////////////////////////////////////////////////////////////// +// File generated by tools/src/cmd/gen +// using the template: +// test/tint/builtins/gen/gen.wgsl.tmpl +// +// Do not modify this file directly +//////////////////////////////////////////////////////////////////////////////// + + +// fn atan2(vec<3, fa>, vec<3, fa>) -> vec<3, fa> +fn atan2_3c2865() { + var res = atan2(vec3(1), vec3(1)); +} + +@vertex +fn vertex_main() -> @builtin(position) vec4 { + atan2_3c2865(); + return vec4(); +} + +@fragment +fn fragment_main() { + atan2_3c2865(); +} + +@compute @workgroup_size(1) +fn compute_main() { + atan2_3c2865(); +} diff --git a/test/tint/builtins/gen/literal/atan2/3c2865.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/atan2/3c2865.wgsl.expected.dxc.hlsl new file mode 100644 index 0000000000..71f64a4057 --- /dev/null +++ b/test/tint/builtins/gen/literal/atan2/3c2865.wgsl.expected.dxc.hlsl @@ -0,0 +1,30 @@ +void atan2_3c2865() { + float3 res = (0.785398185f).xxx; +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + atan2_3c2865(); + return (0.0f).xxxx; +} + +tint_symbol vertex_main() { + const float4 inner_result = vertex_main_inner(); + tint_symbol wrapper_result = (tint_symbol)0; + wrapper_result.value = inner_result; + return wrapper_result; +} + +void fragment_main() { + atan2_3c2865(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + atan2_3c2865(); + return; +} diff --git a/test/tint/builtins/gen/literal/atan2/3c2865.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/atan2/3c2865.wgsl.expected.fxc.hlsl new file mode 100644 index 0000000000..71f64a4057 --- /dev/null +++ b/test/tint/builtins/gen/literal/atan2/3c2865.wgsl.expected.fxc.hlsl @@ -0,0 +1,30 @@ +void atan2_3c2865() { + float3 res = (0.785398185f).xxx; +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + atan2_3c2865(); + return (0.0f).xxxx; +} + +tint_symbol vertex_main() { + const float4 inner_result = vertex_main_inner(); + tint_symbol wrapper_result = (tint_symbol)0; + wrapper_result.value = inner_result; + return wrapper_result; +} + +void fragment_main() { + atan2_3c2865(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + atan2_3c2865(); + return; +} diff --git a/test/tint/builtins/gen/literal/atan2/3c2865.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atan2/3c2865.wgsl.expected.glsl new file mode 100644 index 0000000000..b2ebe380a2 --- /dev/null +++ b/test/tint/builtins/gen/literal/atan2/3c2865.wgsl.expected.glsl @@ -0,0 +1,49 @@ +#version 310 es + +void atan2_3c2865() { + vec3 res = vec3(0.785398185f); +} + +vec4 vertex_main() { + atan2_3c2865(); + return vec4(0.0f); +} + +void main() { + gl_PointSize = 1.0; + vec4 inner_result = vertex_main(); + gl_Position = inner_result; + gl_Position.y = -(gl_Position.y); + gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w); + return; +} +#version 310 es +precision mediump float; + +void atan2_3c2865() { + vec3 res = vec3(0.785398185f); +} + +void fragment_main() { + atan2_3c2865(); +} + +void main() { + fragment_main(); + return; +} +#version 310 es + +void atan2_3c2865() { + vec3 res = vec3(0.785398185f); +} + +void compute_main() { + atan2_3c2865(); +} + +layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; +void main() { + compute_main(); + return; +} diff --git a/test/tint/builtins/gen/literal/atan2/3c2865.wgsl.expected.msl b/test/tint/builtins/gen/literal/atan2/3c2865.wgsl.expected.msl new file mode 100644 index 0000000000..867108a468 --- /dev/null +++ b/test/tint/builtins/gen/literal/atan2/3c2865.wgsl.expected.msl @@ -0,0 +1,33 @@ +#include + +using namespace metal; +void atan2_3c2865() { + float3 res = float3(0.785398185f); +} + +struct tint_symbol { + float4 value [[position]]; +}; + +float4 vertex_main_inner() { + atan2_3c2865(); + return float4(0.0f); +} + +vertex tint_symbol vertex_main() { + float4 const inner_result = vertex_main_inner(); + tint_symbol wrapper_result = {}; + wrapper_result.value = inner_result; + return wrapper_result; +} + +fragment void fragment_main() { + atan2_3c2865(); + return; +} + +kernel void compute_main() { + atan2_3c2865(); + return; +} + diff --git a/test/tint/builtins/gen/literal/atan2/3c2865.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/atan2/3c2865.wgsl.expected.spvasm new file mode 100644 index 0000000000..56fba1d2ac --- /dev/null +++ b/test/tint/builtins/gen/literal/atan2/3c2865.wgsl.expected.spvasm @@ -0,0 +1,67 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 33 +; Schema: 0 + OpCapability Shader + OpMemoryModel Logical GLSL450 + OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size + OpEntryPoint Fragment %fragment_main "fragment_main" + OpEntryPoint GLCompute %compute_main "compute_main" + OpExecutionMode %fragment_main OriginUpperLeft + OpExecutionMode %compute_main LocalSize 1 1 1 + OpName %value "value" + OpName %vertex_point_size "vertex_point_size" + OpName %atan2_3c2865 "atan2_3c2865" + OpName %res "res" + OpName %vertex_main_inner "vertex_main_inner" + OpName %vertex_main "vertex_main" + OpName %fragment_main "fragment_main" + OpName %compute_main "compute_main" + OpDecorate %value BuiltIn Position + OpDecorate %vertex_point_size BuiltIn PointSize + %float = OpTypeFloat 32 + %v4float = OpTypeVector %float 4 +%_ptr_Output_v4float = OpTypePointer Output %v4float + %5 = OpConstantNull %v4float + %value = OpVariable %_ptr_Output_v4float Output %5 +%_ptr_Output_float = OpTypePointer Output %float + %8 = OpConstantNull %float +%vertex_point_size = OpVariable %_ptr_Output_float Output %8 + %void = OpTypeVoid + %9 = OpTypeFunction %void + %v3float = OpTypeVector %float 3 +%float_0_785398185 = OpConstant %float 0.785398185 + %15 = OpConstantComposite %v3float %float_0_785398185 %float_0_785398185 %float_0_785398185 +%_ptr_Function_v3float = OpTypePointer Function %v3float + %18 = OpConstantNull %v3float + %19 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%atan2_3c2865 = OpFunction %void None %9 + %12 = OpLabel + %res = OpVariable %_ptr_Function_v3float Function %18 + OpStore %res %15 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %19 + %21 = OpLabel + %22 = OpFunctionCall %void %atan2_3c2865 + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %9 + %24 = OpLabel + %25 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %25 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %9 + %28 = OpLabel + %29 = OpFunctionCall %void %atan2_3c2865 + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %9 + %31 = OpLabel + %32 = OpFunctionCall %void %atan2_3c2865 + OpReturn + OpFunctionEnd diff --git a/test/tint/builtins/gen/literal/atan2/3c2865.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atan2/3c2865.wgsl.expected.wgsl new file mode 100644 index 0000000000..ee5ee3df0b --- /dev/null +++ b/test/tint/builtins/gen/literal/atan2/3c2865.wgsl.expected.wgsl @@ -0,0 +1,19 @@ +fn atan2_3c2865() { + var res = atan2(vec3(1), vec3(1)); +} + +@vertex +fn vertex_main() -> @builtin(position) vec4 { + atan2_3c2865(); + return vec4(); +} + +@fragment +fn fragment_main() { + atan2_3c2865(); +} + +@compute @workgroup_size(1) +fn compute_main() { + atan2_3c2865(); +} diff --git a/test/tint/builtins/gen/literal/atan2/57fb13.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/atan2/57fb13.wgsl.expected.dxc.hlsl index be134c9d50..f3d2565163 100644 --- a/test/tint/builtins/gen/literal/atan2/57fb13.wgsl.expected.dxc.hlsl +++ b/test/tint/builtins/gen/literal/atan2/57fb13.wgsl.expected.dxc.hlsl @@ -1,5 +1,5 @@ void atan2_57fb13() { - float2 res = atan2((1.0f).xx, (1.0f).xx); + float2 res = (0.785398185f).xx; } struct tint_symbol { diff --git a/test/tint/builtins/gen/literal/atan2/57fb13.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/atan2/57fb13.wgsl.expected.fxc.hlsl index be134c9d50..f3d2565163 100644 --- a/test/tint/builtins/gen/literal/atan2/57fb13.wgsl.expected.fxc.hlsl +++ b/test/tint/builtins/gen/literal/atan2/57fb13.wgsl.expected.fxc.hlsl @@ -1,5 +1,5 @@ void atan2_57fb13() { - float2 res = atan2((1.0f).xx, (1.0f).xx); + float2 res = (0.785398185f).xx; } struct tint_symbol { diff --git a/test/tint/builtins/gen/literal/atan2/57fb13.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atan2/57fb13.wgsl.expected.glsl index 7fcea008c3..e4ffcbac49 100644 --- a/test/tint/builtins/gen/literal/atan2/57fb13.wgsl.expected.glsl +++ b/test/tint/builtins/gen/literal/atan2/57fb13.wgsl.expected.glsl @@ -1,7 +1,7 @@ #version 310 es void atan2_57fb13() { - vec2 res = atan(vec2(1.0f), vec2(1.0f)); + vec2 res = vec2(0.785398185f); } vec4 vertex_main() { @@ -21,7 +21,7 @@ void main() { precision mediump float; void atan2_57fb13() { - vec2 res = atan(vec2(1.0f), vec2(1.0f)); + vec2 res = vec2(0.785398185f); } void fragment_main() { @@ -35,7 +35,7 @@ void main() { #version 310 es void atan2_57fb13() { - vec2 res = atan(vec2(1.0f), vec2(1.0f)); + vec2 res = vec2(0.785398185f); } void compute_main() { diff --git a/test/tint/builtins/gen/literal/atan2/57fb13.wgsl.expected.msl b/test/tint/builtins/gen/literal/atan2/57fb13.wgsl.expected.msl index 2f51682830..bdc31a4597 100644 --- a/test/tint/builtins/gen/literal/atan2/57fb13.wgsl.expected.msl +++ b/test/tint/builtins/gen/literal/atan2/57fb13.wgsl.expected.msl @@ -2,7 +2,7 @@ using namespace metal; void atan2_57fb13() { - float2 res = atan2(float2(1.0f), float2(1.0f)); + float2 res = float2(0.785398185f); } struct tint_symbol { diff --git a/test/tint/builtins/gen/literal/atan2/57fb13.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/atan2/57fb13.wgsl.expected.spvasm index b50b11d607..8aed6450cd 100644 --- a/test/tint/builtins/gen/literal/atan2/57fb13.wgsl.expected.spvasm +++ b/test/tint/builtins/gen/literal/atan2/57fb13.wgsl.expected.spvasm @@ -1,10 +1,9 @@ ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 -; Bound: 34 +; Bound: 33 ; Schema: 0 OpCapability Shader - %15 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size OpEntryPoint Fragment %fragment_main "fragment_main" @@ -32,37 +31,37 @@ %void = OpTypeVoid %9 = OpTypeFunction %void %v2float = OpTypeVector %float 2 - %float_1 = OpConstant %float 1 - %17 = OpConstantComposite %v2float %float_1 %float_1 +%float_0_785398185 = OpConstant %float 0.785398185 + %15 = OpConstantComposite %v2float %float_0_785398185 %float_0_785398185 %_ptr_Function_v2float = OpTypePointer Function %v2float - %20 = OpConstantNull %v2float - %21 = OpTypeFunction %v4float + %18 = OpConstantNull %v2float + %19 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 %atan2_57fb13 = OpFunction %void None %9 %12 = OpLabel - %res = OpVariable %_ptr_Function_v2float Function %20 - %13 = OpExtInst %v2float %15 Atan2 %17 %17 - OpStore %res %13 + %res = OpVariable %_ptr_Function_v2float Function %18 + OpStore %res %15 OpReturn OpFunctionEnd -%vertex_main_inner = OpFunction %v4float None %21 - %23 = OpLabel - %24 = OpFunctionCall %void %atan2_57fb13 +%vertex_main_inner = OpFunction %v4float None %19 + %21 = OpLabel + %22 = OpFunctionCall %void %atan2_57fb13 OpReturnValue %5 OpFunctionEnd %vertex_main = OpFunction %void None %9 - %26 = OpLabel - %27 = OpFunctionCall %v4float %vertex_main_inner - OpStore %value %27 + %24 = OpLabel + %25 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %25 OpStore %vertex_point_size %float_1 OpReturn OpFunctionEnd %fragment_main = OpFunction %void None %9 - %29 = OpLabel - %30 = OpFunctionCall %void %atan2_57fb13 + %28 = OpLabel + %29 = OpFunctionCall %void %atan2_57fb13 OpReturn OpFunctionEnd %compute_main = OpFunction %void None %9 - %32 = OpLabel - %33 = OpFunctionCall %void %atan2_57fb13 + %31 = OpLabel + %32 = OpFunctionCall %void %atan2_57fb13 OpReturn OpFunctionEnd diff --git a/test/tint/builtins/gen/literal/atan2/96057c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/atan2/96057c.wgsl.expected.dxc.hlsl index 1a7ff4717d..d1f91727ce 100644 --- a/test/tint/builtins/gen/literal/atan2/96057c.wgsl.expected.dxc.hlsl +++ b/test/tint/builtins/gen/literal/atan2/96057c.wgsl.expected.dxc.hlsl @@ -1,5 +1,5 @@ void atan2_96057c() { - float res = atan2(1.0f, 1.0f); + float res = 0.785398185f; } struct tint_symbol { diff --git a/test/tint/builtins/gen/literal/atan2/96057c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/atan2/96057c.wgsl.expected.fxc.hlsl index 1a7ff4717d..d1f91727ce 100644 --- a/test/tint/builtins/gen/literal/atan2/96057c.wgsl.expected.fxc.hlsl +++ b/test/tint/builtins/gen/literal/atan2/96057c.wgsl.expected.fxc.hlsl @@ -1,5 +1,5 @@ void atan2_96057c() { - float res = atan2(1.0f, 1.0f); + float res = 0.785398185f; } struct tint_symbol { diff --git a/test/tint/builtins/gen/literal/atan2/96057c.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atan2/96057c.wgsl.expected.glsl index 37d0f9a8ee..84a2072b29 100644 --- a/test/tint/builtins/gen/literal/atan2/96057c.wgsl.expected.glsl +++ b/test/tint/builtins/gen/literal/atan2/96057c.wgsl.expected.glsl @@ -1,7 +1,7 @@ #version 310 es void atan2_96057c() { - float res = atan(1.0f, 1.0f); + float res = 0.785398185f; } vec4 vertex_main() { @@ -21,7 +21,7 @@ void main() { precision mediump float; void atan2_96057c() { - float res = atan(1.0f, 1.0f); + float res = 0.785398185f; } void fragment_main() { @@ -35,7 +35,7 @@ void main() { #version 310 es void atan2_96057c() { - float res = atan(1.0f, 1.0f); + float res = 0.785398185f; } void compute_main() { diff --git a/test/tint/builtins/gen/literal/atan2/96057c.wgsl.expected.msl b/test/tint/builtins/gen/literal/atan2/96057c.wgsl.expected.msl index f8d20e0120..8a2998eccd 100644 --- a/test/tint/builtins/gen/literal/atan2/96057c.wgsl.expected.msl +++ b/test/tint/builtins/gen/literal/atan2/96057c.wgsl.expected.msl @@ -2,7 +2,7 @@ using namespace metal; void atan2_96057c() { - float res = atan2(1.0f, 1.0f); + float res = 0.785398185f; } struct tint_symbol { diff --git a/test/tint/builtins/gen/literal/atan2/96057c.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/atan2/96057c.wgsl.expected.spvasm index 777b131acf..63149393e5 100644 --- a/test/tint/builtins/gen/literal/atan2/96057c.wgsl.expected.spvasm +++ b/test/tint/builtins/gen/literal/atan2/96057c.wgsl.expected.spvasm @@ -1,10 +1,9 @@ ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 -; Bound: 31 +; Bound: 30 ; Schema: 0 OpCapability Shader - %14 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size OpEntryPoint Fragment %fragment_main "fragment_main" @@ -31,35 +30,35 @@ %vertex_point_size = OpVariable %_ptr_Output_float Output %8 %void = OpTypeVoid %9 = OpTypeFunction %void - %float_1 = OpConstant %float 1 +%float_0_785398185 = OpConstant %float 0.785398185 %_ptr_Function_float = OpTypePointer Function %float - %18 = OpTypeFunction %v4float + %16 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 %atan2_96057c = OpFunction %void None %9 %12 = OpLabel %res = OpVariable %_ptr_Function_float Function %8 - %13 = OpExtInst %float %14 Atan2 %float_1 %float_1 - OpStore %res %13 + OpStore %res %float_0_785398185 OpReturn OpFunctionEnd -%vertex_main_inner = OpFunction %v4float None %18 - %20 = OpLabel - %21 = OpFunctionCall %void %atan2_96057c +%vertex_main_inner = OpFunction %v4float None %16 + %18 = OpLabel + %19 = OpFunctionCall %void %atan2_96057c OpReturnValue %5 OpFunctionEnd %vertex_main = OpFunction %void None %9 - %23 = OpLabel - %24 = OpFunctionCall %v4float %vertex_main_inner - OpStore %value %24 + %21 = OpLabel + %22 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %22 OpStore %vertex_point_size %float_1 OpReturn OpFunctionEnd %fragment_main = OpFunction %void None %9 - %26 = OpLabel - %27 = OpFunctionCall %void %atan2_96057c + %25 = OpLabel + %26 = OpFunctionCall %void %atan2_96057c OpReturn OpFunctionEnd %compute_main = OpFunction %void None %9 - %29 = OpLabel - %30 = OpFunctionCall %void %atan2_96057c + %28 = OpLabel + %29 = OpFunctionCall %void %atan2_96057c OpReturn OpFunctionEnd diff --git a/test/tint/builtins/gen/literal/atan2/a70d0d.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/atan2/a70d0d.wgsl.expected.dxc.hlsl index 9ef81dcac6..a025539a96 100644 --- a/test/tint/builtins/gen/literal/atan2/a70d0d.wgsl.expected.dxc.hlsl +++ b/test/tint/builtins/gen/literal/atan2/a70d0d.wgsl.expected.dxc.hlsl @@ -1,5 +1,5 @@ void atan2_a70d0d() { - float3 res = atan2((1.0f).xxx, (1.0f).xxx); + float3 res = (0.785398185f).xxx; } struct tint_symbol { diff --git a/test/tint/builtins/gen/literal/atan2/a70d0d.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/atan2/a70d0d.wgsl.expected.fxc.hlsl index 9ef81dcac6..a025539a96 100644 --- a/test/tint/builtins/gen/literal/atan2/a70d0d.wgsl.expected.fxc.hlsl +++ b/test/tint/builtins/gen/literal/atan2/a70d0d.wgsl.expected.fxc.hlsl @@ -1,5 +1,5 @@ void atan2_a70d0d() { - float3 res = atan2((1.0f).xxx, (1.0f).xxx); + float3 res = (0.785398185f).xxx; } struct tint_symbol { diff --git a/test/tint/builtins/gen/literal/atan2/a70d0d.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atan2/a70d0d.wgsl.expected.glsl index 9383f00484..a63fa44de1 100644 --- a/test/tint/builtins/gen/literal/atan2/a70d0d.wgsl.expected.glsl +++ b/test/tint/builtins/gen/literal/atan2/a70d0d.wgsl.expected.glsl @@ -1,7 +1,7 @@ #version 310 es void atan2_a70d0d() { - vec3 res = atan(vec3(1.0f), vec3(1.0f)); + vec3 res = vec3(0.785398185f); } vec4 vertex_main() { @@ -21,7 +21,7 @@ void main() { precision mediump float; void atan2_a70d0d() { - vec3 res = atan(vec3(1.0f), vec3(1.0f)); + vec3 res = vec3(0.785398185f); } void fragment_main() { @@ -35,7 +35,7 @@ void main() { #version 310 es void atan2_a70d0d() { - vec3 res = atan(vec3(1.0f), vec3(1.0f)); + vec3 res = vec3(0.785398185f); } void compute_main() { diff --git a/test/tint/builtins/gen/literal/atan2/a70d0d.wgsl.expected.msl b/test/tint/builtins/gen/literal/atan2/a70d0d.wgsl.expected.msl index 27d8133412..c34104b703 100644 --- a/test/tint/builtins/gen/literal/atan2/a70d0d.wgsl.expected.msl +++ b/test/tint/builtins/gen/literal/atan2/a70d0d.wgsl.expected.msl @@ -2,7 +2,7 @@ using namespace metal; void atan2_a70d0d() { - float3 res = atan2(float3(1.0f), float3(1.0f)); + float3 res = float3(0.785398185f); } struct tint_symbol { diff --git a/test/tint/builtins/gen/literal/atan2/a70d0d.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/atan2/a70d0d.wgsl.expected.spvasm index 076da641b1..e5d3081808 100644 --- a/test/tint/builtins/gen/literal/atan2/a70d0d.wgsl.expected.spvasm +++ b/test/tint/builtins/gen/literal/atan2/a70d0d.wgsl.expected.spvasm @@ -1,10 +1,9 @@ ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 -; Bound: 34 +; Bound: 33 ; Schema: 0 OpCapability Shader - %15 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size OpEntryPoint Fragment %fragment_main "fragment_main" @@ -32,37 +31,37 @@ %void = OpTypeVoid %9 = OpTypeFunction %void %v3float = OpTypeVector %float 3 - %float_1 = OpConstant %float 1 - %17 = OpConstantComposite %v3float %float_1 %float_1 %float_1 +%float_0_785398185 = OpConstant %float 0.785398185 + %15 = OpConstantComposite %v3float %float_0_785398185 %float_0_785398185 %float_0_785398185 %_ptr_Function_v3float = OpTypePointer Function %v3float - %20 = OpConstantNull %v3float - %21 = OpTypeFunction %v4float + %18 = OpConstantNull %v3float + %19 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 %atan2_a70d0d = OpFunction %void None %9 %12 = OpLabel - %res = OpVariable %_ptr_Function_v3float Function %20 - %13 = OpExtInst %v3float %15 Atan2 %17 %17 - OpStore %res %13 + %res = OpVariable %_ptr_Function_v3float Function %18 + OpStore %res %15 OpReturn OpFunctionEnd -%vertex_main_inner = OpFunction %v4float None %21 - %23 = OpLabel - %24 = OpFunctionCall %void %atan2_a70d0d +%vertex_main_inner = OpFunction %v4float None %19 + %21 = OpLabel + %22 = OpFunctionCall %void %atan2_a70d0d OpReturnValue %5 OpFunctionEnd %vertex_main = OpFunction %void None %9 - %26 = OpLabel - %27 = OpFunctionCall %v4float %vertex_main_inner - OpStore %value %27 + %24 = OpLabel + %25 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %25 OpStore %vertex_point_size %float_1 OpReturn OpFunctionEnd %fragment_main = OpFunction %void None %9 - %29 = OpLabel - %30 = OpFunctionCall %void %atan2_a70d0d + %28 = OpLabel + %29 = OpFunctionCall %void %atan2_a70d0d OpReturn OpFunctionEnd %compute_main = OpFunction %void None %9 - %32 = OpLabel - %33 = OpFunctionCall %void %atan2_a70d0d + %31 = OpLabel + %32 = OpFunctionCall %void %atan2_a70d0d OpReturn OpFunctionEnd diff --git a/test/tint/builtins/gen/literal/atan2/ae713e.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/atan2/ae713e.wgsl.expected.dxc.hlsl index c479b2ba4a..5620691506 100644 --- a/test/tint/builtins/gen/literal/atan2/ae713e.wgsl.expected.dxc.hlsl +++ b/test/tint/builtins/gen/literal/atan2/ae713e.wgsl.expected.dxc.hlsl @@ -1,5 +1,5 @@ void atan2_ae713e() { - float4 res = atan2((1.0f).xxxx, (1.0f).xxxx); + float4 res = (0.785398185f).xxxx; } struct tint_symbol { diff --git a/test/tint/builtins/gen/literal/atan2/ae713e.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/atan2/ae713e.wgsl.expected.fxc.hlsl index c479b2ba4a..5620691506 100644 --- a/test/tint/builtins/gen/literal/atan2/ae713e.wgsl.expected.fxc.hlsl +++ b/test/tint/builtins/gen/literal/atan2/ae713e.wgsl.expected.fxc.hlsl @@ -1,5 +1,5 @@ void atan2_ae713e() { - float4 res = atan2((1.0f).xxxx, (1.0f).xxxx); + float4 res = (0.785398185f).xxxx; } struct tint_symbol { diff --git a/test/tint/builtins/gen/literal/atan2/ae713e.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atan2/ae713e.wgsl.expected.glsl index 3a58d7c5b2..46798f9609 100644 --- a/test/tint/builtins/gen/literal/atan2/ae713e.wgsl.expected.glsl +++ b/test/tint/builtins/gen/literal/atan2/ae713e.wgsl.expected.glsl @@ -1,7 +1,7 @@ #version 310 es void atan2_ae713e() { - vec4 res = atan(vec4(1.0f), vec4(1.0f)); + vec4 res = vec4(0.785398185f); } vec4 vertex_main() { @@ -21,7 +21,7 @@ void main() { precision mediump float; void atan2_ae713e() { - vec4 res = atan(vec4(1.0f), vec4(1.0f)); + vec4 res = vec4(0.785398185f); } void fragment_main() { @@ -35,7 +35,7 @@ void main() { #version 310 es void atan2_ae713e() { - vec4 res = atan(vec4(1.0f), vec4(1.0f)); + vec4 res = vec4(0.785398185f); } void compute_main() { diff --git a/test/tint/builtins/gen/literal/atan2/ae713e.wgsl.expected.msl b/test/tint/builtins/gen/literal/atan2/ae713e.wgsl.expected.msl index fb28698a40..ec369ef07c 100644 --- a/test/tint/builtins/gen/literal/atan2/ae713e.wgsl.expected.msl +++ b/test/tint/builtins/gen/literal/atan2/ae713e.wgsl.expected.msl @@ -2,7 +2,7 @@ using namespace metal; void atan2_ae713e() { - float4 res = atan2(float4(1.0f), float4(1.0f)); + float4 res = float4(0.785398185f); } struct tint_symbol { diff --git a/test/tint/builtins/gen/literal/atan2/ae713e.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/atan2/ae713e.wgsl.expected.spvasm index 2d299bd394..cb43b9df1f 100644 --- a/test/tint/builtins/gen/literal/atan2/ae713e.wgsl.expected.spvasm +++ b/test/tint/builtins/gen/literal/atan2/ae713e.wgsl.expected.spvasm @@ -1,10 +1,9 @@ ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 -; Bound: 32 +; Bound: 31 ; Schema: 0 OpCapability Shader - %14 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size OpEntryPoint Fragment %fragment_main "fragment_main" @@ -31,36 +30,36 @@ %vertex_point_size = OpVariable %_ptr_Output_float Output %8 %void = OpTypeVoid %9 = OpTypeFunction %void - %float_1 = OpConstant %float 1 - %16 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1 +%float_0_785398185 = OpConstant %float 0.785398185 + %14 = OpConstantComposite %v4float %float_0_785398185 %float_0_785398185 %float_0_785398185 %float_0_785398185 %_ptr_Function_v4float = OpTypePointer Function %v4float - %19 = OpTypeFunction %v4float + %17 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 %atan2_ae713e = OpFunction %void None %9 %12 = OpLabel %res = OpVariable %_ptr_Function_v4float Function %5 - %13 = OpExtInst %v4float %14 Atan2 %16 %16 - OpStore %res %13 + OpStore %res %14 OpReturn OpFunctionEnd -%vertex_main_inner = OpFunction %v4float None %19 - %21 = OpLabel - %22 = OpFunctionCall %void %atan2_ae713e +%vertex_main_inner = OpFunction %v4float None %17 + %19 = OpLabel + %20 = OpFunctionCall %void %atan2_ae713e OpReturnValue %5 OpFunctionEnd %vertex_main = OpFunction %void None %9 - %24 = OpLabel - %25 = OpFunctionCall %v4float %vertex_main_inner - OpStore %value %25 + %22 = OpLabel + %23 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %23 OpStore %vertex_point_size %float_1 OpReturn OpFunctionEnd %fragment_main = OpFunction %void None %9 - %27 = OpLabel - %28 = OpFunctionCall %void %atan2_ae713e + %26 = OpLabel + %27 = OpFunctionCall %void %atan2_ae713e OpReturn OpFunctionEnd %compute_main = OpFunction %void None %9 - %30 = OpLabel - %31 = OpFunctionCall %void %atan2_ae713e + %29 = OpLabel + %30 = OpFunctionCall %void %atan2_ae713e OpReturn OpFunctionEnd diff --git a/test/tint/builtins/gen/literal/atan2/c19683.wgsl b/test/tint/builtins/gen/literal/atan2/c19683.wgsl new file mode 100644 index 0000000000..7ea03438bb --- /dev/null +++ b/test/tint/builtins/gen/literal/atan2/c19683.wgsl @@ -0,0 +1,43 @@ +// Copyright 2021 The Tint Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//////////////////////////////////////////////////////////////////////////////// +// File generated by tools/src/cmd/gen +// using the template: +// test/tint/builtins/gen/gen.wgsl.tmpl +// +// Do not modify this file directly +//////////////////////////////////////////////////////////////////////////////// + + +// fn atan2(vec<2, fa>, vec<2, fa>) -> vec<2, fa> +fn atan2_c19683() { + var res = atan2(vec2(1), vec2(1)); +} + +@vertex +fn vertex_main() -> @builtin(position) vec4 { + atan2_c19683(); + return vec4(); +} + +@fragment +fn fragment_main() { + atan2_c19683(); +} + +@compute @workgroup_size(1) +fn compute_main() { + atan2_c19683(); +} diff --git a/test/tint/builtins/gen/literal/atan2/c19683.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/atan2/c19683.wgsl.expected.dxc.hlsl new file mode 100644 index 0000000000..93f2273a4d --- /dev/null +++ b/test/tint/builtins/gen/literal/atan2/c19683.wgsl.expected.dxc.hlsl @@ -0,0 +1,30 @@ +void atan2_c19683() { + float2 res = (0.785398185f).xx; +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + atan2_c19683(); + return (0.0f).xxxx; +} + +tint_symbol vertex_main() { + const float4 inner_result = vertex_main_inner(); + tint_symbol wrapper_result = (tint_symbol)0; + wrapper_result.value = inner_result; + return wrapper_result; +} + +void fragment_main() { + atan2_c19683(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + atan2_c19683(); + return; +} diff --git a/test/tint/builtins/gen/literal/atan2/c19683.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/atan2/c19683.wgsl.expected.fxc.hlsl new file mode 100644 index 0000000000..93f2273a4d --- /dev/null +++ b/test/tint/builtins/gen/literal/atan2/c19683.wgsl.expected.fxc.hlsl @@ -0,0 +1,30 @@ +void atan2_c19683() { + float2 res = (0.785398185f).xx; +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + atan2_c19683(); + return (0.0f).xxxx; +} + +tint_symbol vertex_main() { + const float4 inner_result = vertex_main_inner(); + tint_symbol wrapper_result = (tint_symbol)0; + wrapper_result.value = inner_result; + return wrapper_result; +} + +void fragment_main() { + atan2_c19683(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + atan2_c19683(); + return; +} diff --git a/test/tint/builtins/gen/literal/atan2/c19683.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atan2/c19683.wgsl.expected.glsl new file mode 100644 index 0000000000..d823d61220 --- /dev/null +++ b/test/tint/builtins/gen/literal/atan2/c19683.wgsl.expected.glsl @@ -0,0 +1,49 @@ +#version 310 es + +void atan2_c19683() { + vec2 res = vec2(0.785398185f); +} + +vec4 vertex_main() { + atan2_c19683(); + return vec4(0.0f); +} + +void main() { + gl_PointSize = 1.0; + vec4 inner_result = vertex_main(); + gl_Position = inner_result; + gl_Position.y = -(gl_Position.y); + gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w); + return; +} +#version 310 es +precision mediump float; + +void atan2_c19683() { + vec2 res = vec2(0.785398185f); +} + +void fragment_main() { + atan2_c19683(); +} + +void main() { + fragment_main(); + return; +} +#version 310 es + +void atan2_c19683() { + vec2 res = vec2(0.785398185f); +} + +void compute_main() { + atan2_c19683(); +} + +layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; +void main() { + compute_main(); + return; +} diff --git a/test/tint/builtins/gen/literal/atan2/c19683.wgsl.expected.msl b/test/tint/builtins/gen/literal/atan2/c19683.wgsl.expected.msl new file mode 100644 index 0000000000..3af76c71ab --- /dev/null +++ b/test/tint/builtins/gen/literal/atan2/c19683.wgsl.expected.msl @@ -0,0 +1,33 @@ +#include + +using namespace metal; +void atan2_c19683() { + float2 res = float2(0.785398185f); +} + +struct tint_symbol { + float4 value [[position]]; +}; + +float4 vertex_main_inner() { + atan2_c19683(); + return float4(0.0f); +} + +vertex tint_symbol vertex_main() { + float4 const inner_result = vertex_main_inner(); + tint_symbol wrapper_result = {}; + wrapper_result.value = inner_result; + return wrapper_result; +} + +fragment void fragment_main() { + atan2_c19683(); + return; +} + +kernel void compute_main() { + atan2_c19683(); + return; +} + diff --git a/test/tint/builtins/gen/literal/atan2/c19683.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/atan2/c19683.wgsl.expected.spvasm new file mode 100644 index 0000000000..66dfdb29f5 --- /dev/null +++ b/test/tint/builtins/gen/literal/atan2/c19683.wgsl.expected.spvasm @@ -0,0 +1,67 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 33 +; Schema: 0 + OpCapability Shader + OpMemoryModel Logical GLSL450 + OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size + OpEntryPoint Fragment %fragment_main "fragment_main" + OpEntryPoint GLCompute %compute_main "compute_main" + OpExecutionMode %fragment_main OriginUpperLeft + OpExecutionMode %compute_main LocalSize 1 1 1 + OpName %value "value" + OpName %vertex_point_size "vertex_point_size" + OpName %atan2_c19683 "atan2_c19683" + OpName %res "res" + OpName %vertex_main_inner "vertex_main_inner" + OpName %vertex_main "vertex_main" + OpName %fragment_main "fragment_main" + OpName %compute_main "compute_main" + OpDecorate %value BuiltIn Position + OpDecorate %vertex_point_size BuiltIn PointSize + %float = OpTypeFloat 32 + %v4float = OpTypeVector %float 4 +%_ptr_Output_v4float = OpTypePointer Output %v4float + %5 = OpConstantNull %v4float + %value = OpVariable %_ptr_Output_v4float Output %5 +%_ptr_Output_float = OpTypePointer Output %float + %8 = OpConstantNull %float +%vertex_point_size = OpVariable %_ptr_Output_float Output %8 + %void = OpTypeVoid + %9 = OpTypeFunction %void + %v2float = OpTypeVector %float 2 +%float_0_785398185 = OpConstant %float 0.785398185 + %15 = OpConstantComposite %v2float %float_0_785398185 %float_0_785398185 +%_ptr_Function_v2float = OpTypePointer Function %v2float + %18 = OpConstantNull %v2float + %19 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%atan2_c19683 = OpFunction %void None %9 + %12 = OpLabel + %res = OpVariable %_ptr_Function_v2float Function %18 + OpStore %res %15 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %19 + %21 = OpLabel + %22 = OpFunctionCall %void %atan2_c19683 + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %9 + %24 = OpLabel + %25 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %25 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %9 + %28 = OpLabel + %29 = OpFunctionCall %void %atan2_c19683 + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %9 + %31 = OpLabel + %32 = OpFunctionCall %void %atan2_c19683 + OpReturn + OpFunctionEnd diff --git a/test/tint/builtins/gen/literal/atan2/c19683.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atan2/c19683.wgsl.expected.wgsl new file mode 100644 index 0000000000..efb9bada31 --- /dev/null +++ b/test/tint/builtins/gen/literal/atan2/c19683.wgsl.expected.wgsl @@ -0,0 +1,19 @@ +fn atan2_c19683() { + var res = atan2(vec2(1), vec2(1)); +} + +@vertex +fn vertex_main() -> @builtin(position) vec4 { + atan2_c19683(); + return vec4(); +} + +@fragment +fn fragment_main() { + atan2_c19683(); +} + +@compute @workgroup_size(1) +fn compute_main() { + atan2_c19683(); +} diff --git a/test/tint/builtins/gen/literal/atan2/c4be45.wgsl b/test/tint/builtins/gen/literal/atan2/c4be45.wgsl new file mode 100644 index 0000000000..a80cebe427 --- /dev/null +++ b/test/tint/builtins/gen/literal/atan2/c4be45.wgsl @@ -0,0 +1,43 @@ +// Copyright 2021 The Tint Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//////////////////////////////////////////////////////////////////////////////// +// File generated by tools/src/cmd/gen +// using the template: +// test/tint/builtins/gen/gen.wgsl.tmpl +// +// Do not modify this file directly +//////////////////////////////////////////////////////////////////////////////// + + +// fn atan2(vec<4, fa>, vec<4, fa>) -> vec<4, fa> +fn atan2_c4be45() { + var res = atan2(vec4(1), vec4(1)); +} + +@vertex +fn vertex_main() -> @builtin(position) vec4 { + atan2_c4be45(); + return vec4(); +} + +@fragment +fn fragment_main() { + atan2_c4be45(); +} + +@compute @workgroup_size(1) +fn compute_main() { + atan2_c4be45(); +} diff --git a/test/tint/builtins/gen/literal/atan2/c4be45.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/atan2/c4be45.wgsl.expected.dxc.hlsl new file mode 100644 index 0000000000..c666d69302 --- /dev/null +++ b/test/tint/builtins/gen/literal/atan2/c4be45.wgsl.expected.dxc.hlsl @@ -0,0 +1,30 @@ +void atan2_c4be45() { + float4 res = (0.785398185f).xxxx; +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + atan2_c4be45(); + return (0.0f).xxxx; +} + +tint_symbol vertex_main() { + const float4 inner_result = vertex_main_inner(); + tint_symbol wrapper_result = (tint_symbol)0; + wrapper_result.value = inner_result; + return wrapper_result; +} + +void fragment_main() { + atan2_c4be45(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + atan2_c4be45(); + return; +} diff --git a/test/tint/builtins/gen/literal/atan2/c4be45.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/atan2/c4be45.wgsl.expected.fxc.hlsl new file mode 100644 index 0000000000..c666d69302 --- /dev/null +++ b/test/tint/builtins/gen/literal/atan2/c4be45.wgsl.expected.fxc.hlsl @@ -0,0 +1,30 @@ +void atan2_c4be45() { + float4 res = (0.785398185f).xxxx; +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + atan2_c4be45(); + return (0.0f).xxxx; +} + +tint_symbol vertex_main() { + const float4 inner_result = vertex_main_inner(); + tint_symbol wrapper_result = (tint_symbol)0; + wrapper_result.value = inner_result; + return wrapper_result; +} + +void fragment_main() { + atan2_c4be45(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + atan2_c4be45(); + return; +} diff --git a/test/tint/builtins/gen/literal/atan2/c4be45.wgsl.expected.glsl b/test/tint/builtins/gen/literal/atan2/c4be45.wgsl.expected.glsl new file mode 100644 index 0000000000..2d65f8235f --- /dev/null +++ b/test/tint/builtins/gen/literal/atan2/c4be45.wgsl.expected.glsl @@ -0,0 +1,49 @@ +#version 310 es + +void atan2_c4be45() { + vec4 res = vec4(0.785398185f); +} + +vec4 vertex_main() { + atan2_c4be45(); + return vec4(0.0f); +} + +void main() { + gl_PointSize = 1.0; + vec4 inner_result = vertex_main(); + gl_Position = inner_result; + gl_Position.y = -(gl_Position.y); + gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w); + return; +} +#version 310 es +precision mediump float; + +void atan2_c4be45() { + vec4 res = vec4(0.785398185f); +} + +void fragment_main() { + atan2_c4be45(); +} + +void main() { + fragment_main(); + return; +} +#version 310 es + +void atan2_c4be45() { + vec4 res = vec4(0.785398185f); +} + +void compute_main() { + atan2_c4be45(); +} + +layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; +void main() { + compute_main(); + return; +} diff --git a/test/tint/builtins/gen/literal/atan2/c4be45.wgsl.expected.msl b/test/tint/builtins/gen/literal/atan2/c4be45.wgsl.expected.msl new file mode 100644 index 0000000000..89fe4fad5d --- /dev/null +++ b/test/tint/builtins/gen/literal/atan2/c4be45.wgsl.expected.msl @@ -0,0 +1,33 @@ +#include + +using namespace metal; +void atan2_c4be45() { + float4 res = float4(0.785398185f); +} + +struct tint_symbol { + float4 value [[position]]; +}; + +float4 vertex_main_inner() { + atan2_c4be45(); + return float4(0.0f); +} + +vertex tint_symbol vertex_main() { + float4 const inner_result = vertex_main_inner(); + tint_symbol wrapper_result = {}; + wrapper_result.value = inner_result; + return wrapper_result; +} + +fragment void fragment_main() { + atan2_c4be45(); + return; +} + +kernel void compute_main() { + atan2_c4be45(); + return; +} + diff --git a/test/tint/builtins/gen/literal/atan2/c4be45.wgsl.expected.spvasm b/test/tint/builtins/gen/literal/atan2/c4be45.wgsl.expected.spvasm new file mode 100644 index 0000000000..4f8d2b6337 --- /dev/null +++ b/test/tint/builtins/gen/literal/atan2/c4be45.wgsl.expected.spvasm @@ -0,0 +1,65 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 31 +; Schema: 0 + OpCapability Shader + OpMemoryModel Logical GLSL450 + OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size + OpEntryPoint Fragment %fragment_main "fragment_main" + OpEntryPoint GLCompute %compute_main "compute_main" + OpExecutionMode %fragment_main OriginUpperLeft + OpExecutionMode %compute_main LocalSize 1 1 1 + OpName %value "value" + OpName %vertex_point_size "vertex_point_size" + OpName %atan2_c4be45 "atan2_c4be45" + OpName %res "res" + OpName %vertex_main_inner "vertex_main_inner" + OpName %vertex_main "vertex_main" + OpName %fragment_main "fragment_main" + OpName %compute_main "compute_main" + OpDecorate %value BuiltIn Position + OpDecorate %vertex_point_size BuiltIn PointSize + %float = OpTypeFloat 32 + %v4float = OpTypeVector %float 4 +%_ptr_Output_v4float = OpTypePointer Output %v4float + %5 = OpConstantNull %v4float + %value = OpVariable %_ptr_Output_v4float Output %5 +%_ptr_Output_float = OpTypePointer Output %float + %8 = OpConstantNull %float +%vertex_point_size = OpVariable %_ptr_Output_float Output %8 + %void = OpTypeVoid + %9 = OpTypeFunction %void +%float_0_785398185 = OpConstant %float 0.785398185 + %14 = OpConstantComposite %v4float %float_0_785398185 %float_0_785398185 %float_0_785398185 %float_0_785398185 +%_ptr_Function_v4float = OpTypePointer Function %v4float + %17 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%atan2_c4be45 = OpFunction %void None %9 + %12 = OpLabel + %res = OpVariable %_ptr_Function_v4float Function %5 + OpStore %res %14 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %17 + %19 = OpLabel + %20 = OpFunctionCall %void %atan2_c4be45 + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %9 + %22 = OpLabel + %23 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %23 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %9 + %26 = OpLabel + %27 = OpFunctionCall %void %atan2_c4be45 + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %9 + %29 = OpLabel + %30 = OpFunctionCall %void %atan2_c4be45 + OpReturn + OpFunctionEnd diff --git a/test/tint/builtins/gen/literal/atan2/c4be45.wgsl.expected.wgsl b/test/tint/builtins/gen/literal/atan2/c4be45.wgsl.expected.wgsl new file mode 100644 index 0000000000..f5c94ecd8e --- /dev/null +++ b/test/tint/builtins/gen/literal/atan2/c4be45.wgsl.expected.wgsl @@ -0,0 +1,19 @@ +fn atan2_c4be45() { + var res = atan2(vec4(1), vec4(1)); +} + +@vertex +fn vertex_main() -> @builtin(position) vec4 { + atan2_c4be45(); + return vec4(); +} + +@fragment +fn fragment_main() { + atan2_c4be45(); +} + +@compute @workgroup_size(1) +fn compute_main() { + atan2_c4be45(); +} diff --git a/test/tint/builtins/gen/var/atan2/034ace.wgsl b/test/tint/builtins/gen/var/atan2/034ace.wgsl new file mode 100644 index 0000000000..e52cf6831c --- /dev/null +++ b/test/tint/builtins/gen/var/atan2/034ace.wgsl @@ -0,0 +1,45 @@ +// Copyright 2021 The Tint Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//////////////////////////////////////////////////////////////////////////////// +// File generated by tools/src/cmd/gen +// using the template: +// test/tint/builtins/gen/gen.wgsl.tmpl +// +// Do not modify this file directly +//////////////////////////////////////////////////////////////////////////////// + + +// fn atan2(fa, fa) -> fa +fn atan2_034ace() { + const arg_0 = 1; + const arg_1 = 1; + var res = atan2(arg_0, arg_1); +} + +@vertex +fn vertex_main() -> @builtin(position) vec4 { + atan2_034ace(); + return vec4(); +} + +@fragment +fn fragment_main() { + atan2_034ace(); +} + +@compute @workgroup_size(1) +fn compute_main() { + atan2_034ace(); +} diff --git a/test/tint/builtins/gen/var/atan2/034ace.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/atan2/034ace.wgsl.expected.dxc.hlsl new file mode 100644 index 0000000000..dce0209f87 --- /dev/null +++ b/test/tint/builtins/gen/var/atan2/034ace.wgsl.expected.dxc.hlsl @@ -0,0 +1,30 @@ +void atan2_034ace() { + float res = 0.785398185f; +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + atan2_034ace(); + return (0.0f).xxxx; +} + +tint_symbol vertex_main() { + const float4 inner_result = vertex_main_inner(); + tint_symbol wrapper_result = (tint_symbol)0; + wrapper_result.value = inner_result; + return wrapper_result; +} + +void fragment_main() { + atan2_034ace(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + atan2_034ace(); + return; +} diff --git a/test/tint/builtins/gen/var/atan2/034ace.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/atan2/034ace.wgsl.expected.fxc.hlsl new file mode 100644 index 0000000000..dce0209f87 --- /dev/null +++ b/test/tint/builtins/gen/var/atan2/034ace.wgsl.expected.fxc.hlsl @@ -0,0 +1,30 @@ +void atan2_034ace() { + float res = 0.785398185f; +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + atan2_034ace(); + return (0.0f).xxxx; +} + +tint_symbol vertex_main() { + const float4 inner_result = vertex_main_inner(); + tint_symbol wrapper_result = (tint_symbol)0; + wrapper_result.value = inner_result; + return wrapper_result; +} + +void fragment_main() { + atan2_034ace(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + atan2_034ace(); + return; +} diff --git a/test/tint/builtins/gen/var/atan2/034ace.wgsl.expected.glsl b/test/tint/builtins/gen/var/atan2/034ace.wgsl.expected.glsl new file mode 100644 index 0000000000..4919787a0b --- /dev/null +++ b/test/tint/builtins/gen/var/atan2/034ace.wgsl.expected.glsl @@ -0,0 +1,49 @@ +#version 310 es + +void atan2_034ace() { + float res = 0.785398185f; +} + +vec4 vertex_main() { + atan2_034ace(); + return vec4(0.0f); +} + +void main() { + gl_PointSize = 1.0; + vec4 inner_result = vertex_main(); + gl_Position = inner_result; + gl_Position.y = -(gl_Position.y); + gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w); + return; +} +#version 310 es +precision mediump float; + +void atan2_034ace() { + float res = 0.785398185f; +} + +void fragment_main() { + atan2_034ace(); +} + +void main() { + fragment_main(); + return; +} +#version 310 es + +void atan2_034ace() { + float res = 0.785398185f; +} + +void compute_main() { + atan2_034ace(); +} + +layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; +void main() { + compute_main(); + return; +} diff --git a/test/tint/builtins/gen/var/atan2/034ace.wgsl.expected.msl b/test/tint/builtins/gen/var/atan2/034ace.wgsl.expected.msl new file mode 100644 index 0000000000..fb91e8d5e4 --- /dev/null +++ b/test/tint/builtins/gen/var/atan2/034ace.wgsl.expected.msl @@ -0,0 +1,33 @@ +#include + +using namespace metal; +void atan2_034ace() { + float res = 0.785398185f; +} + +struct tint_symbol { + float4 value [[position]]; +}; + +float4 vertex_main_inner() { + atan2_034ace(); + return float4(0.0f); +} + +vertex tint_symbol vertex_main() { + float4 const inner_result = vertex_main_inner(); + tint_symbol wrapper_result = {}; + wrapper_result.value = inner_result; + return wrapper_result; +} + +fragment void fragment_main() { + atan2_034ace(); + return; +} + +kernel void compute_main() { + atan2_034ace(); + return; +} + diff --git a/test/tint/builtins/gen/var/atan2/034ace.wgsl.expected.spvasm b/test/tint/builtins/gen/var/atan2/034ace.wgsl.expected.spvasm new file mode 100644 index 0000000000..abac9b451f --- /dev/null +++ b/test/tint/builtins/gen/var/atan2/034ace.wgsl.expected.spvasm @@ -0,0 +1,64 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 30 +; Schema: 0 + OpCapability Shader + OpMemoryModel Logical GLSL450 + OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size + OpEntryPoint Fragment %fragment_main "fragment_main" + OpEntryPoint GLCompute %compute_main "compute_main" + OpExecutionMode %fragment_main OriginUpperLeft + OpExecutionMode %compute_main LocalSize 1 1 1 + OpName %value "value" + OpName %vertex_point_size "vertex_point_size" + OpName %atan2_034ace "atan2_034ace" + OpName %res "res" + OpName %vertex_main_inner "vertex_main_inner" + OpName %vertex_main "vertex_main" + OpName %fragment_main "fragment_main" + OpName %compute_main "compute_main" + OpDecorate %value BuiltIn Position + OpDecorate %vertex_point_size BuiltIn PointSize + %float = OpTypeFloat 32 + %v4float = OpTypeVector %float 4 +%_ptr_Output_v4float = OpTypePointer Output %v4float + %5 = OpConstantNull %v4float + %value = OpVariable %_ptr_Output_v4float Output %5 +%_ptr_Output_float = OpTypePointer Output %float + %8 = OpConstantNull %float +%vertex_point_size = OpVariable %_ptr_Output_float Output %8 + %void = OpTypeVoid + %9 = OpTypeFunction %void +%float_0_785398185 = OpConstant %float 0.785398185 +%_ptr_Function_float = OpTypePointer Function %float + %16 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%atan2_034ace = OpFunction %void None %9 + %12 = OpLabel + %res = OpVariable %_ptr_Function_float Function %8 + OpStore %res %float_0_785398185 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %16 + %18 = OpLabel + %19 = OpFunctionCall %void %atan2_034ace + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %9 + %21 = OpLabel + %22 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %22 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %9 + %25 = OpLabel + %26 = OpFunctionCall %void %atan2_034ace + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %9 + %28 = OpLabel + %29 = OpFunctionCall %void %atan2_034ace + OpReturn + OpFunctionEnd diff --git a/test/tint/builtins/gen/var/atan2/034ace.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atan2/034ace.wgsl.expected.wgsl new file mode 100644 index 0000000000..1de898dbf8 --- /dev/null +++ b/test/tint/builtins/gen/var/atan2/034ace.wgsl.expected.wgsl @@ -0,0 +1,21 @@ +fn atan2_034ace() { + const arg_0 = 1; + const arg_1 = 1; + var res = atan2(arg_0, arg_1); +} + +@vertex +fn vertex_main() -> @builtin(position) vec4 { + atan2_034ace(); + return vec4(); +} + +@fragment +fn fragment_main() { + atan2_034ace(); +} + +@compute @workgroup_size(1) +fn compute_main() { + atan2_034ace(); +} diff --git a/test/tint/builtins/gen/var/atan2/3c2865.wgsl b/test/tint/builtins/gen/var/atan2/3c2865.wgsl new file mode 100644 index 0000000000..499e571e80 --- /dev/null +++ b/test/tint/builtins/gen/var/atan2/3c2865.wgsl @@ -0,0 +1,45 @@ +// Copyright 2021 The Tint Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//////////////////////////////////////////////////////////////////////////////// +// File generated by tools/src/cmd/gen +// using the template: +// test/tint/builtins/gen/gen.wgsl.tmpl +// +// Do not modify this file directly +//////////////////////////////////////////////////////////////////////////////// + + +// fn atan2(vec<3, fa>, vec<3, fa>) -> vec<3, fa> +fn atan2_3c2865() { + const arg_0 = vec3(1); + const arg_1 = vec3(1); + var res = atan2(arg_0, arg_1); +} + +@vertex +fn vertex_main() -> @builtin(position) vec4 { + atan2_3c2865(); + return vec4(); +} + +@fragment +fn fragment_main() { + atan2_3c2865(); +} + +@compute @workgroup_size(1) +fn compute_main() { + atan2_3c2865(); +} diff --git a/test/tint/builtins/gen/var/atan2/3c2865.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/atan2/3c2865.wgsl.expected.dxc.hlsl new file mode 100644 index 0000000000..71f64a4057 --- /dev/null +++ b/test/tint/builtins/gen/var/atan2/3c2865.wgsl.expected.dxc.hlsl @@ -0,0 +1,30 @@ +void atan2_3c2865() { + float3 res = (0.785398185f).xxx; +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + atan2_3c2865(); + return (0.0f).xxxx; +} + +tint_symbol vertex_main() { + const float4 inner_result = vertex_main_inner(); + tint_symbol wrapper_result = (tint_symbol)0; + wrapper_result.value = inner_result; + return wrapper_result; +} + +void fragment_main() { + atan2_3c2865(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + atan2_3c2865(); + return; +} diff --git a/test/tint/builtins/gen/var/atan2/3c2865.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/atan2/3c2865.wgsl.expected.fxc.hlsl new file mode 100644 index 0000000000..71f64a4057 --- /dev/null +++ b/test/tint/builtins/gen/var/atan2/3c2865.wgsl.expected.fxc.hlsl @@ -0,0 +1,30 @@ +void atan2_3c2865() { + float3 res = (0.785398185f).xxx; +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + atan2_3c2865(); + return (0.0f).xxxx; +} + +tint_symbol vertex_main() { + const float4 inner_result = vertex_main_inner(); + tint_symbol wrapper_result = (tint_symbol)0; + wrapper_result.value = inner_result; + return wrapper_result; +} + +void fragment_main() { + atan2_3c2865(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + atan2_3c2865(); + return; +} diff --git a/test/tint/builtins/gen/var/atan2/3c2865.wgsl.expected.glsl b/test/tint/builtins/gen/var/atan2/3c2865.wgsl.expected.glsl new file mode 100644 index 0000000000..b2ebe380a2 --- /dev/null +++ b/test/tint/builtins/gen/var/atan2/3c2865.wgsl.expected.glsl @@ -0,0 +1,49 @@ +#version 310 es + +void atan2_3c2865() { + vec3 res = vec3(0.785398185f); +} + +vec4 vertex_main() { + atan2_3c2865(); + return vec4(0.0f); +} + +void main() { + gl_PointSize = 1.0; + vec4 inner_result = vertex_main(); + gl_Position = inner_result; + gl_Position.y = -(gl_Position.y); + gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w); + return; +} +#version 310 es +precision mediump float; + +void atan2_3c2865() { + vec3 res = vec3(0.785398185f); +} + +void fragment_main() { + atan2_3c2865(); +} + +void main() { + fragment_main(); + return; +} +#version 310 es + +void atan2_3c2865() { + vec3 res = vec3(0.785398185f); +} + +void compute_main() { + atan2_3c2865(); +} + +layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; +void main() { + compute_main(); + return; +} diff --git a/test/tint/builtins/gen/var/atan2/3c2865.wgsl.expected.msl b/test/tint/builtins/gen/var/atan2/3c2865.wgsl.expected.msl new file mode 100644 index 0000000000..867108a468 --- /dev/null +++ b/test/tint/builtins/gen/var/atan2/3c2865.wgsl.expected.msl @@ -0,0 +1,33 @@ +#include + +using namespace metal; +void atan2_3c2865() { + float3 res = float3(0.785398185f); +} + +struct tint_symbol { + float4 value [[position]]; +}; + +float4 vertex_main_inner() { + atan2_3c2865(); + return float4(0.0f); +} + +vertex tint_symbol vertex_main() { + float4 const inner_result = vertex_main_inner(); + tint_symbol wrapper_result = {}; + wrapper_result.value = inner_result; + return wrapper_result; +} + +fragment void fragment_main() { + atan2_3c2865(); + return; +} + +kernel void compute_main() { + atan2_3c2865(); + return; +} + diff --git a/test/tint/builtins/gen/var/atan2/3c2865.wgsl.expected.spvasm b/test/tint/builtins/gen/var/atan2/3c2865.wgsl.expected.spvasm new file mode 100644 index 0000000000..56fba1d2ac --- /dev/null +++ b/test/tint/builtins/gen/var/atan2/3c2865.wgsl.expected.spvasm @@ -0,0 +1,67 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 33 +; Schema: 0 + OpCapability Shader + OpMemoryModel Logical GLSL450 + OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size + OpEntryPoint Fragment %fragment_main "fragment_main" + OpEntryPoint GLCompute %compute_main "compute_main" + OpExecutionMode %fragment_main OriginUpperLeft + OpExecutionMode %compute_main LocalSize 1 1 1 + OpName %value "value" + OpName %vertex_point_size "vertex_point_size" + OpName %atan2_3c2865 "atan2_3c2865" + OpName %res "res" + OpName %vertex_main_inner "vertex_main_inner" + OpName %vertex_main "vertex_main" + OpName %fragment_main "fragment_main" + OpName %compute_main "compute_main" + OpDecorate %value BuiltIn Position + OpDecorate %vertex_point_size BuiltIn PointSize + %float = OpTypeFloat 32 + %v4float = OpTypeVector %float 4 +%_ptr_Output_v4float = OpTypePointer Output %v4float + %5 = OpConstantNull %v4float + %value = OpVariable %_ptr_Output_v4float Output %5 +%_ptr_Output_float = OpTypePointer Output %float + %8 = OpConstantNull %float +%vertex_point_size = OpVariable %_ptr_Output_float Output %8 + %void = OpTypeVoid + %9 = OpTypeFunction %void + %v3float = OpTypeVector %float 3 +%float_0_785398185 = OpConstant %float 0.785398185 + %15 = OpConstantComposite %v3float %float_0_785398185 %float_0_785398185 %float_0_785398185 +%_ptr_Function_v3float = OpTypePointer Function %v3float + %18 = OpConstantNull %v3float + %19 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%atan2_3c2865 = OpFunction %void None %9 + %12 = OpLabel + %res = OpVariable %_ptr_Function_v3float Function %18 + OpStore %res %15 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %19 + %21 = OpLabel + %22 = OpFunctionCall %void %atan2_3c2865 + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %9 + %24 = OpLabel + %25 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %25 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %9 + %28 = OpLabel + %29 = OpFunctionCall %void %atan2_3c2865 + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %9 + %31 = OpLabel + %32 = OpFunctionCall %void %atan2_3c2865 + OpReturn + OpFunctionEnd diff --git a/test/tint/builtins/gen/var/atan2/3c2865.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atan2/3c2865.wgsl.expected.wgsl new file mode 100644 index 0000000000..cb7b4c8e9e --- /dev/null +++ b/test/tint/builtins/gen/var/atan2/3c2865.wgsl.expected.wgsl @@ -0,0 +1,21 @@ +fn atan2_3c2865() { + const arg_0 = vec3(1); + const arg_1 = vec3(1); + var res = atan2(arg_0, arg_1); +} + +@vertex +fn vertex_main() -> @builtin(position) vec4 { + atan2_3c2865(); + return vec4(); +} + +@fragment +fn fragment_main() { + atan2_3c2865(); +} + +@compute @workgroup_size(1) +fn compute_main() { + atan2_3c2865(); +} diff --git a/test/tint/builtins/gen/var/atan2/c19683.wgsl b/test/tint/builtins/gen/var/atan2/c19683.wgsl new file mode 100644 index 0000000000..3e2522a989 --- /dev/null +++ b/test/tint/builtins/gen/var/atan2/c19683.wgsl @@ -0,0 +1,45 @@ +// Copyright 2021 The Tint Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//////////////////////////////////////////////////////////////////////////////// +// File generated by tools/src/cmd/gen +// using the template: +// test/tint/builtins/gen/gen.wgsl.tmpl +// +// Do not modify this file directly +//////////////////////////////////////////////////////////////////////////////// + + +// fn atan2(vec<2, fa>, vec<2, fa>) -> vec<2, fa> +fn atan2_c19683() { + const arg_0 = vec2(1); + const arg_1 = vec2(1); + var res = atan2(arg_0, arg_1); +} + +@vertex +fn vertex_main() -> @builtin(position) vec4 { + atan2_c19683(); + return vec4(); +} + +@fragment +fn fragment_main() { + atan2_c19683(); +} + +@compute @workgroup_size(1) +fn compute_main() { + atan2_c19683(); +} diff --git a/test/tint/builtins/gen/var/atan2/c19683.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/atan2/c19683.wgsl.expected.dxc.hlsl new file mode 100644 index 0000000000..93f2273a4d --- /dev/null +++ b/test/tint/builtins/gen/var/atan2/c19683.wgsl.expected.dxc.hlsl @@ -0,0 +1,30 @@ +void atan2_c19683() { + float2 res = (0.785398185f).xx; +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + atan2_c19683(); + return (0.0f).xxxx; +} + +tint_symbol vertex_main() { + const float4 inner_result = vertex_main_inner(); + tint_symbol wrapper_result = (tint_symbol)0; + wrapper_result.value = inner_result; + return wrapper_result; +} + +void fragment_main() { + atan2_c19683(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + atan2_c19683(); + return; +} diff --git a/test/tint/builtins/gen/var/atan2/c19683.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/atan2/c19683.wgsl.expected.fxc.hlsl new file mode 100644 index 0000000000..93f2273a4d --- /dev/null +++ b/test/tint/builtins/gen/var/atan2/c19683.wgsl.expected.fxc.hlsl @@ -0,0 +1,30 @@ +void atan2_c19683() { + float2 res = (0.785398185f).xx; +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + atan2_c19683(); + return (0.0f).xxxx; +} + +tint_symbol vertex_main() { + const float4 inner_result = vertex_main_inner(); + tint_symbol wrapper_result = (tint_symbol)0; + wrapper_result.value = inner_result; + return wrapper_result; +} + +void fragment_main() { + atan2_c19683(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + atan2_c19683(); + return; +} diff --git a/test/tint/builtins/gen/var/atan2/c19683.wgsl.expected.glsl b/test/tint/builtins/gen/var/atan2/c19683.wgsl.expected.glsl new file mode 100644 index 0000000000..d823d61220 --- /dev/null +++ b/test/tint/builtins/gen/var/atan2/c19683.wgsl.expected.glsl @@ -0,0 +1,49 @@ +#version 310 es + +void atan2_c19683() { + vec2 res = vec2(0.785398185f); +} + +vec4 vertex_main() { + atan2_c19683(); + return vec4(0.0f); +} + +void main() { + gl_PointSize = 1.0; + vec4 inner_result = vertex_main(); + gl_Position = inner_result; + gl_Position.y = -(gl_Position.y); + gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w); + return; +} +#version 310 es +precision mediump float; + +void atan2_c19683() { + vec2 res = vec2(0.785398185f); +} + +void fragment_main() { + atan2_c19683(); +} + +void main() { + fragment_main(); + return; +} +#version 310 es + +void atan2_c19683() { + vec2 res = vec2(0.785398185f); +} + +void compute_main() { + atan2_c19683(); +} + +layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; +void main() { + compute_main(); + return; +} diff --git a/test/tint/builtins/gen/var/atan2/c19683.wgsl.expected.msl b/test/tint/builtins/gen/var/atan2/c19683.wgsl.expected.msl new file mode 100644 index 0000000000..3af76c71ab --- /dev/null +++ b/test/tint/builtins/gen/var/atan2/c19683.wgsl.expected.msl @@ -0,0 +1,33 @@ +#include + +using namespace metal; +void atan2_c19683() { + float2 res = float2(0.785398185f); +} + +struct tint_symbol { + float4 value [[position]]; +}; + +float4 vertex_main_inner() { + atan2_c19683(); + return float4(0.0f); +} + +vertex tint_symbol vertex_main() { + float4 const inner_result = vertex_main_inner(); + tint_symbol wrapper_result = {}; + wrapper_result.value = inner_result; + return wrapper_result; +} + +fragment void fragment_main() { + atan2_c19683(); + return; +} + +kernel void compute_main() { + atan2_c19683(); + return; +} + diff --git a/test/tint/builtins/gen/var/atan2/c19683.wgsl.expected.spvasm b/test/tint/builtins/gen/var/atan2/c19683.wgsl.expected.spvasm new file mode 100644 index 0000000000..66dfdb29f5 --- /dev/null +++ b/test/tint/builtins/gen/var/atan2/c19683.wgsl.expected.spvasm @@ -0,0 +1,67 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 33 +; Schema: 0 + OpCapability Shader + OpMemoryModel Logical GLSL450 + OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size + OpEntryPoint Fragment %fragment_main "fragment_main" + OpEntryPoint GLCompute %compute_main "compute_main" + OpExecutionMode %fragment_main OriginUpperLeft + OpExecutionMode %compute_main LocalSize 1 1 1 + OpName %value "value" + OpName %vertex_point_size "vertex_point_size" + OpName %atan2_c19683 "atan2_c19683" + OpName %res "res" + OpName %vertex_main_inner "vertex_main_inner" + OpName %vertex_main "vertex_main" + OpName %fragment_main "fragment_main" + OpName %compute_main "compute_main" + OpDecorate %value BuiltIn Position + OpDecorate %vertex_point_size BuiltIn PointSize + %float = OpTypeFloat 32 + %v4float = OpTypeVector %float 4 +%_ptr_Output_v4float = OpTypePointer Output %v4float + %5 = OpConstantNull %v4float + %value = OpVariable %_ptr_Output_v4float Output %5 +%_ptr_Output_float = OpTypePointer Output %float + %8 = OpConstantNull %float +%vertex_point_size = OpVariable %_ptr_Output_float Output %8 + %void = OpTypeVoid + %9 = OpTypeFunction %void + %v2float = OpTypeVector %float 2 +%float_0_785398185 = OpConstant %float 0.785398185 + %15 = OpConstantComposite %v2float %float_0_785398185 %float_0_785398185 +%_ptr_Function_v2float = OpTypePointer Function %v2float + %18 = OpConstantNull %v2float + %19 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%atan2_c19683 = OpFunction %void None %9 + %12 = OpLabel + %res = OpVariable %_ptr_Function_v2float Function %18 + OpStore %res %15 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %19 + %21 = OpLabel + %22 = OpFunctionCall %void %atan2_c19683 + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %9 + %24 = OpLabel + %25 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %25 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %9 + %28 = OpLabel + %29 = OpFunctionCall %void %atan2_c19683 + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %9 + %31 = OpLabel + %32 = OpFunctionCall %void %atan2_c19683 + OpReturn + OpFunctionEnd diff --git a/test/tint/builtins/gen/var/atan2/c19683.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atan2/c19683.wgsl.expected.wgsl new file mode 100644 index 0000000000..bc8d8ee59a --- /dev/null +++ b/test/tint/builtins/gen/var/atan2/c19683.wgsl.expected.wgsl @@ -0,0 +1,21 @@ +fn atan2_c19683() { + const arg_0 = vec2(1); + const arg_1 = vec2(1); + var res = atan2(arg_0, arg_1); +} + +@vertex +fn vertex_main() -> @builtin(position) vec4 { + atan2_c19683(); + return vec4(); +} + +@fragment +fn fragment_main() { + atan2_c19683(); +} + +@compute @workgroup_size(1) +fn compute_main() { + atan2_c19683(); +} diff --git a/test/tint/builtins/gen/var/atan2/c4be45.wgsl b/test/tint/builtins/gen/var/atan2/c4be45.wgsl new file mode 100644 index 0000000000..761ecc8978 --- /dev/null +++ b/test/tint/builtins/gen/var/atan2/c4be45.wgsl @@ -0,0 +1,45 @@ +// Copyright 2021 The Tint Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//////////////////////////////////////////////////////////////////////////////// +// File generated by tools/src/cmd/gen +// using the template: +// test/tint/builtins/gen/gen.wgsl.tmpl +// +// Do not modify this file directly +//////////////////////////////////////////////////////////////////////////////// + + +// fn atan2(vec<4, fa>, vec<4, fa>) -> vec<4, fa> +fn atan2_c4be45() { + const arg_0 = vec4(1); + const arg_1 = vec4(1); + var res = atan2(arg_0, arg_1); +} + +@vertex +fn vertex_main() -> @builtin(position) vec4 { + atan2_c4be45(); + return vec4(); +} + +@fragment +fn fragment_main() { + atan2_c4be45(); +} + +@compute @workgroup_size(1) +fn compute_main() { + atan2_c4be45(); +} diff --git a/test/tint/builtins/gen/var/atan2/c4be45.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/atan2/c4be45.wgsl.expected.dxc.hlsl new file mode 100644 index 0000000000..c666d69302 --- /dev/null +++ b/test/tint/builtins/gen/var/atan2/c4be45.wgsl.expected.dxc.hlsl @@ -0,0 +1,30 @@ +void atan2_c4be45() { + float4 res = (0.785398185f).xxxx; +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + atan2_c4be45(); + return (0.0f).xxxx; +} + +tint_symbol vertex_main() { + const float4 inner_result = vertex_main_inner(); + tint_symbol wrapper_result = (tint_symbol)0; + wrapper_result.value = inner_result; + return wrapper_result; +} + +void fragment_main() { + atan2_c4be45(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + atan2_c4be45(); + return; +} diff --git a/test/tint/builtins/gen/var/atan2/c4be45.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/atan2/c4be45.wgsl.expected.fxc.hlsl new file mode 100644 index 0000000000..c666d69302 --- /dev/null +++ b/test/tint/builtins/gen/var/atan2/c4be45.wgsl.expected.fxc.hlsl @@ -0,0 +1,30 @@ +void atan2_c4be45() { + float4 res = (0.785398185f).xxxx; +} + +struct tint_symbol { + float4 value : SV_Position; +}; + +float4 vertex_main_inner() { + atan2_c4be45(); + return (0.0f).xxxx; +} + +tint_symbol vertex_main() { + const float4 inner_result = vertex_main_inner(); + tint_symbol wrapper_result = (tint_symbol)0; + wrapper_result.value = inner_result; + return wrapper_result; +} + +void fragment_main() { + atan2_c4be45(); + return; +} + +[numthreads(1, 1, 1)] +void compute_main() { + atan2_c4be45(); + return; +} diff --git a/test/tint/builtins/gen/var/atan2/c4be45.wgsl.expected.glsl b/test/tint/builtins/gen/var/atan2/c4be45.wgsl.expected.glsl new file mode 100644 index 0000000000..2d65f8235f --- /dev/null +++ b/test/tint/builtins/gen/var/atan2/c4be45.wgsl.expected.glsl @@ -0,0 +1,49 @@ +#version 310 es + +void atan2_c4be45() { + vec4 res = vec4(0.785398185f); +} + +vec4 vertex_main() { + atan2_c4be45(); + return vec4(0.0f); +} + +void main() { + gl_PointSize = 1.0; + vec4 inner_result = vertex_main(); + gl_Position = inner_result; + gl_Position.y = -(gl_Position.y); + gl_Position.z = ((2.0f * gl_Position.z) - gl_Position.w); + return; +} +#version 310 es +precision mediump float; + +void atan2_c4be45() { + vec4 res = vec4(0.785398185f); +} + +void fragment_main() { + atan2_c4be45(); +} + +void main() { + fragment_main(); + return; +} +#version 310 es + +void atan2_c4be45() { + vec4 res = vec4(0.785398185f); +} + +void compute_main() { + atan2_c4be45(); +} + +layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; +void main() { + compute_main(); + return; +} diff --git a/test/tint/builtins/gen/var/atan2/c4be45.wgsl.expected.msl b/test/tint/builtins/gen/var/atan2/c4be45.wgsl.expected.msl new file mode 100644 index 0000000000..89fe4fad5d --- /dev/null +++ b/test/tint/builtins/gen/var/atan2/c4be45.wgsl.expected.msl @@ -0,0 +1,33 @@ +#include + +using namespace metal; +void atan2_c4be45() { + float4 res = float4(0.785398185f); +} + +struct tint_symbol { + float4 value [[position]]; +}; + +float4 vertex_main_inner() { + atan2_c4be45(); + return float4(0.0f); +} + +vertex tint_symbol vertex_main() { + float4 const inner_result = vertex_main_inner(); + tint_symbol wrapper_result = {}; + wrapper_result.value = inner_result; + return wrapper_result; +} + +fragment void fragment_main() { + atan2_c4be45(); + return; +} + +kernel void compute_main() { + atan2_c4be45(); + return; +} + diff --git a/test/tint/builtins/gen/var/atan2/c4be45.wgsl.expected.spvasm b/test/tint/builtins/gen/var/atan2/c4be45.wgsl.expected.spvasm new file mode 100644 index 0000000000..4f8d2b6337 --- /dev/null +++ b/test/tint/builtins/gen/var/atan2/c4be45.wgsl.expected.spvasm @@ -0,0 +1,65 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 31 +; Schema: 0 + OpCapability Shader + OpMemoryModel Logical GLSL450 + OpEntryPoint Vertex %vertex_main "vertex_main" %value %vertex_point_size + OpEntryPoint Fragment %fragment_main "fragment_main" + OpEntryPoint GLCompute %compute_main "compute_main" + OpExecutionMode %fragment_main OriginUpperLeft + OpExecutionMode %compute_main LocalSize 1 1 1 + OpName %value "value" + OpName %vertex_point_size "vertex_point_size" + OpName %atan2_c4be45 "atan2_c4be45" + OpName %res "res" + OpName %vertex_main_inner "vertex_main_inner" + OpName %vertex_main "vertex_main" + OpName %fragment_main "fragment_main" + OpName %compute_main "compute_main" + OpDecorate %value BuiltIn Position + OpDecorate %vertex_point_size BuiltIn PointSize + %float = OpTypeFloat 32 + %v4float = OpTypeVector %float 4 +%_ptr_Output_v4float = OpTypePointer Output %v4float + %5 = OpConstantNull %v4float + %value = OpVariable %_ptr_Output_v4float Output %5 +%_ptr_Output_float = OpTypePointer Output %float + %8 = OpConstantNull %float +%vertex_point_size = OpVariable %_ptr_Output_float Output %8 + %void = OpTypeVoid + %9 = OpTypeFunction %void +%float_0_785398185 = OpConstant %float 0.785398185 + %14 = OpConstantComposite %v4float %float_0_785398185 %float_0_785398185 %float_0_785398185 %float_0_785398185 +%_ptr_Function_v4float = OpTypePointer Function %v4float + %17 = OpTypeFunction %v4float + %float_1 = OpConstant %float 1 +%atan2_c4be45 = OpFunction %void None %9 + %12 = OpLabel + %res = OpVariable %_ptr_Function_v4float Function %5 + OpStore %res %14 + OpReturn + OpFunctionEnd +%vertex_main_inner = OpFunction %v4float None %17 + %19 = OpLabel + %20 = OpFunctionCall %void %atan2_c4be45 + OpReturnValue %5 + OpFunctionEnd +%vertex_main = OpFunction %void None %9 + %22 = OpLabel + %23 = OpFunctionCall %v4float %vertex_main_inner + OpStore %value %23 + OpStore %vertex_point_size %float_1 + OpReturn + OpFunctionEnd +%fragment_main = OpFunction %void None %9 + %26 = OpLabel + %27 = OpFunctionCall %void %atan2_c4be45 + OpReturn + OpFunctionEnd +%compute_main = OpFunction %void None %9 + %29 = OpLabel + %30 = OpFunctionCall %void %atan2_c4be45 + OpReturn + OpFunctionEnd diff --git a/test/tint/builtins/gen/var/atan2/c4be45.wgsl.expected.wgsl b/test/tint/builtins/gen/var/atan2/c4be45.wgsl.expected.wgsl new file mode 100644 index 0000000000..f6d2ed6380 --- /dev/null +++ b/test/tint/builtins/gen/var/atan2/c4be45.wgsl.expected.wgsl @@ -0,0 +1,21 @@ +fn atan2_c4be45() { + const arg_0 = vec4(1); + const arg_1 = vec4(1); + var res = atan2(arg_0, arg_1); +} + +@vertex +fn vertex_main() -> @builtin(position) vec4 { + atan2_c4be45(); + return vec4(); +} + +@fragment +fn fragment_main() { + atan2_c4be45(); +} + +@compute @workgroup_size(1) +fn compute_main() { + atan2_c4be45(); +}