// Copyright 2021 The Tint Authors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

////////////////////////////////////////////////////////////////////////////////
// File generated by tools/src/cmd/gen
// using the template:
//   src/tint/resolver/intrinsic_table.inl.tmpl
//
// Do not modify this file directly
////////////////////////////////////////////////////////////////////////////////

// clang-format off

/// TypeMatcher for 'type bool'
class Bool : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// 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* Bool::Match(MatchState& state, const sem::Type* ty) const {
  if (!match_bool(state, ty)) {
    return nullptr;
  }
  return build_bool(state);
}

std::string Bool::String(MatchState*) const {
  return "bool";
}

/// TypeMatcher for 'type ia'
class Ia : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// 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* Ia::Match(MatchState& state, const sem::Type* ty) const {
  if (!match_ia(state, ty)) {
    return nullptr;
  }
  return build_ia(state);
}

std::string Ia::String(MatchState*) const {
  std::stringstream ss;
  ss << "abstract-int";
  return ss.str();
}

/// TypeMatcher for 'type fa'
class Fa : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// 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* Fa::Match(MatchState& state, const sem::Type* ty) const {
  if (!match_fa(state, ty)) {
    return nullptr;
  }
  return build_fa(state);
}

std::string Fa::String(MatchState*) const {
  std::stringstream ss;
  ss << "abstract-float";
  return ss.str();
}

/// TypeMatcher for 'type i32'
class I32 : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// 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* I32::Match(MatchState& state, const sem::Type* ty) const {
  if (!match_i32(state, ty)) {
    return nullptr;
  }
  return build_i32(state);
}

std::string I32::String(MatchState*) const {
  return "i32";
}

/// TypeMatcher for 'type u32'
class U32 : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// 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* U32::Match(MatchState& state, const sem::Type* ty) const {
  if (!match_u32(state, ty)) {
    return nullptr;
  }
  return build_u32(state);
}

std::string U32::String(MatchState*) const {
  return "u32";
}

/// TypeMatcher for 'type f32'
class F32 : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// 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* F32::Match(MatchState& state, const sem::Type* ty) const {
  if (!match_f32(state, ty)) {
    return nullptr;
  }
  return build_f32(state);
}

std::string F32::String(MatchState*) const {
  return "f32";
}

/// TypeMatcher for 'type f16'
class F16 : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// 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* F16::Match(MatchState& state, const sem::Type* ty) const {
  if (!match_f16(state, ty)) {
    return nullptr;
  }
  return build_f16(state);
}

std::string F16::String(MatchState*) const {
  return "f16";
}

/// TypeMatcher for 'type vec2'
class Vec2 : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// 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* Vec2::Match(MatchState& state, const sem::Type* ty) const {
  const sem::Type* T = nullptr;
  if (!match_vec2(state, ty, T)) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_vec2(state, T);
}

std::string Vec2::String(MatchState* state) const {
  const std::string T = state->TypeName();
  return "vec2<" + T + ">";
}

/// TypeMatcher for 'type vec3'
class Vec3 : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// 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* Vec3::Match(MatchState& state, const sem::Type* ty) const {
  const sem::Type* T = nullptr;
  if (!match_vec3(state, ty, T)) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_vec3(state, T);
}

std::string Vec3::String(MatchState* state) const {
  const std::string T = state->TypeName();
  return "vec3<" + T + ">";
}

/// TypeMatcher for 'type vec4'
class Vec4 : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// 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* Vec4::Match(MatchState& state, const sem::Type* ty) const {
  const sem::Type* T = nullptr;
  if (!match_vec4(state, ty, T)) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_vec4(state, T);
}

std::string Vec4::String(MatchState* state) const {
  const std::string T = state->TypeName();
  return "vec4<" + T + ">";
}

/// TypeMatcher for 'type mat2x2'
class Mat2X2 : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// 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* Mat2X2::Match(MatchState& state, const sem::Type* ty) const {
  const sem::Type* T = nullptr;
  if (!match_mat2x2(state, ty, T)) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_mat2x2(state, T);
}

std::string Mat2X2::String(MatchState* state) const {
  const std::string T = state->TypeName();
  return "mat2x2<" + T + ">";
}

/// TypeMatcher for 'type mat2x3'
class Mat2X3 : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// 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* Mat2X3::Match(MatchState& state, const sem::Type* ty) const {
  const sem::Type* T = nullptr;
  if (!match_mat2x3(state, ty, T)) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_mat2x3(state, T);
}

std::string Mat2X3::String(MatchState* state) const {
  const std::string T = state->TypeName();
  return "mat2x3<" + T + ">";
}

/// TypeMatcher for 'type mat2x4'
class Mat2X4 : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// 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* Mat2X4::Match(MatchState& state, const sem::Type* ty) const {
  const sem::Type* T = nullptr;
  if (!match_mat2x4(state, ty, T)) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_mat2x4(state, T);
}

std::string Mat2X4::String(MatchState* state) const {
  const std::string T = state->TypeName();
  return "mat2x4<" + T + ">";
}

/// TypeMatcher for 'type mat3x2'
class Mat3X2 : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// 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* Mat3X2::Match(MatchState& state, const sem::Type* ty) const {
  const sem::Type* T = nullptr;
  if (!match_mat3x2(state, ty, T)) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_mat3x2(state, T);
}

std::string Mat3X2::String(MatchState* state) const {
  const std::string T = state->TypeName();
  return "mat3x2<" + T + ">";
}

/// TypeMatcher for 'type mat3x3'
class Mat3X3 : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// 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* Mat3X3::Match(MatchState& state, const sem::Type* ty) const {
  const sem::Type* T = nullptr;
  if (!match_mat3x3(state, ty, T)) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_mat3x3(state, T);
}

std::string Mat3X3::String(MatchState* state) const {
  const std::string T = state->TypeName();
  return "mat3x3<" + T + ">";
}

/// TypeMatcher for 'type mat3x4'
class Mat3X4 : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// 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* Mat3X4::Match(MatchState& state, const sem::Type* ty) const {
  const sem::Type* T = nullptr;
  if (!match_mat3x4(state, ty, T)) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_mat3x4(state, T);
}

std::string Mat3X4::String(MatchState* state) const {
  const std::string T = state->TypeName();
  return "mat3x4<" + T + ">";
}

/// TypeMatcher for 'type mat4x2'
class Mat4X2 : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// 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* Mat4X2::Match(MatchState& state, const sem::Type* ty) const {
  const sem::Type* T = nullptr;
  if (!match_mat4x2(state, ty, T)) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_mat4x2(state, T);
}

std::string Mat4X2::String(MatchState* state) const {
  const std::string T = state->TypeName();
  return "mat4x2<" + T + ">";
}

/// TypeMatcher for 'type mat4x3'
class Mat4X3 : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// 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* Mat4X3::Match(MatchState& state, const sem::Type* ty) const {
  const sem::Type* T = nullptr;
  if (!match_mat4x3(state, ty, T)) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_mat4x3(state, T);
}

std::string Mat4X3::String(MatchState* state) const {
  const std::string T = state->TypeName();
  return "mat4x3<" + T + ">";
}

/// TypeMatcher for 'type mat4x4'
class Mat4X4 : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// 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* Mat4X4::Match(MatchState& state, const sem::Type* ty) const {
  const sem::Type* T = nullptr;
  if (!match_mat4x4(state, ty, T)) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_mat4x4(state, T);
}

std::string Mat4X4::String(MatchState* state) const {
  const std::string T = state->TypeName();
  return "mat4x4<" + T + ">";
}

/// TypeMatcher for 'type vec'
class Vec : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// 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* Vec::Match(MatchState& state, const sem::Type* ty) const {
  Number N = Number::invalid;
  const sem::Type* T = nullptr;
  if (!match_vec(state, ty, N, T)) {
    return nullptr;
  }
  N = state.Num(N);
  if (!N.IsValid()) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_vec(state, N, T);
}

std::string Vec::String(MatchState* state) const {
  const std::string N = state->NumName();
  const std::string T = state->TypeName();
  std::stringstream ss;
  ss << "vec" << N << "<" << T << ">";
  return ss.str();
}

/// TypeMatcher for 'type mat'
class Mat : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// 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* Mat::Match(MatchState& state, const sem::Type* ty) const {
  Number N = Number::invalid;
  Number M = Number::invalid;
  const sem::Type* T = nullptr;
  if (!match_mat(state, ty, N, M, T)) {
    return nullptr;
  }
  N = state.Num(N);
  if (!N.IsValid()) {
    return nullptr;
  }
  M = state.Num(M);
  if (!M.IsValid()) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_mat(state, N, M, T);
}

std::string Mat::String(MatchState* state) const {
  const std::string N = state->NumName();
  const std::string M = state->NumName();
  const std::string T = state->TypeName();
  std::stringstream ss;
  ss << "mat" << N << "x" << M << "<" << T << ">";
  return ss.str();
}

/// TypeMatcher for 'type ptr'
class Ptr : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// 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* Ptr::Match(MatchState& state, const sem::Type* ty) const {
  Number S = Number::invalid;
  const sem::Type* T = nullptr;
  Number A = Number::invalid;
  if (!match_ptr(state, ty, S, T, A)) {
    return nullptr;
  }
  S = state.Num(S);
  if (!S.IsValid()) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  A = state.Num(A);
  if (!A.IsValid()) {
    return nullptr;
  }
  return build_ptr(state, S, T, A);
}

std::string Ptr::String(MatchState* state) const {
  const std::string S = state->NumName();
  const std::string T = state->TypeName();
  const std::string A = state->NumName();
  return "ptr<" + S + ", " + T + ", " + A + ">";
}

/// TypeMatcher for 'type atomic'
class Atomic : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// 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* Atomic::Match(MatchState& state, const sem::Type* ty) const {
  const sem::Type* T = nullptr;
  if (!match_atomic(state, ty, T)) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_atomic(state, T);
}

std::string Atomic::String(MatchState* state) const {
  const std::string T = state->TypeName();
  return "atomic<" + T + ">";
}

/// TypeMatcher for 'type array'
class Array : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// 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* Array::Match(MatchState& state, const sem::Type* ty) const {
  const sem::Type* T = nullptr;
  if (!match_array(state, ty, T)) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_array(state, T);
}

std::string Array::String(MatchState* state) const {
  const std::string T = state->TypeName();
  return "array<" + T + ">";
}

/// TypeMatcher for 'type sampler'
class Sampler : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// 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* Sampler::Match(MatchState& state, const sem::Type* ty) const {
  if (!match_sampler(state, ty)) {
    return nullptr;
  }
  return build_sampler(state);
}

std::string Sampler::String(MatchState*) const {
  return "sampler";
}

/// TypeMatcher for 'type sampler_comparison'
class SamplerComparison : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// 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* SamplerComparison::Match(MatchState& state, const sem::Type* ty) const {
  if (!match_sampler_comparison(state, ty)) {
    return nullptr;
  }
  return build_sampler_comparison(state);
}

std::string SamplerComparison::String(MatchState*) const {
  return "sampler_comparison";
}

/// TypeMatcher for 'type texture_1d'
class Texture1D : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// 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* Texture1D::Match(MatchState& state, const sem::Type* ty) const {
  const sem::Type* T = nullptr;
  if (!match_texture_1d(state, ty, T)) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_texture_1d(state, T);
}

std::string Texture1D::String(MatchState* state) const {
  const std::string T = state->TypeName();
  return "texture_1d<" + T + ">";
}

/// TypeMatcher for 'type texture_2d'
class Texture2D : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// 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* Texture2D::Match(MatchState& state, const sem::Type* ty) const {
  const sem::Type* T = nullptr;
  if (!match_texture_2d(state, ty, T)) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_texture_2d(state, T);
}

std::string Texture2D::String(MatchState* state) const {
  const std::string T = state->TypeName();
  return "texture_2d<" + T + ">";
}

/// TypeMatcher for 'type texture_2d_array'
class Texture2DArray : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// 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* Texture2DArray::Match(MatchState& state, const sem::Type* ty) const {
  const sem::Type* T = nullptr;
  if (!match_texture_2d_array(state, ty, T)) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_texture_2d_array(state, T);
}

std::string Texture2DArray::String(MatchState* state) const {
  const std::string T = state->TypeName();
  return "texture_2d_array<" + T + ">";
}

/// TypeMatcher for 'type texture_3d'
class Texture3D : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// 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* Texture3D::Match(MatchState& state, const sem::Type* ty) const {
  const sem::Type* T = nullptr;
  if (!match_texture_3d(state, ty, T)) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_texture_3d(state, T);
}

std::string Texture3D::String(MatchState* state) const {
  const std::string T = state->TypeName();
  return "texture_3d<" + T + ">";
}

/// TypeMatcher for 'type texture_cube'
class TextureCube : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// 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* TextureCube::Match(MatchState& state, const sem::Type* ty) const {
  const sem::Type* T = nullptr;
  if (!match_texture_cube(state, ty, T)) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_texture_cube(state, T);
}

std::string TextureCube::String(MatchState* state) const {
  const std::string T = state->TypeName();
  return "texture_cube<" + T + ">";
}

/// TypeMatcher for 'type texture_cube_array'
class TextureCubeArray : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// 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* TextureCubeArray::Match(MatchState& state, const sem::Type* ty) const {
  const sem::Type* T = nullptr;
  if (!match_texture_cube_array(state, ty, T)) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_texture_cube_array(state, T);
}

std::string TextureCubeArray::String(MatchState* state) const {
  const std::string T = state->TypeName();
  return "texture_cube_array<" + T + ">";
}

/// TypeMatcher for 'type texture_multisampled_2d'
class TextureMultisampled2D : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// 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* TextureMultisampled2D::Match(MatchState& state, const sem::Type* ty) const {
  const sem::Type* T = nullptr;
  if (!match_texture_multisampled_2d(state, ty, T)) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_texture_multisampled_2d(state, T);
}

std::string TextureMultisampled2D::String(MatchState* state) const {
  const std::string T = state->TypeName();
  return "texture_multisampled_2d<" + T + ">";
}

/// TypeMatcher for 'type texture_depth_2d'
class TextureDepth2D : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// 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* TextureDepth2D::Match(MatchState& state, const sem::Type* ty) const {
  if (!match_texture_depth_2d(state, ty)) {
    return nullptr;
  }
  return build_texture_depth_2d(state);
}

std::string TextureDepth2D::String(MatchState*) const {
  return "texture_depth_2d";
}

/// TypeMatcher for 'type texture_depth_2d_array'
class TextureDepth2DArray : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// 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* TextureDepth2DArray::Match(MatchState& state, const sem::Type* ty) const {
  if (!match_texture_depth_2d_array(state, ty)) {
    return nullptr;
  }
  return build_texture_depth_2d_array(state);
}

std::string TextureDepth2DArray::String(MatchState*) const {
  return "texture_depth_2d_array";
}

/// TypeMatcher for 'type texture_depth_cube'
class TextureDepthCube : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// 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* TextureDepthCube::Match(MatchState& state, const sem::Type* ty) const {
  if (!match_texture_depth_cube(state, ty)) {
    return nullptr;
  }
  return build_texture_depth_cube(state);
}

std::string TextureDepthCube::String(MatchState*) const {
  return "texture_depth_cube";
}

/// TypeMatcher for 'type texture_depth_cube_array'
class TextureDepthCubeArray : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// 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* TextureDepthCubeArray::Match(MatchState& state, const sem::Type* ty) const {
  if (!match_texture_depth_cube_array(state, ty)) {
    return nullptr;
  }
  return build_texture_depth_cube_array(state);
}

std::string TextureDepthCubeArray::String(MatchState*) const {
  return "texture_depth_cube_array";
}

/// TypeMatcher for 'type texture_depth_multisampled_2d'
class TextureDepthMultisampled2D : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// 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* TextureDepthMultisampled2D::Match(MatchState& state, const sem::Type* ty) const {
  if (!match_texture_depth_multisampled_2d(state, ty)) {
    return nullptr;
  }
  return build_texture_depth_multisampled_2d(state);
}

std::string TextureDepthMultisampled2D::String(MatchState*) const {
  return "texture_depth_multisampled_2d";
}

/// TypeMatcher for 'type texture_storage_1d'
class TextureStorage1D : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// 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* TextureStorage1D::Match(MatchState& state, const sem::Type* ty) const {
  Number F = Number::invalid;
  Number A = Number::invalid;
  if (!match_texture_storage_1d(state, ty, F, A)) {
    return nullptr;
  }
  F = state.Num(F);
  if (!F.IsValid()) {
    return nullptr;
  }
  A = state.Num(A);
  if (!A.IsValid()) {
    return nullptr;
  }
  return build_texture_storage_1d(state, F, A);
}

std::string TextureStorage1D::String(MatchState* state) const {
  const std::string F = state->NumName();
  const std::string A = state->NumName();
  return "texture_storage_1d<" + F + ", " + A + ">";
}

/// TypeMatcher for 'type texture_storage_2d'
class TextureStorage2D : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// 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* TextureStorage2D::Match(MatchState& state, const sem::Type* ty) const {
  Number F = Number::invalid;
  Number A = Number::invalid;
  if (!match_texture_storage_2d(state, ty, F, A)) {
    return nullptr;
  }
  F = state.Num(F);
  if (!F.IsValid()) {
    return nullptr;
  }
  A = state.Num(A);
  if (!A.IsValid()) {
    return nullptr;
  }
  return build_texture_storage_2d(state, F, A);
}

std::string TextureStorage2D::String(MatchState* state) const {
  const std::string F = state->NumName();
  const std::string A = state->NumName();
  return "texture_storage_2d<" + F + ", " + A + ">";
}

/// TypeMatcher for 'type texture_storage_2d_array'
class TextureStorage2DArray : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// 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* TextureStorage2DArray::Match(MatchState& state, const sem::Type* ty) const {
  Number F = Number::invalid;
  Number A = Number::invalid;
  if (!match_texture_storage_2d_array(state, ty, F, A)) {
    return nullptr;
  }
  F = state.Num(F);
  if (!F.IsValid()) {
    return nullptr;
  }
  A = state.Num(A);
  if (!A.IsValid()) {
    return nullptr;
  }
  return build_texture_storage_2d_array(state, F, A);
}

std::string TextureStorage2DArray::String(MatchState* state) const {
  const std::string F = state->NumName();
  const std::string A = state->NumName();
  return "texture_storage_2d_array<" + F + ", " + A + ">";
}

/// TypeMatcher for 'type texture_storage_3d'
class TextureStorage3D : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// 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* TextureStorage3D::Match(MatchState& state, const sem::Type* ty) const {
  Number F = Number::invalid;
  Number A = Number::invalid;
  if (!match_texture_storage_3d(state, ty, F, A)) {
    return nullptr;
  }
  F = state.Num(F);
  if (!F.IsValid()) {
    return nullptr;
  }
  A = state.Num(A);
  if (!A.IsValid()) {
    return nullptr;
  }
  return build_texture_storage_3d(state, F, A);
}

std::string TextureStorage3D::String(MatchState* state) const {
  const std::string F = state->NumName();
  const std::string A = state->NumName();
  return "texture_storage_3d<" + F + ", " + A + ">";
}

/// TypeMatcher for 'type texture_external'
class TextureExternal : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// 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* TextureExternal::Match(MatchState& state, const sem::Type* ty) const {
  if (!match_texture_external(state, ty)) {
    return nullptr;
  }
  return build_texture_external(state);
}

std::string TextureExternal::String(MatchState*) const {
  return "texture_external";
}

/// TypeMatcher for 'type __modf_result'
class ModfResult : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// 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* ModfResult::Match(MatchState& state, const sem::Type* ty) const {
  const sem::Type* T = nullptr;
  if (!match_modf_result(state, ty, T)) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_modf_result(state, T);
}

std::string ModfResult::String(MatchState* state) const {
  const std::string T = state->TypeName();
  std::stringstream ss;
  ss << "__modf_result_" << T;
  return ss.str();
}

/// TypeMatcher for 'type __modf_result_vec'
class ModfResultVec : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// 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* ModfResultVec::Match(MatchState& state, const sem::Type* ty) const {
  Number N = Number::invalid;
  const sem::Type* T = nullptr;
  if (!match_modf_result_vec(state, ty, N, T)) {
    return nullptr;
  }
  N = state.Num(N);
  if (!N.IsValid()) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_modf_result_vec(state, N, T);
}

std::string ModfResultVec::String(MatchState* state) const {
  const std::string N = state->NumName();
  const std::string T = state->TypeName();
  std::stringstream ss;
  ss << "__modf_result_vec" << N << "_" << T;
  return ss.str();
}

/// TypeMatcher for 'type __frexp_result'
class FrexpResult : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// 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* FrexpResult::Match(MatchState& state, const sem::Type* ty) const {
  const sem::Type* T = nullptr;
  if (!match_frexp_result(state, ty, T)) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_frexp_result(state, T);
}

std::string FrexpResult::String(MatchState* state) const {
  const std::string T = state->TypeName();
  std::stringstream ss;
  ss << "__frexp_result_" << T;
  return ss.str();
}

/// TypeMatcher for 'type __frexp_result_vec'
class FrexpResultVec : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// 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* FrexpResultVec::Match(MatchState& state, const sem::Type* ty) const {
  Number N = Number::invalid;
  const sem::Type* T = nullptr;
  if (!match_frexp_result_vec(state, ty, N, T)) {
    return nullptr;
  }
  N = state.Num(N);
  if (!N.IsValid()) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_frexp_result_vec(state, N, T);
}

std::string FrexpResultVec::String(MatchState* state) const {
  const std::string N = state->NumName();
  const std::string T = state->TypeName();
  std::stringstream ss;
  ss << "__frexp_result_vec" << N << "_" << T;
  return ss.str();
}

/// TypeMatcher for 'type __atomic_compare_exchange_result'
class AtomicCompareExchangeResult : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// 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* AtomicCompareExchangeResult::Match(MatchState& state, const sem::Type* ty) const {
  const sem::Type* T = nullptr;
  if (!match_atomic_compare_exchange_result(state, ty, T)) {
    return nullptr;
  }
  T = state.Type(T);
  if (T == nullptr) {
    return nullptr;
  }
  return build_atomic_compare_exchange_result(state, T);
}

std::string AtomicCompareExchangeResult::String(MatchState* state) const {
  const std::string T = state->TypeName();
  return "__atomic_compare_exchange_result<" + T + ">";
}

/// TypeMatcher for 'match scalar'
class Scalar : 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* Scalar::Match(MatchState& state, const sem::Type* ty) const {
  if (match_ia(state, ty)) {
    return build_ia(state);
  }
  if (match_fa(state, ty)) {
    return build_fa(state);
  }
  if (match_i32(state, ty)) {
    return build_i32(state);
  }
  if (match_u32(state, ty)) {
    return build_u32(state);
  }
  if (match_f32(state, ty)) {
    return build_f32(state);
  }
  if (match_f16(state, ty)) {
    return build_f16(state);
  }
  if (match_bool(state, ty)) {
    return build_bool(state);
  }
  return nullptr;
}

std::string Scalar::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 << Ia().String(nullptr) << ", " << Fa().String(nullptr) << ", " << F32().String(nullptr) << ", " << F16().String(nullptr) << ", " << I32().String(nullptr) << ", " << U32().String(nullptr) << " or " << Bool().String(nullptr);
  return ss.str();
}

/// TypeMatcher for 'match concrete_scalar'
class ConcreteScalar : 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* ConcreteScalar::Match(MatchState& state, const sem::Type* ty) const {
  if (match_i32(state, ty)) {
    return build_i32(state);
  }
  if (match_u32(state, ty)) {
    return build_u32(state);
  }
  if (match_f32(state, ty)) {
    return build_f32(state);
  }
  if (match_f16(state, ty)) {
    return build_f16(state);
  }
  if (match_bool(state, ty)) {
    return build_bool(state);
  }
  return nullptr;
}

std::string ConcreteScalar::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 << F32().String(nullptr) << ", " << F16().String(nullptr) << ", " << I32().String(nullptr) << ", " << U32().String(nullptr) << " or " << Bool().String(nullptr);
  return ss.str();
}

/// TypeMatcher for 'match scalar_no_f32'
class ScalarNoF32 : 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* ScalarNoF32::Match(MatchState& state, const sem::Type* ty) const {
  if (match_ia(state, ty)) {
    return build_ia(state);
  }
  if (match_fa(state, ty)) {
    return build_fa(state);
  }
  if (match_i32(state, ty)) {
    return build_i32(state);
  }
  if (match_u32(state, ty)) {
    return build_u32(state);
  }
  if (match_f16(state, ty)) {
    return build_f16(state);
  }
  if (match_bool(state, ty)) {
    return build_bool(state);
  }
  return nullptr;
}

std::string ScalarNoF32::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 << Ia().String(nullptr) << ", " << Fa().String(nullptr) << ", " << I32().String(nullptr) << ", " << F16().String(nullptr) << ", " << U32().String(nullptr) << " or " << Bool().String(nullptr);
  return ss.str();
}

/// TypeMatcher for 'match scalar_no_f16'
class ScalarNoF16 : 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* ScalarNoF16::Match(MatchState& state, const sem::Type* ty) const {
  if (match_ia(state, ty)) {
    return build_ia(state);
  }
  if (match_fa(state, ty)) {
    return build_fa(state);
  }
  if (match_i32(state, ty)) {
    return build_i32(state);
  }
  if (match_u32(state, ty)) {
    return build_u32(state);
  }
  if (match_f32(state, ty)) {
    return build_f32(state);
  }
  if (match_bool(state, ty)) {
    return build_bool(state);
  }
  return nullptr;
}

