// 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:42
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:43
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 */ true,
  },
  {
    /* [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 */ true,
  },
  {
    /* [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 */ true,
  },
  {
    /* [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 */ true,
  },
  {
    /* [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 */ true,
  },
  {
    /* [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 */ true,
  },
  {
    /* [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 */ true,
  },
  {
    /* [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 */ true,
  },
  {
    /* [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
