const eval of atan2
Bug: tint:1581
Change-Id: I6268e291540bc8c712f6925f0bcb82c5873359c7
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/96902
Commit-Queue: Antonio Maiorano <amaiorano@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
diff --git a/src/tint/intrinsics.def b/src/tint/intrinsics.def
index c971af5..cc073da 100644
--- a/src/tint/intrinsics.def
+++ b/src/tint/intrinsics.def
@@ -135,6 +135,7 @@
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<N: num>(vec<N, f32>) -> vec<N, f32>
fn atan(f32) -> f32
fn atan<N: num>(vec<N, f32>) -> vec<N, f32>
-fn atan2(f32, f32) -> f32
-fn atan2<N: num>(vec<N, f32>, vec<N, f32>) -> vec<N, f32>
+@const fn atan2<T: fa_f32>(T, T) -> T
+@const fn atan2<N: num, T: fa_f32>(vec<N, T>, vec<N, T>) -> vec<N, T>
fn atanh(f32) -> f32
fn atanh<N: num>(vec<N, f32>) -> vec<N, f32>
fn ceil(f32) -> f32
diff --git a/src/tint/resolver/builtin_test.cc b/src/tint/resolver/builtin_test.cc
index 9d8d11e..b1d5744 100644
--- a/src/tint/resolver/builtin_test.cc
+++ b/src/tint/resolver/builtin_test.cc
@@ -1068,6 +1068,70 @@
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<T>, vecN<T>) -> vecN<T> 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<T>, vecN<T>) -> vecN<T> 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<BuiltinData>;
+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<f32>(1_f, 1_f, 3_f), vec3<f32>(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<sem::Vector>()->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 @@
std::string(param.name) + "(vecN<f32>, vecN<f32>) -> vecN<f32>\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 @@
}
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 e1c3416..56b7aa3 100644
--- a/src/tint/resolver/const_eval.cc
+++ b/src/tint/resolver/const_eval.cc
@@ -46,29 +46,49 @@
namespace {
-/// Helper that calls 'f' passing in `c`'s value
-template <typename F>
-auto Dispatch_ia_iu32(const sem::Constant* c, F&& f) {
- return Switch(
- c->Type(), [&](const sem::AbstractInt*) { return f(c->As<AInt>()); },
- [&](const sem::I32*) { return f(c->As<i32>()); },
- [&](const sem::U32*) { return f(c->As<u32>()); });
+/// Returns the first element of a parameter pack
+template <typename T>
+T First(T&& first, ...) {
+ return std::forward<T>(first);
}
-/// Helper that calls 'f' passing in `c`'s value
-template <typename F>
-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 <typename F, typename... CONSTANTS>
+auto Dispatch_ia_iu32(F&& f, CONSTANTS&&... cs) {
return Switch(
- c->Type(), [&](const sem::AbstractInt*) { return f(c->As<AInt>()); },
- [&](const sem::AbstractFloat*) { return f(c->As<AFloat>()); },
- [&](const sem::F32*) { return f(c->As<f32>()); },
- [&](const sem::I32*) { return f(c->As<i32>()); },
+ First(cs...)->Type(), //
+ [&](const sem::AbstractInt*) { return f(cs->template As<AInt>()...); },
+ [&](const sem::I32*) { return f(cs->template As<i32>()...); },
+ [&](const sem::U32*) { return f(cs->template As<u32>()...); });
+}
+
+/// Helper that calls `f` passing in the value of all `cs`.
+/// Assumes all `cs` are of the same type.
+template <typename F, typename... CONSTANTS>
+auto Dispatch_fia_fi32_f16(F&& f, CONSTANTS&&... cs) {
+ return Switch(
+ First(cs...)->Type(), //
+ [&](const sem::AbstractInt*) { return f(cs->template As<AInt>()...); },
+ [&](const sem::AbstractFloat*) { return f(cs->template As<AFloat>()...); },
+ [&](const sem::F32*) { return f(cs->template As<f32>()...); },
+ [&](const sem::I32*) { return f(cs->template As<i32>()...); },
[&](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 <typename F, typename... CONSTANTS>
+auto Dispatch_fa_f32(F&& f, CONSTANTS&&... cs) {
+ return Switch(
+ First(cs...)->Type(), //
+ [&](const sem::AbstractFloat*) { return f(cs->template As<AFloat>()...); },
+ [&](const sem::F32*) { return f(cs->template As<f32>()...); });
+}
+
/// 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 @@
}
/// TransformElements constructs a new constant by applying the transformation function 'f' on each
-/// of the most deeply nested elements of 'c'.
-template <typename F>
-const Constant* TransformElements(ProgramBuilder& builder, const sem::Constant* c, F&& f) {
+/// of the most deeply nested elements of 'cs'.
+template <typename F, typename... CONSTANTS>
+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<const sem::Constant*, 8> 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::OpComplement(const sem::Type*,
utils::ConstVectorRef<const sem::Expression*> 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<const sem::Expression*> 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<decltype(i)>;
if constexpr (std::is_integral_v<T>) {
auto v = i.value;
@@ -682,8 +705,22 @@
} 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<const sem::Expression*> 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<const sem::Constant*> ConstEval::Convert(const sem::Type* target_ty,
diff --git a/src/tint/resolver/const_eval.h b/src/tint/resolver/const_eval.h
index 9b8a3b1..a9be358 100644
--- a/src/tint/resolver/const_eval.h
+++ b/src/tint/resolver/const_eval.h
@@ -187,6 +187,17 @@
const sem::Constant* OpMinus(const sem::Type* ty,
utils::ConstVectorRef<const sem::Expression*> 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<const sem::Expression*> 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 7991f6f..0676305 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 <typename T>
+const auto kHighest = T(T::kHighest);
+
+template <typename T>
+const auto kLowest = T(T::kLowest);
+
+template <typename T>
+const auto kNaN = T(std::numeric_limits<UnwrapNumber<T>>::quiet_NaN());
+
+template <typename T>
+const auto kInf = T(std::numeric_limits<UnwrapNumber<T>>::infinity());
+
+template <typename T>
+const auto kPi = T(UnwrapNumber<T>(3.14159265358979323846));
+
+template <typename T>
+const auto kPiOver2 = T(UnwrapNumber<T>(1.57079632679489661923));
+
+template <typename T>
+const auto kPiOver4 = T(UnwrapNumber<T>(0.785398163397448309616));
+
+template <typename T>
+const auto k3PiOver4 = T(UnwrapNumber<T>(2.356194490192344928846));
+
+template <typename T>
+constexpr auto Negate(const Number<T>& 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<T> && std::is_signed_v<T>) {
+ if (v == std::numeric_limits<T>::min()) {
+ return v;
+ }
+ }
+ return -v;
+}
+
+template <typename T>
+auto Abs(const Number<T>& v) {
+ if constexpr (std::is_integral_v<T> && std::is_unsigned_v<T>) {
+ return v;
+ } else {
+ return Number<T>(std::abs(v));
+ }
+}
+
+// Concats any number of std::vectors
+template <typename Vec, typename... Vecs>
+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 @@
EXPECT_TRUE(r()->Resolve()) << r()->error();
- constexpr auto kInf = std::numeric_limits<double>::infinity();
+ constexpr auto kInfinity = std::numeric_limits<double>::infinity();
auto* sem = Sem().Get(expr);
ASSERT_NE(sem, nullptr);
@@ -1349,17 +1406,17 @@
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<AFloat>(), kInf);
+ EXPECT_EQ(sem->ConstantValue()->Index(0)->As<AFloat>(), 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<AFloat>(), -kInf);
+ EXPECT_EQ(sem->ConstantValue()->Index(1)->As<AFloat>(), -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<AFloat>(), kInf);
+ EXPECT_EQ(sem->ConstantValue()->Index(2)->As<AFloat>(), kInfinity);
}
TEST_F(ResolverConstEvalTest, Vec3_Convert_Small_f32_to_f16) {
@@ -2931,29 +2988,6 @@
namespace unary_op {
template <typename T>
-auto Highest() {
- return T(T::kHighest);
-}
-
-template <typename T>
-auto Lowest() {
- return T(T::kLowest);
-}
-
-template <typename T>
-constexpr auto Negate(const Number<T>& 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<T> && std::is_signed_v<T>) {
- if (v == std::numeric_limits<T>::min()) {
- return v;
- }
- }
- return -v;
-}
-
-template <typename T>
struct Values {
T input;
T expect;
@@ -3036,37 +3070,37 @@
C(-0_a, 0_a),
C(1_a, -1_a),
C(-1_a, 1_a),
- C(Highest<AInt>(), -Highest<AInt>()),
- C(-Highest<AInt>(), Highest<AInt>()),
- C(Lowest<AInt>(), Negate(Lowest<AInt>())),
- C(Negate(Lowest<AInt>()), Lowest<AInt>()),
+ C(kHighest<AInt>, -kHighest<AInt>),
+ C(-kHighest<AInt>, kHighest<AInt>),
+ C(kLowest<AInt>, Negate(kLowest<AInt>)),
+ C(Negate(kLowest<AInt>), kLowest<AInt>),
// i32
C(0_i, -0_i),
C(-0_i, 0_i),
C(1_i, -1_i),
C(-1_i, 1_i),
- C(Highest<i32>(), -Highest<i32>()),
- C(-Highest<i32>(), Highest<i32>()),
- C(Lowest<i32>(), Negate(Lowest<i32>())),
- C(Negate(Lowest<i32>()), Lowest<i32>()),
+ C(kHighest<i32>, -kHighest<i32>),
+ C(-kHighest<i32>, kHighest<i32>),
+ C(kLowest<i32>, Negate(kLowest<i32>)),
+ C(Negate(kLowest<i32>), kLowest<i32>),
// 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<AFloat>(), -Highest<AFloat>()),
- C(-Highest<AFloat>(), Highest<AFloat>()),
- C(Lowest<AFloat>(), Negate(Lowest<AFloat>())),
- C(Negate(Lowest<AFloat>()), Lowest<AFloat>()),
+ C(kHighest<AFloat>, -kHighest<AFloat>),
+ C(-kHighest<AFloat>, kHighest<AFloat>),
+ C(kLowest<AFloat>, Negate(kLowest<AFloat>)),
+ C(Negate(kLowest<AFloat>), kLowest<AFloat>),
// 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<f32>(), -Highest<f32>()),
- C(-Highest<f32>(), Highest<f32>()),
- C(Lowest<f32>(), Negate(Lowest<f32>())),
- C(Negate(Lowest<f32>()), Lowest<f32>()),
+ C(kHighest<f32>, -kHighest<f32>),
+ C(-kHighest<f32>, kHighest<f32>),
+ C(kLowest<f32>, Negate(kLowest<f32>)),
+ C(Negate(kLowest<f32>), kLowest<f32>),
})));
// Make sure UBSan doesn't trip on C++'s undefined behaviour of negating the smallest negative
@@ -3082,5 +3116,145 @@
} // namespace unary_op
+namespace builtin {
+
+template <typename T>
+struct Values {
+ std::vector<T> args;
+ T result;
+ bool result_pos_or_neg;
+};
+
+struct Case {
+ std::variant<Values<AInt>, Values<AFloat>, Values<u32>, Values<i32>, Values<f32>, Values<f16>>
+ 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 <typename T>
+Case C(std::vector<T> args, T result, bool result_pos_or_neg = false) {
+ return Case{Values<T>{std::move(args), result, result_pos_or_neg}};
+}
+
+using ResolverConstEvalBuiltinTest = ResolverTestWithParam<std::tuple<sem::BuiltinType, Case>>;
+
+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<const ast::Expression*>(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<T>();
+
+ if constexpr (IsFloatingPoint<UnwrapNumber<T>>) {
+ 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<UnwrapNumber<T>>) {
+ // 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>(), AInt(values.result));
+ }
+ },
+ c.values);
+}
+
+template <typename T, bool finite_only>
+std::vector<Case> Atan2Cases() {
+ std::vector<Case> cases = {
+ // If y is +/-0 and x is negative or -0, +/-PI is returned
+ C({T(0.0), -T(0.0)}, kPi<T>, 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<T>),
+ C({-T(1.0), -T(0.0)}, -kPiOver2<T>),
+
+ // If x is +/-0 and y is positive, +PI/2 is returned
+ C({T(1.0), T(0.0)}, kPiOver2<T>),
+ C({T(1.0), -T(0.0)}, kPiOver2<T>),
+ };
+
+ if constexpr (!finite_only) {
+ std::vector<Case> non_finite_cases = {
+ // If y is +/-INF and x is finite, +/-PI/2 is returned
+ C({kInf<T>, T(0.0)}, kPiOver2<T>, true),
+ C({-kInf<T>, T(0.0)}, kPiOver2<T>, true),
+
+ // If y is +/-INF and x is -INF, +/-3PI/4 is returned
+ C({kInf<T>, -kInf<T>}, k3PiOver4<T>, true),
+ C({-kInf<T>, -kInf<T>}, k3PiOver4<T>, true),
+
+ // If y is +/-INF and x is +INF, +/-PI/4 is returned
+ C({kInf<T>, kInf<T>}, kPiOver4<T>, true),
+ C({-kInf<T>, kInf<T>}, kPiOver4<T>, true),
+
+ // If x is -INF and y is finite and positive, +PI is returned
+ C({T(0.0), -kInf<T>}, kPi<T>),
+
+ // If x is -INF and y is finite and negative, -PI is returned
+ C({-T(0.0), -kInf<T>}, -kPi<T>),
+
+ // If x is +INF and y is finite and positive, +0 is returned
+ C({T(0.0), kInf<T>}, T(0.0)),
+
+ // If x is +INF and y is finite and negative, -0 is returned
+ C({-T(0.0), kInf<T>}, -T(0.0)),
+
+ // If either x is NaN or y is NaN, NaN is returned
+ C({kNaN<T>, T(0.0)}, kNaN<T>),
+ C({T(0.0), kNaN<T>}, kNaN<T>),
+ C({kNaN<T>, kNaN<T>}, kNaN<T>),
+ };
+
+ 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<AFloat, true>(), //
+ Atan2Cases<f32, false>()))));
+
+} // namespace builtin
+
} // namespace
} // namespace tint::resolver
diff --git a/src/tint/resolver/intrinsic_table.inl b/src/tint/resolver/intrinsic_table.inl
index 632b4a7..3c065b6 100644
--- a/src/tint/resolver/intrinsic_table.inl
+++ b/src/tint/resolver/intrinsic_table.inl
@@ -1913,8 +1913,43 @@
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 @@
}
/// 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 @@
}
/// 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 @@
}
/// 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 @@
}
/// 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 @@
}
/// 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 @@
}
/// 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 @@
}
/// 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 @@
}
/// 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 @@
}
/// 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 @@
}
/// 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 @@
}
/// 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 @@
}
/// 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 @@
}
/// 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 @@
}
/// 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 @@
}
/// 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 @@
ScalarNoU32 ScalarNoU32_;
ScalarNoBool ScalarNoBool_;
FiaFi32F16 FiaFi32F16_;
+ FaF32 FaF32_;
FaF32F16 FaF32F16_;
IaIu32 IaIu32_;
Fiu32F16 Fiu32F16_;
@@ -2533,7 +2569,7 @@
~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 @@
/* [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 @@
{
/* [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 @@
{
/* [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 @@
{
/* [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 @@
{
/* [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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
{
/* [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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
/* 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 @@
},
{
/* [9] */
- /* fn atan2(f32, f32) -> f32 */
- /* fn atan2<N : num>(vec<N, f32>, vec<N, f32>) -> vec<N, f32> */
+ /* fn atan2<T : fa_f32>(T, T) -> T */
+ /* fn atan2<N : num, T : fa_f32>(vec<N, T>, vec<N, T>) -> vec<N, T> */
/* 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 c4bf27e..f9f009d 100644
--- a/src/tint/writer/spirv/builder_builtin_test.cc
+++ b/src/tint/writer/spirv/builder_builtin_test.cc
@@ -918,9 +918,11 @@
using Builtin_Builtin_ThreeParam_Float_Test = BuiltinBuilderTestWithParam<BuiltinData>;
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 @@
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 @@
TEST_P(Builtin_Builtin_ThreeParam_Float_Test, Call_Vector) {
auto param = GetParam();
- auto* expr = Call(param.name, vec2<f32>(1_f, 1_f), vec2<f32>(1_f, 1_f), vec2<f32>(1_f, 1_f));
+ auto* decl = Decl(Var("a", nullptr, vec2<f32>(1_f, 1_f)));
+ auto* expr = Call(param.name, Expr("a"), vec2<f32>(1_f, 1_f), vec2<f32>(1_f, 1_f));
auto* func = Func("a_func", {}, ty.void_(),
{
+ decl,
Assign(Phony(), expr),
});
@@ -959,19 +969,25 @@
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 @@
using Builtin_Builtin_ThreeParam_Sint_Test = BuiltinBuilderTestWithParam<BuiltinData>;
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 @@
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 @@
TEST_P(Builtin_Builtin_ThreeParam_Sint_Test, Call_Vector) {
auto param = GetParam();
- auto* expr = Call(param.name, vec2<i32>(1_i, 1_i), vec2<i32>(1_i, 1_i), vec2<i32>(1_i, 1_i));
+ auto* decl = Decl(Var("a", nullptr, vec2<i32>(1_i, 1_i)));
+ auto* expr = Call(param.name, Expr("a"), vec2<i32>(1_i, 1_i), vec2<i32>(1_i, 1_i));
auto* func = Func("a_func", {}, ty.void_(),
{
+ decl,
Assign(Phony(), expr),
});
@@ -1346,19 +1372,25 @@
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 @@
using Builtin_Builtin_ThreeParam_Uint_Test = BuiltinBuilderTestWithParam<BuiltinData>;
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 @@
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 @@
TEST_P(Builtin_Builtin_ThreeParam_Uint_Test, Call_Vector) {
auto param = GetParam();
- auto* expr = Call(param.name, vec2<u32>(1_u, 1_u), vec2<u32>(1_u, 1_u), vec2<u32>(1_u, 1_u));
+ auto* decl = Decl(Var("a", nullptr, vec2<u32>(1_u, 1_u)));
+ auto* expr = Call(param.name, Expr("a"), vec2<u32>(1_u, 1_u), vec2<u32>(1_u, 1_u));
auto* func = Func("a_func", {}, ty.void_(),
{
+ decl,
Assign(Phony(), expr),
});
@@ -1412,19 +1454,25 @@
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 0000000..2e7ead5
--- /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<f32> {
+ atan2_034ace();
+ return vec4<f32>();
+}
+
+@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 0000000..dce0209
--- /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 0000000..dce0209
--- /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 0000000..4919787
--- /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 0000000..fb91e8d
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atan2/034ace.wgsl.expected.msl
@@ -0,0 +1,33 @@
+#include <metal_stdlib>
+
+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 0000000..abac9b4
--- /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 0000000..5e22efa
--- /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<f32> {
+ atan2_034ace();
+ return vec4<f32>();
+}
+
+@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 0000000..e0da8cf
--- /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<f32> {
+ atan2_3c2865();
+ return vec4<f32>();
+}
+
+@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 0000000..71f64a4
--- /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 0000000..71f64a4
--- /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 0000000..b2ebe38
--- /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 0000000..867108a
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atan2/3c2865.wgsl.expected.msl
@@ -0,0 +1,33 @@
+#include <metal_stdlib>
+
+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 0000000..56fba1d
--- /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 0000000..ee5ee3d
--- /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<f32> {
+ atan2_3c2865();
+ return vec4<f32>();
+}
+
+@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 be134c9..f3d2565 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 be134c9..f3d2565 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 7fcea00..e4ffcba 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 @@
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 @@
#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 2f51682..bdc31a4 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 b50b11d..8aed645 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 1a7ff47..d1f9172 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 1a7ff47..d1f9172 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 37d0f9a..84a2072 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 @@
precision mediump float;
void atan2_96057c() {
- float res = atan(1.0f, 1.0f);
+ float res = 0.785398185f;
}
void fragment_main() {
@@ -35,7 +35,7 @@
#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 f8d20e0..8a2998e 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 777b131..6314939 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 9ef81dc..a025539 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 9ef81dc..a025539 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 9383f00..a63fa44 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 @@
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 @@
#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 27d8133..c34104b 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 076da64..e5d3081 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 c479b2b..5620691 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 c479b2b..5620691 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 3a58d7c..46798f9 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 @@
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 @@
#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 fb28698..ec369ef 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 2d299bd..cb43b9d 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 0000000..7ea0343
--- /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<f32> {
+ atan2_c19683();
+ return vec4<f32>();
+}
+
+@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 0000000..93f2273
--- /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 0000000..93f2273
--- /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 0000000..d823d61
--- /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 0000000..3af76c7
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atan2/c19683.wgsl.expected.msl
@@ -0,0 +1,33 @@
+#include <metal_stdlib>
+
+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 0000000..66dfdb2
--- /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 0000000..efb9bad
--- /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<f32> {
+ atan2_c19683();
+ return vec4<f32>();
+}
+
+@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 0000000..a80cebe
--- /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<f32> {
+ atan2_c4be45();
+ return vec4<f32>();
+}
+
+@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 0000000..c666d69
--- /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 0000000..c666d69
--- /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 0000000..2d65f82
--- /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 0000000..89fe4fa
--- /dev/null
+++ b/test/tint/builtins/gen/literal/atan2/c4be45.wgsl.expected.msl
@@ -0,0 +1,33 @@
+#include <metal_stdlib>
+
+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 0000000..4f8d2b6
--- /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 0000000..f5c94ec
--- /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<f32> {
+ atan2_c4be45();
+ return vec4<f32>();
+}
+
+@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 0000000..e52cf68
--- /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<f32> {
+ atan2_034ace();
+ return vec4<f32>();
+}
+
+@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 0000000..dce0209
--- /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 0000000..dce0209
--- /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 0000000..4919787
--- /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 0000000..fb91e8d
--- /dev/null
+++ b/test/tint/builtins/gen/var/atan2/034ace.wgsl.expected.msl
@@ -0,0 +1,33 @@
+#include <metal_stdlib>
+
+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 0000000..abac9b4
--- /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 0000000..1de898d
--- /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<f32> {
+ atan2_034ace();
+ return vec4<f32>();
+}
+
+@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 0000000..499e571
--- /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<f32> {
+ atan2_3c2865();
+ return vec4<f32>();
+}
+
+@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 0000000..71f64a4
--- /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 0000000..71f64a4
--- /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 0000000..b2ebe38
--- /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 0000000..867108a
--- /dev/null
+++ b/test/tint/builtins/gen/var/atan2/3c2865.wgsl.expected.msl
@@ -0,0 +1,33 @@
+#include <metal_stdlib>
+
+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 0000000..56fba1d
--- /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 0000000..cb7b4c8
--- /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<f32> {
+ atan2_3c2865();
+ return vec4<f32>();
+}
+
+@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 0000000..3e2522a
--- /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<f32> {
+ atan2_c19683();
+ return vec4<f32>();
+}
+
+@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 0000000..93f2273
--- /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 0000000..93f2273
--- /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 0000000..d823d61
--- /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 0000000..3af76c7
--- /dev/null
+++ b/test/tint/builtins/gen/var/atan2/c19683.wgsl.expected.msl
@@ -0,0 +1,33 @@
+#include <metal_stdlib>
+
+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 0000000..66dfdb2
--- /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 0000000..bc8d8ee
--- /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<f32> {
+ atan2_c19683();
+ return vec4<f32>();
+}
+
+@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 0000000..761ecc8
--- /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<f32> {
+ atan2_c4be45();
+ return vec4<f32>();
+}
+
+@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 0000000..c666d69
--- /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 0000000..c666d69
--- /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 0000000..2d65f82
--- /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 0000000..89fe4fa
--- /dev/null
+++ b/test/tint/builtins/gen/var/atan2/c4be45.wgsl.expected.msl
@@ -0,0 +1,33 @@
+#include <metal_stdlib>
+
+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 0000000..4f8d2b6
--- /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 0000000..f6d2ed6
--- /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<f32> {
+ atan2_c4be45();
+ return vec4<f32>();
+}
+
+@fragment
+fn fragment_main() {
+ atan2_c4be45();
+}
+
+@compute @workgroup_size(1)
+fn compute_main() {
+ atan2_c4be45();
+}