std::string ScalarNoF16::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 << Ia().String(nullptr) << ", " << Fa().String(nullptr) << ", " << F32().String(nullptr) << ", " << I32().String(nullptr) << ", " << U32().String(nullptr) << " or " << Bool().String(nullptr);
  return ss.str();
}

/// TypeMatcher for 'match scalar_no_i32'
class ScalarNoI32 : 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* ScalarNoI32::Match(MatchState& state, const sem::Type* ty) const {
  if (match_ia(state, ty)) {
    return build_ia(state);
  }
  if (match_fa(state, ty)) {
    return build_fa(state);
  }
  if (match_u32(state, ty)) {
    return build_u32(state);
  }
  if (match_f32(state, ty)) {
    return build_f32(state);
  }
  if (match_f16(state, ty)) {
    return build_f16(state);
  }
  if (match_bool(state, ty)) {
    return build_bool(state);
  }
  return nullptr;
}

std::string ScalarNoI32::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 << Ia().String(nullptr) << ", " << Fa().String(nullptr) << ", " << F32().String(nullptr) << ", " << F16().String(nullptr) << ", " << U32().String(nullptr) << " or " << Bool().String(nullptr);
  return ss.str();
}

/// TypeMatcher for 'match scalar_no_u32'
class ScalarNoU32 : 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* ScalarNoU32::Match(MatchState& state, const sem::Type* ty) const {
  if (match_ia(state, ty)) {
    return build_ia(state);
  }
  if (match_fa(state, ty)) {
    return build_fa(state);
  }
  if (match_i32(state, ty)) {
    return build_i32(state);
  }
  if (match_f32(state, ty)) {
    return build_f32(state);
  }
  if (match_f16(state, ty)) {
    return build_f16(state);
  }
  if (match_bool(state, ty)) {
    return build_bool(state);
  }
  return nullptr;
}

std::string ScalarNoU32::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 << Ia().String(nullptr) << ", " << Fa().String(nullptr) << ", " << F32().String(nullptr) << ", " << F16().String(nullptr) << ", " << I32().String(nullptr) << " or " << Bool().String(nullptr);
  return ss.str();
}

/// TypeMatcher for 'match scalar_no_bool'
class ScalarNoBool : 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* ScalarNoBool::Match(MatchState& state, const sem::Type* ty) const {
  if (match_ia(state, ty)) {
    return build_ia(state);
  }
  if (match_fa(state, ty)) {
    return build_fa(state);
  }
  if (match_i32(state, ty)) {
    return build_i32(state);
  }
  if (match_u32(state, ty)) {
    return build_u32(state);
  }
  if (match_f32(state, ty)) {
    return build_f32(state);
  }
  if (match_f16(state, ty)) {
    return build_f16(state);
  }
  return nullptr;
}

std::string ScalarNoBool::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 << Ia().String(nullptr) << ", " << Fa().String(nullptr) << ", " << F32().String(nullptr) << ", " << F16().String(nullptr) << ", " << I32().String(nullptr) << " or " << U32().String(nullptr);
  return ss.str();
}

/// TypeMatcher for 'match fia_fiu32_f16'
class FiaFiu32F16 : 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* FiaFiu32F16::Match(MatchState& state, const sem::Type* ty) const {
  if (match_ia(state, ty)) {
    return build_ia(state);
  }
  if (match_fa(state, ty)) {
    return build_fa(state);
  }
  if (match_i32(state, ty)) {
    return build_i32(state);
  }
  if (match_u32(state, ty)) {
    return build_u32(state);
  }
  if (match_f32(state, ty)) {
    return build_f32(state);
  }
  if (match_f16(state, ty)) {
    return build_f16(state);
  }
  return nullptr;
}

std::string FiaFiu32F16::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) << ", " << Ia().String(nullptr) << ", " << F32().String(nullptr) << ", " << I32().String(nullptr) << ", " << U32().String(nullptr) << " or " << F16().String(nullptr);
  return ss.str();
}

/// TypeMatcher for 'match fia_fi32_f16'
class FiaFi32F16 : 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* FiaFi32F16::Match(MatchState& state, const sem::Type* ty) const {
  if (match_ia(state, ty)) {
    return build_ia(state);
  }
  if (match_fa(state, ty)) {
    return build_fa(state);
  }
  if (match_i32(state, ty)) {
    return build_i32(state);
  }
  if (match_f32(state, ty)) {
    return build_f32(state);
  }
  if (match_f16(state, ty)) {
    return build_f16(state);
  }
  return nullptr;
}

std::string FiaFi32F16::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) << ", " << Ia().String(nullptr) << ", " << F32().String(nullptr) << ", " << I32().String(nullptr) << " or " << F16().String(nullptr);
  return ss.str();
}

/// TypeMatcher for 'match fia_fiu32'
class FiaFiu32 : 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* FiaFiu32::Match(MatchState& state, const sem::Type* ty) const {
  if (match_ia(state, ty)) {
    return build_ia(state);
  }
  if (match_fa(state, ty)) {
    return build_fa(state);
  }
  if (match_i32(state, ty)) {
    return build_i32(state);
  }
  if (match_u32(state, ty)) {
    return build_u32(state);
  }
  if (match_f32(state, ty)) {
    return build_f32(state);
  }
  return nullptr;
}

std::string FiaFiu32::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) << ", " << Ia().String(nullptr) << ", " << F32().String(nullptr) << ", " << I32().String(nullptr) << " or " << U32().String(nullptr);
  return ss.str();
}

/// TypeMatcher for 'match fa_f32'
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(state, ty)) {
    return build_fa(state);
  }
  if (match_f32(state, 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'
class FaF32F16 : 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* FaF32F16::Match(MatchState& state, const sem::Type* ty) const {
  if (match_fa(state, ty)) {
    return build_fa(state);
  }
  if (match_f32(state, ty)) {
    return build_f32(state);
  }
  if (match_f16(state, ty)) {
    return build_f16(state);
  }
  return nullptr;
}

std::string FaF32F16::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) << ", " << F32().String(nullptr) << " or " << F16().String(nullptr);
  return ss.str();
}

/// TypeMatcher for 'match ia_iu32'
class IaIu32 : 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* IaIu32::Match(MatchState& state, const sem::Type* ty) const {
  if (match_ia(state, ty)) {
    return build_ia(state);
  }
  if (match_i32(state, ty)) {
    return build_i32(state);
  }
  if (match_u32(state, ty)) {
    return build_u32(state);
  }
  return nullptr;
}

std::string IaIu32::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 << Ia().String(nullptr) << ", " << I32().String(nullptr) << " or " << U32().String(nullptr);
  return ss.str();
}

/// TypeMatcher for 'match fiu32_f16'
class Fiu32F16 : 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* Fiu32F16::Match(MatchState& state, const sem::Type* ty) const {
  if (match_i32(state, ty)) {
    return build_i32(state);
  }
  if (match_u32(state, ty)) {
    return build_u32(state);
  }
  if (match_f32(state, ty)) {
    return build_f32(state);
  }
  if (match_f16(state, ty)) {
    return build_f16(state);
  }
  return nullptr;
}

std::string Fiu32F16::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 << F32().String(nullptr) << ", " << I32().String(nullptr) << ", " << U32().String(nullptr) << " or " << F16().String(nullptr);
  return ss.str();
}

/// TypeMatcher for 'match fiu32'
class Fiu32 : 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* Fiu32::Match(MatchState& state, const sem::Type* ty) const {
  if (match_i32(state, ty)) {
    return build_i32(state);
  }
  if (match_u32(state, ty)) {
    return build_u32(state);
  }
  if (match_f32(state, ty)) {
    return build_f32(state);
  }
  return nullptr;
}

std::string Fiu32::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 << F32().String(nullptr) << ", " << I32().String(nullptr) << " or " << U32().String(nullptr);
  return ss.str();
}

/// TypeMatcher for 'match fi32_f16'
class Fi32F16 : 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* Fi32F16::Match(MatchState& state, const sem::Type* ty) const {
  if (match_i32(state, ty)) {
    return build_i32(state);
  }
  if (match_f32(state, ty)) {
    return build_f32(state);
  }
  if (match_f16(state, ty)) {
    return build_f16(state);
  }
  return nullptr;
}

std::string Fi32F16::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 << F32().String(nullptr) << ", " << I32().String(nullptr) << " or " << F16().String(nullptr);
  return ss.str();
}

/// TypeMatcher for 'match fi32'
class Fi32 : 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* Fi32::Match(MatchState& state, const sem::Type* ty) const {
  if (match_i32(state, ty)) {
    return build_i32(state);
  }
  if (match_f32(state, ty)) {
    return build_f32(state);
  }
  return nullptr;
}

std::string Fi32::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 << F32().String(nullptr) << " or " << I32().String(nullptr);
  return ss.str();
}

/// TypeMatcher for 'match f32_f16'
class F32F16 : 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* F32F16::Match(MatchState& state, const sem::Type* ty) const {
  if (match_f32(state, ty)) {
    return build_f32(state);
  }
  if (match_f16(state, ty)) {
    return build_f16(state);
  }
  return nullptr;
}

std::string F32F16::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 << F32().String(nullptr) << " or " << F16().String(nullptr);
  return ss.str();
}

/// TypeMatcher for 'match iu32'
class Iu32 : 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* Iu32::Match(MatchState& state, const sem::Type* ty) const {
  if (match_i32(state, ty)) {
    return build_i32(state);
  }
  if (match_u32(state, ty)) {
    return build_u32(state);
  }
  return nullptr;
}

std::string Iu32::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 << I32().String(nullptr) << " or " << U32().String(nullptr);
  return ss.str();
}

/// EnumMatcher for 'match f32_texel_format'
class F32TexelFormat : public NumberMatcher {
 public:
  /// Checks whether the given number matches the enum matcher rules.
  /// Match may define template numbers in state.
  /// @param state the MatchState
  /// @param number the enum value as a Number
  /// @return true if the enum value matches the set
  Number Match(MatchState& state, Number number) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState* state) const override;
};

Number F32TexelFormat::Match(MatchState&, Number number) const {
  switch (static_cast<TexelFormat>(number.Value())) {
    case TexelFormat::kRgba8Unorm:
    case TexelFormat::kRgba8Snorm:
    case TexelFormat::kRgba16Float:
    case TexelFormat::kR32Float:
    case TexelFormat::kRg32Float:
    case TexelFormat::kRgba32Float:
      return number;
    default:
      return Number::invalid;
  }
}

std::string F32TexelFormat::String(MatchState*) const {
  return "rgba8unorm, rgba8snorm, rgba16float, r32float, rg32float or rgba32float";
}

/// EnumMatcher for 'match i32_texel_format'
class I32TexelFormat : public NumberMatcher {
 public:
  /// Checks whether the given number matches the enum matcher rules.
  /// Match may define template numbers in state.
  /// @param state the MatchState
  /// @param number the enum value as a Number
  /// @return true if the enum value matches the set
  Number Match(MatchState& state, Number number) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState* state) const override;
};

Number I32TexelFormat::Match(MatchState&, Number number) const {
  switch (static_cast<TexelFormat>(number.Value())) {
    case TexelFormat::kRgba8Sint:
    case TexelFormat::kRgba16Sint:
    case TexelFormat::kR32Sint:
    case TexelFormat::kRg32Sint:
    case TexelFormat::kRgba32Sint:
      return number;
    default:
      return Number::invalid;
  }
}

std::string I32TexelFormat::String(MatchState*) const {
  return "rgba8sint, rgba16sint, r32sint, rg32sint or rgba32sint";
}

/// EnumMatcher for 'match u32_texel_format'
class U32TexelFormat : public NumberMatcher {
 public:
  /// Checks whether the given number matches the enum matcher rules.
  /// Match may define template numbers in state.
  /// @param state the MatchState
  /// @param number the enum value as a Number
  /// @return true if the enum value matches the set
  Number Match(MatchState& state, Number number) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState* state) const override;
};

Number U32TexelFormat::Match(MatchState&, Number number) const {
  switch (static_cast<TexelFormat>(number.Value())) {
    case TexelFormat::kRgba8Uint:
    case TexelFormat::kRgba16Uint:
    case TexelFormat::kR32Uint:
    case TexelFormat::kRg32Uint:
    case TexelFormat::kRgba32Uint:
      return number;
    default:
      return Number::invalid;
  }
}

std::string U32TexelFormat::String(MatchState*) const {
  return "rgba8uint, rgba16uint, r32uint, rg32uint or rgba32uint";
}

/// EnumMatcher for 'match write'
class Write : public NumberMatcher {
 public:
  /// Checks whether the given number matches the enum matcher rules.
  /// Match may define template numbers in state.
  /// @param state the MatchState
  /// @param number the enum value as a Number
  /// @return true if the enum value matches the set
  Number Match(MatchState& state, Number number) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState* state) const override;
};

Number Write::Match(MatchState&, Number number) const {
  if (number.IsAny() || number.Value() == static_cast<uint32_t>(Access::kWrite)) {
    return Number(static_cast<uint32_t>(Access::kWrite));
  }
  return Number::invalid;
}

std::string Write::String(MatchState*) const {
  return "write";
}

/// EnumMatcher for 'match read_write'
class ReadWrite : public NumberMatcher {
 public:
  /// Checks whether the given number matches the enum matcher rules.
  /// Match may define template numbers in state.
  /// @param state the MatchState
  /// @param number the enum value as a Number
  /// @return true if the enum value matches the set
  Number Match(MatchState& state, Number number) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState* state) const override;
};

Number ReadWrite::Match(MatchState&, Number number) const {
  if (number.IsAny() || number.Value() == static_cast<uint32_t>(Access::kReadWrite)) {
    return Number(static_cast<uint32_t>(Access::kReadWrite));
  }
  return Number::invalid;
}

std::string ReadWrite::String(MatchState*) const {
  return "read_write";
}

/// EnumMatcher for 'match function_private_workgroup'
class FunctionPrivateWorkgroup : public NumberMatcher {
 public:
  /// Checks whether the given number matches the enum matcher rules.
  /// Match may define template numbers in state.
  /// @param state the MatchState
  /// @param number the enum value as a Number
  /// @return true if the enum value matches the set
  Number Match(MatchState& state, Number number) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState* state) const override;
};

Number FunctionPrivateWorkgroup::Match(MatchState&, Number number) const {
  switch (static_cast<AddressSpace>(number.Value())) {
    case AddressSpace::kFunction:
    case AddressSpace::kPrivate:
    case AddressSpace::kWorkgroup:
      return number;
    default:
      return Number::invalid;
  }
}

std::string FunctionPrivateWorkgroup::String(MatchState*) const {
  return "function, private or workgroup";
}

/// EnumMatcher for 'match workgroup_or_storage'
class WorkgroupOrStorage : public NumberMatcher {
 public:
  /// Checks whether the given number matches the enum matcher rules.
  /// Match may define template numbers in state.
  /// @param state the MatchState
  /// @param number the enum value as a Number
  /// @return true if the enum value matches the set
  Number Match(MatchState& state, Number number) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState* state) const override;
};

Number WorkgroupOrStorage::Match(MatchState&, Number number) const {
  switch (static_cast<AddressSpace>(number.Value())) {
    case AddressSpace::kWorkgroup:
    case AddressSpace::kStorage:
      return number;
    default:
      return Number::invalid;
  }
}

std::string WorkgroupOrStorage::String(MatchState*) const {
  return "workgroup or storage";
}

/// EnumMatcher for 'match storage'
class Storage : public NumberMatcher {
 public:
  /// Checks whether the given number matches the enum matcher rules.
  /// Match may define template numbers in state.
  /// @param state the MatchState
  /// @param number the enum value as a Number
  /// @return true if the enum value matches the set
  Number Match(MatchState& state, Number number) const override;
  /// @param state the MatchState
  /// @return a string representation of the matcher.
  std::string String(MatchState* state) const override;
};

Number Storage::Match(MatchState&, Number number) const {
  if (number.IsAny() || number.Value() == static_cast<uint32_t>(AddressSpace::kStorage)) {
    return Number(static_cast<uint32_t>(AddressSpace::kStorage));
  }
  return Number::invalid;
}

std::string Storage::String(MatchState*) const {
  return "storage";
}

/// Matchers holds type and number matchers
class Matchers {
 private:
  TemplateTypeMatcher template_type_0_{0};
  TemplateTypeMatcher template_type_1_{1};
  TemplateTypeMatcher template_type_2_{2};
  TemplateTypeMatcher template_type_3_{3};
  TemplateNumberMatcher template_number_0_{0};
  TemplateNumberMatcher template_number_1_{1};
  TemplateNumberMatcher template_number_2_{2};
  Bool Bool_;
  Ia Ia_;
  Fa Fa_;
  I32 I32_;
  U32 U32_;
  F32 F32_;
  F16 F16_;
  Vec2 Vec2_;
  Vec3 Vec3_;
  Vec4 Vec4_;
  Mat2X2 Mat2X2_;
  Mat2X3 Mat2X3_;
  Mat2X4 Mat2X4_;
  Mat3X2 Mat3X2_;
  Mat3X3 Mat3X3_;
  Mat3X4 Mat3X4_;
  Mat4X2 Mat4X2_;
  Mat4X3 Mat4X3_;
  Mat4X4 Mat4X4_;
  Vec Vec_;
  Mat Mat_;
  Ptr Ptr_;
  Atomic Atomic_;
  Array Array_;
  Sampler Sampler_;
  SamplerComparison SamplerComparison_;
  Texture1D Texture1D_;
  Texture2D Texture2D_;
  Texture2DArray Texture2DArray_;
  Texture3D Texture3D_;
  TextureCube TextureCube_;
  TextureCubeArray TextureCubeArray_;
  TextureMultisampled2D TextureMultisampled2D_;
  TextureDepth2D TextureDepth2D_;
  TextureDepth2DArray TextureDepth2DArray_;
  TextureDepthCube TextureDepthCube_;
  TextureDepthCubeArray TextureDepthCubeArray_;
  TextureDepthMultisampled2D TextureDepthMultisampled2D_;
  TextureStorage1D TextureStorage1D_;
  TextureStorage2D TextureStorage2D_;
  TextureStorage2DArray TextureStorage2DArray_;
  TextureStorage3D TextureStorage3D_;
  TextureExternal TextureExternal_;
  ModfResult ModfResult_;
  ModfResultVec ModfResultVec_;
  FrexpResult FrexpResult_;
  FrexpResultVec FrexpResultVec_;
  AtomicCompareExchangeResult AtomicCompareExchangeResult_;
  Scalar Scalar_;
  ConcreteScalar ConcreteScalar_;
  ScalarNoF32 ScalarNoF32_;
  ScalarNoF16 ScalarNoF16_;
  ScalarNoI32 ScalarNoI32_;
  ScalarNoU32 ScalarNoU32_;
  ScalarNoBool ScalarNoBool_;
  FiaFiu32F16 FiaFiu32F16_;
  FiaFi32F16 FiaFi32F16_;
  FiaFiu32 FiaFiu32_;
  FaF32 FaF32_;
  FaF32F16 FaF32F16_;
  IaIu32 IaIu32_;
  Fiu32F16 Fiu32F16_;
  Fiu32 Fiu32_;
  Fi32F16 Fi32F16_;
  Fi32 Fi32_;
  F32F16 F32F16_;
  Iu32 Iu32_;
  F32TexelFormat F32TexelFormat_;
  I32TexelFormat I32TexelFormat_;
  U32TexelFormat U32TexelFormat_;
  Write Write_;
  ReadWrite ReadWrite_;
  FunctionPrivateWorkgroup FunctionPrivateWorkgroup_;
  WorkgroupOrStorage WorkgroupOrStorage_;
  Storage Storage_;

 public:
  /// Constructor
  Matchers();
  /// Destructor
  ~Matchers();

  /// The template types, types, and type matchers
  TypeMatcher const* const type[71] = {
    /* [0] */ &template_type_0_,
    /* [1] */ &template_type_1_,
    /* [2] */ &template_type_2_,
    /* [3] */ &template_type_3_,
    /* [4] */ &Bool_,
    /* [5] */ &Ia_,
    /* [6] */ &Fa_,
    /* [7] */ &I32_,
    /* [8] */ &U32_,
    /* [9] */ &F32_,
    /* [10] */ &F16_,
    /* [11] */ &Vec2_,
    /* [12] */ &Vec3_,
    /* [13] */ &Vec4_,
    /* [14] */ &Mat2X2_,
    /* [15] */ &Mat2X3_,
    /* [16] */ &Mat2X4_,
    /* [17] */ &Mat3X2_,
    /* [18] */ &Mat3X3_,
    /* [19] */ &Mat3X4_,
    /* [20] */ &Mat4X2_,
    /* [21] */ &Mat4X3_,
    /* [22] */ &Mat4X4_,
    /* [23] */ &Vec_,
    /* [24] */ &Mat_,
    /* [25] */ &Ptr_,
    /* [26] */ &Atomic_,
    /* [27] */ &Array_,
    /* [28] */ &Sampler_,
    /* [29] */ &SamplerComparison_,
    /* [30] */ &Texture1D_,
    /* [31] */ &Texture2D_,
    /* [32] */ &Texture2DArray_,
    /* [33] */ &Texture3D_,
    /* [34] */ &TextureCube_,
    /* [35] */ &TextureCubeArray_,
    /* [36] */ &TextureMultisampled2D_,
    /* [37] */ &TextureDepth2D_,
    /* [38] */ &TextureDepth2DArray_,
    /* [39] */ &TextureDepthCube_,
    /* [40] */ &TextureDepthCubeArray_,
    /* [41] */ &TextureDepthMultisampled2D_,
    /* [42] */ &TextureStorage1D_,
    /* [43] */ &TextureStorage2D_,
    /* [44] */ &TextureStorage2DArray_,
    /* [45] */ &TextureStorage3D_,
    /* [46] */ &TextureExternal_,
    /* [47] */ &ModfResult_,
    /* [48] */ &ModfResultVec_,
    /* [49] */ &FrexpResult_,
    /* [50] */ &FrexpResultVec_,
    /* [51] */ &AtomicCompareExchangeResult_,
    /* [52] */ &Scalar_,
    /* [53] */ &ConcreteScalar_,
    /* [54] */ &ScalarNoF32_,
    /* [55] */ &ScalarNoF16_,
    /* [56] */ &ScalarNoI32_,
    /* [57] */ &ScalarNoU32_,
    /* [58] */ &ScalarNoBool_,
    /* [59] */ &FiaFiu32F16_,
    /* [60] */ &FiaFi32F16_,
    /* [61] */ &FiaFiu32_,
    /* [62] */ &FaF32_,
    /* [63] */ &FaF32F16_,
    /* [64] */ &IaIu32_,
    /* [65] */ &Fiu32F16_,
    /* [66] */ &Fiu32_,
    /* [67] */ &Fi32F16_,
    /* [68] */ &Fi32_,
    /* [69] */ &F32F16_,
    /* [70] */ &Iu32_,
  };

  /// The template numbers, and number matchers
  NumberMatcher const* const number[11] = {
    /* [0] */ &template_number_0_,
    /* [1] */ &template_number_1_,
    /* [2] */ &template_number_2_,
    /* [3] */ &F32TexelFormat_,
    /* [4] */ &I32TexelFormat_,
    /* [5] */ &U32TexelFormat_,
    /* [6] */ &Write_,
    /* [7] */ &ReadWrite_,
    /* [8] */ &FunctionPrivateWorkgroup_,
    /* [9] */ &WorkgroupOrStorage_,
    /* [10] */ &Storage_,
  };
};

Matchers::Matchers() = default;
Matchers::~Matchers() = default;

