// 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/intrinsic-gen
// using the template:
//   src/intrinsic_table.inl.tmpl
// and the intrinsic defintion file:
//   src/intrinsics.def
//
// Do not modify this file directly
////////////////////////////////////////////////////////////////////////////////

// clang-format off

/// TypeMatcher for 'type bool'
/// @see src/intrinsics.def:68:6
class Bool : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open 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(ty)) {
    return nullptr;
  }
  return build_bool(state);
}

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

/// TypeMatcher for 'type f32'
/// @see src/intrinsics.def:69:6
class F32 : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open 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(ty)) {
    return nullptr;
  }
  return build_f32(state);
}

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

/// TypeMatcher for 'type i32'
/// @see src/intrinsics.def:70:6
class I32 : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open 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(ty)) {
    return nullptr;
  }
  return build_i32(state);
}

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

/// TypeMatcher for 'type u32'
/// @see src/intrinsics.def:71:6
class U32 : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open 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(ty)) {
    return nullptr;
  }
  return build_u32(state);
}

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

/// TypeMatcher for 'type vec2'
/// @see src/intrinsics.def:72:6
class Vec2 : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open 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(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'
/// @see src/intrinsics.def:73:6
class Vec3 : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open 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(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'
/// @see src/intrinsics.def:74:6
class Vec4 : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open 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(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 vec'
/// @see src/intrinsics.def:75:37
class Vec : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open 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(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'
/// @see src/intrinsics.def:76:37
class Mat : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open 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(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'
/// @see src/intrinsics.def:77:6
class Ptr : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open 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(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'
/// @see src/intrinsics.def:78:6
class Atomic : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open 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(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'
/// @see src/intrinsics.def:79:6
class Array : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open 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(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'
/// @see src/intrinsics.def:80:6
class Sampler : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open 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(ty)) {
    return nullptr;
  }
  return build_sampler(state);
}

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

/// TypeMatcher for 'type sampler_comparison'
/// @see src/intrinsics.def:81:6
class SamplerComparison : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open 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(ty)) {
    return nullptr;
  }
  return build_sampler_comparison(state);
}

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

/// TypeMatcher for 'type texture_1d'
/// @see src/intrinsics.def:82:6
class Texture1D : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open 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(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'
/// @see src/intrinsics.def:83:6
class Texture2D : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open 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(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'
/// @see src/intrinsics.def:84:6
class Texture2DArray : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open 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(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'
/// @see src/intrinsics.def:85:6
class Texture3D : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open 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(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'
/// @see src/intrinsics.def:86:6
class TextureCube : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open 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(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'
/// @see src/intrinsics.def:87:6
class TextureCubeArray : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open 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(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'
/// @see src/intrinsics.def:88:6
class TextureMultisampled2D : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open 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(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'
/// @see src/intrinsics.def:89:6
class TextureDepth2D : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open 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(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'
/// @see src/intrinsics.def:90:6
class TextureDepth2DArray : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open 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(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'
/// @see src/intrinsics.def:91:6
class TextureDepthCube : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open 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(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'
/// @see src/intrinsics.def:92:6
class TextureDepthCubeArray : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open 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(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'
/// @see src/intrinsics.def:93:6
class TextureDepthMultisampled2D : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open 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(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'
/// @see src/intrinsics.def:94:6
class TextureStorage1D : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open 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(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'
/// @see src/intrinsics.def:95:6
class TextureStorage2D : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open 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(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'
/// @see src/intrinsics.def:96:6
class TextureStorage2DArray : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open 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(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'
/// @see src/intrinsics.def:97:6
class TextureStorage3D : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open 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(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'
/// @see src/intrinsics.def:98:6
class TextureExternal : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open 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(ty)) {
    return nullptr;
  }
  return build_texture_external(state);
}

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

/// TypeMatcher for 'type _modf_result'
/// @see src/intrinsics.def:100:6
class ModfResult : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open 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 {
  if (!match_modf_result(ty)) {
    return nullptr;
  }
  return build_modf_result(state);
}

std::string ModfResult::String(MatchState&) const {
  return "_modf_result";
}

/// TypeMatcher for 'type _modf_result_vec'
/// @see src/intrinsics.def:101:41
class ModfResultVec : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open 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;
  if (!match_modf_result_vec(ty, N)) {
    return nullptr;
  }
  N = state.Num(N);
  if (!N.IsValid()) {
    return nullptr;
  }
  return build_modf_result_vec(state, N);
}

std::string ModfResultVec::String(MatchState& state) const {
  const std::string N = state.NumName();
  std::stringstream ss;
  ss << "_modf_result_vec" << N;
  return ss.str();
}

/// TypeMatcher for 'type _frexp_result'
/// @see src/intrinsics.def:102:6
class FrexpResult : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open 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 {
  if (!match_frexp_result(ty)) {
    return nullptr;
  }
  return build_frexp_result(state);
}

std::string FrexpResult::String(MatchState&) const {
  return "_frexp_result";
}

/// TypeMatcher for 'type _frexp_result_vec'
/// @see src/intrinsics.def:103:42
class FrexpResultVec : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules.
  /// Match may close open 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;
  if (!match_frexp_result_vec(ty, N)) {
    return nullptr;
  }
  N = state.Num(N);
  if (!N.IsValid()) {
    return nullptr;
  }
  return build_frexp_result_vec(state, N);
}

std::string FrexpResultVec::String(MatchState& state) const {
  const std::string N = state.NumName();
  std::stringstream ss;
  ss << "_frexp_result_vec" << N;
  return ss.str();
}

/// TypeMatcher for 'match fiu32'
/// @see src/intrinsics.def:111:7
class Fiu32 : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules, and returns the
  /// expected, canonicalized type on success.
  /// Match may close open 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_f32(ty)) {
    return build_f32(state);
  }
  if (match_i32(ty)) {
    return build_i32(state);
  }
  if (match_u32(ty)) {
    return build_u32(state);
  }
  return nullptr;
}

std::string Fiu32::String(MatchState&) const {
  return "f32, i32 or u32";
}

/// TypeMatcher for 'match iu32'
/// @see src/intrinsics.def:112:7
class Iu32 : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules, and returns the
  /// expected, canonicalized type on success.
  /// Match may close open 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(ty)) {
    return build_i32(state);
  }
  if (match_u32(ty)) {
    return build_u32(state);
  }
  return nullptr;
}

std::string Iu32::String(MatchState&) const {
  return "i32 or u32";
}

/// TypeMatcher for 'match scalar'
/// @see src/intrinsics.def:113:7
class Scalar : public TypeMatcher {
 public:
  /// Checks whether the given type matches the matcher rules, and returns the
  /// expected, canonicalized type on success.
  /// Match may close open 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_f32(ty)) {
    return build_f32(state);
  }
  if (match_i32(ty)) {
    return build_i32(state);
  }
  if (match_u32(ty)) {
    return build_u32(state);
  }
  if (match_bool(ty)) {
    return build_bool(state);
  }
  return nullptr;
}

std::string Scalar::String(MatchState&) const {
  return "f32, i32, u32 or bool";
}

/// EnumMatcher for 'match f32_texel_format'
/// @see src/intrinsics.def:124:7
class F32TexelFormat : public NumberMatcher {
 public:
  /// Checks whether the given number matches the enum matcher rules.
  /// Match may close open types and 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'
/// @see src/intrinsics.def:126:7
class I32TexelFormat : public NumberMatcher {
 public:
  /// Checks whether the given number matches the enum matcher rules.
  /// Match may close open types and 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'
/// @see src/intrinsics.def:128:7
class U32TexelFormat : public NumberMatcher {
 public:
  /// Checks whether the given number matches the enum matcher rules.
  /// Match may close open types and 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_only'
/// @see src/intrinsics.def:131:7
class WriteOnly : public NumberMatcher {
 public:
  /// Checks whether the given number matches the enum matcher rules.
  /// Match may close open types and 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 WriteOnly::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 WriteOnly::String(MatchState&) const {
  return "write";
}

/// EnumMatcher for 'match function_private_workgroup'
/// @see src/intrinsics.def:133:7
class FunctionPrivateWorkgroup : public NumberMatcher {
 public:
  /// Checks whether the given number matches the enum matcher rules.
  /// Match may close open types and 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<StorageClass>(number.Value())) {
    case StorageClass::kFunction:
    case StorageClass::kPrivate:
    case StorageClass::kWorkgroup:
      return number;
    default:
      return Number::invalid;
  }
}

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

/// EnumMatcher for 'match workgroup_or_storage'
/// @see src/intrinsics.def:134:7
class WorkgroupOrStorage : public NumberMatcher {
 public:
  /// Checks whether the given number matches the enum matcher rules.
  /// Match may close open types and 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<StorageClass>(number.Value())) {
    case StorageClass::kWorkgroup:
    case StorageClass::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 close open types and 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>(StorageClass::kStorage)) {
    return Number(static_cast<uint32_t>(StorageClass::kStorage));
  }
  return Number::invalid;
}

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

/// EnumMatcher for 'match write'
class Write : public NumberMatcher {
 public:
  /// Checks whether the given number matches the enum matcher rules.
  /// Match may close open types and 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 close open types and 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";
}

/// Matchers holds type and number matchers
class Matchers {
 private:
  OpenTypeMatcher open_type_0_{0};
  OpenNumberMatcher open_number_0_{0};
  OpenNumberMatcher open_number_1_{1};
  Bool Bool_;
  F32 F32_;
  I32 I32_;
  U32 U32_;
  Vec2 Vec2_;
  Vec3 Vec3_;
  Vec4 Vec4_;
  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_;
  Fiu32 Fiu32_;
  Iu32 Iu32_;
  Scalar Scalar_;
  F32TexelFormat F32TexelFormat_;
  I32TexelFormat I32TexelFormat_;
  U32TexelFormat U32TexelFormat_;
  WriteOnly WriteOnly_;
  FunctionPrivateWorkgroup FunctionPrivateWorkgroup_;
  WorkgroupOrStorage WorkgroupOrStorage_;
  Storage Storage_;
  Write Write_;
  ReadWrite ReadWrite_;

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

  /// The open-types, types, and type matchers
  TypeMatcher const* const type[39] = {
    /* [0] */ &open_type_0_,
    /* [1] */ &Bool_,
    /* [2] */ &F32_,
    /* [3] */ &I32_,
    /* [4] */ &U32_,
    /* [5] */ &Vec2_,
    /* [6] */ &Vec3_,
    /* [7] */ &Vec4_,
    /* [8] */ &Vec_,
    /* [9] */ &Mat_,
    /* [10] */ &Ptr_,
    /* [11] */ &Atomic_,
    /* [12] */ &Array_,
    /* [13] */ &Sampler_,
    /* [14] */ &SamplerComparison_,
    /* [15] */ &Texture1D_,
    /* [16] */ &Texture2D_,
    /* [17] */ &Texture2DArray_,
    /* [18] */ &Texture3D_,
    /* [19] */ &TextureCube_,
    /* [20] */ &TextureCubeArray_,
    /* [21] */ &TextureMultisampled2D_,
    /* [22] */ &TextureDepth2D_,
    /* [23] */ &TextureDepth2DArray_,
    /* [24] */ &TextureDepthCube_,
    /* [25] */ &TextureDepthCubeArray_,
    /* [26] */ &TextureDepthMultisampled2D_,
    /* [27] */ &TextureStorage1D_,
    /* [28] */ &TextureStorage2D_,
    /* [29] */ &TextureStorage2DArray_,
    /* [30] */ &TextureStorage3D_,
    /* [31] */ &TextureExternal_,
    /* [32] */ &ModfResult_,
    /* [33] */ &ModfResultVec_,
    /* [34] */ &FrexpResult_,
    /* [35] */ &FrexpResultVec_,
    /* [36] */ &Fiu32_,
    /* [37] */ &Iu32_,
    /* [38] */ &Scalar_,
  };

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

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

constexpr MatcherIndex kMatcherIndices[] = {
  /* [0] */ 10,
  /* [1] */ 0,
  /* [2] */ 11,
  /* [3] */ 0,
  /* [4] */ 10,
  /* [5] */ 8,
  /* [6] */ 12,
  /* [7] */ 0,
  /* [8] */ 0,
  /* [9] */ 9,
  /* [10] */ 1,
  /* [11] */ 0,
  /* [12] */ 2,
  /* [13] */ 9,
  /* [14] */ 0,
  /* [15] */ 1,
  /* [16] */ 2,
  /* [17] */ 9,
  /* [18] */ 0,
  /* [19] */ 0,
  /* [20] */ 2,
  /* [21] */ 8,
  /* [22] */ 0,
  /* [23] */ 2,
  /* [24] */ 8,
  /* [25] */ 0,
  /* [26] */ 1,
  /* [27] */ 29,
  /* [28] */ 0,
  /* [29] */ 1,
  /* [30] */ 30,
  /* [31] */ 0,
  /* [32] */ 1,
  /* [33] */ 28,
  /* [34] */ 0,
  /* [35] */ 1,
  /* [36] */ 27,
  /* [37] */ 0,
  /* [38] */ 1,
  /* [39] */ 8,
  /* [40] */ 0,
  /* [41] */ 0,
  /* [42] */ 30,
  /* [43] */ 4,
  /* [44] */ 9,
  /* [45] */ 29,
  /* [46] */ 4,
  /* [47] */ 9,
  /* [48] */ 28,
  /* [49] */ 4,
  /* [50] */ 9,
  /* [51] */ 27,
  /* [52] */ 4,
  /* [53] */ 9,
  /* [54] */ 30,
  /* [55] */ 3,
  /* [56] */ 9,
  /* [57] */ 29,
  /* [58] */ 3,
  /* [59] */ 9,
  /* [60] */ 28,
  /* [61] */ 3,
  /* [62] */ 9,
  /* [63] */ 27,
  /* [64] */ 3,
  /* [65] */ 9,
  /* [66] */ 30,
  /* [67] */ 2,
  /* [68] */ 9,
  /* [69] */ 29,
  /* [70] */ 2,
  /* [71] */ 9,
  /* [72] */ 28,
  /* [73] */ 2,
  /* [74] */ 9,
  /* [75] */ 27,
  /* [76] */ 2,
  /* [77] */ 9,
  /* [78] */ 8,
  /* [79] */ 0,
  /* [80] */ 3,
  /* [81] */ 7,
  /* [82] */ 2,
  /* [83] */ 18,
  /* [84] */ 2,
  /* [85] */ 5,
  /* [86] */ 3,
  /* [87] */ 6,
  /* [88] */ 2,
  /* [89] */ 5,
  /* [90] */ 2,
  /* [91] */ 17,
  /* [92] */ 2,
  /* [93] */ 6,
  /* [94] */ 3,
  /* [95] */ 19,
  /* [96] */ 2,
  /* [97] */ 16,
  /* [98] */ 2,
  /* [99] */ 20,
  /* [100] */ 2,
  /* [101] */ 33,
  /* [102] */ 0,
  /* [103] */ 35,
  /* [104] */ 0,
  /* [105] */ 7,
  /* [106] */ 3,
  /* [107] */ 7,
  /* [108] */ 4,
  /* [109] */ 15,
  /* [110] */ 0,
  /* [111] */ 7,
  /* [112] */ 0,
  /* [113] */ 16,
  /* [114] */ 0,
  /* [115] */ 17,
  /* [116] */ 0,
  /* [117] */ 18,
  /* [118] */ 0,
  /* [119] */ 21,
  /* [120] */ 0,
  /* [121] */ 19,
  /* [122] */ 0,
  /* [123] */ 20,
  /* [124] */ 0,
  /* [125] */ 15,
  /* [126] */ 2,
  /* [127] */ 5,
  /* [128] */ 0,
  /* [129] */ 13,
  /* [130] */ 22,
  /* [131] */ 23,
  /* [132] */ 26,
  /* [133] */ 24,
  /* [134] */ 25,
  /* [135] */ 31,
  /* [136] */ 14,
  /* [137] */ 32,
  /* [138] */ 34,
};

// 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::kTexture,
    /* matcher indices */ &kMatcherIndices[91],
  },
  {
    /* [1] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[129],
  },
  {
    /* [2] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[89],
  },
  {
    /* [3] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [4] */
    /* usage */ ParameterUsage::kDdx,
    /* matcher indices */ &kMatcherIndices[89],
  },
  {
    /* [5] */
    /* usage */ ParameterUsage::kDdy,
    /* matcher indices */ &kMatcherIndices[89],
  },
  {
    /* [6] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[85],
  },
  {
    /* [7] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[97],
  },
  {
    /* [8] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[129],
  },
  {
    /* [9] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[89],
  },
  {
    /* [10] */
    /* usage */ ParameterUsage::kDdx,
    /* matcher indices */ &kMatcherIndices[89],
  },
  {
    /* [11] */
    /* usage */ ParameterUsage::kDdy,
    /* matcher indices */ &kMatcherIndices[89],
  },
  {
    /* [12] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[85],
  },
  {
    /* [13] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[91],
  },
  {
    /* [14] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[129],
  },
  {
    /* [15] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[89],
  },
  {
    /* [16] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [17] */
    /* usage */ ParameterUsage::kDdx,
    /* matcher indices */ &kMatcherIndices[89],
  },
  {
    /* [18] */
    /* usage */ ParameterUsage::kDdy,
    /* matcher indices */ &kMatcherIndices[89],
  },
  {
    /* [19] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[91],
  },
  {
    /* [20] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[129],
  },
  {
    /* [21] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[89],
  },
  {
    /* [22] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [23] */
    /* usage */ ParameterUsage::kBias,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [24] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[85],
  },
  {
    /* [25] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[91],
  },
  {
    /* [26] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[129],
  },
  {
    /* [27] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[89],
  },
  {
    /* [28] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [29] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [30] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[85],
  },
  {
    /* [31] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[99],
  },
  {
    /* [32] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[129],
  },
  {
    /* [33] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[87],
  },
  {
    /* [34] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [35] */
    /* usage */ ParameterUsage::kDdx,
    /* matcher indices */ &kMatcherIndices[87],
  },
  {
    /* [36] */
    /* usage */ ParameterUsage::kDdy,
    /* matcher indices */ &kMatcherIndices[87],
  },
  {
    /* [37] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [38] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[136],
  },
  {
    /* [39] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[89],
  },
  {
    /* [40] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [41] */
    /* usage */ ParameterUsage::kDepthRef,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [42] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[85],
  },
  {
    /* [43] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[83],
  },
  {
    /* [44] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[129],
  },
  {
    /* [45] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[87],
  },
  {
    /* [46] */
    /* usage */ ParameterUsage::kDdx,
    /* matcher indices */ &kMatcherIndices[87],
  },
  {
    /* [47] */
    /* usage */ ParameterUsage::kDdy,
    /* matcher indices */ &kMatcherIndices[87],
  },
  {
    /* [48] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[93],
  },
  {
    /* [49] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [50] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[136],
  },
  {
    /* [51] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[89],
  },
  {
    /* [52] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [53] */
    /* usage */ ParameterUsage::kDepthRef,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [54] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[85],
  },
  {
    /* [55] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [56] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[129],
  },
  {
    /* [57] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[89],
  },
  {
    /* [58] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [59] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [60] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[85],
  },
  {
    /* [61] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[99],
  },
  {
    /* [62] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[129],
  },
  {
    /* [63] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[87],
  },
  {
    /* [64] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [65] */
    /* usage */ ParameterUsage::kBias,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [66] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[97],
  },
  {
    /* [67] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[129],
  },
  {
    /* [68] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[89],
  },
  {
    /* [69] */
    /* usage */ ParameterUsage::kBias,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [70] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[85],
  },
  {
    /* [71] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[99],
  },
  {
    /* [72] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[129],
  },
  {
    /* [73] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[87],
  },
  {
    /* [74] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [75] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [76] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[130],
  },
  {
    /* [77] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[129],
  },
  {
    /* [78] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[89],
  },
  {
    /* [79] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [80] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[85],
  },
  {
    /* [81] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [82] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[129],
  },
  {
    /* [83] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[89],
  },
  {
    /* [84] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [85] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [86] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[83],
  },
  {
    /* [87] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[129],
  },
  {
    /* [88] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[87],
  },
  {
    /* [89] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [90] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[93],
  },
  {
    /* [91] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [92] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[129],
  },
  {
    /* [93] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[89],
  },
  {
    /* [94] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [95] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[85],
  },
  {
    /* [96] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[130],
  },
  {
    /* [97] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[136],
  },
  {
    /* [98] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[89],
  },
  {
    /* [99] */
    /* usage */ ParameterUsage::kDepthRef,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [100] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[85],
  },
  {
    /* [101] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [102] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[136],
  },
  {
    /* [103] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[89],
  },
  {
    /* [104] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [105] */
    /* usage */ ParameterUsage::kDepthRef,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [106] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[134],
  },
  {
    /* [107] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[129],
  },
  {
    /* [108] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[87],
  },
  {
    /* [109] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [110] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [111] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[91],
  },
  {
    /* [112] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[129],
  },
  {
    /* [113] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[89],
  },
  {
    /* [114] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [115] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[85],
  },
  {
    /* [116] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[83],
  },
  {
    /* [117] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[129],
  },
  {
    /* [118] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[87],
  },
  {
    /* [119] */
    /* usage */ ParameterUsage::kBias,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [120] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[93],
  },
  {
    /* [121] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[83],
  },
  {
    /* [122] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[129],
  },
  {
    /* [123] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[87],
  },
  {
    /* [124] */
    /* usage */ ParameterUsage::kDdx,
    /* matcher indices */ &kMatcherIndices[87],
  },
  {
    /* [125] */
    /* usage */ ParameterUsage::kDdy,
    /* matcher indices */ &kMatcherIndices[87],
  },
  {
    /* [126] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[134],
  },
  {
    /* [127] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[136],
  },
  {
    /* [128] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[87],
  },
  {
    /* [129] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [130] */
    /* usage */ ParameterUsage::kDepthRef,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [131] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[91],
  },
  {
    /* [132] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[129],
  },
  {
    /* [133] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[89],
  },
  {
    /* [134] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [135] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [136] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[95],
  },
  {
    /* [137] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[129],
  },
  {
    /* [138] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[87],
  },
  {
    /* [139] */
    /* usage */ ParameterUsage::kDdx,
    /* matcher indices */ &kMatcherIndices[87],
  },
  {
    /* [140] */
    /* usage */ ParameterUsage::kDdy,
    /* matcher indices */ &kMatcherIndices[87],
  },
  {
    /* [141] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[130],
  },
  {
    /* [142] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[136],
  },
  {
    /* [143] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[89],
  },
  {
    /* [144] */
    /* usage */ ParameterUsage::kDepthRef,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [145] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[85],
  },
  {
    /* [146] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[91],
  },
  {
    /* [147] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[129],
  },
  {
    /* [148] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[89],
  },
  {
    /* [149] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [150] */
    /* usage */ ParameterUsage::kBias,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [151] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [152] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[136],
  },
  {
    /* [153] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[89],
  },
  {
    /* [154] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [155] */
    /* usage */ ParameterUsage::kDepthRef,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [156] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[134],
  },
  {
    /* [157] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[136],
  },
  {
    /* [158] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[87],
  },
  {
    /* [159] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [160] */
    /* usage */ ParameterUsage::kDepthRef,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [161] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[97],
  },
  {
    /* [162] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[129],
  },
  {
    /* [163] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[89],
  },
  {
    /* [164] */
    /* usage */ ParameterUsage::kDdx,
    /* matcher indices */ &kMatcherIndices[89],
  },
  {
    /* [165] */
    /* usage */ ParameterUsage::kDdy,
    /* matcher indices */ &kMatcherIndices[89],
  },
  {
    /* [166] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[97],
  },
  {
    /* [167] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[129],
  },
  {
    /* [168] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[89],
  },
  {
    /* [169] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [170] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[85],
  },
  {
    /* [171] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[57],
  },
  {
    /* [172] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[85],
  },
  {
    /* [173] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [174] */
    /* usage */ ParameterUsage::kValue,
    /* matcher indices */ &kMatcherIndices[105],
  },
  {
    /* [175] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[133],
  },
  {
    /* [176] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[136],
  },
  {
    /* [177] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[87],
  },
  {
    /* [178] */
    /* usage */ ParameterUsage::kDepthRef,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [179] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[99],
  },
  {
    /* [180] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[129],
  },
  {
    /* [181] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[87],
  },
  {
    /* [182] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [183] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[130],
  },
  {
    /* [184] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[136],
  },
  {
    /* [185] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[89],
  },
  {
    /* [186] */
    /* usage */ ParameterUsage::kDepthRef,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [187] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[133],
  },
  {
    /* [188] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[136],
  },
  {
    /* [189] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[87],
  },
  {
    /* [190] */
    /* usage */ ParameterUsage::kDepthRef,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [191] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[130],
  },
  {
    /* [192] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[129],
  },
  {
    /* [193] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[89],
  },
  {
    /* [194] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[85],
  },
  {
    /* [195] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [196] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[129],
  },
  {
    /* [197] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[89],
  },
  {
    /* [198] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [199] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[133],
  },
  {
    /* [200] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[129],
  },
  {
    /* [201] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[87],
  },
  {
    /* [202] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [203] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[115],
  },
  {
    /* [204] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[85],
  },
  {
    /* [205] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [206] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [207] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[95],
  },
  {
    /* [208] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[129],
  },
  {
    /* [209] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[87],
  },
  {
    /* [210] */
    /* usage */ ParameterUsage::kBias,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [211] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[83],
  },
  {
    /* [212] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[129],
  },
  {
    /* [213] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[87],
  },
  {
    /* [214] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[93],
  },
  {
    /* [215] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[130],
  },
  {
    /* [216] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[129],
  },
  {
    /* [217] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[89],
  },
  {
    /* [218] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [219] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[97],
  },
  {
    /* [220] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[129],
  },
  {
    /* [221] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[89],
  },
  {
    /* [222] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [223] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[97],
  },
  {
    /* [224] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[129],
  },
  {
    /* [225] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[89],
  },
  {
    /* [226] */
    /* usage */ ParameterUsage::kBias,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [227] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[95],
  },
  {
    /* [228] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[129],
  },
  {
    /* [229] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[87],
  },
  {
    /* [230] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [231] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [232] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[85],
  },
  {
    /* [233] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [234] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [235] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[83],
  },
  {
    /* [236] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[129],
  },
  {
    /* [237] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[87],
  },
  {
    /* [238] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [239] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[134],
  },
  {
    /* [240] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[129],
  },
  {
    /* [241] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[87],
  },
  {
    /* [242] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [243] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[83],
  },
  {
    /* [244] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[129],
  },
  {
    /* [245] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[87],
  },
  {
    /* [246] */
    /* usage */ ParameterUsage::kBias,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [247] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[130],
  },
  {
    /* [248] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[136],
  },
  {
    /* [249] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[89],
  },
  {
    /* [250] */
    /* usage */ ParameterUsage::kDepthRef,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [251] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[97],
  },
  {
    /* [252] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[129],
  },
  {
    /* [253] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[89],
  },
  {
    /* [254] */
    /* usage */ ParameterUsage::kOffset,
    /* matcher indices */ &kMatcherIndices[85],
  },
  {
    /* [255] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[91],
  },
  {
    /* [256] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[129],
  },
  {
    /* [257] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[89],
  },
  {
    /* [258] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [259] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[69],
  },
  {
    /* [260] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[85],
  },
  {
    /* [261] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [262] */
    /* usage */ ParameterUsage::kValue,
    /* matcher indices */ &kMatcherIndices[81],
  },
  {
    /* [263] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[45],
  },
  {
    /* [264] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[85],
  },
  {
    /* [265] */
    /* usage */ ParameterUsage::kArrayIndex,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [266] */
    /* usage */ ParameterUsage::kValue,
    /* matcher indices */ &kMatcherIndices[107],
  },
  {
    /* [267] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[113],
  },
  {
    /* [268] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[85],
  },
  {
    /* [269] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [270] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[135],
  },
  {
    /* [271] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[129],
  },
  {
    /* [272] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[89],
  },
  {
    /* [273] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[75],
  },
  {
    /* [274] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [275] */
    /* usage */ ParameterUsage::kValue,
    /* matcher indices */ &kMatcherIndices[81],
  },
  {
    /* [276] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[72],
  },
  {
    /* [277] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[85],
  },
  {
    /* [278] */
    /* usage */ ParameterUsage::kValue,
    /* matcher indices */ &kMatcherIndices[81],
  },
  {
    /* [279] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[66],
  },
  {
    /* [280] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[93],
  },
  {
    /* [281] */
    /* usage */ ParameterUsage::kValue,
    /* matcher indices */ &kMatcherIndices[81],
  },
  {
    /* [282] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[130],
  },
  {
    /* [283] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[129],
  },
  {
    /* [284] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[89],
  },
  {
    /* [285] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[60],
  },
  {
    /* [286] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[85],
  },
  {
    /* [287] */
    /* usage */ ParameterUsage::kValue,
    /* matcher indices */ &kMatcherIndices[105],
  },
  {
    /* [288] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [289] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [290] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [291] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[39],
  },
  {
    /* [292] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[39],
  },
  {
    /* [293] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [294] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [295] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [296] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [297] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[39],
  },
  {
    /* [298] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[39],
  },
  {
    /* [299] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[24],
  },
  {
    /* [300] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[54],
  },
  {
    /* [301] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[93],
  },
  {
    /* [302] */
    /* usage */ ParameterUsage::kValue,
    /* matcher indices */ &kMatcherIndices[105],
  },
  {
    /* [303] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[51],
  },
  {
    /* [304] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [305] */
    /* usage */ ParameterUsage::kValue,
    /* matcher indices */ &kMatcherIndices[107],
  },
  {
    /* [306] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[48],
  },
  {
    /* [307] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[85],
  },
  {
    /* [308] */
    /* usage */ ParameterUsage::kValue,
    /* matcher indices */ &kMatcherIndices[107],
  },
  {
    /* [309] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[130],
  },
  {
    /* [310] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[85],
  },
  {
    /* [311] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [312] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[42],
  },
  {
    /* [313] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[93],
  },
  {
    /* [314] */
    /* usage */ ParameterUsage::kValue,
    /* matcher indices */ &kMatcherIndices[107],
  },
  {
    /* [315] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[109],
  },
  {
    /* [316] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [317] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [318] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [319] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [320] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [321] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[39],
  },
  {
    /* [322] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[39],
  },
  {
    /* [323] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[39],
  },
  {
    /* [324] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [325] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [326] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [327] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[0],
  },
  {
    /* [328] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [329] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [330] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[117],
  },
  {
    /* [331] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[93],
  },
  {
    /* [332] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [333] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[95],
  },
  {
    /* [334] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[129],
  },
  {
    /* [335] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[87],
  },
  {
    /* [336] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[119],
  },
  {
    /* [337] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[85],
  },
  {
    /* [338] */
    /* usage */ ParameterUsage::kSampleIndex,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [339] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [340] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [341] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [342] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[132],
  },
  {
    /* [343] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[85],
  },
  {
    /* [344] */
    /* usage */ ParameterUsage::kSampleIndex,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [345] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[133],
  },
  {
    /* [346] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[129],
  },
  {
    /* [347] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[87],
  },
  {
    /* [348] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[83],
  },
  {
    /* [349] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[129],
  },
  {
    /* [350] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[87],
  },
  {
    /* [351] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [352] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [353] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [354] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [355] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [356] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [357] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [358] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [359] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [360] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [361] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [362] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [363] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[97],
  },
  {
    /* [364] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[129],
  },
  {
    /* [365] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[89],
  },
  {
    /* [366] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[125],
  },
  {
    /* [367] */
    /* usage */ ParameterUsage::kSampler,
    /* matcher indices */ &kMatcherIndices[129],
  },
  {
    /* [368] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [369] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [370] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [371] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [372] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[63],
  },
  {
    /* [373] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [374] */
    /* usage */ ParameterUsage::kValue,
    /* matcher indices */ &kMatcherIndices[105],
  },
  {
    /* [375] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [376] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [377] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [378] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[0],
  },
  {
    /* [379] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [380] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[39],
  },
  {
    /* [381] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[39],
  },
  {
    /* [382] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [383] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [384] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [385] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [386] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [387] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [388] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [389] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [390] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [391] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[78],
  },
  {
    /* [392] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[109],
  },
  {
    /* [393] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [394] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [395] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [396] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[0],
  },
  {
    /* [397] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [398] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[39],
  },
  {
    /* [399] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[39],
  },
  {
    /* [400] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [401] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [402] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [403] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [404] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[87],
  },
  {
    /* [405] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[87],
  },
  {
    /* [406] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [407] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [408] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [409] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [410] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[135],
  },
  {
    /* [411] */
    /* usage */ ParameterUsage::kCoords,
    /* matcher indices */ &kMatcherIndices[85],
  },
  {
    /* [412] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[0],
  },
  {
    /* [413] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [414] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [415] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [416] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[0],
  },
  {
    /* [417] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [418] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[0],
  },
  {
    /* [419] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [420] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[0],
  },
  {
    /* [421] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [422] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[0],
  },
  {
    /* [423] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [424] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [425] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [426] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [427] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [428] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[0],
  },
  {
    /* [429] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [430] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[0],
  },
  {
    /* [431] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [432] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[134],
  },
  {
    /* [433] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [434] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[133],
  },
  {
    /* [435] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [436] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [437] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [438] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[130],
  },
  {
    /* [439] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [440] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[123],
  },
  {
    /* [441] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [442] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[121],
  },
  {
    /* [443] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [444] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[117],
  },
  {
    /* [445] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [446] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[115],
  },
  {
    /* [447] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [448] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[113],
  },
  {
    /* [449] */
    /* usage */ ParameterUsage::kLevel,
    /* matcher indices */ &kMatcherIndices[55],
  },
  {
    /* [450] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[39],
  },
  {
    /* [451] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[39],
  },
  {
    /* [452] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[39],
  },
  {
    /* [453] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[43],
  },
  {
    /* [454] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[109],
  },
  {
    /* [455] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[43],
  },
  {
    /* [456] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[113],
  },
  {
    /* [457] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[43],
  },
  {
    /* [458] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[115],
  },
  {
    /* [459] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[43],
  },
  {
    /* [460] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[117],
  },
  {
    /* [461] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[43],
  },
  {
    /* [462] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[121],
  },
  {
    /* [463] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [464] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[123],
  },
  {
    /* [465] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [466] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[119],
  },
  {
    /* [467] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[130],
  },
  {
    /* [468] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[13],
  },
  {
    /* [469] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [470] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [471] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[133],
  },
  {
    /* [472] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [473] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[134],
  },
  {
    /* [474] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [475] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[132],
  },
  {
    /* [476] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[36],
  },
  {
    /* [477] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[33],
  },
  {
    /* [478] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[27],
  },
  {
    /* [479] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[30],
  },
  {
    /* [480] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[135],
  },
  {
    /* [481] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[115],
  },
  {
    /* [482] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[123],
  },
  {
    /* [483] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [484] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[134],
  },
  {
    /* [485] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[27],
  },
  {
    /* [486] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[109],
  },
  {
    /* [487] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[113],
  },
  {
    /* [488] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[115],
  },
  {
    /* [489] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[117],
  },
  {
    /* [490] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[121],
  },
  {
    /* [491] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[123],
  },
  {
    /* [492] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[130],
  },
  {
    /* [493] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[131],
  },
  {
    /* [494] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[133],
  },
  {
    /* [495] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[134],
  },
  {
    /* [496] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[119],
  },
  {
    /* [497] */
    /* usage */ ParameterUsage::kTexture,
    /* matcher indices */ &kMatcherIndices[132],
  },
  {
    /* [498] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [499] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [500] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [501] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [502] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [503] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [504] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [505] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [506] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [507] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [508] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [509] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [510] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[81],
  },
  {
    /* [511] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[81],
  },
  {
    /* [512] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[89],
  },
  {
    /* [513] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[89],
  },
  {
    /* [514] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[89],
  },
  {
    /* [515] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [516] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [517] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [518] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [519] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [520] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [521] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [522] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [523] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [524] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [525] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [526] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [527] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [528] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [529] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [530] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [531] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [532] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [533] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [534] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [535] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [536] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [537] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [538] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [539] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [540] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [541] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [542] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [543] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [544] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [545] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [546] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [547] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [548] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [549] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [550] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [551] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [552] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [553] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [554] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [555] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [556] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [557] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [558] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [559] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [560] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [561] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [562] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [563] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[17],
  },
  {
    /* [564] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[39],
  },
  {
    /* [565] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
  {
    /* [566] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [567] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [568] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [569] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [570] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [571] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [572] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [573] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [574] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [575] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [576] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[4],
  },
  {
    /* [577] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[0],
  },
  {
    /* [578] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[24],
  },
  {
    /* [579] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [580] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[24],
  },
  {
    /* [581] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[10],
  },
  {
    /* [582] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[21],
  },
  {
    /* [583] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[12],
  },
  {
    /* [584] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[39],
  },
  {
    /* [585] */
    /* usage */ ParameterUsage::kNone,
    /* matcher indices */ &kMatcherIndices[1],
  },
};

constexpr OpenTypeInfo kOpenTypes[] = {
  {
    /* [0] */
    /* name */ "T",
    /* matcher index */ kNoMatcher,
  },
  {
    /* [1] */
    /* name */ "T",
    /* matcher index */ 36,
  },
  {
    /* [2] */
    /* name */ "T",
    /* matcher index */ 37,
  },
  {
    /* [3] */
    /* name */ "T",
    /* matcher index */ 38,
  },
};

constexpr OpenNumberInfo kOpenNumbers[] = {
  {
    /* [0] */
    /* name */ "F",
    /* matcher index */ kNoMatcher,
  },
  {
    /* [1] */
    /* name */ "A",
    /* matcher index */ 5,
  },
  {
    /* [2] */
    /* name */ "M",
    /* matcher index */ kNoMatcher,
  },
  {
    /* [3] */
    /* name */ "N",
    /* matcher index */ kNoMatcher,
  },
  {
    /* [4] */
    /* name */ "A",
    /* matcher index */ kNoMatcher,
  },
  {
    /* [5] */
    /* name */ "S",
    /* matcher index */ 7,
  },
};

constexpr OverloadInfo kOverloads[] = {
  {
    /* [0] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[454],
    /* return matcher indices */ &kMatcherIndices[55],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [1] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[392],
    /* return matcher indices */ &kMatcherIndices[55],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [2] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[456],
    /* return matcher indices */ &kMatcherIndices[85],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [3] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[448],
    /* return matcher indices */ &kMatcherIndices[85],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [4] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[458],
    /* return matcher indices */ &kMatcherIndices[85],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [5] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[446],
    /* return matcher indices */ &kMatcherIndices[85],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [6] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[460],
    /* return matcher indices */ &kMatcherIndices[93],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [7] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[444],
    /* return matcher indices */ &kMatcherIndices[93],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [8] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[462],
    /* return matcher indices */ &kMatcherIndices[85],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [9] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[442],
    /* return matcher indices */ &kMatcherIndices[85],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [10] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[464],
    /* return matcher indices */ &kMatcherIndices[85],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [11] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[440],
    /* return matcher indices */ &kMatcherIndices[85],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [12] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[466],
    /* return matcher indices */ &kMatcherIndices[85],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [13] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[467],
    /* return matcher indices */ &kMatcherIndices[85],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [14] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[438],
    /* return matcher indices */ &kMatcherIndices[85],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [15] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[469],
    /* return matcher indices */ &kMatcherIndices[85],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [16] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[436],
    /* return matcher indices */ &kMatcherIndices[85],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [17] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[471],
    /* return matcher indices */ &kMatcherIndices[85],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [18] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[434],
    /* return matcher indices */ &kMatcherIndices[85],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [19] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[473],
    /* return matcher indices */ &kMatcherIndices[85],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [20] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[432],
    /* return matcher indices */ &kMatcherIndices[85],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [21] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[475],
    /* return matcher indices */ &kMatcherIndices[85],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [22] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 2,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[0],
    /* parameters */ &kParameters[476],
    /* return matcher indices */ &kMatcherIndices[55],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [23] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 2,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[0],
    /* parameters */ &kParameters[477],
    /* return matcher indices */ &kMatcherIndices[85],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [24] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 2,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[0],
    /* parameters */ &kParameters[478],
    /* return matcher indices */ &kMatcherIndices[85],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [25] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 2,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[0],
    /* parameters */ &kParameters[479],
    /* return matcher indices */ &kMatcherIndices[93],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [26] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[480],
    /* return matcher indices */ &kMatcherIndices[85],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [27] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[219],
    /* return matcher indices */ &kMatcherIndices[81],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [28] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[166],
    /* return matcher indices */ &kMatcherIndices[81],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [29] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[131],
    /* return matcher indices */ &kMatcherIndices[81],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [30] */
    /* num parameters */ 6,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[25],
    /* return matcher indices */ &kMatcherIndices[81],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [31] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[235],
    /* return matcher indices */ &kMatcherIndices[81],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [32] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[86],
    /* return matcher indices */ &kMatcherIndices[81],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [33] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[227],
    /* return matcher indices */ &kMatcherIndices[81],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [34] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[71],
    /* return matcher indices */ &kMatcherIndices[81],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [35] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[215],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [36] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[76],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [37] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[81],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [38] */
    /* num parameters */ 6,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[55],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [39] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[199],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [40] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[106],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [41] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[270],
    /* return matcher indices */ &kMatcherIndices[81],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [42] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[366],
    /* return matcher indices */ &kMatcherIndices[81],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [43] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[363],
    /* return matcher indices */ &kMatcherIndices[81],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [44] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[251],
    /* return matcher indices */ &kMatcherIndices[81],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [45] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[255],
    /* return matcher indices */ &kMatcherIndices[81],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [46] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[111],
    /* return matcher indices */ &kMatcherIndices[81],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [47] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[348],
    /* return matcher indices */ &kMatcherIndices[81],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [48] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[211],
    /* return matcher indices */ &kMatcherIndices[81],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [49] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[333],
    /* return matcher indices */ &kMatcherIndices[81],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [50] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[179],
    /* return matcher indices */ &kMatcherIndices[81],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [51] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[282],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [52] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[191],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [53] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[195],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [54] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[91],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [55] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[345],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [56] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[239],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [57] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[273],
    /* return matcher indices */ nullptr,
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [58] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[276],
    /* return matcher indices */ nullptr,
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [59] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[259],
    /* return matcher indices */ nullptr,
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [60] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[279],
    /* return matcher indices */ nullptr,
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [61] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[372],
    /* return matcher indices */ nullptr,
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [62] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[285],
    /* return matcher indices */ nullptr,
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [63] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[171],
    /* return matcher indices */ nullptr,
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [64] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[300],
    /* return matcher indices */ nullptr,
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [65] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[303],
    /* return matcher indices */ nullptr,
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [66] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[306],
    /* return matcher indices */ nullptr,
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [67] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[263],
    /* return matcher indices */ nullptr,
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [68] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[312],
    /* return matcher indices */ nullptr,
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [69] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[486],
    /* return matcher indices */ &kMatcherIndices[55],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [70] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[487],
    /* return matcher indices */ &kMatcherIndices[55],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [71] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[488],
    /* return matcher indices */ &kMatcherIndices[55],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [72] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[489],
    /* return matcher indices */ &kMatcherIndices[55],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [73] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[490],
    /* return matcher indices */ &kMatcherIndices[55],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [74] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[491],
    /* return matcher indices */ &kMatcherIndices[55],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [75] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[492],
    /* return matcher indices */ &kMatcherIndices[55],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [76] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[493],
    /* return matcher indices */ &kMatcherIndices[55],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [77] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[494],
    /* return matcher indices */ &kMatcherIndices[55],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [78] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[495],
    /* return matcher indices */ &kMatcherIndices[55],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [79] */
    /* num parameters */ 3,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[315],
    /* return matcher indices */ &kMatcherIndices[111],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [80] */
    /* num parameters */ 3,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[267],
    /* return matcher indices */ &kMatcherIndices[111],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [81] */
    /* num parameters */ 4,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[203],
    /* return matcher indices */ &kMatcherIndices[111],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [82] */
    /* num parameters */ 3,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[330],
    /* return matcher indices */ &kMatcherIndices[111],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [83] */
    /* num parameters */ 3,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[336],
    /* return matcher indices */ &kMatcherIndices[111],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [84] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[309],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [85] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[231],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [86] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[342],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [87] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[410],
    /* return matcher indices */ &kMatcherIndices[81],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [88] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[223],
    /* return matcher indices */ &kMatcherIndices[81],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [89] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[66],
    /* return matcher indices */ &kMatcherIndices[81],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [90] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[146],
    /* return matcher indices */ &kMatcherIndices[81],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [91] */
    /* num parameters */ 6,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[19],
    /* return matcher indices */ &kMatcherIndices[81],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [92] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[243],
    /* return matcher indices */ &kMatcherIndices[81],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [93] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[116],
    /* return matcher indices */ &kMatcherIndices[81],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [94] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[207],
    /* return matcher indices */ &kMatcherIndices[81],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [95] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[61],
    /* return matcher indices */ &kMatcherIndices[81],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [96] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[161],
    /* return matcher indices */ &kMatcherIndices[81],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [97] */
    /* num parameters */ 6,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[7],
    /* return matcher indices */ &kMatcherIndices[81],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [98] */
    /* num parameters */ 6,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[13],
    /* return matcher indices */ &kMatcherIndices[81],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [99] */
    /* num parameters */ 7,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[0],
    /* return matcher indices */ &kMatcherIndices[81],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [100] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[121],
    /* return matcher indices */ &kMatcherIndices[81],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [101] */
    /* num parameters */ 6,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[43],
    /* return matcher indices */ &kMatcherIndices[81],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [102] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[136],
    /* return matcher indices */ &kMatcherIndices[81],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [103] */
    /* num parameters */ 6,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[31],
    /* return matcher indices */ &kMatcherIndices[81],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [104] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[183],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [105] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[141],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [106] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[151],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [107] */
    /* num parameters */ 6,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[49],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [108] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[175],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [109] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[156],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [110] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[247],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [111] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[96],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [112] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[101],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [113] */
    /* num parameters */ 6,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[37],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [114] */
    /* num parameters */ 4,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[187],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [115] */
    /* num parameters */ 5,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[126],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [116] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[481],
    /* return matcher indices */ &kMatcherIndices[55],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [117] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[482],
    /* return matcher indices */ &kMatcherIndices[55],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [118] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[483],
    /* return matcher indices */ &kMatcherIndices[55],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [119] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[484],
    /* return matcher indices */ &kMatcherIndices[55],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [120] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 2,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[0],
    /* parameters */ &kParameters[485],
    /* return matcher indices */ &kMatcherIndices[55],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [121] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[351],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [122] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[354],
    /* return matcher indices */ &kMatcherIndices[21],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [123] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[357],
    /* return matcher indices */ &kMatcherIndices[21],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [124] */
    /* num parameters */ 3,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[3],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[288],
    /* return matcher indices */ &kMatcherIndices[1],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [125] */
    /* num parameters */ 3,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[3],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[291],
    /* return matcher indices */ &kMatcherIndices[39],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [126] */
    /* num parameters */ 3,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[3],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[297],
    /* return matcher indices */ &kMatcherIndices[39],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [127] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[571],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [128] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[570],
    /* return matcher indices */ &kMatcherIndices[21],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [129] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[2],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[565],
    /* return matcher indices */ &kMatcherIndices[1],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [130] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[2],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[564],
    /* return matcher indices */ &kMatcherIndices[39],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [131] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[402],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [132] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[400],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [133] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[498],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [134] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[474],
    /* return matcher indices */ &kMatcherIndices[21],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [135] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[562],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [136] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[561],
    /* return matcher indices */ &kMatcherIndices[21],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [137] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[560],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [138] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[559],
    /* return matcher indices */ &kMatcherIndices[21],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [139] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[558],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [140] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[557],
    /* return matcher indices */ &kMatcherIndices[21],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [141] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[556],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [142] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[555],
    /* return matcher indices */ &kMatcherIndices[21],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [143] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[554],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [144] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[553],
    /* return matcher indices */ &kMatcherIndices[21],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [145] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[552],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [146] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[551],
    /* return matcher indices */ &kMatcherIndices[21],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [147] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[550],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [148] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[549],
    /* return matcher indices */ &kMatcherIndices[21],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [149] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[548],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [150] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[547],
    /* return matcher indices */ &kMatcherIndices[21],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [151] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[567],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [152] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[566],
    /* return matcher indices */ &kMatcherIndices[21],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [153] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[546],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [154] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[545],
    /* return matcher indices */ &kMatcherIndices[21],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [155] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[294],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [156] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[369],
    /* return matcher indices */ &kMatcherIndices[21],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [157] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[544],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [158] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[543],
    /* return matcher indices */ &kMatcherIndices[21],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [159] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[542],
    /* return matcher indices */ &kMatcherIndices[138],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [160] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[541],
    /* return matcher indices */ &kMatcherIndices[103],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [161] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[540],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [162] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[539],
    /* return matcher indices */ &kMatcherIndices[21],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [163] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[538],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [164] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[537],
    /* return matcher indices */ &kMatcherIndices[21],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [165] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[536],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [166] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[535],
    /* return matcher indices */ &kMatcherIndices[21],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment),
    /* is_deprecated */ false,
  },
  {
    /* [167] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[569],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [168] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[568],
    /* return matcher indices */ &kMatcherIndices[21],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [169] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[533],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [170] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[532],
    /* return matcher indices */ &kMatcherIndices[21],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [171] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[531],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [172] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[530],
    /* return matcher indices */ &kMatcherIndices[24],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [173] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[529],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [174] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[528],
    /* return matcher indices */ &kMatcherIndices[24],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [175] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[527],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [176] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[526],
    /* return matcher indices */ &kMatcherIndices[24],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [177] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[525],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [178] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[524],
    /* return matcher indices */ &kMatcherIndices[24],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [179] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[394],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [180] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[390],
    /* return matcher indices */ &kMatcherIndices[21],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [181] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[523],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [182] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[522],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [183] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[521],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [184] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[520],
    /* return matcher indices */ &kMatcherIndices[21],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [185] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[519],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [186] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[518],
    /* return matcher indices */ &kMatcherIndices[21],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [187] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[388],
    /* return matcher indices */ &kMatcherIndices[1],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [188] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[380],
    /* return matcher indices */ &kMatcherIndices[39],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [189] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[414],
    /* return matcher indices */ &kMatcherIndices[1],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [190] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[450],
    /* return matcher indices */ &kMatcherIndices[39],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [191] */
    /* num parameters */ 3,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[324],
    /* return matcher indices */ &kMatcherIndices[1],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [192] */
    /* num parameters */ 3,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[321],
    /* return matcher indices */ &kMatcherIndices[39],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [193] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[517],
    /* return matcher indices */ &kMatcherIndices[137],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [194] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[516],
    /* return matcher indices */ &kMatcherIndices[101],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [195] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[408],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [196] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[406],
    /* return matcher indices */ &kMatcherIndices[21],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [197] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[424],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [198] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[426],
    /* return matcher indices */ &kMatcherIndices[21],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [199] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[502],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [200] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[501],
    /* return matcher indices */ &kMatcherIndices[21],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [201] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[496],
    /* return matcher indices */ &kMatcherIndices[55],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [202] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[497],
    /* return matcher indices */ &kMatcherIndices[55],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [203] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[573],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [204] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[572],
    /* return matcher indices */ &kMatcherIndices[21],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [205] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[575],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [206] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[574],
    /* return matcher indices */ &kMatcherIndices[21],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [207] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[382],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [208] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[384],
    /* return matcher indices */ &kMatcherIndices[21],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [209] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[579],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [210] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[578],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [211] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[465],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [212] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[463],
    /* return matcher indices */ &kMatcherIndices[21],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [213] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[581],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [214] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[580],
    /* return matcher indices */ &kMatcherIndices[10],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [215] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[508],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [216] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[507],
    /* return matcher indices */ &kMatcherIndices[21],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [217] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[583],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [218] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[582],
    /* return matcher indices */ &kMatcherIndices[21],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [219] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[506],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [220] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[505],
    /* return matcher indices */ &kMatcherIndices[21],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [221] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[504],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [222] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[503],
    /* return matcher indices */ &kMatcherIndices[21],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [223] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[472],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [224] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[470],
    /* return matcher indices */ &kMatcherIndices[21],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [225] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[360],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [226] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[375],
    /* return matcher indices */ &kMatcherIndices[21],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [227] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[500],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [228] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[499],
    /* return matcher indices */ &kMatcherIndices[21],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [229] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[2],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[509],
    /* return matcher indices */ &kMatcherIndices[1],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [230] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[2],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[452],
    /* return matcher indices */ &kMatcherIndices[39],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [231] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[585],
    /* return matcher indices */ &kMatcherIndices[1],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [232] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[584],
    /* return matcher indices */ &kMatcherIndices[39],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [233] */
    /* num parameters */ 0,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[586],
    /* return matcher indices */ nullptr,
    /* supported_stages */ PipelineStageSet(PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [234] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[513],
    /* return matcher indices */ &kMatcherIndices[43],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [235] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 2,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[2],
    /* parameters */ &kParameters[468],
    /* return matcher indices */ &kMatcherIndices[9],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [236] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[339],
    /* return matcher indices */ &kMatcherIndices[21],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [237] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[461],
    /* return matcher indices */ &kMatcherIndices[89],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [238] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[459],
    /* return matcher indices */ &kMatcherIndices[89],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [239] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[457],
    /* return matcher indices */ &kMatcherIndices[89],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [240] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[455],
    /* return matcher indices */ &kMatcherIndices[81],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [241] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[453],
    /* return matcher indices */ &kMatcherIndices[81],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [242] */
    /* num parameters */ 0,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[586],
    /* return matcher indices */ nullptr,
    /* supported_stages */ PipelineStageSet(PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [243] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[386],
    /* return matcher indices */ &kMatcherIndices[21],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [244] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[510],
    /* return matcher indices */ &kMatcherIndices[43],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [245] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[511],
    /* return matcher indices */ &kMatcherIndices[43],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [246] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[512],
    /* return matcher indices */ &kMatcherIndices[43],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [247] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[514],
    /* return matcher indices */ &kMatcherIndices[43],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [248] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[515],
    /* return matcher indices */ &kMatcherIndices[21],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [249] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[0],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[534],
    /* return matcher indices */ nullptr,
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ true,
  },
  {
    /* [250] */
    /* num parameters */ 3,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[318],
    /* return matcher indices */ &kMatcherIndices[21],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [251] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[1],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[398],
    /* return matcher indices */ &kMatcherIndices[1],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [252] */
    /* num parameters */ 1,
    /* num open types */ 0,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[3],
    /* parameters */ &kParameters[563],
    /* return matcher indices */ &kMatcherIndices[12],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [253] */
    /* num parameters */ 2,
    /* num open types */ 0,
    /* num open numbers */ 0,
    /* open types */ &kOpenTypes[4],
    /* open numbers */ &kOpenNumbers[6],
    /* parameters */ &kParameters[404],
    /* return matcher indices */ &kMatcherIndices[87],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [254] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[0],
    /* open numbers */ &kOpenNumbers[4],
    /* parameters */ &kParameters[576],
    /* return matcher indices */ &kMatcherIndices[43],
    /* supported_stages */ PipelineStageSet(PipelineStage::kVertex, PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [255] */
    /* num parameters */ 1,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[2],
    /* open numbers */ &kOpenNumbers[5],
    /* parameters */ &kParameters[577],
    /* return matcher indices */ &kMatcherIndices[1],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [256] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[2],
    /* open numbers */ &kOpenNumbers[5],
    /* parameters */ &kParameters[412],
    /* return matcher indices */ nullptr,
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [257] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[2],
    /* open numbers */ &kOpenNumbers[5],
    /* parameters */ &kParameters[378],
    /* return matcher indices */ &kMatcherIndices[1],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [258] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[2],
    /* open numbers */ &kOpenNumbers[5],
    /* parameters */ &kParameters[416],
    /* return matcher indices */ &kMatcherIndices[1],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [259] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[2],
    /* open numbers */ &kOpenNumbers[5],
    /* parameters */ &kParameters[418],
    /* return matcher indices */ &kMatcherIndices[1],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [260] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[2],
    /* open numbers */ &kOpenNumbers[5],
    /* parameters */ &kParameters[420],
    /* return matcher indices */ &kMatcherIndices[1],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [261] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[2],
    /* open numbers */ &kOpenNumbers[5],
    /* parameters */ &kParameters[422],
    /* return matcher indices */ &kMatcherIndices[1],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [262] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[2],
    /* open numbers */ &kOpenNumbers[5],
    /* parameters */ &kParameters[430],
    /* return matcher indices */ &kMatcherIndices[1],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [263] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[2],
    /* open numbers */ &kOpenNumbers[5],
    /* parameters */ &kParameters[396],
    /* return matcher indices */ &kMatcherIndices[1],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [264] */
    /* num parameters */ 2,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[2],
    /* open numbers */ &kOpenNumbers[5],
    /* parameters */ &kParameters[428],
    /* return matcher indices */ &kMatcherIndices[1],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
  {
    /* [265] */
    /* num parameters */ 3,
    /* num open types */ 1,
    /* num open numbers */ 1,
    /* open types */ &kOpenTypes[2],
    /* open numbers */ &kOpenNumbers[5],
    /* parameters */ &kParameters[327],
    /* return matcher indices */ &kMatcherIndices[127],
    /* supported_stages */ PipelineStageSet(PipelineStage::kFragment, PipelineStage::kCompute),
    /* is_deprecated */ false,
  },
};

constexpr IntrinsicInfo kIntrinsics[] = {
  {
    /* [0] */
    /* fn abs<T : fiu32>(T) -> T */
    /* fn abs<N : num, T : fiu32>(vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[231],
  },
  {
    /* [1] */
    /* fn acos(f32) -> f32 */
    /* fn acos<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[217],
  },
  {
    /* [2] */
    /* fn all(bool) -> bool */
    /* fn all<N : num>(vec<N, bool>) -> bool */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[213],
  },
  {
    /* [3] */
    /* fn any(bool) -> bool */
    /* fn any<N : num>(vec<N, bool>) -> bool */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[209],
  },
  {
    /* [4] */
    /* fn arrayLength<T, A : access>(ptr<storage, array<T>, A>) -> u32 */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[254],
  },
  {
    /* [5] */
    /* fn asin(f32) -> f32 */
    /* fn asin<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[205],
  },
  {
    /* [6] */
    /* fn atan(f32) -> f32 */
    /* fn atan<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[203],
  },
  {
    /* [7] */
    /* fn atan2(f32, f32) -> f32 */
    /* fn atan2<N : num>(vec<N, f32>, vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[195],
  },
  {
    /* [8] */
    /* fn ceil(f32) -> f32 */
    /* fn ceil<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[127],
  },
  {
    /* [9] */
    /* fn clamp<T : fiu32>(T, T, T) -> T */
    /* fn clamp<N : num, T : fiu32>(vec<N, T>, vec<N, T>, vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[191],
  },
  {
    /* [10] */
    /* fn cos(f32) -> f32 */
    /* fn cos<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[167],
  },
  {
    /* [11] */
    /* fn cosh(f32) -> f32 */
    /* fn cosh<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[151],
  },
  {
    /* [12] */
    /* fn countOneBits<T : iu32>(T) -> T */
    /* fn countOneBits<N : num, T : iu32>(vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[129],
  },
  {
    /* [13] */
    /* fn cross(vec3<f32>, vec3<f32>) -> vec3<f32> */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[253],
  },
  {
    /* [14] */
    /* fn determinant<N : num>(mat<N, N, f32>) -> f32 */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[252],
  },
  {
    /* [15] */
    /* fn distance(f32, f32) -> f32 */
    /* fn distance<N : num>(vec<N, f32>, vec<N, f32>) -> f32 */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[131],
  },
  {
    /* [16] */
    /* fn dot<N : num, T : fiu32>(vec<N, T>, vec<N, T>) -> T */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[251],
  },
  {
    /* [17] */
    /* fn dpdx(f32) -> f32 */
    /* fn dpdx<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[135],
  },
  {
    /* [18] */
    /* fn dpdxCoarse(f32) -> f32 */
    /* fn dpdxCoarse<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[137],
  },
  {
    /* [19] */
    /* fn dpdxFine(f32) -> f32 */
    /* fn dpdxFine<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[139],
  },
  {
    /* [20] */
    /* fn dpdy(f32) -> f32 */
    /* fn dpdy<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[141],
  },
  {
    /* [21] */
    /* fn dpdyCoarse(f32) -> f32 */
    /* fn dpdyCoarse<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[143],
  },
  {
    /* [22] */
    /* fn dpdyFine(f32) -> f32 */
    /* fn dpdyFine<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[145],
  },
  {
    /* [23] */
    /* fn exp(f32) -> f32 */
    /* fn exp<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[147],
  },
  {
    /* [24] */
    /* fn exp2(f32) -> f32 */
    /* fn exp2<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[149],
  },
  {
    /* [25] */
    /* fn faceForward<N : num>(vec<N, f32>, vec<N, f32>, vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[250],
  },
  {
    /* [26] */
    /* fn floor(f32) -> f32 */
    /* fn floor<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[153],
  },
  {
    /* [27] */
    /* fn fma(f32, f32, f32) -> f32 */
    /* fn fma<N : num>(vec<N, f32>, vec<N, f32>, vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[155],
  },
  {
    /* [28] */
    /* fn fract(f32) -> f32 */
    /* fn fract<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[157],
  },
  {
    /* [29] */
    /* fn frexp(f32) -> _frexp_result */
    /* fn frexp<N : num>(vec<N, f32>) -> _frexp_result_vec<N> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[159],
  },
  {
    /* [30] */
    /* fn fwidth(f32) -> f32 */
    /* fn fwidth<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[161],
  },
  {
    /* [31] */
    /* fn fwidthCoarse(f32) -> f32 */
    /* fn fwidthCoarse<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[163],
  },
  {
    /* [32] */
    /* fn fwidthFine(f32) -> f32 */
    /* fn fwidthFine<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[165],
  },
  {
    /* [33] */
    /* fn ignore<T>(T) */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[249],
  },
  {
    /* [34] */
    /* fn inverseSqrt(f32) -> f32 */
    /* fn inverseSqrt<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[169],
  },
  {
    /* [35] */
    /* fn isFinite(f32) -> bool */
    /* fn isFinite<N : num>(vec<N, f32>) -> vec<N, bool> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[171],
  },
  {
    /* [36] */
    /* fn isInf(f32) -> bool */
    /* fn isInf<N : num>(vec<N, f32>) -> vec<N, bool> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[173],
  },
  {
    /* [37] */
    /* fn isNan(f32) -> bool */
    /* fn isNan<N : num>(vec<N, f32>) -> vec<N, bool> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[175],
  },
  {
    /* [38] */
    /* fn isNormal(f32) -> bool */
    /* fn isNormal<N : num>(vec<N, f32>) -> vec<N, bool> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[177],
  },
  {
    /* [39] */
    /* fn ldexp(f32, i32) -> f32 */
    /* fn ldexp<N : num>(vec<N, f32>, vec<N, i32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[179],
  },
  {
    /* [40] */
    /* fn length(f32) -> f32 */
    /* fn length<N : num>(vec<N, f32>) -> f32 */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[181],
  },
  {
    /* [41] */
    /* fn log(f32) -> f32 */
    /* fn log<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[183],
  },
  {
    /* [42] */
    /* fn log2(f32) -> f32 */
    /* fn log2<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[185],
  },
  {
    /* [43] */
    /* fn max<T : fiu32>(T, T) -> T */
    /* fn max<N : num, T : fiu32>(vec<N, T>, vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[187],
  },
  {
    /* [44] */
    /* fn min<T : fiu32>(T, T) -> T */
    /* fn min<N : num, T : fiu32>(vec<N, T>, vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[189],
  },
  {
    /* [45] */
    /* fn mix(f32, f32, f32) -> f32 */
    /* fn mix<N : num>(vec<N, f32>, vec<N, f32>, vec<N, f32>) -> vec<N, f32> */
    /* fn mix<N : num>(vec<N, f32>, vec<N, f32>, f32) -> vec<N, f32> */
    /* num overloads */ 3,
    /* overloads */ &kOverloads[121],
  },
  {
    /* [46] */
    /* fn modf(f32) -> _modf_result */
    /* fn modf<N : num>(vec<N, f32>) -> _modf_result_vec<N> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[193],
  },
  {
    /* [47] */
    /* fn normalize<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[248],
  },
  {
    /* [48] */
    /* fn pack2x16float(vec2<f32>) -> u32 */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[247],
  },
  {
    /* [49] */
    /* fn pack2x16snorm(vec2<f32>) -> u32 */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[234],
  },
  {
    /* [50] */
    /* fn pack2x16unorm(vec2<f32>) -> u32 */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[246],
  },
  {
    /* [51] */
    /* fn pack4x8snorm(vec4<f32>) -> u32 */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[245],
  },
  {
    /* [52] */
    /* fn pack4x8unorm(vec4<f32>) -> u32 */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[244],
  },
  {
    /* [53] */
    /* fn pow(f32, f32) -> f32 */
    /* fn pow<N : num>(vec<N, f32>, vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[207],
  },
  {
    /* [54] */
    /* fn reflect<N : num>(vec<N, f32>, vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[243],
  },
  {
    /* [55] */
    /* fn refract<N : num>(vec<N, f32>, vec<N, f32>, f32) -> vec<N, f32> */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[236],
  },
  {
    /* [56] */
    /* fn reverseBits<T : iu32>(T) -> T */
    /* fn reverseBits<N : num, T : iu32>(vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[229],
  },
  {
    /* [57] */
    /* fn round(f32) -> f32 */
    /* fn round<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[215],
  },
  {
    /* [58] */
    /* 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[124],
  },
  {
    /* [59] */
    /* fn sign(f32) -> f32 */
    /* fn sign<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[219],
  },
  {
    /* [60] */
    /* fn sin(f32) -> f32 */
    /* fn sin<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[221],
  },
  {
    /* [61] */
    /* fn sinh(f32) -> f32 */
    /* fn sinh<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[199],
  },
  {
    /* [62] */
    /* fn smoothStep(f32, f32, f32) -> f32 */
    /* fn smoothStep<N : num>(vec<N, f32>, vec<N, f32>, vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[225],
  },
  {
    /* [63] */
    /* fn sqrt(f32) -> f32 */
    /* fn sqrt<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[227],
  },
  {
    /* [64] */
    /* fn step(f32, f32) -> f32 */
    /* fn step<N : num>(vec<N, f32>, vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[197],
  },
  {
    /* [65] */
    /* fn storageBarrier() */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[233],
  },
  {
    /* [66] */
    /* fn tan(f32) -> f32 */
    /* fn tan<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[133],
  },
  {
    /* [67] */
    /* fn tanh(f32) -> f32 */
    /* fn tanh<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[223],
  },
  {
    /* [68] */
    /* fn transpose<M : num, N : num>(mat<M, N, f32>) -> mat<N, M, f32> */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[235],
  },
  {
    /* [69] */
    /* fn trunc(f32) -> f32 */
    /* fn trunc<N : num>(vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[211],
  },
  {
    /* [70] */
    /* fn unpack2x16float(u32) -> vec2<f32> */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[237],
  },
  {
    /* [71] */
    /* fn unpack2x16snorm(u32) -> vec2<f32> */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[238],
  },
  {
    /* [72] */
    /* fn unpack2x16unorm(u32) -> vec2<f32> */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[239],
  },
  {
    /* [73] */
    /* fn unpack4x8snorm(u32) -> vec4<f32> */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[240],
  },
  {
    /* [74] */
    /* fn unpack4x8unorm(u32) -> vec4<f32> */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[241],
  },
  {
    /* [75] */
    /* fn workgroupBarrier() */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[242],
  },
  {
    /* [76] */
    /* fn textureDimensions<T : fiu32>(texture: texture_1d<T>) -> i32 */
    /* fn textureDimensions<T : fiu32>(texture: texture_1d<T>, level: i32) -> i32 */
    /* fn textureDimensions<T : fiu32>(texture: texture_2d<T>) -> vec2<i32> */
    /* fn textureDimensions<T : fiu32>(texture: texture_2d<T>, level: i32) -> vec2<i32> */
    /* fn textureDimensions<T : fiu32>(texture: texture_2d_array<T>) -> vec2<i32> */
    /* fn textureDimensions<T : fiu32>(texture: texture_2d_array<T>, level: i32) -> vec2<i32> */
    /* fn textureDimensions<T : fiu32>(texture: texture_3d<T>) -> vec3<i32> */
    /* fn textureDimensions<T : fiu32>(texture: texture_3d<T>, level: i32) -> vec3<i32> */
    /* fn textureDimensions<T : fiu32>(texture: texture_cube<T>) -> vec2<i32> */
    /* fn textureDimensions<T : fiu32>(texture: texture_cube<T>, level: i32) -> vec2<i32> */
    /* fn textureDimensions<T : fiu32>(texture: texture_cube_array<T>) -> vec2<i32> */
    /* fn textureDimensions<T : fiu32>(texture: texture_cube_array<T>, level: i32) -> vec2<i32> */
    /* fn textureDimensions<T : fiu32>(texture: texture_multisampled_2d<T>) -> vec2<i32> */
    /* fn textureDimensions(texture: texture_depth_2d) -> vec2<i32> */
    /* fn textureDimensions(texture: texture_depth_2d, level: i32) -> vec2<i32> */
    /* fn textureDimensions(texture: texture_depth_2d_array) -> vec2<i32> */
    /* fn textureDimensions(texture: texture_depth_2d_array, level: i32) -> vec2<i32> */
    /* fn textureDimensions(texture: texture_depth_cube) -> vec2<i32> */
    /* fn textureDimensions(texture: texture_depth_cube, level: i32) -> vec2<i32> */
    /* fn textureDimensions(texture: texture_depth_cube_array) -> vec2<i32> */
    /* fn textureDimensions(texture: texture_depth_cube_array, level: i32) -> vec2<i32> */
    /* fn textureDimensions(texture: texture_depth_multisampled_2d) -> vec2<i32> */
    /* fn textureDimensions<F : texel_format, A : write_only>(texture: texture_storage_1d<F, A>) -> i32 */
    /* fn textureDimensions<F : texel_format, A : write_only>(texture: texture_storage_2d<F, A>) -> vec2<i32> */
    /* fn textureDimensions<F : texel_format, A : write_only>(texture: texture_storage_2d_array<F, A>) -> vec2<i32> */
    /* fn textureDimensions<F : texel_format, A : write_only>(texture: texture_storage_3d<F, A>) -> vec3<i32> */
    /* fn textureDimensions(texture: texture_external) -> vec2<i32> */
    /* num overloads */ 27,
    /* overloads */ &kOverloads[0],
  },
  {
    /* [77] */
    /* fn textureNumLayers<T : fiu32>(texture: texture_2d_array<T>) -> i32 */
    /* fn textureNumLayers<T : fiu32>(texture: texture_cube_array<T>) -> i32 */
    /* fn textureNumLayers(texture: texture_depth_2d_array) -> i32 */
    /* fn textureNumLayers(texture: texture_depth_cube_array) -> i32 */
    /* fn textureNumLayers<F : texel_format, A : write_only>(texture: texture_storage_2d_array<F, A>) -> i32 */
    /* num overloads */ 5,
    /* overloads */ &kOverloads[116],
  },
  {
    /* [78] */
    /* fn textureNumLevels<T : fiu32>(texture: texture_1d<T>) -> i32 */
    /* fn textureNumLevels<T : fiu32>(texture: texture_2d<T>) -> i32 */
    /* fn textureNumLevels<T : fiu32>(texture: texture_2d_array<T>) -> i32 */
    /* fn textureNumLevels<T : fiu32>(texture: texture_3d<T>) -> i32 */
    /* fn textureNumLevels<T : fiu32>(texture: texture_cube<T>) -> i32 */
    /* fn textureNumLevels<T : fiu32>(texture: texture_cube_array<T>) -> i32 */
    /* fn textureNumLevels(texture: texture_depth_2d) -> i32 */
    /* fn textureNumLevels(texture: texture_depth_2d_array) -> i32 */
    /* fn textureNumLevels(texture: texture_depth_cube) -> i32 */
    /* fn textureNumLevels(texture: texture_depth_cube_array) -> i32 */
    /* num overloads */ 10,
    /* overloads */ &kOverloads[69],
  },
  {
    /* [79] */
    /* fn textureNumSamples<T : fiu32>(texture: texture_multisampled_2d<T>) -> i32 */
    /* fn textureNumSamples(texture: texture_depth_multisampled_2d) -> i32 */
    /* num overloads */ 2,
    /* overloads */ &kOverloads[201],
  },
  {
    /* [80] */
    /* 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>, offset: vec2<i32>) -> vec4<f32> */
    /* fn textureSample(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: i32) -> vec4<f32> */
    /* fn textureSample(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: i32, 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>, offset: vec3<i32>) -> vec4<f32> */
    /* fn textureSample(texture: texture_cube<f32>, sampler: sampler, coords: vec3<f32>) -> vec4<f32> */
    /* fn textureSample(texture: texture_cube_array<f32>, sampler: sampler, coords: vec3<f32>, array_index: i32) -> 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>, offset: vec2<i32>) -> f32 */
    /* fn textureSample(texture: texture_depth_2d_array, sampler: sampler, coords: vec2<f32>, array_index: i32) -> f32 */
    /* fn textureSample(texture: texture_depth_2d_array, sampler: sampler, coords: vec2<f32>, array_index: i32, offset: vec2<i32>) -> f32 */
    /* fn textureSample(texture: texture_depth_cube, sampler: sampler, coords: vec3<f32>) -> f32 */
    /* fn textureSample(texture: texture_depth_cube_array, sampler: sampler, coords: vec3<f32>, array_index: i32) -> f32 */
    /* num overloads */ 15,
    /* overloads */ &kOverloads[42],
  },
  {
    /* [81] */
    /* 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, offset: vec2<i32>) -> vec4<f32> */
    /* fn textureSampleBias(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: i32, bias: f32) -> vec4<f32> */
    /* fn textureSampleBias(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: i32, bias: f32, 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, offset: vec3<i32>) -> vec4<f32> */
    /* fn textureSampleBias(texture: texture_cube<f32>, sampler: sampler, coords: vec3<f32>, bias: f32) -> vec4<f32> */
    /* fn textureSampleBias(texture: texture_cube_array<f32>, sampler: sampler, coords: vec3<f32>, array_index: i32, bias: f32) -> vec4<f32> */
    /* num overloads */ 8,
    /* overloads */ &kOverloads[88],
  },
  {
    /* [82] */
    /* 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, offset: vec2<i32>) -> f32 */
    /* fn textureSampleCompare(texture: texture_depth_2d_array, sampler: sampler_comparison, coords: vec2<f32>, array_index: i32, depth_ref: f32) -> f32 */
    /* fn textureSampleCompare(texture: texture_depth_2d_array, sampler: sampler_comparison, coords: vec2<f32>, array_index: i32, depth_ref: f32, offset: vec2<i32>) -> f32 */
    /* fn textureSampleCompare(texture: texture_depth_cube, sampler: sampler_comparison, coords: vec3<f32>, depth_ref: f32) -> f32 */
    /* fn textureSampleCompare(texture: texture_depth_cube_array, sampler: sampler_comparison, coords: vec3<f32>, array_index: i32, depth_ref: f32) -> f32 */
    /* num overloads */ 6,
    /* overloads */ &kOverloads[110],
  },
  {
    /* [83] */
    /* 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, offset: vec2<i32>) -> f32 */
    /* fn textureSampleCompareLevel(texture: texture_depth_2d_array, sampler: sampler_comparison, coords: vec2<f32>, array_index: i32, depth_ref: f32) -> f32 */
    /* fn textureSampleCompareLevel(texture: texture_depth_2d_array, sampler: sampler_comparison, coords: vec2<f32>, array_index: i32, depth_ref: f32, offset: vec2<i32>) -> f32 */
    /* fn textureSampleCompareLevel(texture: texture_depth_cube, sampler: sampler_comparison, coords: vec3<f32>, depth_ref: f32) -> f32 */
    /* fn textureSampleCompareLevel(texture: texture_depth_cube_array, sampler: sampler_comparison, coords: vec3<f32>, array_index: i32, depth_ref: f32) -> f32 */
    /* num overloads */ 6,
    /* overloads */ &kOverloads[104],
  },
  {
    /* [84] */
    /* 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>, offset: vec2<i32>) -> vec4<f32> */
    /* fn textureSampleGrad(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: i32, ddx: vec2<f32>, ddy: vec2<f32>) -> vec4<f32> */
    /* fn textureSampleGrad(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: i32, ddx: vec2<f32>, ddy: vec2<f32>, 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>, 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(texture: texture_cube_array<f32>, sampler: sampler, coords: vec3<f32>, array_index: i32, ddx: vec3<f32>, ddy: vec3<f32>) -> vec4<f32> */
    /* num overloads */ 8,
    /* overloads */ &kOverloads[96],
  },
  {
    /* [85] */
    /* 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, offset: vec2<i32>) -> vec4<f32> */
    /* fn textureSampleLevel(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: i32, level: f32) -> vec4<f32> */
    /* fn textureSampleLevel(texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: i32, level: f32, 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, offset: vec3<i32>) -> vec4<f32> */
    /* fn textureSampleLevel(texture: texture_cube<f32>, sampler: sampler, coords: vec3<f32>, level: f32) -> vec4<f32> */
    /* fn textureSampleLevel(texture: texture_cube_array<f32>, sampler: sampler, coords: vec3<f32>, array_index: i32, level: f32) -> vec4<f32> */
    /* fn textureSampleLevel(texture: texture_depth_2d, sampler: sampler, coords: vec2<f32>, level: i32) -> f32 */
    /* fn textureSampleLevel(texture: texture_depth_2d, sampler: sampler, coords: vec2<f32>, level: i32, offset: vec2<i32>) -> f32 */
    /* fn textureSampleLevel(texture: texture_depth_2d_array, sampler: sampler, coords: vec2<f32>, array_index: i32, level: i32) -> f32 */
    /* fn textureSampleLevel(texture: texture_depth_2d_array, sampler: sampler, coords: vec2<f32>, array_index: i32, level: i32, offset: vec2<i32>) -> f32 */
    /* fn textureSampleLevel(texture: texture_depth_cube, sampler: sampler, coords: vec3<f32>, level: i32) -> f32 */
    /* fn textureSampleLevel(texture: texture_depth_cube_array, sampler: sampler, coords: vec3<f32>, array_index: i32, level: i32) -> f32 */
    /* fn textureSampleLevel(texture: texture_external, sampler: sampler, coords: vec2<f32>) -> vec4<f32> */
    /* num overloads */ 15,
    /* overloads */ &kOverloads[27],
  },
  {
    /* [86] */
    /* fn textureStore(texture: texture_storage_1d<f32_texel_format, write>, coords: i32, value: vec4<f32>) */
    /* fn textureStore(texture: texture_storage_2d<f32_texel_format, write>, coords: vec2<i32>, value: vec4<f32>) */
    /* fn textureStore(texture: texture_storage_2d_array<f32_texel_format, write>, coords: vec2<i32>, array_index: i32, value: vec4<f32>) */
    /* fn textureStore(texture: texture_storage_3d<f32_texel_format, write>, coords: vec3<i32>, value: vec4<f32>) */
    /* fn textureStore(texture: texture_storage_1d<i32_texel_format, write>, coords: i32, value: vec4<i32>) */
    /* fn textureStore(texture: texture_storage_2d<i32_texel_format, write>, coords: vec2<i32>, value: vec4<i32>) */
    /* fn textureStore(texture: texture_storage_2d_array<i32_texel_format, write>, coords: vec2<i32>, array_index: i32, value: vec4<i32>) */
    /* fn textureStore(texture: texture_storage_3d<i32_texel_format, write>, coords: vec3<i32>, value: vec4<i32>) */
    /* fn textureStore(texture: texture_storage_1d<u32_texel_format, write>, coords: i32, value: vec4<u32>) */
    /* fn textureStore(texture: texture_storage_2d<u32_texel_format, write>, coords: vec2<i32>, value: vec4<u32>) */
    /* fn textureStore(texture: texture_storage_2d_array<u32_texel_format, write>, coords: vec2<i32>, array_index: i32, value: vec4<u32>) */
    /* fn textureStore(texture: texture_storage_3d<u32_texel_format, write>, coords: vec3<i32>, value: vec4<u32>) */
    /* num overloads */ 12,
    /* overloads */ &kOverloads[57],
  },
  {
    /* [87] */
    /* fn textureLoad<T : fiu32>(texture: texture_1d<T>, coords: i32, level: i32) -> vec4<T> */
    /* fn textureLoad<T : fiu32>(texture: texture_2d<T>, coords: vec2<i32>, level: i32) -> vec4<T> */
    /* fn textureLoad<T : fiu32>(texture: texture_2d_array<T>, coords: vec2<i32>, array_index: i32, level: i32) -> vec4<T> */
    /* fn textureLoad<T : fiu32>(texture: texture_3d<T>, coords: vec3<i32>, level: i32) -> vec4<T> */
    /* fn textureLoad<T : fiu32>(texture: texture_multisampled_2d<T>, coords: vec2<i32>, sample_index: i32) -> vec4<T> */
    /* fn textureLoad(texture: texture_depth_2d, coords: vec2<i32>, level: i32) -> f32 */
    /* fn textureLoad(texture: texture_depth_2d_array, coords: vec2<i32>, array_index: i32, level: i32) -> f32 */
    /* fn textureLoad(texture: texture_depth_multisampled_2d, coords: vec2<i32>, sample_index: i32) -> f32 */
    /* fn textureLoad(texture: texture_external, coords: vec2<i32>) -> vec4<f32> */
    /* num overloads */ 9,
    /* overloads */ &kOverloads[79],
  },
  {
    /* [88] */
    /* fn atomicLoad<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>) -> T */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[255],
  },
  {
    /* [89] */
    /* fn atomicStore<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[256],
  },
  {
    /* [90] */
    /* fn atomicAdd<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[257],
  },
  {
    /* [91] */
    /* fn atomicSub<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[258],
  },
  {
    /* [92] */
    /* fn atomicMax<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[259],
  },
  {
    /* [93] */
    /* fn atomicMin<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[260],
  },
  {
    /* [94] */
    /* fn atomicAnd<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[261],
  },
  {
    /* [95] */
    /* fn atomicOr<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[262],
  },
  {
    /* [96] */
    /* fn atomicXor<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[263],
  },
  {
    /* [97] */
    /* fn atomicExchange<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T) -> T */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[264],
  },
  {
    /* [98] */
    /* fn atomicCompareExchangeWeak<T : iu32, S : workgroup_or_storage>(ptr<S, atomic<T>, read_write>, T, T) -> vec2<T> */
    /* num overloads */ 1,
    /* overloads */ &kOverloads[265],
  },
};

// clang-format on