constexpr MatcherIndex kMatcherIndices[] = {
  /* [0] */ 25,
  /* [1] */ 0,
  /* [2] */ 26,
  /* [3] */ 0,
  /* [4] */ 7,
  /* [5] */ 25,
  /* [6] */ 10,
  /* [7] */ 27,
  /* [8] */ 0,
  /* [9] */ 0,
  /* [10] */ 24,
  /* [11] */ 1,
  /* [12] */ 2,
  /* [13] */ 0,
  /* [14] */ 24,
  /* [15] */ 1,
  /* [16] */ 0,
  /* [17] */ 0,
  /* [18] */ 24,
  /* [19] */ 0,
  /* [20] */ 1,
  /* [21] */ 0,
  /* [22] */ 24,
  /* [23] */ 0,
  /* [24] */ 0,
  /* [25] */ 0,
  /* [26] */ 24,
  /* [27] */ 0,
  /* [28] */ 2,
  /* [29] */ 0,
  /* [30] */ 23,
  /* [31] */ 0,
  /* [32] */ 0,
  /* [33] */ 23,
  /* [34] */ 0,
  /* [35] */ 4,
  /* [36] */ 23,
  /* [37] */ 0,
  /* [38] */ 9,
  /* [39] */ 23,
  /* [40] */ 1,
  /* [41] */ 0,
  /* [42] */ 23,
  /* [43] */ 0,
  /* [44] */ 8,
  /* [45] */ 50,
  /* [46] */ 0,
  /* [47] */ 0,
  /* [48] */ 23,
  /* [49] */ 0,
  /* [50] */ 7,
  /* [51] */ 45,
  /* [52] */ 5,
  /* [53] */ 6,
  /* [54] */ 44,
  /* [55] */ 5,
  /* [56] */ 6,
  /* [57] */ 43,
  /* [58] */ 5,
  /* [59] */ 6,
  /* [60] */ 42,
  /* [61] */ 5,
  /* [62] */ 6,
  /* [63] */ 45,
  /* [64] */ 4,
  /* [65] */ 6,
  /* [66] */ 44,
  /* [67] */ 4,
  /* [68] */ 6,
  /* [69] */ 43,
  /* [70] */ 4,
  /* [71] */ 6,
  /* [72] */ 42,
  /* [73] */ 4,
  /* [74] */ 6,
  /* [75] */ 45,
  /* [76] */ 3,
  /* [77] */ 6,
  /* [78] */ 44,
  /* [79] */ 3,
  /* [80] */ 6,
  /* [81] */ 43,
  /* [82] */ 3,
  /* [83] */ 6,
  /* [84] */ 42,
  /* [85] */ 3,
  /* [86] */ 6,
  /* [87] */ 44,
  /* [88] */ 0,
  /* [89] */ 1,
  /* [90] */ 45,
  /* [91] */ 0,
  /* [92] */ 1,
  /* [93] */ 43,
  /* [94] */ 0,
  /* [95] */ 1,
  /* [96] */ 42,
  /* [97] */ 0,
  /* [98] */ 1,
  /* [99] */ 48,
  /* [100] */ 0,
  /* [101] */ 0,
  /* [102] */ 11,
  /* [103] */ 9,
  /* [104] */ 12,
  /* [105] */ 9,
  /* [106] */ 22,
  /* [107] */ 9,
  /* [108] */ 22,
  /* [109] */ 10,
  /* [110] */ 22,
  /* [111] */ 0,
  /* [112] */ 13,
  /* [113] */ 0,
  /* [114] */ 21,
  /* [115] */ 9,
  /* [116] */ 21,
  /* [117] */ 10,
  /* [118] */ 21,
  /* [119] */ 0,
  /* [120] */ 12,
  /* [121] */ 0,
  /* [122] */ 20,
  /* [123] */ 9,
  /* [124] */ 20,
  /* [125] */ 10,
  /* [126] */ 20,
  /* [127] */ 0,
  /* [128] */ 11,
  /* [129] */ 0,
  /* [130] */ 13,
  /* [131] */ 9,
  /* [132] */ 19,
  /* [133] */ 9,
  /* [134] */ 19,
  /* [135] */ 10,
  /* [136] */ 19,
  /* [137] */ 0,
  /* [138] */ 30,
  /* [139] */ 0,
  /* [140] */ 31,
  /* [141] */ 0,
  /* [142] */ 11,
  /* [143] */ 8,
  /* [144] */ 32,
  /* [145] */ 0,
  /* [146] */ 18,
  /* [147] */ 9,
  /* [148] */ 33,
  /* [149] */ 0,
  /* [150] */ 12,
  /* [151] */ 8,
  /* [152] */ 18,
  /* [153] */ 10,
  /* [154] */ 34,
  /* [155] */ 0,
  /* [156] */ 35,
  /* [157] */ 0,
  /* [158] */ 36,
  /* [159] */ 0,
  /* [160] */ 18,
  /* [161] */ 0,
  /* [162] */ 17,
  /* [163] */ 9,
  /* [164] */ 17,
  /* [165] */ 10,
  /* [166] */ 17,
  /* [167] */ 0,
  /* [168] */ 47,
  /* [169] */ 0,
  /* [170] */ 16,
  /* [171] */ 9,
  /* [172] */ 16,
  /* [173] */ 10,
  /* [174] */ 11,
  /* [175] */ 7,
  /* [176] */ 16,
  /* [177] */ 0,
  /* [178] */ 15,
  /* [179] */ 9,
  /* [180] */ 15,
  /* [181] */ 10,
  /* [182] */ 15,
  /* [183] */ 0,
  /* [184] */ 14,
  /* [185] */ 9,
  /* [186] */ 14,
  /* [187] */ 10,
  /* [188] */ 14,
  /* [189] */ 0,
  /* [190] */ 13,
  /* [191] */ 4,
  /* [192] */ 13,
  /* [193] */ 1,
  /* [194] */ 13,
  /* [195] */ 8,
  /* [196] */ 13,
  /* [197] */ 7,
  /* [198] */ 13,
  /* [199] */ 10,
  /* [200] */ 12,
  /* [201] */ 4,
  /* [202] */ 12,
  /* [203] */ 1,
  /* [204] */ 12,
  /* [205] */ 7,
  /* [206] */ 12,
  /* [207] */ 10,
  /* [208] */ 30,
  /* [209] */ 9,
  /* [210] */ 31,
  /* [211] */ 9,
  /* [212] */ 32,
  /* [213] */ 9,
  /* [214] */ 11,
  /* [215] */ 4,
  /* [216] */ 11,
  /* [217] */ 1,
  /* [218] */ 33,
  /* [219] */ 9,
  /* [220] */ 34,
  /* [221] */ 9,
  /* [222] */ 35,
  /* [223] */ 9,
  /* [224] */ 11,
  /* [225] */ 10,
  /* [226] */ 49,
  /* [227] */ 0,
  /* [228] */ 51,
  /* [229] */ 0,
  /* [230] */ 28,
  /* [231] */ 29,
  /* [232] */ 40,
  /* [233] */ 39,
  /* [234] */ 38,
  /* [235] */ 37,
  /* [236] */ 46,
  /* [237] */ 41,
};

// Assert that the MatcherIndex is big enough to index all the matchers, plus
// kNoMatcher.
static_assert(static_cast<int>(sizeof(kMatcherIndices) / sizeof(kMatcherIndices[0])) <
              static_cast<int>(std::numeric_limits<MatcherIndex>::max() - 1),
              "MatcherIndex is not large enough to index kMatcherIndices");

constexpr ParameterInfo kParameters[] = {
  {
    /* [0] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [1] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [2] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [3] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [4] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [5] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [6] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [7] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [8] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [9] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [10] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [11] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [12] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [13] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [14] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [15] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [16] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [17] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [18] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [19] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [20] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [21] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [22] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [23] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [24] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [25] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [26] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [27] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [28] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [29] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [30] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [31] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [32] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [33] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [34] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [35] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [36] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [37] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [38] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [39] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [40] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [41] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [42] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [43] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [44] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [45] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [46] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [47] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [48] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [49] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [50] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [51] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [52] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [53] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [54] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [55] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [56] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [57] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [58] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [59] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [60] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [61] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [62] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [63] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [64] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [65] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[212],
  },
  {
    /* [66] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [67] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [68] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [69] */
    /* usage */ ParameterUsage::kDdx,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [70] */
    /* usage */ ParameterUsage::kDdy,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [71] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[174],
  },
  {
    /* [72] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [73] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [74] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [75] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [76] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [77] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [78] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[212],
  },
  {
    /* [79] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [80] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [81] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [82] */
    /* usage */ ParameterUsage::kBias,
    /* matcher indices */ &kMatcherIndices[38],
  },
  {
    /* [83] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[174],
  },
  {
    /* [84] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[212],
  },
  {
    /* [85] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [86] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [87] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [88] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[38],
  },
  {
    /* [89] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[174],
  },
  {
    /* [90] */
    /* usage */ ParameterUsage::kComponent,
    /* matcher indices */ &kMatcherIndices[11],
  },
  {
    /* [91] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[144],
  },
  {
    /* [92] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [93] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [94] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [95] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[174],
  },
  {
    /* [96] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[222],
  },
  {
    /* [97] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [98] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[104],
  },
  {
    /* [99] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [100] */
    /* usage */ ParameterUsage::kDdx,
    /* matcher indices */ &kMatcherIndices[104],
  },
  {
    /* [101] */
    /* usage */ ParameterUsage::kDdy,
    /* matcher indices */ &kMatcherIndices[104],
  },
  {
    /* [102] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[234],
  },
  {
    /* [103] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [104] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [105] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [106] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[11],
  },
  {
    /* [107] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[174],
  },
  {
    /* [108] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[218],
  },
  {
    /* [109] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [110] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[104],
  },
  {
    /* [111] */
    /* usage */ ParameterUsage::kDdx,
    /* matcher indices */ &kMatcherIndices[104],
  },
  {
    /* [112] */
    /* usage */ ParameterUsage::kDdy,
    /* matcher indices */ &kMatcherIndices[104],
  },
  {
    /* [113] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[204],
  },
  {
    /* [114] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [115] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [116] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [117] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [118] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [119] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [120] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[212],
  },
  {
    /* [121] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [122] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [123] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [124] */
    /* usage */ ParameterUsage::kDdx,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [125] */
    /* usage */ ParameterUsage::kDdy,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [126] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[234],
  },
  {
    /* [127] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[231],
  },
  {
    /* [128] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [129] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [130] */
    /* usage */ ParameterUsage::kDepthRef,
    /* matcher indices */ &kMatcherIndices[38],
  },
  {
    /* [131] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[174],
  },
  {
    /* [132] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[210],
  },
  {
    /* [133] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [134] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [135] */
    /* usage */ ParameterUsage::kDdx,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [136] */
    /* usage */ ParameterUsage::kDdy,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [137] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[174],
  },
  {
    /* [138] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[234],
  },
  {
    /* [139] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[231],
  },
  {
    /* [140] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [141] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [142] */
    /* usage */ ParameterUsage::kDepthRef,
    /* matcher indices */ &kMatcherIndices[38],
  },
  {
    /* [143] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[174],
  },
  {
    /* [144] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[234],
  },
  {
    /* [145] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[231],
  },
  {
    /* [146] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [147] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [148] */
    /* usage */ ParameterUsage::kDepthRef,
    /* matcher indices */ &kMatcherIndices[38],
  },
  {
    /* [149] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[174],
  },
  {
    /* [150] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[212],
  },
  {
    /* [151] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [152] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [153] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [154] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[174],
  },
  {
    /* [155] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[234],
  },
  {
    /* [156] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[231],
  },
  {
    /* [157] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [158] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [159] */
    /* usage */ ParameterUsage::kDepthRef,
    /* matcher indices */ &kMatcherIndices[38],
  },
  {
    /* [160] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[210],
  },
  {
    /* [161] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [162] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [163] */
    /* usage */ ParameterUsage::kBias,
    /* matcher indices */ &kMatcherIndices[38],
  },
  {
    /* [164] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[174],
  },
  {
    /* [165] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[218],
  },
  {
    /* [166] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [167] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[104],
  },
  {
    /* [168] */
    /* usage */ ParameterUsage::kBias,
    /* matcher indices */ &kMatcherIndices[38],
  },
  {
    /* [169] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[204],
  },
  {
    /* [170] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[222],
  },
  {
    /* [171] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [172] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[104],
  },
  {
    /* [173] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [174] */
    /* usage */ ParameterUsage::kBias,
    /* matcher indices */ &kMatcherIndices[38],
  },
  {
    /* [175] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[235],
  },
  {
    /* [176] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[231],
  },
  {
    /* [177] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [178] */
    /* usage */ ParameterUsage::kDepthRef,
    /* matcher indices */ &kMatcherIndices[38],
  },
  {
    /* [179] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[174],
  },
  {
    /* [180] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[234],
  },
  {
    /* [181] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[231],
  },
  {
    /* [182] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [183] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [184] */
    /* usage */ ParameterUsage::kDepthRef,
    /* matcher indices */ &kMatcherIndices[38],
  },
  {
    /* [185] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[234],
  },
  {
    /* [186] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [187] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [188] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [189] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[174],
  },
  {
    /* [190] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[232],
  },
  {
    /* [191] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[231],
  },
  {
    /* [192] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[104],
  },
  {
    /* [193] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [194] */
    /* usage */ ParameterUsage::kDepthRef,
    /* matcher indices */ &kMatcherIndices[38],
  },
  {
    /* [195] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[235],
  },
  {
    /* [196] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[231],
  },
  {
    /* [197] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [198] */
    /* usage */ ParameterUsage::kDepthRef,
    /* matcher indices */ &kMatcherIndices[38],
  },
  {
    /* [199] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[174],
  },
  {
    /* [200] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[234],
  },
  {
    /* [201] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[231],
  },
  {
    /* [202] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [203] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [204] */
    /* usage */ ParameterUsage::kDepthRef,
    /* matcher indices */ &kMatcherIndices[38],
  },
  {
    /* [205] */
    /* usage */ ParameterUsage::kComponent,
    /* matcher indices */ &kMatcherIndices[11],
  },
  {
    /* [206] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[156],
  },
  {
    /* [207] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [208] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[104],
  },
  {
    /* [209] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [210] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[232],
  },
  {
    /* [211] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[231],
  },
  {
    /* [212] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[104],
  },
  {
    /* [213] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [214] */
    /* usage */ ParameterUsage::kDepthRef,
    /* matcher indices */ &kMatcherIndices[38],
  },
  {
    /* [215] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[210],
  },
  {
    /* [216] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [217] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [218] */
    /* usage */ ParameterUsage::kDdx,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [219] */
    /* usage */ ParameterUsage::kDdy,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [220] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[232],
  },
  {
    /* [221] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[231],
  },
  {
    /* [222] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[104],
  },
  {
    /* [223] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [224] */
    /* usage */ ParameterUsage::kDepthRef,
    /* matcher indices */ &kMatcherIndices[38],
  },
  {
    /* [225] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[212],
  },
  {
    /* [226] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [227] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [228] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [229] */
    /* usage */ ParameterUsage::kBias,
    /* matcher indices */ &kMatcherIndices[38],
  },
  {
    /* [230] */
    /* usage */ ParameterUsage::kComponent,
    /* matcher indices */ &kMatcherIndices[11],
  },
  {
    /* [231] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[140],
  },
  {
    /* [232] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [233] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [234] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[174],
  },
  {
    /* [235] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[218],
  },
  {
    /* [236] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [237] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[104],
  },
  {
    /* [238] */
    /* usage */ ParameterUsage::kDdx,
    /* matcher indices */ &kMatcherIndices[104],
  },
  {
    /* [239] */
    /* usage */ ParameterUsage::kDdy,
    /* matcher indices */ &kMatcherIndices[104],
  },
  {
    /* [240] */
    /* usage */ ParameterUsage::kComponent,
    /* matcher indices */ &kMatcherIndices[11],
  },
  {
    /* [241] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[144],
  },
  {
    /* [242] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [243] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [244] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [245] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[220],
  },
  {
    /* [246] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [247] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[104],
  },
  {
    /* [248] */
    /* usage */ ParameterUsage::kDdx,
    /* matcher indices */ &kMatcherIndices[104],
  },
  {
    /* [249] */
    /* usage */ ParameterUsage::kDdy,
    /* matcher indices */ &kMatcherIndices[104],
  },
  {
    /* [250] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[235],
  },
  {
    /* [251] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[231],
  },
  {
    /* [252] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [253] */
    /* usage */ ParameterUsage::kDepthRef,
    /* matcher indices */ &kMatcherIndices[38],
  },
  {
    /* [254] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[174],
  },
  {
    /* [255] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[210],
  },
  {
    /* [256] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [257] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [258] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[38],
  },
  {
    /* [259] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[174],
  },
  {
    /* [260] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[212],
  },
  {
    /* [261] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [262] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [263] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [264] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[38],
  },
  {
    /* [265] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[234],
  },
  {
    /* [266] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [267] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [268] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [269] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[174],
  },
  {
    /* [270] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[218],
  },
  {
    /* [271] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [272] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[104],
  },
  {
    /* [273] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[38],
  },
  {
    /* [274] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[204],
  },
  {
    /* [275] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[222],
  },
  {
    /* [276] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [277] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[104],
  },
  {
    /* [278] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [279] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[38],
  },
  {
    /* [280] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[235],
  },
  {
    /* [281] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [282] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [283] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [284] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[174],
  },
  {
    /* [285] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[232],
  },
  {
    /* [286] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [287] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[104],
  },
  {
    /* [288] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [289] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[11],
  },
  {
    /* [290] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[234],
  },
  {
    /* [291] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [292] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [293] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [294] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[11],
  },
  {
    /* [295] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[234],
  },
  {
    /* [296] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [297] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [298] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [299] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[235],
  },
  {
    /* [300] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[231],
  },
  {
    /* [301] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [302] */
    /* usage */ ParameterUsage::kDepthRef,
    /* matcher indices */ &kMatcherIndices[38],
  },
  {
    /* [303] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[112],
  },
  {
    /* [304] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[112],
  },
  {
    /* [305] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[112],
  },
  {
    /* [306] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[112],
  },
  {
    /* [307] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[235],
  },
  {
    /* [308] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [309] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [310] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [311] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[120],
  },
  {
    /* [312] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[120],
  },
  {
    /* [313] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[120],
  },
  {
    /* [314] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[120],
  },
  {
    /* [315] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[220],
  },
  {
    /* [316] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [317] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[104],
  },
  {
    /* [318] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[38],
  },
  {
    /* [319] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[128],
  },
  {
    /* [320] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[128],
  },
  {
    /* [321] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[128],
  },
  {
    /* [322] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[128],
  },
  {
    /* [323] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[218],
  },
  {
    /* [324] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [325] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[104],
  },
  {
    /* [326] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[38],
  },
  {
    /* [327] */
    /* usage */ ParameterUsage::kComponent,
    /* matcher indices */ &kMatcherIndices[11],
  },
  {
    /* [328] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[154],
  },
  {
    /* [329] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [330] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[104],
  },
  {
    /* [331] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[235],
  },
  {
    /* [332] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [333] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [334] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[174],
  },
  {
    /* [335] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[78],
  },
  {
    /* [336] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[128],
  },
  {
    /* [337] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[11],
  },
  {
    /* [338] */
    /* usage */ ParameterUsage::kValue,
    /* matcher indices */ &kMatcherIndices[130],
  },
  {
    /* [339] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[234],
  },
  {
    /* [340] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [341] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [342] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [343] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[232],
  },
  {
    /* [344] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [345] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[104],
  },
  {
    /* [346] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [347] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[235],
  },
  {
    /* [348] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[231],
  },
  {
    /* [349] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [350] */
    /* usage */ ParameterUsage::kDepthRef,
    /* matcher indices */ &kMatcherIndices[38],
  },
  {
    /* [351] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[210],
  },
  {
    /* [352] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [353] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [354] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[38],
  },
  {
    /* [355] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [356] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [357] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [358] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [359] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[233],
  },
  {
    /* [360] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[231],
  },
  {
    /* [361] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[104],
  },
  {
    /* [362] */
    /* usage */ ParameterUsage::kDepthRef,
    /* matcher indices */ &kMatcherIndices[38],
  },
  {
    /* [363] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[210],
  },
  {
    /* [364] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [365] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [366] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[174],
  },
  {
    /* [367] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[66],
  },
  {
    /* [368] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[128],
  },
  {
    /* [369] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[11],
  },
  {
    /* [370] */
    /* usage */ ParameterUsage::kValue,
    /* matcher indices */ &kMatcherIndices[196],
  },
  {
    /* [371] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[212],
  },
  {
    /* [372] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [373] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [374] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [375] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[218],
  },
  {
    /* [376] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [377] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[104],
  },
  {
    /* [378] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[204],
  },
  {
    /* [379] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[222],
  },
  {
    /* [380] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [381] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[104],
  },
  {
    /* [382] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [383] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[235],
  },
  {
    /* [384] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [385] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [386] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[174],
  },
  {
    /* [387] */
    /* usage */ ParameterUsage::kComponent,
    /* matcher indices */ &kMatcherIndices[11],
  },
  {
    /* [388] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[140],
  },
  {
    /* [389] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [390] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [391] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[54],
  },
  {
    /* [392] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[128],
  },
  {
    /* [393] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[11],
  },
  {
    /* [394] */
    /* usage */ ParameterUsage::kValue,
    /* matcher indices */ &kMatcherIndices[194],
  },
  {
    /* [395] */
    /* usage */ ParameterUsage::kX,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [396] */
    /* usage */ ParameterUsage::kY,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [397] */
    /* usage */ ParameterUsage::kZ,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [398] */
    /* usage */ ParameterUsage::kW,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [399] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[233],
  },
  {
    /* [400] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[231],
  },
  {
    /* [401] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[104],
  },
  {
    /* [402] */
    /* usage */ ParameterUsage::kDepthRef,
    /* matcher indices */ &kMatcherIndices[38],
  },
  {
    /* [403] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[232],
  },
  {
    /* [404] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [405] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[104],
  },
  {
    /* [406] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [407] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[210],
  },
  {
    /* [408] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [409] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [410] */
    /* usage */ ParameterUsage::kBias,
    /* matcher indices */ &kMatcherIndices[38],
  },
  {
    /* [411] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[144],
  },
  {
    /* [412] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[216],
  },
  {
    /* [413] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [414] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[76],
  },
  {
    /* [415] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[235],
  },
  {
    /* [416] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[231],
  },
  {
    /* [417] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [418] */
    /* usage */ ParameterUsage::kDepthRef,
    /* matcher indices */ &kMatcherIndices[38],
  },
  {
    /* [419] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[233],
  },
  {
    /* [420] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [421] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[104],
  },
  {
    /* [422] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [423] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [424] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [425] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[44],
  },
  {
    /* [426] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[44],
  },
  {
    /* [427] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [428] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [429] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[44],
  },
  {
    /* [430] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[44],
  },
  {
    /* [431] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[233],
  },
  {
    /* [432] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[231],
  },
  {
    /* [433] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[104],
  },
  {
    /* [434] */
    /* usage */ ParameterUsage::kDepthRef,
    /* matcher indices */ &kMatcherIndices[38],
  },
  {
    /* [435] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[218],
  },
  {
    /* [436] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [437] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[104],
  },
  {
    /* [438] */
    /* usage */ ParameterUsage::kBias,
    /* matcher indices */ &kMatcherIndices[38],
  },
  {
    /* [439] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[220],
  },
  {
    /* [440] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [441] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[104],
  },
  {
    /* [442] */
    /* usage */ ParameterUsage::kBias,
    /* matcher indices */ &kMatcherIndices[38],
  },
  {
    /* [443] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[234],
  },
  {
    /* [444] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[128],
  },
  {
    /* [445] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[11],
  },
  {
    /* [446] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [447] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[237],
  },
  {
    /* [448] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[128],
  },
  {
    /* [449] */
    /* usage */ ParameterUsage::kSampleIndex,
    /* matcher indices */ &kMatcherIndices[11],
  },
  {
    /* [450] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[210],
  },
  {
    /* [451] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [452] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [453] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[235],
  },
  {
    /* [454] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[128],
  },
  {
    /* [455] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[11],
  },
  {
    /* [456] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [457] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [458] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [459] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[158],
  },
  {
    /* [460] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[216],
  },
  {
    /* [461] */
    /* usage */ ParameterUsage::kSampleIndex,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [462] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[148],
  },
  {
    /* [463] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[202],
  },
  {
    /* [464] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [465] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[0],
  },
  {
    /* [466] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [467] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [468] */
    /* usage */ ParameterUsage::kX,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [469] */
    /* usage */ ParameterUsage::kY,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [470] */
    /* usage */ ParameterUsage::kZ,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [471] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[140],
  },
  {
    /* [472] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[216],
  },
  {
    /* [473] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [474] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[138],
  },
  {
    /* [475] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[11],
  },
  {
    /* [476] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [477] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [478] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [479] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [480] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [481] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [482] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [483] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [484] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [485] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [486] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[233],
  },
  {
    /* [487] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [488] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[104],
  },
  {
    /* [489] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[51],
  },
  {
    /* [490] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[204],
  },
  {
    /* [491] */
    /* usage */ ParameterUsage::kValue,
    /* matcher indices */ &kMatcherIndices[194],
  },
  {
    /* [492] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[57],
  },
  {
    /* [493] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[128],
  },
  {
    /* [494] */
    /* usage */ ParameterUsage::kValue,
    /* matcher indices */ &kMatcherIndices[194],
  },
  {
    /* [495] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[60],
  },
  {
    /* [496] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [497] */
    /* usage */ ParameterUsage::kValue,
    /* matcher indices */ &kMatcherIndices[194],
  },
  {
    /* [498] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[235],
  },
  {
    /* [499] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [500] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [501] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [502] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [503] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [504] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[220],
  },
  {
    /* [505] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [506] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[104],
  },
  {
    /* [507] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [508] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [509] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [510] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[218],
  },
  {
    /* [511] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [512] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[104],
  },
  {
    /* [513] */
    /* usage */ ParameterUsage::kXy,
    /* matcher indices */ &kMatcherIndices[128],
  },
  {
    /* [514] */
    /* usage */ ParameterUsage::kZ,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [515] */
    /* usage */ ParameterUsage::kW,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [516] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[63],
  },
  {
    /* [517] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[120],
  },
  {
    /* [518] */
    /* usage */ ParameterUsage::kValue,
    /* matcher indices */ &kMatcherIndices[196],
  },
  {
    /* [519] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[69],
  },
  {
    /* [520] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[128],
  },
  {
    /* [521] */
    /* usage */ ParameterUsage::kValue,
    /* matcher indices */ &kMatcherIndices[196],
  },
  {
    /* [522] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [523] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [524] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [525] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [526] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [527] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [528] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[208],
  },
  {
    /* [529] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [530] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[38],
  },
  {
    /* [531] */
    /* usage */ ParameterUsage::kX,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [532] */
    /* usage */ ParameterUsage::kYz,
    /* matcher indices */ &kMatcherIndices[128],
  },
  {
    /* [533] */
    /* usage */ ParameterUsage::kW,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [534] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[72],
  },
  {
    /* [535] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [536] */
    /* usage */ ParameterUsage::kValue,
    /* matcher indices */ &kMatcherIndices[196],
  },
  {
    /* [537] */
    /* usage */ ParameterUsage::kX,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [538] */
    /* usage */ ParameterUsage::kY,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [539] */
    /* usage */ ParameterUsage::kZw,
    /* matcher indices */ &kMatcherIndices[128],
  },
  {
    /* [540] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[75],
  },
  {
    /* [541] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[120],
  },
  {
    /* [542] */
    /* usage */ ParameterUsage::kValue,
    /* matcher indices */ &kMatcherIndices[130],
  },
  {
    /* [543] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[128],
  },
  {
    /* [544] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[128],
  },
  {
    /* [545] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[128],
  },
  {
    /* [546] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [547] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [548] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[35],
  },
  {
    /* [549] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [550] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [551] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[35],
  },
  {
    /* [552] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [553] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [554] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[33],
  },
  {
    /* [555] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [556] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [557] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [558] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [559] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[44],
  },
  {
    /* [560] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[44],
  },
  {
    /* [561] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[233],
  },
  {
    /* [562] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [563] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[104],
  },
  {
    /* [564] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[120],
  },
  {
    /* [565] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[120],
  },
  {
    /* [566] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[120],
  },
  {
    /* [567] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [568] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[44],
  },
  {
    /* [569] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[44],
  },
  {
    /* [570] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[81],
  },
  {
    /* [571] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[128],
  },
  {
    /* [572] */
    /* usage */ ParameterUsage::kValue,
    /* matcher indices */ &kMatcherIndices[130],
  },
  {
    /* [573] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [574] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [575] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [576] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [577] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [578] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [579] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[235],
  },
  {
    /* [580] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [581] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [582] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[112],
  },
  {
    /* [583] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[112],
  },
  {
    /* [584] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[112],
  },
  {
    /* [585] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[84],
  },
  {
    /* [586] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [587] */
    /* usage */ ParameterUsage::kValue,
    /* matcher indices */ &kMatcherIndices[130],
  },
  {
    /* [588] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[236],
  },
  {
    /* [589] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [590] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [591] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[210],
  },
  {
    /* [592] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [593] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [594] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[236],
  },
  {
    /* [595] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[230],
  },
  {
    /* [596] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [597] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [598] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [599] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[44],
  },
  {
    /* [600] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[44],
  },
  {
    /* [601] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[112],
  },
  {
    /* [602] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[112],
  },
  {
    /* [603] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[120],
  },
  {
    /* [604] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[120],
  },
  {
    /* [605] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[128],
  },
  {
    /* [606] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[128],
  },
  {
    /* [607] */
    /* usage */ ParameterUsage::kX,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [608] */
    /* usage */ ParameterUsage::kZyw,
    /* matcher indices */ &kMatcherIndices[120],
  },
  {
    /* [609] */
    /* usage */ ParameterUsage::kXyz,
    /* matcher indices */ &kMatcherIndices[120],
  },
  {
    /* [610] */
    /* usage */ ParameterUsage::kW,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [611] */
    /* usage */ ParameterUsage::kXy,
    /* matcher indices */ &kMatcherIndices[128],
  },
  {
    /* [612] */
    /* usage */ ParameterUsage::kZw,
    /* matcher indices */ &kMatcherIndices[128],
  },
  {
    /* [613] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [614] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [615] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [616] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [617] */
    /* usage */ ParameterUsage::kX,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [618] */
    /* usage */ ParameterUsage::kYz,
    /* matcher indices */ &kMatcherIndices[128],
  },
  {
    /* [619] */
    /* usage */ ParameterUsage::kXy,
    /* matcher indices */ &kMatcherIndices[128],
  },
  {
    /* [620] */
    /* usage */ ParameterUsage::kZ,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [621] */
    /* usage */ ParameterUsage::kX,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [622] */
    /* usage */ ParameterUsage::kY,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [623] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[138],
  },
  {
    /* [624] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[11],
  },
  {
    /* [625] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [626] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[42],
  },
  {
    /* [627] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[140],
  },
  {
    /* [628] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[11],
  },
  {
    /* [629] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [630] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[44],
  },
  {
    /* [631] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[144],
  },
  {
    /* [632] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[11],
  },
  {
    /* [633] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [634] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[42],
  },
  {
    /* [635] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[148],
  },
  {
    /* [636] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[11],
  },
  {
    /* [637] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [638] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[44],
  },
  {
    /* [639] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[154],
  },
  {
    /* [640] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[11],
  },
  {
    /* [641] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [642] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[42],
  },
  {
    /* [643] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[156],
  },
  {
    /* [644] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[11],
  },
  {
    /* [645] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [646] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[44],
  },
  {
    /* [647] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [648] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [649] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[235],
  },
  {
    /* [650] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [651] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [652] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [653] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[234],
  },
  {
    /* [654] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [655] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [656] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [657] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[233],
  },
  {
    /* [658] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [659] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [660] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [661] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[232],
  },
  {
    /* [662] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [663] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [664] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [665] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [666] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [667] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [668] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [669] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [670] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [671] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [672] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [673] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [674] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [675] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [676] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [677] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[35],
  },
  {
    /* [678] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[35],
  },
  {
    /* [679] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[35],
  },
  {
    /* [680] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[35],
  },
  {
    /* [681] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [682] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [683] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [684] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [685] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [686] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [687] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [688] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [689] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[33],
  },
  {
    /* [690] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[33],
  },
  {
    /* [691] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[35],
  },
  {
    /* [692] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[35],
  },
  {
    /* [693] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [694] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [695] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [696] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [697] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[33],
  },
  {
    /* [698] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[33],
  },
  {
    /* [699] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[35],
  },
  {
    /* [700] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[35],
  },
  {
    /* [701] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [702] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [703] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [704] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [705] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [706] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [707] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [708] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [709] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [710] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [711] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [712] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [713] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [714] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [715] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [716] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [717] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [718] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [719] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [720] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [721] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[26],
  },
  {
    /* [722] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[14],
  },
  {
    /* [723] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[39],
  },
  {
    /* [724] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[18],
  },
  {
    /* [725] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[18],
  },
  {
    /* [726] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [727] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[18],
  },
  {
    /* [728] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [729] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [730] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[18],
  },
  {
    /* [731] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [732] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [733] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [734] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [735] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [736] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [737] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [738] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [739] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[18],
  },
  {
    /* [740] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[18],
  },
  {
    /* [741] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [742] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [743] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [744] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [745] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [746] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [747] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [748] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [749] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [750] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [751] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[18],
  },
  {
    /* [752] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[18],
  },
  {
    /* [753] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [754] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [755] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [756] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [757] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [758] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [759] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [760] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [761] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [762] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [763] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [764] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [765] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[0],
  },
  {
    /* [766] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [767] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[0],
  },
  {
    /* [768] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [769] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[0],
  },
  {
    /* [770] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [771] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[0],
  },
  {
    /* [772] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [773] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [774] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [775] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [776] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [777] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [778] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [779] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [780] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [781] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[0],
  },
  {
    /* [782] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [783] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[0],
  },
  {
    /* [784] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [785] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[0],
  },
  {
    /* [786] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [787] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[0],
  },
  {
    /* [788] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [789] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[0],
  },
  {
    /* [790] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [791] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[236],
  },
  {
    /* [792] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[128],
  },
  {
    /* [793] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [794] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[48],
  },
  {
    /* [795] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [796] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[4],
  },
  {
    /* [797] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[120],
  },
  {
    /* [798] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[120],
  },
  {
    /* [799] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [800] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [801] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [802] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [803] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [804] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [805] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[44],
  },
  {
    /* [806] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[44],
  },
  {
    /* [807] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[35],
  },
  {
    /* [808] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[232],
  },
  {
    /* [809] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[38],
  },
  {
    /* [810] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [811] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [812] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [813] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [814] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [815] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [816] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [817] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [818] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [819] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [820] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [821] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [822] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [823] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [824] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[36],
  },
  {
    /* [825] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[38],
  },
  {
    /* [826] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[36],
  },
  {
    /* [827] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[38],
  },
  {
    /* [828] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[36],
  },
  {
    /* [829] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[38],
  },
  {
    /* [830] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[36],
  },
  {
    /* [831] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[38],
  },
  {
    /* [832] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[36],
  },
  {
    /* [833] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[38],
  },
  {
    /* [834] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[36],
  },
  {
    /* [835] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[38],
  },
  {
    /* [836] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[38],
  },
  {
    /* [837] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[36],
  },
  {
    /* [838] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[38],
  },
  {
    /* [839] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[36],
  },
  {
    /* [840] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [841] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[22],
  },
  {
    /* [842] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [843] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [844] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [845] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [846] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [847] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [848] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [849] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [850] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [851] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [852] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [853] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [854] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [855] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [856] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [857] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[0],
  },
  {
    /* [858] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [859] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [860] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [861] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [862] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [863] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [864] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [865] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [866] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [867] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [868] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [869] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [870] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[33],
  },
  {
    /* [871] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [872] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [873] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [874] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [875] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [876] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[102],
  },
  {
    /* [877] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[130],
  },
  {
    /* [878] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[130],
  },
  {
    /* [879] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [880] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [881] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [882] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[237],
  },
  {
    /* [883] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[158],
  },
  {
    /* [884] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[232],
  },
  {
    /* [885] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[233],
  },
  {
    /* [886] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[234],
  },
  {
    /* [887] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[235],
  },
  {
    /* [888] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[156],
  },
  {
    /* [889] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[154],
  },
  {
    /* [890] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[148],
  },
  {
    /* [891] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[144],
  },
  {
    /* [892] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[140],
  },
  {
    /* [893] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[138],
  },
  {
    /* [894] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[87],
  },
  {
    /* [895] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[232],
  },
  {
    /* [896] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[234],
  },
  {
    /* [897] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[156],
  },
  {
    /* [898] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[144],
  },
  {
    /* [899] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [900] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [901] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [902] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [903] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [904] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [905] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [906] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [907] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [908] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [909] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [910] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [911] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [912] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[108],
  },
  {
    /* [913] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [914] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [915] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[236],
  },
  {
    /* [916] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [917] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[90],
  },
  {
    /* [918] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[87],
  },
  {
    /* [919] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[93],
  },
  {
    /* [920] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[96],
  },
  {
    /* [921] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[237],
  },
  {
    /* [922] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[36],
  },
  {
    /* [923] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[233],
  },
  {
    /* [924] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[234],
  },
  {
    /* [925] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[235],
  },
  {
    /* [926] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[158],
  },
  {
    /* [927] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[156],
  },
  {
    /* [928] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[154],
  },
  {
    /* [929] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[148],
  },
  {
    /* [930] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[144],
  },
  {
    /* [931] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[140],
  },
  {
    /* [932] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[106],
  },
  {
    /* [933] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[4],
  },
  {
    /* [934] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [935] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [936] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[44],
  },
  {
    /* [937] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [938] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [939] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[38],
  },
  {
    /* [940] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [941] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[110],
  },
  {
    /* [942] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[6],
  },
  {
    /* [943] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [944] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[116],
  },
  {
    /* [945] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[35],
  },
  {
    /* [946] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [947] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[114],
  },
  {
    /* [948] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[128],
  },
  {
    /* [949] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [950] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[138],
  },
  {
    /* [951] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[216],
  },
  {
    /* [952] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[216],
  },
  {
    /* [953] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[216],
  },
  {
    /* [954] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[216],
  },
  {
    /* [955] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[216],
  },
  {
    /* [956] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [957] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[120],
  },
  {
    /* [958] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [959] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [960] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [961] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[44],
  },
  {
    /* [962] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[202],
  },
  {
    /* [963] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[202],
  },
  {
    /* [964] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[202],
  },
  {
    /* [965] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[202],
  },
  {
    /* [966] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[202],
  },
  {
    /* [967] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[118],
  },
  {
    /* [968] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[112],
  },
  {
    /* [969] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [970] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [971] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[44],
  },
  {
    /* [972] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[44],
  },
  {
    /* [973] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [974] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[44],
  },
  {
    /* [975] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[44],
  },
  {
    /* [976] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [977] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[192],
  },
  {
    /* [978] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[192],
  },
  {
    /* [979] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[192],
  },
  {
    /* [980] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[192],
  },
  {
    /* [981] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[192],
  },
  {
    /* [982] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[124],
  },
  {
    /* [983] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[188],
  },
  {
    /* [984] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [985] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [986] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[184],
  },
  {
    /* [987] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[186],
  },
  {
    /* [988] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[122],
  },
  {
    /* [989] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[182],
  },
  {
    /* [990] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [991] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[18],
  },
  {
    /* [992] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[178],
  },
  {
    /* [993] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[180],
  },
  {
    /* [994] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [995] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[176],
  },
  {
    /* [996] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [997] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [998] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[170],
  },
  {
    /* [999] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[172],
  },
  {
    /* [1000] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[35],
  },
  {
    /* [1001] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[166],
  },
  {
    /* [1002] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [1003] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [1004] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[162],
  },
  {
    /* [1005] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[164],
  },
  {
    /* [1006] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[126],
  },
  {
    /* [1007] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[160],
  },
  {
    /* [1008] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[5],
  },
  {
    /* [1009] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[33],
  },
  {
    /* [1010] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[146],
  },
  {
    /* [1011] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[152],
  },
  {
    /* [1012] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[134],
  },
  {
    /* [1013] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[136],
  },
  {
    /* [1014] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[35],
  },
  {
    /* [1015] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[33],
  },
  {
    /* [1016] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[132],
  },
};

constexpr TemplateTypeInfo kTemplateTypes[] = {
  {
    /* [0] */
    /* name */ "T",
    /* matcher index */ 66,
  },
  {
    /* [1] */
    /* name */ "C",
    /* matcher index */ 70,
  },
  {
    /* [2] */
    /* name */ "A",
    /* matcher index */ 70,
  },
  {
    /* [3] */
    /* name */ "L",
    /* matcher index */ 70,
  },
  {
    /* [4] */
    /* name */ "T",
    /* matcher index */ 66,
  },
  {
    /* [5] */
    /* name */ "C",
    /* matcher index */ 70,
  },
  {
    /* [6] */
    /* name */ "L",
    /* matcher index */ 70,
  },
  {
    /* [7] */
    /* name */ "T",
    /* matcher index */ 66,
  },
  {
    /* [8] */
    /* name */ "C",
    /* matcher index */ 70,
  },
  {
    /* [9] */
    /* name */ "S",
    /* matcher index */ 70,
  },
  {
    /* [10] */
    /* name */ "T",
    /* matcher index */ 4,
  },
  {
    /* [11] */
    /* name */ "U",
    /* matcher index */ 58,
  },
  {
    /* [12] */
    /* name */ "T",
    /* matcher index */ 8,
  },
  {
    /* [13] */
    /* name */ "U",
    /* matcher index */ 57,
  },
  {
    /* [14] */
    /* name */ "T",
    /* matcher index */ 7,
  },
  {
    /* [15] */
    /* name */ "U",
    /* matcher index */ 56,
  },
  {
    /* [16] */
    /* name */ "T",
    /* matcher index */ 10,
  },
  {
    /* [17] */
    /* name */ "U",
    /* matcher index */ 55,
  },
  {
    /* [18] */
    /* name */ "T",
    /* matcher index */ 9,
  },
  {
    /* [19] */
    /* name */ "U",
    /* matcher index */ 54,
  },
  {
    /* [20] */
    /* name */ "T",
    /* matcher index */ 66,
  },
  {
    /* [21] */
    /* name */ "L",
    /* matcher index */ 70,
  },
  {
    /* [22] */
    /* name */ "T",
    /* matcher index */ 52,
  },
  {
    /* [23] */
    /* name */ "T",
    /* matcher index */ 59,
  },
  {
    /* [24] */
    /* name */ "T",
    /* matcher index */ 63,
  },
  {
    /* [25] */
    /* name */ "T",
    /* matcher index */ 69,
  },
  {
    /* [26] */
    /* name */ "T",
    /* matcher index */ 70,
  },
  {
    /* [27] */
    /* name */ "T",
    /* matcher index */ 65,
  },
  {
    /* [28] */
    /* name */ "T",
    /* matcher index */ 53,
  },
  {
    /* [29] */
    /* name */ "T",
    /* matcher index */ kNoMatcher,
  },
  {
    /* [30] */
    /* name */ "T",
    /* matcher index */ 58,
  },
  {
    /* [31] */
    /* name */ "T",
    /* matcher index */ 55,
  },
  {
    /* [32] */
    /* name */ "T",
    /* matcher index */ 54,
  },
  {
    /* [33] */
    /* name */ "T",
    /* matcher index */ 57,
  },
  {
    /* [34] */
    /* name */ "T",
    /* matcher index */ 56,
  },
  {
    /* [35] */
    /* name */ "T",
    /* matcher index */ 64,
  },
  {
    /* [36] */
    /* name */ "T",
    /* matcher index */ 60,
  },
  {
    /* [37] */
    /* name */ "T",
    /* matcher index */ 5,
  },
};

constexpr TemplateNumberInfo kTemplateNumbers[] = {
  {
    /* [0] */
    /* name */ "K",
    /* matcher index */ kNoMatcher,
  },
  {
    /* [1] */
    /* name */ "C",
    /* matcher index */ kNoMatcher,
  },
  {
    /* [2] */
    /* name */ "R",
    /* matcher index */ kNoMatcher,
  },
  {
    /* [3] */
    /* name */ "F",
    /* matcher index */ kNoMatcher,
  },
  {
    /* [4] */
    /* name */ "A",
    /* matcher index */ 6,
  },
  {
    /* [5] */
    /* name */ "N",
    /* matcher index */ kNoMatcher,
  },
  {
    /* [6] */
    /* name */ "M",
    /* matcher index */ kNoMatcher,
  },
  {
    /* [7] */
    /* name */ "N",
    /* matcher index */ kNoMatcher,
  },
  {
    /* [8] */
    /* name */ "A",
    /* matcher index */ kNoMatcher,
  },
  {
    /* [9] */
    /* name */ "S",
    /* matcher index */ 9,
  },
};

constexpr OverloadInfo kOverloads[] = {
  {
    /* [0] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[0],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[950],
    /* return matcher indices */ &kMatcherIndices[44],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [1] */
    /* num parameters */ 2,
    /* num template types */ 2,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[20],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[623],
    /* return matcher indices */ &kMatcherIndices[44],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [2] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[0],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[931],
    /* return matcher indices */ &kMatcherIndices[142],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [3] */
    /* num parameters */ 2,
    /* num template types */ 2,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[20],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[627],
    /* return matcher indices */ &kMatcherIndices[142],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [4] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[0],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[930],
    /* return matcher indices */ &kMatcherIndices[142],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [5] */
    /* num parameters */ 2,
    /* num template types */ 2,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[20],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[631],
    /* return matcher indices */ &kMatcherIndices[142],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [6] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[0],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[929],
    /* return matcher indices */ &kMatcherIndices[150],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [7] */
    /* num parameters */ 2,
    /* num template types */ 2,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[20],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[635],
    /* return matcher indices */ &kMatcherIndices[150],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [8] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[0],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[928],
    /* return matcher indices */ &kMatcherIndices[142],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [9] */
    /* num parameters */ 2,
    /* num template types */ 2,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[20],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[639],
    /* return matcher indices */ &kMatcherIndices[142],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [10] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[0],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[927],
    /* return matcher indices */ &kMatcherIndices[142],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [11] */
    /* num parameters */ 2,
    /* num template types */ 2,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[20],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[643],
    /* return matcher indices */ &kMatcherIndices[142],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [12] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[0],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[926],
    /* return matcher indices */ &kMatcherIndices[142],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [13] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[925],
    /* return matcher indices */ &kMatcherIndices[142],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [14] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[3],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[649],
    /* return matcher indices */ &kMatcherIndices[142],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [15] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[924],
    /* return matcher indices */ &kMatcherIndices[142],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [16] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[3],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[653],
    /* return matcher indices */ &kMatcherIndices[142],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [17] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[923],
    /* return matcher indices */ &kMatcherIndices[142],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [18] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[3],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[657],
    /* return matcher indices */ &kMatcherIndices[142],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [19] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[808],
    /* return matcher indices */ &kMatcherIndices[142],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [20] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[3],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[661],
    /* return matcher indices */ &kMatcherIndices[142],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [21] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[921],
    /* return matcher indices */ &kMatcherIndices[142],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [22] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 2,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[3],
    /* parameters */ &kParameters[920],
    /* return matcher indices */ &kMatcherIndices[44],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [23] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 2,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[3],
    /* parameters */ &kParameters[919],
    /* return matcher indices */ &kMatcherIndices[142],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [24] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 2,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[3],
    /* parameters */ &kParameters[918],
    /* return matcher indices */ &kMatcherIndices[142],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [25] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 2,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[3],
    /* parameters */ &kParameters[917],
    /* return matcher indices */ &kMatcherIndices[150],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [26] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[915],
    /* return matcher indices */ &kMatcherIndices[142],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [27] */
    /* num parameters */ 3,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[528],
    /* return matcher indices */ &kMatcherIndices[130],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
    /* const eval */ nullptr,
  },
  {
    /* [28] */
    /* num parameters */ 3,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[450],
    /* return matcher indices */ &kMatcherIndices[130],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
    /* const eval */ nullptr,
  },
  {
    /* [29] */
    /* num parameters */ 4,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[363],
    /* return matcher indices */ &kMatcherIndices[130],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
    /* const eval */ nullptr,
  },
  {
    /* [30] */
    /* num parameters */ 4,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[2],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[371],
    /* return matcher indices */ &kMatcherIndices[130],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
    /* const eval */ nullptr,
  },
  {
    /* [31] */
    /* num parameters */ 5,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[2],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[150],
    /* return matcher indices */ &kMatcherIndices[130],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
    /* const eval */ nullptr,
  },
  {
    /* [32] */
    /* num parameters */ 3,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[510],
    /* return matcher indices */ &kMatcherIndices[130],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
    /* const eval */ nullptr,
  },
  {
    /* [33] */
    /* num parameters */ 4,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[375],
    /* return matcher indices */ &kMatcherIndices[130],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
    /* const eval */ nullptr,
  },
  {
    /* [34] */
    /* num parameters */ 3,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[504],
    /* return matcher indices */ &kMatcherIndices[130],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
    /* const eval */ nullptr,
  },
  {
    /* [35] */
    /* num parameters */ 4,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[2],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[379],
    /* return matcher indices */ &kMatcherIndices[130],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
    /* const eval */ nullptr,
  },
  {
    /* [36] */
    /* num parameters */ 3,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[498],
    /* return matcher indices */ &kMatcherIndices[38],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
    /* const eval */ nullptr,
  },
  {
    /* [37] */
    /* num parameters */ 4,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[383],
    /* return matcher indices */ &kMatcherIndices[38],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
    /* const eval */ nullptr,
  },
  {
    /* [38] */
    /* num parameters */ 4,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[2],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[295],
    /* return matcher indices */ &kMatcherIndices[38],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
    /* const eval */ nullptr,
  },
  {
    /* [39] */
    /* num parameters */ 5,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[2],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[185],
    /* return matcher indices */ &kMatcherIndices[38],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
    /* const eval */ nullptr,
  },
  {
    /* [40] */
    /* num parameters */ 3,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[486],
    /* return matcher indices */ &kMatcherIndices[38],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
    /* const eval */ nullptr,
  },
  {
    /* [41] */
    /* num parameters */ 4,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[2],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[403],
    /* return matcher indices */ &kMatcherIndices[38],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
    /* const eval */ nullptr,
  },
  {
    /* [42] */
    /* num parameters */ 0,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[28],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[1017],
    /* return matcher indices */ &kMatcherIndices[112],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Zero,
  },
  {
    /* [43] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[28],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[968],
    /* return matcher indices */ &kMatcherIndices[112],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Identity,
  },
  {
    /* [44] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[22],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[969],
    /* return matcher indices */ &kMatcherIndices[112],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::VecSplat,
  },
  {
    /* [45] */
    /* num parameters */ 4,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[22],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[395],
    /* return matcher indices */ &kMatcherIndices[112],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::VecInitS,
  },
  {
    /* [46] */
    /* num parameters */ 3,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[22],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[513],
    /* return matcher indices */ &kMatcherIndices[112],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::VecInitM,
  },
  {
    /* [47] */
    /* num parameters */ 3,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[22],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[531],
    /* return matcher indices */ &kMatcherIndices[112],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::VecInitM,
  },
  {
    /* [48] */
    /* num parameters */ 3,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[22],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[537],
    /* return matcher indices */ &kMatcherIndices[112],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::VecInitM,
  },
  {
    /* [49] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[22],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[611],
    /* return matcher indices */ &kMatcherIndices[112],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::VecInitM,
  },
  {
    /* [50] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[22],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[609],
    /* return matcher indices */ &kMatcherIndices[112],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::VecInitM,
  },
  {
    /* [51] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[22],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[607],
    /* return matcher indices */ &kMatcherIndices[112],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::VecInitM,
  },
  {
    /* [52] */
    /* num parameters */ 1,
    /* num template types */ 2,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[18],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[977],
    /* return matcher indices */ &kMatcherIndices[130],
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Conv,
  },
  {
    /* [53] */
    /* num parameters */ 1,
    /* num template types */ 2,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[16],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[978],
    /* return matcher indices */ &kMatcherIndices[198],
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Conv,
  },
  {
    /* [54] */
    /* num parameters */ 1,
    /* num template types */ 2,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[14],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[979],
    /* return matcher indices */ &kMatcherIndices[196],
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Conv,
  },
  {
    /* [55] */
    /* num parameters */ 1,
    /* num template types */ 2,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[12],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[980],
    /* return matcher indices */ &kMatcherIndices[194],
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Conv,
  },
  {
    /* [56] */
    /* num parameters */ 1,
    /* num template types */ 2,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[10],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[981],
    /* return matcher indices */ &kMatcherIndices[190],
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Conv,
  },
  {
    /* [57] */
    /* num parameters */ 4,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[351],
    /* return matcher indices */ &kMatcherIndices[130],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [58] */
    /* num parameters */ 5,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[255],
    /* return matcher indices */ &kMatcherIndices[130],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [59] */
    /* num parameters */ 5,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[2],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[260],
    /* return matcher indices */ &kMatcherIndices[130],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [60] */
    /* num parameters */ 6,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[2],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[84],
    /* return matcher indices */ &kMatcherIndices[130],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [61] */
    /* num parameters */ 4,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[323],
    /* return matcher indices */ &kMatcherIndices[130],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [62] */
    /* num parameters */ 5,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[270],
    /* return matcher indices */ &kMatcherIndices[130],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [63] */
    /* num parameters */ 4,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[315],
    /* return matcher indices */ &kMatcherIndices[130],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [64] */
    /* num parameters */ 5,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[2],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[275],
    /* return matcher indices */ &kMatcherIndices[130],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [65] */
    /* num parameters */ 4,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[3],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[307],
    /* return matcher indices */ &kMatcherIndices[38],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [66] */
    /* num parameters */ 5,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[3],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[280],
    /* return matcher indices */ &kMatcherIndices[38],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [67] */
    /* num parameters */ 5,
    /* num template types */ 2,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[2],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[290],
    /* return matcher indices */ &kMatcherIndices[38],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [68] */
    /* num parameters */ 6,
    /* num template types */ 2,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[2],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[102],
    /* return matcher indices */ &kMatcherIndices[38],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [69] */
    /* num parameters */ 4,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[3],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[419],
    /* return matcher indices */ &kMatcherIndices[38],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [70] */
    /* num parameters */ 5,
    /* num template types */ 2,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[2],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[285],
    /* return matcher indices */ &kMatcherIndices[38],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [71] */
    /* num parameters */ 3,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[594],
    /* return matcher indices */ &kMatcherIndices[130],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kIsDeprecated),
    /* const eval */ nullptr,
  },
  {
    /* [72] */
    /* num parameters */ 3,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[1],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[585],
    /* return matcher indices */ nullptr,
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [73] */
    /* num parameters */ 3,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[1],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[570],
    /* return matcher indices */ nullptr,
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [74] */
    /* num parameters */ 4,
    /* num template types */ 2,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[1],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[335],
    /* return matcher indices */ nullptr,
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [75] */
    /* num parameters */ 3,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[1],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[540],
    /* return matcher indices */ nullptr,
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [76] */
    /* num parameters */ 3,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[1],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[534],
    /* return matcher indices */ nullptr,
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [77] */
    /* num parameters */ 3,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[1],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[519],
    /* return matcher indices */ nullptr,
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [78] */
    /* num parameters */ 4,
    /* num template types */ 2,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[1],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[367],
    /* return matcher indices */ nullptr,
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [79] */
    /* num parameters */ 3,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[1],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[516],
    /* return matcher indices */ nullptr,
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [80] */
    /* num parameters */ 3,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[1],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[495],
    /* return matcher indices */ nullptr,
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [81] */
    /* num parameters */ 3,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[1],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[492],
    /* return matcher indices */ nullptr,
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [82] */
    /* num parameters */ 4,
    /* num template types */ 2,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[1],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[391],
    /* return matcher indices */ nullptr,
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [83] */
    /* num parameters */ 3,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[489],
    /* return matcher indices */ nullptr,
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [84] */
    /* num parameters */ 4,
    /* num template types */ 2,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[0],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[387],
    /* return matcher indices */ &kMatcherIndices[112],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [85] */
    /* num parameters */ 5,
    /* num template types */ 2,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[0],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[230],
    /* return matcher indices */ &kMatcherIndices[112],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [86] */
    /* num parameters */ 5,
    /* num template types */ 3,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[0],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[240],
    /* return matcher indices */ &kMatcherIndices[112],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [87] */
    /* num parameters */ 6,
    /* num template types */ 3,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[0],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[90],
    /* return matcher indices */ &kMatcherIndices[112],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [88] */
    /* num parameters */ 4,
    /* num template types */ 2,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[0],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[327],
    /* return matcher indices */ &kMatcherIndices[112],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [89] */
    /* num parameters */ 5,
    /* num template types */ 3,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[0],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[205],
    /* return matcher indices */ &kMatcherIndices[112],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [90] */
    /* num parameters */ 3,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[579],
    /* return matcher indices */ &kMatcherIndices[130],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [91] */
    /* num parameters */ 4,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[331],
    /* return matcher indices */ &kMatcherIndices[130],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [92] */
    /* num parameters */ 4,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[2],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[339],
    /* return matcher indices */ &kMatcherIndices[130],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [93] */
    /* num parameters */ 5,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[2],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[265],
    /* return matcher indices */ &kMatcherIndices[130],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [94] */
    /* num parameters */ 3,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[561],
    /* return matcher indices */ &kMatcherIndices[130],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [95] */
    /* num parameters */ 4,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[2],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[343],
    /* return matcher indices */ &kMatcherIndices[130],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [96] */
    /* num parameters */ 0,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[28],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[1017],
    /* return matcher indices */ &kMatcherIndices[120],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Zero,
  },
  {
    /* [97] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[28],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[957],
    /* return matcher indices */ &kMatcherIndices[120],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Identity,
  },
  {
    /* [98] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[22],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[958],
    /* return matcher indices */ &kMatcherIndices[120],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::VecSplat,
  },
  {
    /* [99] */
    /* num parameters */ 3,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[22],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[468],
    /* return matcher indices */ &kMatcherIndices[120],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::VecInitS,
  },
  {
    /* [100] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[22],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[619],
    /* return matcher indices */ &kMatcherIndices[120],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::VecInitM,
  },
  {
    /* [101] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[22],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[617],
    /* return matcher indices */ &kMatcherIndices[120],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::VecInitM,
  },
  {
    /* [102] */
    /* num parameters */ 1,
    /* num template types */ 2,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[18],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[962],
    /* return matcher indices */ &kMatcherIndices[104],
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Conv,
  },
  {
    /* [103] */
    /* num parameters */ 1,
    /* num template types */ 2,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[16],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[963],
    /* return matcher indices */ &kMatcherIndices[206],
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Conv,
  },
  {
    /* [104] */
    /* num parameters */ 1,
    /* num template types */ 2,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[14],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[964],
    /* return matcher indices */ &kMatcherIndices[204],
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Conv,
  },
  {
    /* [105] */
    /* num parameters */ 1,
    /* num template types */ 2,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[12],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[965],
    /* return matcher indices */ &kMatcherIndices[150],
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Conv,
  },
  {
    /* [106] */
    /* num parameters */ 1,
    /* num template types */ 2,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[10],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[966],
    /* return matcher indices */ &kMatcherIndices[200],
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Conv,
  },
  {
    /* [107] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[0],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[893],
    /* return matcher indices */ &kMatcherIndices[44],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [108] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[0],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[892],
    /* return matcher indices */ &kMatcherIndices[44],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [109] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[0],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[891],
    /* return matcher indices */ &kMatcherIndices[44],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [110] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[0],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[890],
    /* return matcher indices */ &kMatcherIndices[44],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [111] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[0],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[889],
    /* return matcher indices */ &kMatcherIndices[44],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [112] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[0],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[888],
    /* return matcher indices */ &kMatcherIndices[44],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [113] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[887],
    /* return matcher indices */ &kMatcherIndices[44],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [114] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[886],
    /* return matcher indices */ &kMatcherIndices[44],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [115] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[885],
    /* return matcher indices */ &kMatcherIndices[44],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [116] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[884],
    /* return matcher indices */ &kMatcherIndices[44],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [117] */
    /* num parameters */ 3,
    /* num template types */ 3,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[4],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[474],
    /* return matcher indices */ &kMatcherIndices[112],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [118] */
    /* num parameters */ 3,
    /* num template types */ 3,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[4],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[471],
    /* return matcher indices */ &kMatcherIndices[112],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [119] */
    /* num parameters */ 4,
    /* num template types */ 4,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[0],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[411],
    /* return matcher indices */ &kMatcherIndices[112],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [120] */
    /* num parameters */ 3,
    /* num template types */ 3,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[4],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[462],
    /* return matcher indices */ &kMatcherIndices[112],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [121] */
    /* num parameters */ 3,
    /* num template types */ 3,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[7],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[459],
    /* return matcher indices */ &kMatcherIndices[112],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [122] */
    /* num parameters */ 3,
    /* num template types */ 2,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[5],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[453],
    /* return matcher indices */ &kMatcherIndices[38],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [123] */
    /* num parameters */ 4,
    /* num template types */ 3,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[1],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[443],
    /* return matcher indices */ &kMatcherIndices[38],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [124] */
    /* num parameters */ 3,
    /* num template types */ 2,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[8],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[447],
    /* return matcher indices */ &kMatcherIndices[38],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [125] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[1],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[791],
    /* return matcher indices */ &kMatcherIndices[130],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [126] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[23],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[737],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpMultiply,
  },
  {
    /* [127] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[23],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[735],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpMultiply,
  },
  {
    /* [128] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[23],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[733],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpMultiply,
  },
  {
    /* [129] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[23],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[731],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpMultiply,
  },
  {
    /* [130] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 2,
    /* template types */ &kTemplateTypes[24],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[729],
    /* return matcher indices */ &kMatcherIndices[18],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpMultiply,
  },
  {
    /* [131] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 2,
    /* template types */ &kTemplateTypes[24],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[727],
    /* return matcher indices */ &kMatcherIndices[18],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpMultiply,
  },
  {
    /* [132] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 2,
    /* template types */ &kTemplateTypes[24],
    /* template numbers */ &kTemplateNumbers[1],
    /* parameters */ &kParameters[725],
    /* return matcher indices */ &kMatcherIndices[39],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpMultiplyMatVec,
  },
  {
    /* [133] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 2,
    /* template types */ &kTemplateTypes[24],
    /* template numbers */ &kTemplateNumbers[1],
    /* parameters */ &kParameters[723],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpMultiplyVecMat,
  },
  {
    /* [134] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 3,
    /* template types */ &kTemplateTypes[24],
    /* template numbers */ &kTemplateNumbers[0],
    /* parameters */ &kParameters[721],
    /* return matcher indices */ &kMatcherIndices[10],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpMultiplyMatMat,
  },
  {
    /* [135] */
    /* num parameters */ 0,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[28],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[1017],
    /* return matcher indices */ &kMatcherIndices[128],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Zero,
  },
  {
    /* [136] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[28],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[948],
    /* return matcher indices */ &kMatcherIndices[128],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Identity,
  },
  {
    /* [137] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[22],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[949],
    /* return matcher indices */ &kMatcherIndices[128],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::VecSplat,
  },
  {
    /* [138] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[22],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[621],
    /* return matcher indices */ &kMatcherIndices[128],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::VecInitS,
  },
  {
    /* [139] */
    /* num parameters */ 1,
    /* num template types */ 2,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[18],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[951],
    /* return matcher indices */ &kMatcherIndices[102],
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Conv,
  },
  {
    /* [140] */
    /* num parameters */ 1,
    /* num template types */ 2,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[16],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[952],
    /* return matcher indices */ &kMatcherIndices[224],
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Conv,
  },
  {
    /* [141] */
    /* num parameters */ 1,
    /* num template types */ 2,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[14],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[953],
    /* return matcher indices */ &kMatcherIndices[174],
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Conv,
  },
  {
    /* [142] */
    /* num parameters */ 1,
    /* num template types */ 2,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[12],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[954],
    /* return matcher indices */ &kMatcherIndices[142],
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Conv,
  },
  {
    /* [143] */
    /* num parameters */ 1,
    /* num template types */ 2,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[10],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[955],
    /* return matcher indices */ &kMatcherIndices[214],
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Conv,
  },
  {
    /* [144] */
    /* num parameters */ 5,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[215],
    /* return matcher indices */ &kMatcherIndices[130],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [145] */
    /* num parameters */ 6,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[132],
    /* return matcher indices */ &kMatcherIndices[130],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [146] */
    /* num parameters */ 6,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[2],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[120],
    /* return matcher indices */ &kMatcherIndices[130],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [147] */
    /* num parameters */ 7,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[2],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[65],
    /* return matcher indices */ &kMatcherIndices[130],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [148] */
    /* num parameters */ 5,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[235],
    /* return matcher indices */ &kMatcherIndices[130],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [149] */
    /* num parameters */ 6,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[108],
    /* return matcher indices */ &kMatcherIndices[130],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [150] */
    /* num parameters */ 5,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[245],
    /* return matcher indices */ &kMatcherIndices[130],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [151] */
    /* num parameters */ 6,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[2],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[96],
    /* return matcher indices */ &kMatcherIndices[130],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [152] */
    /* num parameters */ 4,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[407],
    /* return matcher indices */ &kMatcherIndices[130],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
    /* const eval */ nullptr,
  },
  {
    /* [153] */
    /* num parameters */ 5,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[160],
    /* return matcher indices */ &kMatcherIndices[130],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
    /* const eval */ nullptr,
  },
  {
    /* [154] */
    /* num parameters */ 5,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[2],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[225],
    /* return matcher indices */ &kMatcherIndices[130],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
    /* const eval */ nullptr,
  },
  {
    /* [155] */
    /* num parameters */ 6,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[2],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[78],
    /* return matcher indices */ &kMatcherIndices[130],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
    /* const eval */ nullptr,
  },
  {
    /* [156] */
    /* num parameters */ 4,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[435],
    /* return matcher indices */ &kMatcherIndices[130],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
    /* const eval */ nullptr,
  },
  {
    /* [157] */
    /* num parameters */ 5,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[165],
    /* return matcher indices */ &kMatcherIndices[130],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
    /* const eval */ nullptr,
  },
  {
    /* [158] */
    /* num parameters */ 4,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[439],
    /* return matcher indices */ &kMatcherIndices[130],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
    /* const eval */ nullptr,
  },
  {
    /* [159] */
    /* num parameters */ 5,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[2],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[170],
    /* return matcher indices */ &kMatcherIndices[130],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
    /* const eval */ nullptr,
  },
  {
    /* [160] */
    /* num parameters */ 4,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[415],
    /* return matcher indices */ &kMatcherIndices[38],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [161] */
    /* num parameters */ 5,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[195],
    /* return matcher indices */ &kMatcherIndices[38],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [162] */
    /* num parameters */ 5,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[2],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[200],
    /* return matcher indices */ &kMatcherIndices[38],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [163] */
    /* num parameters */ 6,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[2],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[138],
    /* return matcher indices */ &kMatcherIndices[38],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [164] */
    /* num parameters */ 4,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[399],
    /* return matcher indices */ &kMatcherIndices[38],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [165] */
    /* num parameters */ 5,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[2],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[210],
    /* return matcher indices */ &kMatcherIndices[38],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [166] */
    /* num parameters */ 0,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[1017],
    /* return matcher indices */ &kMatcherIndices[160],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Zero,
  },
  {
    /* [167] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[1007],
    /* return matcher indices */ &kMatcherIndices[160],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Identity,
  },
  {
    /* [168] */
    /* num parameters */ 9,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[24],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[40],
    /* return matcher indices */ &kMatcherIndices[160],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::MatInitS,
  },
  {
    /* [169] */
    /* num parameters */ 3,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[24],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[564],
    /* return matcher indices */ &kMatcherIndices[160],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::MatInitV,
  },
  {
    /* [170] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[16],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[1010],
    /* return matcher indices */ &kMatcherIndices[152],
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Conv,
  },
  {
    /* [171] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[18],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[1011],
    /* return matcher indices */ &kMatcherIndices[146],
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Conv,
  },
  {
    /* [172] */
    /* num parameters */ 0,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[1017],
    /* return matcher indices */ &kMatcherIndices[110],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Zero,
  },
  {
    /* [173] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[941],
    /* return matcher indices */ &kMatcherIndices[110],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Identity,
  },
  {
    /* [174] */
    /* num parameters */ 16,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[24],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[0],
    /* return matcher indices */ &kMatcherIndices[110],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::MatInitS,
  },
  {
    /* [175] */
    /* num parameters */ 4,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[24],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[303],
    /* return matcher indices */ &kMatcherIndices[110],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::MatInitV,
  },
  {
    /* [176] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[16],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[932],
    /* return matcher indices */ &kMatcherIndices[108],
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Conv,
  },
  {
    /* [177] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[18],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[912],
    /* return matcher indices */ &kMatcherIndices[106],
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Conv,
  },
  {
    /* [178] */
    /* num parameters */ 0,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[1017],
    /* return matcher indices */ &kMatcherIndices[118],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Zero,
  },
  {
    /* [179] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[967],
    /* return matcher indices */ &kMatcherIndices[118],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Identity,
  },
  {
    /* [180] */
    /* num parameters */ 12,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[24],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[28],
    /* return matcher indices */ &kMatcherIndices[118],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::MatInitS,
  },
  {
    /* [181] */
    /* num parameters */ 4,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[24],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[311],
    /* return matcher indices */ &kMatcherIndices[118],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::MatInitV,
  },
  {
    /* [182] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[16],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[947],
    /* return matcher indices */ &kMatcherIndices[116],
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Conv,
  },
  {
    /* [183] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[18],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[944],
    /* return matcher indices */ &kMatcherIndices[114],
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Conv,
  },
  {
    /* [184] */
    /* num parameters */ 4,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[347],
    /* return matcher indices */ &kMatcherIndices[130],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [185] */
    /* num parameters */ 5,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[250],
    /* return matcher indices */ &kMatcherIndices[130],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [186] */
    /* num parameters */ 5,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[2],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[155],
    /* return matcher indices */ &kMatcherIndices[130],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [187] */
    /* num parameters */ 6,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[2],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[126],
    /* return matcher indices */ &kMatcherIndices[130],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [188] */
    /* num parameters */ 4,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[359],
    /* return matcher indices */ &kMatcherIndices[130],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [189] */
    /* num parameters */ 5,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[2],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[220],
    /* return matcher indices */ &kMatcherIndices[130],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [190] */
    /* num parameters */ 0,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[1017],
    /* return matcher indices */ &kMatcherIndices[126],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Zero,
  },
  {
    /* [191] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[1006],
    /* return matcher indices */ &kMatcherIndices[126],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Identity,
  },
  {
    /* [192] */
    /* num parameters */ 8,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[24],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[57],
    /* return matcher indices */ &kMatcherIndices[126],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::MatInitS,
  },
  {
    /* [193] */
    /* num parameters */ 4,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[24],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[319],
    /* return matcher indices */ &kMatcherIndices[126],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::MatInitV,
  },
  {
    /* [194] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[16],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[988],
    /* return matcher indices */ &kMatcherIndices[124],
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Conv,
  },
  {
    /* [195] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[18],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[982],
    /* return matcher indices */ &kMatcherIndices[122],
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Conv,
  },
  {
    /* [196] */
    /* num parameters */ 0,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[1017],
    /* return matcher indices */ &kMatcherIndices[136],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Zero,
  },
  {
    /* [197] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[1013],
    /* return matcher indices */ &kMatcherIndices[136],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Identity,
  },
  {
    /* [198] */
    /* num parameters */ 12,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[24],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[16],
    /* return matcher indices */ &kMatcherIndices[136],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::MatInitS,
  },
  {
    /* [199] */
    /* num parameters */ 3,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[24],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[582],
    /* return matcher indices */ &kMatcherIndices[136],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::MatInitV,
  },
  {
    /* [200] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[16],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[1016],
    /* return matcher indices */ &kMatcherIndices[134],
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Conv,
  },
  {
    /* [201] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[18],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[1012],
    /* return matcher indices */ &kMatcherIndices[132],
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Conv,
  },
  {
    /* [202] */
    /* num parameters */ 4,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[299],
    /* return matcher indices */ &kMatcherIndices[38],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
    /* const eval */ nullptr,
  },
  {
    /* [203] */
    /* num parameters */ 5,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[175],
    /* return matcher indices */ &kMatcherIndices[38],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
    /* const eval */ nullptr,
  },
  {
    /* [204] */
    /* num parameters */ 5,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[2],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[180],
    /* return matcher indices */ &kMatcherIndices[38],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
    /* const eval */ nullptr,
  },
  {
    /* [205] */
    /* num parameters */ 6,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[2],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[144],
    /* return matcher indices */ &kMatcherIndices[38],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
    /* const eval */ nullptr,
  },
  {
    /* [206] */
    /* num parameters */ 4,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[431],
    /* return matcher indices */ &kMatcherIndices[38],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
    /* const eval */ nullptr,
  },
  {
    /* [207] */
    /* num parameters */ 5,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[2],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[190],
    /* return matcher indices */ &kMatcherIndices[38],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
    /* const eval */ nullptr,
  },
  {
    /* [208] */
    /* num parameters */ 0,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[1017],
    /* return matcher indices */ &kMatcherIndices[166],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Zero,
  },
  {
    /* [209] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[1001],
    /* return matcher indices */ &kMatcherIndices[166],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Identity,
  },
  {
    /* [210] */
    /* num parameters */ 6,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[24],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[72],
    /* return matcher indices */ &kMatcherIndices[166],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::MatInitS,
  },
  {
    /* [211] */
    /* num parameters */ 3,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[24],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[543],
    /* return matcher indices */ &kMatcherIndices[166],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::MatInitV,
  },
  {
    /* [212] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[16],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[1004],
    /* return matcher indices */ &kMatcherIndices[164],
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Conv,
  },
  {
    /* [213] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[18],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[1005],
    /* return matcher indices */ &kMatcherIndices[162],
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Conv,
  },
  {
    /* [214] */
    /* num parameters */ 0,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[1017],
    /* return matcher indices */ &kMatcherIndices[176],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Zero,
  },
  {
    /* [215] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[995],
    /* return matcher indices */ &kMatcherIndices[176],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Identity,
  },
  {
    /* [216] */
    /* num parameters */ 8,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[24],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[49],
    /* return matcher indices */ &kMatcherIndices[176],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::MatInitS,
  },
  {
    /* [217] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[24],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[601],
    /* return matcher indices */ &kMatcherIndices[176],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::MatInitV,
  },
  {
    /* [218] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[16],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[998],
    /* return matcher indices */ &kMatcherIndices[172],
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Conv,
  },
  {
    /* [219] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[18],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[999],
    /* return matcher indices */ &kMatcherIndices[170],
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Conv,
  },
  {
    /* [220] */
    /* num parameters */ 0,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[1017],
    /* return matcher indices */ &kMatcherIndices[182],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Zero,
  },
  {
    /* [221] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[989],
    /* return matcher indices */ &kMatcherIndices[182],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Identity,
  },
  {
    /* [222] */
    /* num parameters */ 6,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[24],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[114],
    /* return matcher indices */ &kMatcherIndices[182],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::MatInitS,
  },
  {
    /* [223] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[24],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[603],
    /* return matcher indices */ &kMatcherIndices[182],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::MatInitV,
  },
  {
    /* [224] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[16],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[992],
    /* return matcher indices */ &kMatcherIndices[180],
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Conv,
  },
  {
    /* [225] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[18],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[993],
    /* return matcher indices */ &kMatcherIndices[178],
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Conv,
  },
  {
    /* [226] */
    /* num parameters */ 0,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[1017],
    /* return matcher indices */ &kMatcherIndices[188],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Zero,
  },
  {
    /* [227] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[983],
    /* return matcher indices */ &kMatcherIndices[188],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Identity,
  },
  {
    /* [228] */
    /* num parameters */ 4,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[24],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[355],
    /* return matcher indices */ &kMatcherIndices[188],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::MatInitS,
  },
  {
    /* [229] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[24],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[605],
    /* return matcher indices */ &kMatcherIndices[188],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::MatInitV,
  },
  {
    /* [230] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[16],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[986],
    /* return matcher indices */ &kMatcherIndices[186],
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Conv,
  },
  {
    /* [231] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[18],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[987],
    /* return matcher indices */ &kMatcherIndices[184],
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Conv,
  },
  {
    /* [232] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[23],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[763],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpPlus,
  },
  {
    /* [233] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[23],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[761],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpPlus,
  },
  {
    /* [234] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[23],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[759],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpPlus,
  },
  {
    /* [235] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[23],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[757],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpPlus,
  },
  {
    /* [236] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 2,
    /* template types */ &kTemplateTypes[24],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[751],
    /* return matcher indices */ &kMatcherIndices[18],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpPlus,
  },
  {
    /* [237] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[23],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[749],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpMinus,
  },
  {
    /* [238] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[23],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[745],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpMinus,
  },
  {
    /* [239] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[23],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[743],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpMinus,
  },
  {
    /* [240] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[23],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[741],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpMinus,
  },
  {
    /* [241] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 2,
    /* template types */ &kTemplateTypes[24],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[739],
    /* return matcher indices */ &kMatcherIndices[18],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpMinus,
  },
  {
    /* [242] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[0],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[898],
    /* return matcher indices */ &kMatcherIndices[44],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [243] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[0],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[897],
    /* return matcher indices */ &kMatcherIndices[44],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [244] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[896],
    /* return matcher indices */ &kMatcherIndices[44],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [245] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[895],
    /* return matcher indices */ &kMatcherIndices[44],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [246] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 2,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[3],
    /* parameters */ &kParameters[894],
    /* return matcher indices */ &kMatcherIndices[44],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [247] */
    /* num parameters */ 2,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[699],
    /* return matcher indices */ &kMatcherIndices[35],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpAnd,
  },
  {
    /* [248] */
    /* num parameters */ 2,
    /* num template types */ 0,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[697],
    /* return matcher indices */ &kMatcherIndices[33],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpAnd,
  },
  {
    /* [249] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[35],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[695],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpAnd,
  },
  {
    /* [250] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[35],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[693],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpAnd,
  },
  {
    /* [251] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[27],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[711],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [252] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[27],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[709],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [253] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[27],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[707],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [254] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[27],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[705],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [255] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[23],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[719],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpDivide,
  },
  {
    /* [256] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[23],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[717],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpDivide,
  },
  {
    /* [257] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[23],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[715],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpDivide,
  },
  {
    /* [258] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[23],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[713],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpDivide,
  },
  {
    /* [259] */
    /* num parameters */ 2,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[691],
    /* return matcher indices */ &kMatcherIndices[35],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpOr,
  },
  {
    /* [260] */
    /* num parameters */ 2,
    /* num template types */ 0,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[689],
    /* return matcher indices */ &kMatcherIndices[33],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpOr,
  },
  {
    /* [261] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[35],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[687],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpOr,
  },
  {
    /* [262] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[35],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[685],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpOr,
  },
  {
    /* [263] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[26],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[645],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpShiftLeft,
  },
  {
    /* [264] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[26],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[641],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpShiftLeft,
  },
  {
    /* [265] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[37],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[637],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpShiftLeft,
  },
  {
    /* [266] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[37],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[633],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpShiftLeft,
  },
  {
    /* [267] */
    /* num parameters */ 3,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[477],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [268] */
    /* num parameters */ 3,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[480],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [269] */
    /* num parameters */ 3,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[483],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [270] */
    /* num parameters */ 0,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[1017],
    /* return matcher indices */ &kMatcherIndices[6],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Zero,
  },
  {
    /* [271] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[942],
    /* return matcher indices */ &kMatcherIndices[6],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Identity,
  },
  {
    /* [272] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[31],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[943],
    /* return matcher indices */ &kMatcherIndices[6],
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Conv,
  },
  {
    /* [273] */
    /* num parameters */ 0,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[1017],
    /* return matcher indices */ &kMatcherIndices[35],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Zero,
  },
  {
    /* [274] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[945],
    /* return matcher indices */ &kMatcherIndices[35],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Identity,
  },
  {
    /* [275] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[30],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[946],
    /* return matcher indices */ &kMatcherIndices[35],
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Conv,
  },
  {
    /* [276] */
    /* num parameters */ 0,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[1017],
    /* return matcher indices */ &kMatcherIndices[4],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Zero,
  },
  {
    /* [277] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[933],
    /* return matcher indices */ &kMatcherIndices[4],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Identity,
  },
  {
    /* [278] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[34],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[934],
    /* return matcher indices */ &kMatcherIndices[4],
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Conv,
  },
  {
    /* [279] */
    /* num parameters */ 0,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[1017],
    /* return matcher indices */ &kMatcherIndices[44],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Zero,
  },
  {
    /* [280] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[936],
    /* return matcher indices */ &kMatcherIndices[44],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Identity,
  },
  {
    /* [281] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[33],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[937],
    /* return matcher indices */ &kMatcherIndices[44],
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Conv,
  },
  {
    /* [282] */
    /* num parameters */ 0,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[1017],
    /* return matcher indices */ &kMatcherIndices[38],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Zero,
  },
  {
    /* [283] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[939],
    /* return matcher indices */ &kMatcherIndices[38],
    /* flags */ OverloadFlags(OverloadFlag::kIsInitializer, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Identity,
  },
  {
    /* [284] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[32],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[940],
    /* return matcher indices */ &kMatcherIndices[38],
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Conv,
  },
  {
    /* [285] */
    /* num parameters */ 3,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[22],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[546],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::select_bool,
  },
  {
    /* [286] */
    /* num parameters */ 3,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[22],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[549],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::select_bool,
  },
  {
    /* [287] */
    /* num parameters */ 3,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[22],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[552],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::select_boolvec,
  },
  {
    /* [288] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[913],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [289] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[914],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [290] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[827],
    /* return matcher indices */ &kMatcherIndices[38],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
    /* const eval */ nullptr,
  },
  {
    /* [291] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[826],
    /* return matcher indices */ &kMatcherIndices[36],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
    /* const eval */ nullptr,
  },
  {
    /* [292] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[836],
    /* return matcher indices */ &kMatcherIndices[38],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
    /* const eval */ nullptr,
  },
  {
    /* [293] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[837],
    /* return matcher indices */ &kMatcherIndices[36],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
    /* const eval */ nullptr,
  },
  {
    /* [294] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[838],
    /* return matcher indices */ &kMatcherIndices[38],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
    /* const eval */ nullptr,
  },
  {
    /* [295] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[839],
    /* return matcher indices */ &kMatcherIndices[36],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
    /* const eval */ nullptr,
  },
  {
    /* [296] */
    /* num parameters */ 4,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[26],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[423],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [297] */
    /* num parameters */ 4,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[26],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[427],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [298] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[840],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [299] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[844],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [300] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[795],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [301] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[793],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [302] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[856],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [303] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[858],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [304] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[859],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [305] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[860],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [306] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[861],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [307] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[862],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [308] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[27],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[779],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [309] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[27],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[777],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [310] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[27],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[775],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [311] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[27],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[773],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [312] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[811],
    /* return matcher indices */ &kMatcherIndices[226],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [313] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[810],
    /* return matcher indices */ &kMatcherIndices[45],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [314] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[863],
    /* return matcher indices */ &kMatcherIndices[168],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [315] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[864],
    /* return matcher indices */ &kMatcherIndices[99],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [316] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[938],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [317] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[956],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [318] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[960],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [319] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[994],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [320] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[1000],
    /* return matcher indices */ &kMatcherIndices[35],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [321] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[1015],
    /* return matcher indices */ &kMatcherIndices[35],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [322] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[1014],
    /* return matcher indices */ &kMatcherIndices[35],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [323] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[1009],
    /* return matcher indices */ &kMatcherIndices[35],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [324] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[24],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[1003],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::asin,
  },
  {
    /* [325] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[24],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[1002],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::asin,
  },
  {
    /* [326] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[24],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[996],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::asinh,
  },
  {
    /* [327] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[24],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[990],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::asinh,
  },
  {
    /* [328] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[755],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [329] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[753],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [330] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[879],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [331] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[880],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [332] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[24],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[984],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::atan,
  },
  {
    /* [333] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[24],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[973],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::atan,
  },
  {
    /* [334] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[24],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[613],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::atan2,
  },
  {
    /* [335] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[24],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[615],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::atan2,
  },
  {
    /* [336] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[26],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[881],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [337] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[26],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[899],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [338] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[900],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [339] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[901],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [340] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[902],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [341] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[903],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [342] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[813],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [343] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[812],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [344] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[904],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [345] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[905],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [346] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[906],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [347] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[907],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [348] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[908],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [349] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[909],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [350] */
    /* num parameters */ 3,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[573],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [351] */
    /* num parameters */ 3,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[576],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [352] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[910],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [353] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[911],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [354] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[683],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [355] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[681],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [356] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[24],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[970],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::atanh,
  },
  {
    /* [357] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[24],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[959],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::atanh,
  },
  {
    /* [358] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[27],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[916],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [359] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[27],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[935],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [360] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[869],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [361] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[997],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [362] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[867],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [363] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[855],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [364] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[985],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [365] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[976],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [366] */
    /* num parameters */ 3,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[23],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[456],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::clamp,
  },
  {
    /* [367] */
    /* num parameters */ 3,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[23],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[522],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::clamp,
  },
  {
    /* [368] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[854],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [369] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[853],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [370] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[852],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [371] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[851],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [372] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[26],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[850],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [373] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[26],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[849],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [374] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[26],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[848],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [375] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[26],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[847],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [376] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[26],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[846],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [377] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[26],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[845],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [378] */
    /* num parameters */ 3,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[507],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [379] */
    /* num parameters */ 3,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[501],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [380] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[815],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [381] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[814],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [382] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[26],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[817],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [383] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[26],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[816],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [384] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[26],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[819],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [385] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[26],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[818],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [386] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[26],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[629],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [387] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[26],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[625],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [388] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[0],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[883],
    /* return matcher indices */ &kMatcherIndices[44],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [389] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[882],
    /* return matcher indices */ &kMatcherIndices[44],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [390] */
    /* num parameters */ 3,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[26],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[567],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [391] */
    /* num parameters */ 3,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[26],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[558],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [392] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[821],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [393] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[820],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [394] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[823],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [395] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[822],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [396] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[825],
    /* return matcher indices */ &kMatcherIndices[38],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
    /* const eval */ nullptr,
  },
  {
    /* [397] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[824],
    /* return matcher indices */ &kMatcherIndices[36],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
    /* const eval */ nullptr,
  },
  {
    /* [398] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[809],
    /* return matcher indices */ &kMatcherIndices[38],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
    /* const eval */ nullptr,
  },
  {
    /* [399] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[922],
    /* return matcher indices */ &kMatcherIndices[36],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
    /* const eval */ nullptr,
  },
  {
    /* [400] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[829],
    /* return matcher indices */ &kMatcherIndices[38],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
    /* const eval */ nullptr,
  },
  {
    /* [401] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[828],
    /* return matcher indices */ &kMatcherIndices[36],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
    /* const eval */ nullptr,
  },
  {
    /* [402] */
    /* num parameters */ 3,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[591],
    /* return matcher indices */ &kMatcherIndices[130],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [403] */
    /* num parameters */ 3,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[588],
    /* return matcher indices */ &kMatcherIndices[130],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [404] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[831],
    /* return matcher indices */ &kMatcherIndices[38],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
    /* const eval */ nullptr,
  },
  {
    /* [405] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[830],
    /* return matcher indices */ &kMatcherIndices[36],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
    /* const eval */ nullptr,
  },
  {
    /* [406] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[833],
    /* return matcher indices */ &kMatcherIndices[38],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
    /* const eval */ nullptr,
  },
  {
    /* [407] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[832],
    /* return matcher indices */ &kMatcherIndices[36],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
    /* const eval */ nullptr,
  },
  {
    /* [408] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[23],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[651],
    /* return matcher indices */ &kMatcherIndices[35],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpGreaterThanEqual,
  },
  {
    /* [409] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[27],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[647],
    /* return matcher indices */ &kMatcherIndices[33],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpGreaterThanEqual,
  },
  {
    /* [410] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[23],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[659],
    /* return matcher indices */ &kMatcherIndices[35],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpLessThanEqual,
  },
  {
    /* [411] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[23],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[655],
    /* return matcher indices */ &kMatcherIndices[33],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpLessThanEqual,
  },
  {
    /* [412] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[23],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[665],
    /* return matcher indices */ &kMatcherIndices[35],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpGreaterThan,
  },
  {
    /* [413] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[23],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[663],
    /* return matcher indices */ &kMatcherIndices[33],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpGreaterThan,
  },
  {
    /* [414] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[23],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[669],
    /* return matcher indices */ &kMatcherIndices[35],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpLessThan,
  },
  {
    /* [415] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[23],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[667],
    /* return matcher indices */ &kMatcherIndices[33],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpLessThan,
  },
  {
    /* [416] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[22],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[597],
    /* return matcher indices */ &kMatcherIndices[35],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpNotEqual,
  },
  {
    /* [417] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[22],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[671],
    /* return matcher indices */ &kMatcherIndices[33],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpNotEqual,
  },
  {
    /* [418] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[22],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[675],
    /* return matcher indices */ &kMatcherIndices[35],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpEqual,
  },
  {
    /* [419] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[22],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[673],
    /* return matcher indices */ &kMatcherIndices[33],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpEqual,
  },
  {
    /* [420] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[843],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [421] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[842],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [422] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[35],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[703],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpXor,
  },
  {
    /* [423] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[35],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[701],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpXor,
  },
  {
    /* [424] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[799],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [425] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[801],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [426] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[835],
    /* return matcher indices */ &kMatcherIndices[38],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
    /* const eval */ nullptr,
  },
  {
    /* [427] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[834],
    /* return matcher indices */ &kMatcherIndices[36],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline),
    /* const eval */ nullptr,
  },
  {
    /* [428] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[36],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[873],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpUnaryMinus,
  },
  {
    /* [429] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[36],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[874],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpUnaryMinus,
  },
  {
    /* [430] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[35],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[871],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpComplement,
  },
  {
    /* [431] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[35],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[872],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpComplement,
  },
  {
    /* [432] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[807],
    /* return matcher indices */ &kMatcherIndices[35],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpNot,
  },
  {
    /* [433] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[870],
    /* return matcher indices */ &kMatcherIndices[33],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::OpNot,
  },
  {
    /* [434] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[797],
    /* return matcher indices */ &kMatcherIndices[120],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [435] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[866],
    /* return matcher indices */ &kMatcherIndices[44],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [436] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[26],
    /* template numbers */ &kTemplateNumbers[9],
    /* parameters */ &kParameters[765],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [437] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[29],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[868],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ &ConstEval::Identity,
  },
  {
    /* [438] */
    /* num parameters */ 2,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[805],
    /* return matcher indices */ &kMatcherIndices[4],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [439] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[27],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[803],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [440] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[26],
    /* template numbers */ &kTemplateNumbers[9],
    /* parameters */ &kParameters[767],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [441] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[26],
    /* template numbers */ &kTemplateNumbers[9],
    /* parameters */ &kParameters[769],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [442] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[841],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [443] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[26],
    /* template numbers */ &kTemplateNumbers[9],
    /* parameters */ &kParameters[771],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [444] */
    /* num parameters */ 2,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[679],
    /* return matcher indices */ &kMatcherIndices[35],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [445] */
    /* num parameters */ 2,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[677],
    /* return matcher indices */ &kMatcherIndices[35],
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [446] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[26],
    /* template numbers */ &kTemplateNumbers[9],
    /* parameters */ &kParameters[781],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [447] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[26],
    /* template numbers */ &kTemplateNumbers[9],
    /* parameters */ &kParameters[783],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [448] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[26],
    /* template numbers */ &kTemplateNumbers[9],
    /* parameters */ &kParameters[785],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [449] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[26],
    /* template numbers */ &kTemplateNumbers[9],
    /* parameters */ &kParameters[787],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [450] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[26],
    /* template numbers */ &kTemplateNumbers[9],
    /* parameters */ &kParameters[789],
    /* return matcher indices */ nullptr,
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [451] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[26],
    /* template numbers */ &kTemplateNumbers[9],
    /* parameters */ &kParameters[857],
    /* return matcher indices */ &kMatcherIndices[1],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [452] */
    /* num parameters */ 2,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[599],
    /* return matcher indices */ &kMatcherIndices[44],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [453] */
    /* num parameters */ 3,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[26],
    /* template numbers */ &kTemplateNumbers[9],
    /* parameters */ &kParameters[465],
    /* return matcher indices */ &kMatcherIndices[228],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [454] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[961],
    /* return matcher indices */ &kMatcherIndices[130],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [455] */
    /* num parameters */ 0,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[1017],
    /* return matcher indices */ nullptr,
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [456] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[971],
    /* return matcher indices */ &kMatcherIndices[130],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [457] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[972],
    /* return matcher indices */ &kMatcherIndices[102],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [458] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[974],
    /* return matcher indices */ &kMatcherIndices[102],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [459] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[975],
    /* return matcher indices */ &kMatcherIndices[102],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [460] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 2,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[6],
    /* parameters */ &kParameters[991],
    /* return matcher indices */ &kMatcherIndices[14],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [461] */
    /* num parameters */ 0,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[1017],
    /* return matcher indices */ nullptr,
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [462] */
    /* num parameters */ 3,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[525],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [463] */
    /* num parameters */ 2,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[747],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [464] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[878],
    /* return matcher indices */ &kMatcherIndices[44],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [465] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[877],
    /* return matcher indices */ &kMatcherIndices[44],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [466] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[29],
    /* template numbers */ &kTemplateNumbers[8],
    /* parameters */ &kParameters[1008],
    /* return matcher indices */ &kMatcherIndices[44],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [467] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[876],
    /* return matcher indices */ &kMatcherIndices[44],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [468] */
    /* num parameters */ 1,
    /* num template types */ 0,
    /* num template numbers */ 0,
    /* template types */ &kTemplateTypes[38],
    /* template numbers */ &kTemplateNumbers[10],
    /* parameters */ &kParameters[875],
    /* return matcher indices */ &kMatcherIndices[44],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [469] */
    /* num parameters */ 3,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[555],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
  {
    /* [470] */
    /* num parameters */ 1,
    /* num template types */ 1,
    /* num template numbers */ 1,
    /* template types */ &kTemplateTypes[25],
    /* template numbers */ &kTemplateNumbers[5],
    /* parameters */ &kParameters[865],
    /* return matcher indices */ &kMatcherIndices[30],
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* const eval */ nullptr,
  },
};

constexpr IntrinsicInfo kBuiltins[] = {
  {
    /* [0] */
    /* fn abs<T : fiu32_f16>(T) -> T */
    /* fn abs<N : num, T : fiu32_f16>(vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[358],
  },
  {
    /* [1] */
    /* fn acos<T : f32_f16>(T) -> T */
    /* fn acos<N : num, T : f32_f16>(vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[316],
  },
  {
    /* [2] */
    /* fn acosh<T : f32_f16>(T) -> T */
    /* fn acosh<N : num, T : f32_f16>(vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[318],
  },
  {
    /* [3] */
    /* fn all(bool) -> bool */
    /* fn all<N : num>(vec<N, bool>) -> bool */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[320],
  },
  {
    /* [4] */
    /* fn any(bool) -> bool */
    /* fn any<N : num>(vec<N, bool>) -> bool */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[322],
  },
  {
    /* [5] */
    /* fn arrayLength<T, A : access>(ptr<storage, array<T>, A>) -> u32 */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[466],
  },
  {
    /* [6] */
    /* fn asin<T : fa_f32_f16>(T) -> T */
    /* fn asin<N : num, T : fa_f32_f16>(vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[324],
  },
  {
    /* [7] */
    /* fn asinh<T : fa_f32_f16>(T) -> T */
    /* fn asinh<N : num, T : fa_f32_f16>(vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[326],
  },
  {
    /* [8] */
    /* fn atan<T : fa_f32_f16>(T) -> T */
    /* fn atan<N : num, T : fa_f32_f16>(vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[332],
  },
  {
    /* [9] */
    /* fn atan2<T : fa_f32_f16>(T, T) -> T */
    /* fn atan2<T : fa_f32_f16, N : num>(vec<N, T>, vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[334],
  },
  {
    /* [10] */
    /* fn atanh<T : fa_f32_f16>(@test_value(0.5) T) -> T */
    /* fn atanh<N : num, T : fa_f32_f16>(@test_value(0.5) vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[356],
  },
  {
    /* [11] */
    /* fn ceil<T : f32_f16>(T) -> T */
    /* fn ceil<N : num, T : f32_f16>(vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[362],
  },
  {
    /* [12] */
    /* fn clamp<T : fia_fiu32_f16>(T, T, T) -> T */
    /* fn clamp<T : fia_fiu32_f16, N : num>(vec<N, T>, vec<N, T>, vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[366],
  },
  {
    /* [13] */
    /* fn cos<T : f32_f16>(T) -> T */
    /* fn cos<N : num, T : f32_f16>(vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[368],
  },
  {
    /* [14] */
    /* fn cosh<T : f32_f16>(T) -> T */
    /* fn cosh<N : num, T : f32_f16>(vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[370],
  },
  {
    /* [15] */
    /* fn countLeadingZeros<T : iu32>(T) -> T */
    /* fn countLeadingZeros<N : num, T : iu32>(vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[372],
  },
  {
    /* [16] */
    /* fn countOneBits<T : iu32>(T) -> T */
    /* fn countOneBits<N : num, T : iu32>(vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[374],
  },
  {
    /* [17] */
    /* fn countTrailingZeros<T : iu32>(T) -> T */
    /* fn countTrailingZeros<N : num, T : iu32>(vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[376],
  },
  {
    /* [18] */
    /* fn cross<T : f32_f16>(vec3<T>, vec3<T>) -> vec3<T> */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[434],
  },
  {
    /* [19] */
    /* fn degrees<T : f32_f16>(T) -> T */
    /* fn degrees<N : num, T : f32_f16>(vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[420],
  },
  {
    /* [20] */
    /* fn determinant<N : num, T : f32_f16>(mat<N, N, T>) -> T */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[442],
  },
  {
    /* [21] */
    /* fn distance<T : f32_f16>(T, T) -> T */
    /* fn distance<N : num, T : f32_f16>(vec<N, T>, vec<N, T>) -> T */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[424],
  },
  {
    /* [22] */
    /* fn dot<N : num, T : fiu32_f16>(vec<N, T>, vec<N, T>) -> T */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[439],
  },
  {
    /* [23] */
    /* fn dot4I8Packed(u32, u32) -> i32 */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[438],
  },
  {
    /* [24] */
    /* fn dot4U8Packed(u32, u32) -> u32 */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[452],
  },
  {
    /* [25] */
    /* fn dpdx(f32) -> f32 */
    /* fn dpdx<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[426],
  },
  {
    /* [26] */
    /* fn dpdxCoarse(f32) -> f32 */
    /* fn dpdxCoarse<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[406],
  },
  {
    /* [27] */
    /* fn dpdxFine(f32) -> f32 */
    /* fn dpdxFine<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[404],
  },
  {
    /* [28] */
    /* fn dpdy(f32) -> f32 */
    /* fn dpdy<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[400],
  },
  {
    /* [29] */
    /* fn dpdyCoarse(f32) -> f32 */
    /* fn dpdyCoarse<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[290],
  },
  {
    /* [30] */
    /* fn dpdyFine(f32) -> f32 */
    /* fn dpdyFine<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[396],
  },
  {
    /* [31] */
    /* fn exp<T : f32_f16>(T) -> T */
    /* fn exp<N : num, T : f32_f16>(vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[394],
  },
  {
    /* [32] */
    /* fn exp2<T : f32_f16>(T) -> T */
    /* fn exp2<N : num, T : f32_f16>(vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[392],
  },
  {
    /* [33] */
    /* fn extractBits<T : iu32>(T, u32, u32) -> T */
    /* fn extractBits<N : num, T : iu32>(vec<N, T>, u32, u32) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[390],
  },
  {
    /* [34] */
    /* fn faceForward<N : num, T : f32_f16>(vec<N, T>, vec<N, T>, vec<N, T>) -> vec<N, T> */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[469],
  },
  {
    /* [35] */
    /* fn firstLeadingBit<T : iu32>(T) -> T */
    /* fn firstLeadingBit<N : num, T : iu32>(vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[384],
  },
  {
    /* [36] */
    /* fn firstTrailingBit<T : iu32>(T) -> T */
    /* fn firstTrailingBit<N : num, T : iu32>(vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[382],
  },
  {
    /* [37] */
    /* fn floor<T : f32_f16>(T) -> T */
    /* fn floor<N : num, T : f32_f16>(vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[380],
  },
  {
    /* [38] */
    /* fn fma<T : f32_f16>(T, T, T) -> T */
    /* fn fma<N : num, T : f32_f16>(vec<N, T>, vec<N, T>, vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[378],
  },
  {
    /* [39] */
    /* fn fract<T : f32_f16>(T) -> T */
    /* fn fract<N : num, T : f32_f16>(vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[342],
  },
  {
    /* [40] */
    /* fn frexp<T : f32_f16>(T) -> __frexp_result<T> */
    /* fn frexp<N : num, T : f32_f16>(vec<N, T>) -> __frexp_result_vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[312],
  },
  {
    /* [41] */
    /* fn fwidth(f32) -> f32 */
    /* fn fwidth<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[398],
  },
  {
    /* [42] */
    /* fn fwidthCoarse(f32) -> f32 */
    /* fn fwidthCoarse<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[292],
  },
  {
    /* [43] */
    /* fn fwidthFine(f32) -> f32 */
    /* fn fwidthFine<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[294],
  },
  {
    /* [44] */
    /* fn insertBits<T : iu32>(T, T, u32, u32) -> T */
    /* fn insertBits<N : num, T : iu32>(vec<N, T>, vec<N, T>, u32, u32) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[296],
  },
  {
    /* [45] */
    /* fn inverseSqrt<T : f32_f16>(T) -> T */
    /* fn inverseSqrt<N : num, T : f32_f16>(vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[298],
  },
  {
    /* [46] */
    /* fn ldexp<T : f32_f16>(T, i32) -> T */
    /* fn ldexp<N : num, T : f32_f16>(vec<N, T>, vec<N, i32>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[300],
  },
  {
    /* [47] */
    /* fn length<T : f32_f16>(T) -> T */
    /* fn length<N : num, T : f32_f16>(vec<N, T>) -> T */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[302],
  },
  {
    /* [48] */
    /* fn log<T : f32_f16>(T) -> T */
    /* fn log<N : num, T : f32_f16>(vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[304],
  },
  {
    /* [49] */
    /* fn log2<T : f32_f16>(T) -> T */
    /* fn log2<N : num, T : f32_f16>(vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[306],
  },
  {
    /* [50] */
    /* fn max<T : fiu32_f16>(T, T) -> T */
    /* fn max<N : num, T : fiu32_f16>(vec<N, T>, vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[308],
  },
  {
    /* [51] */
    /* fn min<T : fiu32_f16>(T, T) -> T */
    /* fn min<N : num, T : fiu32_f16>(vec<N, T>, vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[310],
  },
  {
    /* [52] */
    /* fn mix<T : f32_f16>(T, T, T) -> T */
    /* fn mix<N : num, T : f32_f16>(vec<N, T>, vec<N, T>, vec<N, T>) -> vec<N, T> */
    /* fn mix<N : num, T : f32_f16>(vec<N, T>, vec<N, T>, T) -> vec<N, T> */
    /* num overloads */ 3,
    /* overloads */ &kOverloads[267],
  },
  {
    /* [53] */
    /* fn modf<T : f32_f16>(T) -> __modf_result<T> */
    /* fn modf<N : num, T : f32_f16>(vec<N, T>) -> __modf_result_vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[314],
  },
  {
    /* [54] */
    /* fn normalize<N : num, T : f32_f16>(vec<N, T>) -> vec<N, T> */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[470],
  },
  {
    /* [55] */
    /* fn pack2x16float(vec2<f32>) -> u32 */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[435],
  },
  {
    /* [56] */
    /* fn pack2x16snorm(vec2<f32>) -> u32 */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[468],
  },
  {
    /* [57] */
    /* fn pack2x16unorm(vec2<f32>) -> u32 */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[467],
  },
  {
    /* [58] */
    /* fn pack4x8snorm(vec4<f32>) -> u32 */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[465],
  },
  {
    /* [59] */
    /* fn pack4x8unorm(vec4<f32>) -> u32 */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[464],
  },
  {
    /* [60] */
    /* fn pow<T : f32_f16>(T, T) -> T */
    /* fn pow<N : num, T : f32_f16>(vec<N, T>, vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[328],
  },
  {
    /* [61] */
    /* fn radians<T : f32_f16>(T) -> T */
    /* fn radians<N : num, T : f32_f16>(vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[330],
  },
  {
    /* [62] */
    /* fn reflect<N : num, T : f32_f16>(vec<N, T>, vec<N, T>) -> vec<N, T> */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[463],
  },
  {
    /* [63] */
    /* fn refract<N : num, T : f32_f16>(vec<N, T>, vec<N, T>, T) -> vec<N, T> */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[462],
  },
  {
    /* [64] */
    /* fn reverseBits<T : iu32>(T) -> T */
    /* fn reverseBits<N : num, T : iu32>(vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[336],
  },
  {
    /* [65] */
    /* fn round<T : f32_f16>(T) -> T */
    /* fn round<N : num, T : f32_f16>(vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[338],
  },
  {
    /* [66] */
    /* fn saturate<T : f32_f16>(T) -> T */
    /* fn saturate<T : f32_f16, N : num>(vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[340],
  },
  {
    /* [67] */
    /* fn select<T : scalar>(T, T, bool) -> T */
    /* fn select<T : scalar, N : num>(vec<N, T>, vec<N, T>, bool) -> vec<N, T> */
    /* fn select<N : num, T : scalar>(vec<N, T>, vec<N, T>, vec<N, bool>) -> vec<N, T> */
    /* num overloads */ 3,
    /* overloads */ &kOverloads[285],
  },
  {
    /* [68] */
    /* fn sign<T : f32_f16>(T) -> T */
    /* fn sign<N : num, T : f32_f16>(vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[344],
  },
  {
    /* [69] */
    /* fn sin<T : f32_f16>(T) -> T */
    /* fn sin<N : num, T : f32_f16>(vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[346],
  },
  {
    /* [70] */
    /* fn sinh<T : f32_f16>(T) -> T */
    /* fn sinh<N : num, T : f32_f16>(vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[348],
  },
  {
    /* [71] */
    /* fn smoothstep<T : f32_f16>(T, T, T) -> T */
    /* fn smoothstep<N : num, T : f32_f16>(vec<N, T>, vec<N, T>, vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[350],
  },
  {
    /* [72] */
    /* fn sqrt<T : f32_f16>(T) -> T */
    /* fn sqrt<N : num, T : f32_f16>(vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[352],
  },
  {
    /* [73] */
    /* fn step<T : f32_f16>(T, T) -> T */
    /* fn step<N : num, T : f32_f16>(vec<N, T>, vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[354],
  },
  {
    /* [74] */
    /* fn storageBarrier() */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[461],
  },
  {
    /* [75] */
    /* fn tan<T : f32_f16>(T) -> T */
    /* fn tan<N : num, T : f32_f16>(vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[288],
  },
  {
    /* [76] */
    /* fn tanh<T : f32_f16>(T) -> T */
    /* fn tanh<N : num, T : f32_f16>(vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[360],
  },
  {
    /* [77] */
    /* fn transpose<M : num, N : num, T : f32_f16>(mat<M, N, T>) -> mat<N, M, T> */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[460],
  },
  {
    /* [78] */
    /* fn trunc<T : f32_f16>(T) -> T */
    /* fn trunc<N : num, T : f32_f16>(vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[364],
  },
  {
    /* [79] */
    /* fn unpack2x16float(u32) -> vec2<f32> */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[459],
  },
  {
    /* [80] */
    /* fn unpack2x16snorm(u32) -> vec2<f32> */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[458],
  },
  {
    /* [81] */
    /* fn unpack2x16unorm(u32) -> vec2<f32> */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[457],
  },
  {
    /* [82] */
    /* fn unpack4x8snorm(u32) -> vec4<f32> */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[456],
  },
  {
    /* [83] */
    /* fn unpack4x8unorm(u32) -> vec4<f32> */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[454],
  },
  {
    /* [84] */
    /* fn workgroupBarrier() */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[455],
  },
  {
    /* [85] */
    /* fn textureDimensions<T : fiu32>(texture: texture_1d<T>) -> u32 */
    /* fn textureDimensions<T : fiu32, L : iu32>(texture: texture_1d<T>, level: L) -> u32 */
    /* fn textureDimensions<T : fiu32>(texture: texture_2d<T>) -> vec2<u32> */
    /* fn textureDimensions<T : fiu32, L : iu32>(texture: texture_2d<T>, level: L) -> vec2<u32> */
    /* fn textureDimensions<T : fiu32>(texture: texture_2d_array<T>) -> vec2<u32> */
    /* fn textureDimensions<T : fiu32, L : iu32>(texture: texture_2d_array<T>, level: L) -> vec2<u32> */
    /* fn textureDimensions<T : fiu32>(texture: texture_3d<T>) -> vec3<u32> */
    /* fn textureDimensions<T : fiu32, L : iu32>(texture: texture_3d<T>, level: L) -> vec3<u32> */
    /* fn textureDimensions<T : fiu32>(texture: texture_cube<T>) -> vec2<u32> */
    /* fn textureDimensions<T : fiu32, L : iu32>(texture: texture_cube<T>, level: L) -> vec2<u32> */
    /* fn textureDimensions<T : fiu32>(texture: texture_cube_array<T>) -> vec2<u32> */
    /* fn textureDimensions<T : fiu32, L : iu32>(texture: texture_cube_array<T>, level: L) -> vec2<u32> */
    /* fn textureDimensions<T : fiu32>(texture: texture_multisampled_2d<T>) -> vec2<u32> */
    /* fn textureDimensions(texture: texture_depth_2d) -> vec2<u32> */
    /* fn textureDimensions<L : iu32>(texture: texture_depth_2d, level: L) -> vec2<u32> */
    /* fn textureDimensions(texture: texture_depth_2d_array) -> vec2<u32> */
    /* fn textureDimensions<L : iu32>(texture: texture_depth_2d_array, level: L) -> vec2<u32> */
    /* fn textureDimensions(texture: texture_depth_cube) -> vec2<u32> */
    /* fn textureDimensions<L : iu32>(texture: texture_depth_cube, level: L) -> vec2<u32> */
    /* fn textureDimensions(texture: texture_depth_cube_array) -> vec2<u32> */
    /* fn textureDimensions<L : iu32>(texture: texture_depth_cube_array, level: L) -> vec2<u32> */
    /* fn textureDimensions(texture: texture_depth_multisampled_2d) -> vec2<u32> */
    /* fn textureDimensions<F : texel_format, A : write>(texture: texture_storage_1d<F, A>) -> u32 */
    /* fn textureDimensions<F : texel_format, A : write>(texture: texture_storage_2d<F, A>) -> vec2<u32> */
    /* fn textureDimensions<F : texel_format, A : write>(texture: texture_storage_2d_array<F, A>) -> vec2<u32> */
    /* fn textureDimensions<F : texel_format, A : write>(texture: texture_storage_3d<F, A>) -> vec3<u32> */
    /* fn textureDimensions(texture: texture_external) -> vec2<u32> */
    /* num overloads */ 27,
    /* overloads */ &kOverloads[0],
  },
  {
    /* [86] */
    /* fn textureGather<T : fiu32, C : iu32>(@const component: C, texture: texture_2d<T>, sampler: sampler, coords: vec2<f32>) -> vec4<T> */
    /* fn textureGather<T : fiu32, C : iu32>(@const component: C, texture: texture_2d<T>, sampler: sampler, coords: vec2<f32>, @const offset: vec2<i32>) -> vec4<T> */
    /* fn textureGather<T : fiu32, C : iu32, A : iu32>(@const component: C, texture: texture_2d_array<T>, sampler: sampler, coords: vec2<f32>, array_index: A) -> vec4<T> */
    /* fn textureGather<T : fiu32, C : iu32, A : iu32>(@const component: C, texture: texture_2d_array<T>, sampler: sampler, coords: vec2<f32>, array_index: A, @const offset: vec2<i32>) -> vec4<T> */
    /* fn textureGather<T : fiu32, C : iu32>(@const component: C, texture: texture_cube<T>, sampler: sampler, coords: vec3<f32>) -> vec4<T> */
    /* fn textureGather<T : fiu32, C : iu32, A : iu32>(@const component: C, texture: texture_cube_array<T>, sampler: sampler, coords: vec3<f32>, array_index: A) -> vec4<T> */
    /* fn textureGather(texture: texture_depth_2d, sampler: sampler, coords: vec2<f32>) -> vec4<f32> */
    /* fn textureGather(texture: texture_depth_2d, sampler: sampler, coords: vec2<f32>, @const offset: vec2<i32>) -> vec4<f32> */
    /* fn textureGather<A : iu32>(texture: texture_depth_2d_array, sampler: sampler, coords: vec2<f32>, array_index: A) -> vec4<f32> */
    /* fn textureGather<A : iu32>(texture: texture_depth_2d_array, sampler: sampler, coords: vec2<f32>, array_index: A, @const offset: vec2<i32>) -> vec4<f32> */
    /* fn textureGather(texture: texture_depth_cube, sampler: sampler, coords: vec3<f32>) -> vec4<f32> */
    /* fn textureGather<A : iu32>(texture: texture_depth_cube_array, sampler: sampler, coords: vec3<f32>, array_index: A) -> vec4<f32> */
    /* num overloads */ 12,
    /* overloads */ &kOverloads[84],
  },
  {
    /* [87] */
    /* fn textureGatherCompare(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2<f32>, depth_ref: f32) -> vec4<f32> */
    /* fn textureGatherCompare(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2<f32>, depth_ref: f32, @const offset: vec2<i32>) -> vec4<f32> */
    /* fn textureGatherCompare<A : iu32>(texture: texture_depth_2d_array, sampler: sampler_comparison, coords: vec2<f32>, array_index: A, depth_ref: f32) -> vec4<f32> */
    /* fn textureGatherCompare<A : iu32>(texture: texture_depth_2d_array, sampler: sampler_comparison, coords: vec2<f32>, array_index: A, depth_ref: f32, @const offset: vec2<i32>) -> vec4<f32> */
    /* fn textureGatherCompare(texture: texture_depth_cube, sampler: sampler_comparison, coords: vec3<f32>, depth_ref: f32) -> vec4<f32> */
    /* fn textureGatherCompare<A : iu32>(texture: texture_depth_cube_array, sampler: sampler_comparison, coords: vec3<f32>, array_index: A, depth_ref: f32) -> vec4<f32> */
    /* num overloads */ 6,
    /* overloads */ &kOverloads[184],
  },
  {
    /* [88] */
    /* fn textureNumLayers<T : fiu32>(texture: texture_2d_array<T>) -> u32 */
    /* fn textureNumLayers<T : fiu32>(texture: texture_cube_array<T>) -> u32 */
    /* fn textureNumLayers(texture: texture_depth_2d_array) -> u32 */
    /* fn textureNumLayers(texture: texture_depth_cube_array) -> u32 */
    /* fn textureNumLayers<F : texel_format, A : write>(texture: texture_storage_2d_array<F, A>) -> u32 */
    /* num overloads */ 5,
    /* overloads */ &kOverloads[242],
  },
  {
    /* [89] */
    /* fn textureNumLevels<T : fiu32>(texture: texture_1d<T>) -> u32 */
    /* fn textureNumLevels<T : fiu32>(texture: texture_2d<T>) -> u32 */
    /* fn textureNumLevels<T : fiu32>(texture: texture_2d_array<T>) -> u32 */
    /* fn textureNumLevels<T : fiu32>(texture: texture_3d<T>) -> u32 */
    /* fn textureNumLevels<T : fiu32>(texture: texture_cube<T>) -> u32 */
    /* fn textureNumLevels<T : fiu32>(texture: texture_cube_array<T>) -> u32 */
    /* fn textureNumLevels(texture: texture_depth_2d) -> u32 */
    /* fn textureNumLevels(texture: texture_depth_2d_array) -> u32 */
    /* fn textureNumLevels(texture: texture_depth_cube) -> u32 */
    /* fn textureNumLevels(texture: texture_depth_cube_array) -> u32 */
    /* num overloads */ 10,
    /* overloads */ &kOverloads[107],
  },
  {
    /* [90] */
    /* fn textureNumSamples<T : fiu32>(texture: texture_multisampled_2d<T>) -> u32 */
    /* fn textureNumSamples(texture: texture_depth_multisampled_2d) -> u32 */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[388],
  },
  {
    /* [91] */
    /* fn textureSample(texture: texture_1d<f32>, sampler: sampler, coords: f32) -> vec4<f32> */
    /* fn textureSample(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>) -> vec4<f32> */
    /* fn textureSample(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, @const offset: vec2<i32>) -> vec4<f32> */
    /* fn textureSample<A : iu32>(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: A) -> vec4<f32> */
    /* fn textureSample<A : iu32>(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: A, @const offset: vec2<i32>) -> vec4<f32> */
    /* fn textureSample(texture: texture_3d<f32>, sampler: sampler, coords: vec3<f32>) -> vec4<f32> */
    /* fn textureSample(texture: texture_3d<f32>, sampler: sampler, coords: vec3<f32>, @const offset: vec3<i32>) -> vec4<f32> */
    /* fn textureSample(texture: texture_cube<f32>, sampler: sampler, coords: vec3<f32>) -> vec4<f32> */
    /* fn textureSample<A : iu32>(texture: texture_cube_array<f32>, sampler: sampler, coords: vec3<f32>, array_index: A) -> vec4<f32> */
    /* fn textureSample(texture: texture_depth_2d, sampler: sampler, coords: vec2<f32>) -> f32 */
    /* fn textureSample(texture: texture_depth_2d, sampler: sampler, coords: vec2<f32>, @const offset: vec2<i32>) -> f32 */
    /* fn textureSample<A : iu32>(texture: texture_depth_2d_array, sampler: sampler, coords: vec2<f32>, array_index: A) -> f32 */
    /* fn textureSample<A : iu32>(texture: texture_depth_2d_array, sampler: sampler, coords: vec2<f32>, array_index: A, @const offset: vec2<i32>) -> f32 */
    /* fn textureSample(texture: texture_depth_cube, sampler: sampler, coords: vec3<f32>) -> f32 */
    /* fn textureSample<A : iu32>(texture: texture_depth_cube_array, sampler: sampler, coords: vec3<f32>, array_index: A) -> f32 */
    /* num overloads */ 15,
    /* overloads */ &kOverloads[27],
  },
  {
    /* [92] */
    /* fn textureSampleBias(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, bias: f32) -> vec4<f32> */
    /* fn textureSampleBias(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, bias: f32, @const offset: vec2<i32>) -> vec4<f32> */
    /* fn textureSampleBias<A : iu32>(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: A, bias: f32) -> vec4<f32> */
    /* fn textureSampleBias<A : iu32>(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: A, bias: f32, @const offset: vec2<i32>) -> vec4<f32> */
    /* fn textureSampleBias(texture: texture_3d<f32>, sampler: sampler, coords: vec3<f32>, bias: f32) -> vec4<f32> */
    /* fn textureSampleBias(texture: texture_3d<f32>, sampler: sampler, coords: vec3<f32>, bias: f32, @const offset: vec3<i32>) -> vec4<f32> */
    /* fn textureSampleBias(texture: texture_cube<f32>, sampler: sampler, coords: vec3<f32>, bias: f32) -> vec4<f32> */
    /* fn textureSampleBias<A : iu32>(texture: texture_cube_array<f32>, sampler: sampler, coords: vec3<f32>, array_index: A, bias: f32) -> vec4<f32> */
    /* num overloads */ 8,
    /* overloads */ &kOverloads[152],
  },
  {
    /* [93] */
    /* fn textureSampleCompare(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2<f32>, depth_ref: f32) -> f32 */
    /* fn textureSampleCompare(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2<f32>, depth_ref: f32, @const offset: vec2<i32>) -> f32 */
    /* fn textureSampleCompare<A : iu32>(texture: texture_depth_2d_array, sampler: sampler_comparison, coords: vec2<f32>, array_index: A, depth_ref: f32) -> f32 */
    /* fn textureSampleCompare<A : iu32>(texture: texture_depth_2d_array, sampler: sampler_comparison, coords: vec2<f32>, array_index: A, depth_ref: f32, @const offset: vec2<i32>) -> f32 */
    /* fn textureSampleCompare(texture: texture_depth_cube, sampler: sampler_comparison, coords: vec3<f32>, depth_ref: f32) -> f32 */
    /* fn textureSampleCompare<A : iu32>(texture: texture_depth_cube_array, sampler: sampler_comparison, coords: vec3<f32>, array_index: A, depth_ref: f32) -> f32 */
    /* num overloads */ 6,
    /* overloads */ &kOverloads[202],
  },
  {
    /* [94] */
    /* fn textureSampleCompareLevel(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2<f32>, depth_ref: f32) -> f32 */
    /* fn textureSampleCompareLevel(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2<f32>, depth_ref: f32, @const offset: vec2<i32>) -> f32 */
    /* fn textureSampleCompareLevel<A : iu32>(texture: texture_depth_2d_array, sampler: sampler_comparison, coords: vec2<f32>, array_index: A, depth_ref: f32) -> f32 */
    /* fn textureSampleCompareLevel<A : iu32>(texture: texture_depth_2d_array, sampler: sampler_comparison, coords: vec2<f32>, array_index: A, depth_ref: f32, @const offset: vec2<i32>) -> f32 */
    /* fn textureSampleCompareLevel(texture: texture_depth_cube, sampler: sampler_comparison, coords: vec3<f32>, depth_ref: f32) -> f32 */
    /* fn textureSampleCompareLevel<A : iu32>(texture: texture_depth_cube_array, sampler: sampler_comparison, coords: vec3<f32>, array_index: A, depth_ref: f32) -> f32 */
    /* num overloads */ 6,
    /* overloads */ &kOverloads[160],
  },
  {
    /* [95] */
    /* fn textureSampleGrad(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, ddx: vec2<f32>, ddy: vec2<f32>) -> vec4<f32> */
    /* fn textureSampleGrad(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, ddx: vec2<f32>, ddy: vec2<f32>, @const offset: vec2<i32>) -> vec4<f32> */
    /* fn textureSampleGrad<A : iu32>(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: A, ddx: vec2<f32>, ddy: vec2<f32>) -> vec4<f32> */
    /* fn textureSampleGrad<A : iu32>(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: A, ddx: vec2<f32>, ddy: vec2<f32>, @const offset: vec2<i32>) -> vec4<f32> */
    /* fn textureSampleGrad(texture: texture_3d<f32>, sampler: sampler, coords: vec3<f32>, ddx: vec3<f32>, ddy: vec3<f32>) -> vec4<f32> */
    /* fn textureSampleGrad(texture: texture_3d<f32>, sampler: sampler, coords: vec3<f32>, ddx: vec3<f32>, ddy: vec3<f32>, @const offset: vec3<i32>) -> vec4<f32> */
    /* fn textureSampleGrad(texture: texture_cube<f32>, sampler: sampler, coords: vec3<f32>, ddx: vec3<f32>, ddy: vec3<f32>) -> vec4<f32> */
    /* fn textureSampleGrad<A : iu32>(texture: texture_cube_array<f32>, sampler: sampler, coords: vec3<f32>, array_index: A, ddx: vec3<f32>, ddy: vec3<f32>) -> vec4<f32> */
    /* num overloads */ 8,
    /* overloads */ &kOverloads[144],
  },
  {
    /* [96] */
    /* fn textureSampleLevel(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, level: f32) -> vec4<f32> */
    /* fn textureSampleLevel(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, level: f32, @const offset: vec2<i32>) -> vec4<f32> */
    /* fn textureSampleLevel<A : iu32>(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: A, level: f32) -> vec4<f32> */
    /* fn textureSampleLevel<A : iu32>(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: A, level: f32, @const offset: vec2<i32>) -> vec4<f32> */
    /* fn textureSampleLevel(texture: texture_3d<f32>, sampler: sampler, coords: vec3<f32>, level: f32) -> vec4<f32> */
    /* fn textureSampleLevel(texture: texture_3d<f32>, sampler: sampler, coords: vec3<f32>, level: f32, @const offset: vec3<i32>) -> vec4<f32> */
    /* fn textureSampleLevel(texture: texture_cube<f32>, sampler: sampler, coords: vec3<f32>, level: f32) -> vec4<f32> */
    /* fn textureSampleLevel<A : iu32>(texture: texture_cube_array<f32>, sampler: sampler, coords: vec3<f32>, array_index: A, level: f32) -> vec4<f32> */
    /* fn textureSampleLevel<L : iu32>(texture: texture_depth_2d, sampler: sampler, coords: vec2<f32>, level: L) -> f32 */
    /* fn textureSampleLevel<L : iu32>(texture: texture_depth_2d, sampler: sampler, coords: vec2<f32>, level: L, @const offset: vec2<i32>) -> f32 */
    /* fn textureSampleLevel<A : iu32, L : iu32>(texture: texture_depth_2d_array, sampler: sampler, coords: vec2<f32>, array_index: A, level: L) -> f32 */
    /* fn textureSampleLevel<A : iu32, L : iu32>(texture: texture_depth_2d_array, sampler: sampler, coords: vec2<f32>, array_index: A, level: L, @const offset: vec2<i32>) -> f32 */
    /* fn textureSampleLevel<L : iu32>(texture: texture_depth_cube, sampler: sampler, coords: vec3<f32>, level: L) -> f32 */
    /* fn textureSampleLevel<A : iu32, L : iu32>(texture: texture_depth_cube_array, sampler: sampler, coords: vec3<f32>, array_index: A, level: L) -> f32 */
    /* fn textureSampleLevel(texture: texture_external, sampler: sampler, coords: vec2<f32>) -> vec4<f32> */
    /* num overloads */ 15,
    /* overloads */ &kOverloads[57],
  },
  {
    /* [97] */
    /* fn textureSampleBaseClampToEdge(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>) -> vec4<f32> */
    /* fn textureSampleBaseClampToEdge(texture: texture_external, sampler: sampler, coords: vec2<f32>) -> vec4<f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[402],
  },
  {
    /* [98] */
    /* fn textureStore<C : iu32>(texture: texture_storage_1d<f32_texel_format, write>, coords: C, value: vec4<f32>) */
    /* fn textureStore<C : iu32>(texture: texture_storage_2d<f32_texel_format, write>, coords: vec2<C>, value: vec4<f32>) */
    /* fn textureStore<C : iu32, A : iu32>(texture: texture_storage_2d_array<f32_texel_format, write>, coords: vec2<C>, array_index: A, value: vec4<f32>) */
    /* fn textureStore<C : iu32>(texture: texture_storage_3d<f32_texel_format, write>, coords: vec3<C>, value: vec4<f32>) */
    /* fn textureStore<C : iu32>(texture: texture_storage_1d<i32_texel_format, write>, coords: C, value: vec4<i32>) */
    /* fn textureStore<C : iu32>(texture: texture_storage_2d<i32_texel_format, write>, coords: vec2<C>, value: vec4<i32>) */
    /* fn textureStore<C : iu32, A : iu32>(texture: texture_storage_2d_array<i32_texel_format, write>, coords: vec2<C>, array_index: A, value: vec4<i32>) */
    /* fn textureStore<C : iu32>(texture: texture_storage_3d<i32_texel_format, write>, coords: vec3<C>, value: vec4<i32>) */
    /* fn textureStore<C : iu32>(texture: texture_storage_1d<u32_texel_format, write>, coords: C, value: vec4<u32>) */
    /* fn textureStore<C : iu32>(texture: texture_storage_2d<u32_texel_format, write>, coords: vec2<C>, value: vec4<u32>) */
    /* fn textureStore<C : iu32, A : iu32>(texture: texture_storage_2d_array<u32_texel_format, write>, coords: vec2<C>, array_index: A, value: vec4<u32>) */
    /* fn textureStore(texture: texture_storage_3d<u32_texel_format, write>, coords: vec3<i32>, value: vec4<u32>) */
    /* num overloads */ 12,
    /* overloads */ &kOverloads[72],
  },
  {
    /* [99] */
    /* fn textureLoad<T : fiu32, C : iu32, L : iu32>(texture: texture_1d<T>, coords: C, level: L) -> vec4<T> */
    /* fn textureLoad<T : fiu32, C : iu32, L : iu32>(texture: texture_2d<T>, coords: vec2<C>, level: L) -> vec4<T> */
    /* fn textureLoad<T : fiu32, C : iu32, A : iu32, L : iu32>(texture: texture_2d_array<T>, coords: vec2<C>, array_index: A, level: L) -> vec4<T> */
    /* fn textureLoad<T : fiu32, C : iu32, L : iu32>(texture: texture_3d<T>, coords: vec3<C>, level: L) -> vec4<T> */
    /* fn textureLoad<T : fiu32, C : iu32, S : iu32>(texture: texture_multisampled_2d<T>, coords: vec2<C>, sample_index: S) -> vec4<T> */
    /* fn textureLoad<C : iu32, L : iu32>(texture: texture_depth_2d, coords: vec2<C>, level: L) -> f32 */
    /* fn textureLoad<C : iu32, A : iu32, L : iu32>(texture: texture_depth_2d_array, coords: vec2<C>, array_index: A, level: L) -> f32 */
    /* fn textureLoad<C : iu32, S : iu32>(texture: texture_depth_multisampled_2d, coords: vec2<C>, sample_index: S) -> f32 */
    /* fn textureLoad<C : iu32>(texture: texture_external, coords: vec2<C>) -> vec4<f32> */
    /* num overloads */ 9,
    /* overloads */ &kOverloads[117],
  },
  {
    /* [100] */
    /* fn atomicLoad<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>) -> T */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[451],
  },
  {
    /* [101] */
    /* fn atomicStore<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[450],
  },
  {
    /* [102] */
    /* fn atomicAdd<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[449],
  },
  {
    /* [103] */
    /* fn atomicSub<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[448],
  },
  {
    /* [104] */
    /* fn atomicMax<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[447],
  },
  {
    /* [105] */
    /* fn atomicMin<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[446],
  },
  {
    /* [106] */
    /* fn atomicAnd<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[443],
  },
  {
    /* [107] */
    /* fn atomicOr<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[441],
  },
  {
    /* [108] */
    /* fn atomicXor<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[440],
  },
  {
    /* [109] */
    /* fn atomicExchange<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[436],
  },
  {
    /* [110] */
    /* fn atomicCompareExchangeWeak<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T, T) -> __atomic_compare_exchange_result<T> */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[453],
  },
  {
    /* [111] */
    /* fn _tint_materialize<T>(T) -> T */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[437],
  },
};

constexpr IntrinsicInfo kUnaryOperators[] = {
  {
    /* [0] */
    /* op !(bool) -> bool */
    /* op !<N : num>(vec<N, bool>) -> vec<N, bool> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[432],
  },
  {
    /* [1] */
    /* op ~<T : ia_iu32>(T) -> T */
    /* op ~<T : ia_iu32, N : num>(vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[430],
  },
  {
    /* [2] */
    /* op -<T : fia_fi32_f16>(T) -> T */
    /* op -<T : fia_fi32_f16, N : num>(vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[428],
  },
};
constexpr uint8_t kUnaryOperatorNot = 0;
constexpr uint8_t kUnaryOperatorComplement = 1;
constexpr uint8_t kUnaryOperatorMinus = 2;

constexpr IntrinsicInfo kBinaryOperators[] = {
  {
    /* [0] */
    /* op +<T : fia_fiu32_f16>(T, T) -> T */
    /* op +<T : fia_fiu32_f16, N : num>(vec<N, T>, vec<N, T>) -> vec<N, T> */
    /* op +<T : fia_fiu32_f16, N : num>(vec<N, T>, T) -> vec<N, T> */
    /* op +<T : fia_fiu32_f16, N : num>(T, vec<N, T>) -> vec<N, T> */
    /* op +<T : fa_f32_f16, N : num, M : num>(mat<N, M, T>, mat<N, M, T>) -> mat<N, M, T> */
    /* num overloads */ 5,
    /* overloads */ &kOverloads[232],
  },
  {
    /* [1] */
    /* op -<T : fia_fiu32_f16>(T, T) -> T */
    /* op -<T : fia_fiu32_f16, N : num>(vec<N, T>, vec<N, T>) -> vec<N, T> */
    /* op -<T : fia_fiu32_f16, N : num>(vec<N, T>, T) -> vec<N, T> */
    /* op -<T : fia_fiu32_f16, N : num>(T, vec<N, T>) -> vec<N, T> */
    /* op -<T : fa_f32_f16, N : num, M : num>(mat<N, M, T>, mat<N, M, T>) -> mat<N, M, T> */
    /* num overloads */ 5,
    /* overloads */ &kOverloads[237],
  },
  {
    /* [2] */
    /* op *<T : fia_fiu32_f16>(T, T) -> T */
    /* op *<T : fia_fiu32_f16, N : num>(vec<N, T>, vec<N, T>) -> vec<N, T> */
    /* op *<T : fia_fiu32_f16, N : num>(vec<N, T>, T) -> vec<N, T> */
    /* op *<T : fia_fiu32_f16, N : num>(T, vec<N, T>) -> vec<N, T> */
    /* op *<T : fa_f32_f16, N : num, M : num>(T, mat<N, M, T>) -> mat<N, M, T> */
    /* op *<T : fa_f32_f16, N : num, M : num>(mat<N, M, T>, T) -> mat<N, M, T> */
    /* op *<T : fa_f32_f16, C : num, R : num>(mat<C, R, T>, vec<C, T>) -> vec<R, T> */
    /* op *<T : fa_f32_f16, C : num, R : num>(vec<R, T>, mat<C, R, T>) -> vec<C, T> */
    /* op *<T : fa_f32_f16, K : num, C : num, R : num>(mat<K, R, T>, mat<C, K, T>) -> mat<C, R, T> */
    /* num overloads */ 9,
    /* overloads */ &kOverloads[126],
  },
  {
    /* [3] */
    /* op /<T : fia_fiu32_f16>(T, T) -> T */
    /* op /<T : fia_fiu32_f16, N : num>(vec<N, T>, vec<N, T>) -> vec<N, T> */
    /* op /<T : fia_fiu32_f16, N : num>(vec<N, T>, T) -> vec<N, T> */
    /* op /<T : fia_fiu32_f16, N : num>(T, vec<N, T>) -> vec<N, T> */
    /* num overloads */ 4,
    /* overloads */ &kOverloads[255],
  },
  {
    /* [4] */
    /* op %<T : fiu32_f16>(T, T) -> T */
    /* op %<T : fiu32_f16, N : num>(vec<N, T>, vec<N, T>) -> vec<N, T> */
    /* op %<T : fiu32_f16, N : num>(vec<N, T>, T) -> vec<N, T> */
    /* op %<T : fiu32_f16, N : num>(T, vec<N, T>) -> vec<N, T> */
    /* num overloads */ 4,
    /* overloads */ &kOverloads[251],
  },
  {
    /* [5] */
    /* op ^<T : ia_iu32>(T, T) -> T */
    /* op ^<T : ia_iu32, N : num>(vec<N, T>, vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[422],
  },
  {
    /* [6] */
    /* op &(bool, bool) -> bool */
    /* op &<N : num>(vec<N, bool>, vec<N, bool>) -> vec<N, bool> */
    /* op &<T : ia_iu32>(T, T) -> T */
    /* op &<T : ia_iu32, N : num>(vec<N, T>, vec<N, T>) -> vec<N, T> */
    /* num overloads */ 4,
    /* overloads */ &kOverloads[247],
  },
  {
    /* [7] */
    /* op |(bool, bool) -> bool */
    /* op |<N : num>(vec<N, bool>, vec<N, bool>) -> vec<N, bool> */
    /* op |<T : ia_iu32>(T, T) -> T */
    /* op |<T : ia_iu32, N : num>(vec<N, T>, vec<N, T>) -> vec<N, T> */
    /* num overloads */ 4,
    /* overloads */ &kOverloads[259],
  },
  {
    /* [8] */
    /* op &&(bool, bool) -> bool */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[444],
  },
  {
    /* [9] */
    /* op ||(bool, bool) -> bool */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[445],
  },
  {
    /* [10] */
    /* op ==<T : scalar>(T, T) -> bool */
    /* op ==<T : scalar, N : num>(vec<N, T>, vec<N, T>) -> vec<N, bool> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[418],
  },
  {
    /* [11] */
    /* op !=<T : scalar>(T, T) -> bool */
    /* op !=<T : scalar, N : num>(vec<N, T>, vec<N, T>) -> vec<N, bool> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[416],
  },
  {
    /* [12] */
    /* op <<T : fia_fiu32_f16>(T, T) -> bool */
    /* op <<T : fia_fiu32_f16, N : num>(vec<N, T>, vec<N, T>) -> vec<N, bool> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[414],
  },
  {
    /* [13] */
    /* op ><T : fia_fiu32_f16>(T, T) -> bool */
    /* op ><T : fia_fiu32_f16, N : num>(vec<N, T>, vec<N, T>) -> vec<N, bool> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[412],
  },
  {
    /* [14] */
    /* op <=<T : fia_fiu32_f16>(T, T) -> bool */
    /* op <=<T : fia_fiu32_f16, N : num>(vec<N, T>, vec<N, T>) -> vec<N, bool> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[410],
  },
  {
    /* [15] */
    /* op >=<T : fia_fiu32_f16>(T, T) -> bool */
    /* op >=<T : fiu32_f16, N : num>(vec<N, T>, vec<N, T>) -> vec<N, bool> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[408],
  },
  {
    /* [16] */
    /* op <<<T : iu32>(T, u32) -> T */
    /* op <<<T : iu32, N : num>(vec<N, T>, vec<N, u32>) -> vec<N, T> */
    /* op <<<T : ia>(T, u32) -> T */
    /* op <<<T : ia, N : num>(vec<N, T>, vec<N, u32>) -> vec<N, T> */
    /* num overloads */ 4,
    /* overloads */ &kOverloads[263],
  },
  {
    /* [17] */
    /* op >><T : iu32>(T, u32) -> T */
    /* op >><T : iu32, N : num>(vec<N, T>, vec<N, u32>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[386],
  },
};
constexpr uint8_t kBinaryOperatorPlus = 0;
constexpr uint8_t kBinaryOperatorMinus = 1;
constexpr uint8_t kBinaryOperatorStar = 2;
constexpr uint8_t kBinaryOperatorDivide = 3;
constexpr uint8_t kBinaryOperatorModulo = 4;
constexpr uint8_t kBinaryOperatorXor = 5;
constexpr uint8_t kBinaryOperatorAnd = 6;
constexpr uint8_t kBinaryOperatorOr = 7;
constexpr uint8_t kBinaryOperatorLogicalAnd = 8;
constexpr uint8_t kBinaryOperatorLogicalOr = 9;
constexpr uint8_t kBinaryOperatorEqual = 10;
constexpr uint8_t kBinaryOperatorNotEqual = 11;
constexpr uint8_t kBinaryOperatorLessThan = 12;
constexpr uint8_t kBinaryOperatorGreaterThan = 13;
constexpr uint8_t kBinaryOperatorLessThanEqual = 14;
constexpr uint8_t kBinaryOperatorGreaterThanEqual = 15;
constexpr uint8_t kBinaryOperatorShiftLeft = 16;
constexpr uint8_t kBinaryOperatorShiftRight = 17;

constexpr IntrinsicInfo kInitializersAndConverters[] = {
  {
    /* [0] */
    /* init i32() -> i32 */
    /* init i32(i32) -> i32 */
    /* conv i32<T : scalar_no_i32>(T) -> i32 */
    /* num overloads */ 3,
    /* overloads */ &kOverloads[276],
  },
  {
    /* [1] */
    /* init u32() -> u32 */
    /* init u32(u32) -> u32 */
    /* conv u32<T : scalar_no_u32>(T) -> u32 */
    /* num overloads */ 3,
    /* overloads */ &kOverloads[279],
  },
  {
    /* [2] */
    /* init f32() -> f32 */
    /* init f32(f32) -> f32 */
    /* conv f32<T : scalar_no_f32>(T) -> f32 */
    /* num overloads */ 3,
    /* overloads */ &kOverloads[282],
  },
  {
    /* [3] */
    /* init f16() -> f16 */
    /* init f16(f16) -> f16 */
    /* conv f16<T : scalar_no_f16>(T) -> f16 */
    /* num overloads */ 3,
    /* overloads */ &kOverloads[270],
  },
  {
    /* [4] */
    /* init bool() -> bool */
    /* init bool(bool) -> bool */
    /* conv bool<T : scalar_no_bool>(T) -> bool */
    /* num overloads */ 3,
    /* overloads */ &kOverloads[273],
  },
  {
    /* [5] */
    /* init vec2<T : concrete_scalar>() -> vec2<T> */
    /* init vec2<T : concrete_scalar>(vec2<T>) -> vec2<T> */
    /* init vec2<T : scalar>(T) -> vec2<T> */
    /* init vec2<T : scalar>(x: T, y: T) -> vec2<T> */
    /* conv vec2<T : f32, U : scalar_no_f32>(vec2<U>) -> vec2<f32> */
    /* conv vec2<T : f16, U : scalar_no_f16>(vec2<U>) -> vec2<f16> */
    /* conv vec2<T : i32, U : scalar_no_i32>(vec2<U>) -> vec2<i32> */
    /* conv vec2<T : u32, U : scalar_no_u32>(vec2<U>) -> vec2<u32> */
    /* conv vec2<T : bool, U : scalar_no_bool>(vec2<U>) -> vec2<bool> */
    /* num overloads */ 9,
    /* overloads */ &kOverloads[135],
  },
  {
    /* [6] */
    /* init vec3<T : concrete_scalar>() -> vec3<T> */
    /* init vec3<T : concrete_scalar>(vec3<T>) -> vec3<T> */
    /* init vec3<T : scalar>(T) -> vec3<T> */
    /* init vec3<T : scalar>(x: T, y: T, z: T) -> vec3<T> */
    /* init vec3<T : scalar>(xy: vec2<T>, z: T) -> vec3<T> */
    /* init vec3<T : scalar>(x: T, yz: vec2<T>) -> vec3<T> */
    /* conv vec3<T : f32, U : scalar_no_f32>(vec3<U>) -> vec3<f32> */
    /* conv vec3<T : f16, U : scalar_no_f16>(vec3<U>) -> vec3<f16> */
    /* conv vec3<T : i32, U : scalar_no_i32>(vec3<U>) -> vec3<i32> */
    /* conv vec3<T : u32, U : scalar_no_u32>(vec3<U>) -> vec3<u32> */
    /* conv vec3<T : bool, U : scalar_no_bool>(vec3<U>) -> vec3<bool> */
    /* num overloads */ 11,
    /* overloads */ &kOverloads[96],
  },
  {
    /* [7] */
    /* init vec4<T : concrete_scalar>() -> vec4<T> */
    /* init vec4<T : concrete_scalar>(vec4<T>) -> vec4<T> */
    /* init vec4<T : scalar>(T) -> vec4<T> */
    /* init vec4<T : scalar>(x: T, y: T, z: T, w: T) -> vec4<T> */
    /* init vec4<T : scalar>(xy: vec2<T>, z: T, w: T) -> vec4<T> */
    /* init vec4<T : scalar>(x: T, yz: vec2<T>, w: T) -> vec4<T> */
    /* init vec4<T : scalar>(x: T, y: T, zw: vec2<T>) -> vec4<T> */
    /* init vec4<T : scalar>(xy: vec2<T>, zw: vec2<T>) -> vec4<T> */
    /* init vec4<T : scalar>(xyz: vec3<T>, w: T) -> vec4<T> */
    /* init vec4<T : scalar>(x: T, zyw: vec3<T>) -> vec4<T> */
    /* conv vec4<T : f32, U : scalar_no_f32>(vec4<U>) -> vec4<f32> */
    /* conv vec4<T : f16, U : scalar_no_f16>(vec4<U>) -> vec4<f16> */
    /* conv vec4<T : i32, U : scalar_no_i32>(vec4<U>) -> vec4<i32> */
    /* conv vec4<T : u32, U : scalar_no_u32>(vec4<U>) -> vec4<u32> */
    /* conv vec4<T : bool, U : scalar_no_bool>(vec4<U>) -> vec4<bool> */
    /* num overloads */ 15,
    /* overloads */ &kOverloads[42],
  },
  {
    /* [8] */
    /* init mat2x2<T : f32_f16>() -> mat2x2<T> */
    /* init mat2x2<T : f32_f16>(mat2x2<T>) -> mat2x2<T> */
    /* init mat2x2<T : fa_f32_f16>(T, T, T, T) -> mat2x2<T> */
    /* init mat2x2<T : fa_f32_f16>(vec2<T>, vec2<T>) -> mat2x2<T> */
    /* conv mat2x2<T : f16>(mat2x2<f32>) -> mat2x2<f16> */
    /* conv mat2x2<T : f32>(mat2x2<f16>) -> mat2x2<f32> */
    /* num overloads */ 6,
    /* overloads */ &kOverloads[226],
  },
  {
    /* [9] */
    /* init mat2x3<T : f32_f16>() -> mat2x3<T> */
    /* init mat2x3<T : f32_f16>(mat2x3<T>) -> mat2x3<T> */
    /* init mat2x3<T : fa_f32_f16>(T, T, T, T, T, T) -> mat2x3<T> */
    /* init mat2x3<T : fa_f32_f16>(vec3<T>, vec3<T>) -> mat2x3<T> */
    /* conv mat2x3<T : f16>(mat2x3<f32>) -> mat2x3<f16> */
    /* conv mat2x3<T : f32>(mat2x3<f16>) -> mat2x3<f32> */
    /* num overloads */ 6,
    /* overloads */ &kOverloads[220],
  },
  {
    /* [10] */
    /* init mat2x4<T : f32_f16>() -> mat2x4<T> */
    /* init mat2x4<T : f32_f16>(mat2x4<T>) -> mat2x4<T> */
    /* init mat2x4<T : fa_f32_f16>(T, T, T, T, T, T, T, T) -> mat2x4<T> */
    /* init mat2x4<T : fa_f32_f16>(vec4<T>, vec4<T>) -> mat2x4<T> */
    /* conv mat2x4<T : f16>(mat2x4<f32>) -> mat2x4<f16> */
    /* conv mat2x4<T : f32>(mat2x4<f16>) -> mat2x4<f32> */
    /* num overloads */ 6,
    /* overloads */ &kOverloads[214],
  },
  {
    /* [11] */
    /* init mat3x2<T : f32_f16>() -> mat3x2<T> */
    /* init mat3x2<T : f32_f16>(mat3x2<T>) -> mat3x2<T> */
    /* init mat3x2<T : fa_f32_f16>(T, T, T, T, T, T) -> mat3x2<T> */
    /* init mat3x2<T : fa_f32_f16>(vec2<T>, vec2<T>, vec2<T>) -> mat3x2<T> */
    /* conv mat3x2<T : f16>(mat3x2<f32>) -> mat3x2<f16> */
    /* conv mat3x2<T : f32>(mat3x2<f16>) -> mat3x2<f32> */
    /* num overloads */ 6,
    /* overloads */ &kOverloads[208],
  },
  {
    /* [12] */
    /* init mat3x3<T : f32_f16>() -> mat3x3<T> */
    /* init mat3x3<T : f32_f16>(mat3x3<T>) -> mat3x3<T> */
    /* init mat3x3<T : fa_f32_f16>(T, T, T, T, T, T, T, T, T) -> mat3x3<T> */
    /* init mat3x3<T : fa_f32_f16>(vec3<T>, vec3<T>, vec3<T>) -> mat3x3<T> */
    /* conv mat3x3<T : f16>(mat3x3<f32>) -> mat3x3<f16> */
    /* conv mat3x3<T : f32>(mat3x3<f16>) -> mat3x3<f32> */
    /* num overloads */ 6,
    /* overloads */ &kOverloads[166],
  },
  {
    /* [13] */
    /* init mat3x4<T : f32_f16>() -> mat3x4<T> */
    /* init mat3x4<T : f32_f16>(mat3x4<T>) -> mat3x4<T> */
    /* init mat3x4<T : fa_f32_f16>(T, T, T, T, T, T, T, T, T, T, T, T) -> mat3x4<T> */
    /* init mat3x4<T : fa_f32_f16>(vec4<T>, vec4<T>, vec4<T>) -> mat3x4<T> */
    /* conv mat3x4<T : f16>(mat3x4<f32>) -> mat3x4<f16> */
    /* conv mat3x4<T : f32>(mat3x4<f16>) -> mat3x4<f32> */
    /* num overloads */ 6,
    /* overloads */ &kOverloads[196],
  },
  {
    /* [14] */
    /* init mat4x2<T : f32_f16>() -> mat4x2<T> */
    /* init mat4x2<T : f32_f16>(mat4x2<T>) -> mat4x2<T> */
    /* init mat4x2<T : fa_f32_f16>(T, T, T, T, T, T, T, T) -> mat4x2<T> */
    /* init mat4x2<T : fa_f32_f16>(vec2<T>, vec2<T>, vec2<T>, vec2<T>) -> mat4x2<T> */
    /* conv mat4x2<T : f16>(mat4x2<f32>) -> mat4x2<f16> */
    /* conv mat4x2<T : f32>(mat4x2<f16>) -> mat4x2<f32> */
    /* num overloads */ 6,
    /* overloads */ &kOverloads[190],
  },
  {
    /* [15] */
    /* init mat4x3<T : f32_f16>() -> mat4x3<T> */
    /* init mat4x3<T : f32_f16>(mat4x3<T>) -> mat4x3<T> */
    /* init mat4x3<T : fa_f32_f16>(T, T, T, T, T, T, T, T, T, T, T, T) -> mat4x3<T> */
    /* init mat4x3<T : fa_f32_f16>(vec3<T>, vec3<T>, vec3<T>, vec3<T>) -> mat4x3<T> */
    /* conv mat4x3<T : f16>(mat4x3<f32>) -> mat4x3<f16> */
    /* conv mat4x3<T : f32>(mat4x3<f16>) -> mat4x3<f32> */
    /* num overloads */ 6,
    /* overloads */ &kOverloads[178],
  },
  {
    /* [16] */
    /* init mat4x4<T : f32_f16>() -> mat4x4<T> */
    /* init mat4x4<T : f32_f16>(mat4x4<T>) -> mat4x4<T> */
    /* init mat4x4<T : fa_f32_f16>(T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T) -> mat4x4<T> */
    /* init mat4x4<T : fa_f32_f16>(vec4<T>, vec4<T>, vec4<T>, vec4<T>) -> mat4x4<T> */
    /* conv mat4x4<T : f16>(mat4x4<f32>) -> mat4x4<f16> */
    /* conv mat4x4<T : f32>(mat4x4<f16>) -> mat4x4<f32> */
    /* num overloads */ 6,
    /* overloads */ &kOverloads[172],
  },
};

// clang-format on
