// Copyright 2023 The Dawn & Tint Authors
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
//
// 1. Redistributions of source code must retain the above copyright notice, this
//    list of conditions and the following disclaimer.
//
// 2. Redistributions in binary form must reproduce the above copyright notice,
//    this list of conditions and the following disclaimer in the documentation
//    and/or other materials provided with the distribution.
//
// 3. Neither the name of the copyright holder nor the names of its
//    contributors may be used to endorse or promote products derived from
//    this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

////////////////////////////////////////////////////////////////////////////////
// File generated by 'tools/src/cmd/gen' using the template:
//   src/tint/lang/core/intrinsic/data.cc.tmpl
//
// To regenerate run: './tools/run gen'
//
//                       Do not modify this file directly
////////////////////////////////////////////////////////////////////////////////

#include <limits>
#include <string>

#include "src/tint/lang/core/intrinsic/dialect.h"
#include "src/tint/lang/core/intrinsic/type_matchers.h"
#include "src/tint/utils/text/string_stream.h"

namespace tint::core::intrinsic {

namespace {

using ConstEvalFunctionIndex = tint::core::intrinsic::ConstEvalFunctionIndex;
using IntrinsicInfo = tint::core::intrinsic::IntrinsicInfo;
using MatcherIndicesIndex = tint::core::intrinsic::MatcherIndicesIndex;
using MatchState = tint::core::intrinsic::MatchState;
using Number = tint::core::intrinsic::Number;
using NumberMatcher = tint::core::intrinsic::NumberMatcher;
using NumberMatcherIndex = tint::core::intrinsic::NumberMatcherIndex;
using OverloadFlag = tint::core::intrinsic::OverloadFlag;
using OverloadFlags = tint::core::intrinsic::OverloadFlags;
using OverloadIndex = tint::core::intrinsic::OverloadIndex;
using OverloadInfo = tint::core::intrinsic::OverloadInfo;
using ParameterIndex = tint::core::intrinsic::ParameterIndex;
using ParameterInfo = tint::core::intrinsic::ParameterInfo;
using StringStream = tint::StringStream;
using TemplateIndex = tint::core::intrinsic::TemplateIndex;
using Type = tint::core::type::Type;
using TypeMatcher = tint::core::intrinsic::TypeMatcher;
using TypeMatcherIndex = tint::core::intrinsic::TypeMatcherIndex;

template <size_t N>
using TemplateNumberMatcher = tint::core::intrinsic::TemplateNumberMatcher<N>;

template <size_t N>
using TemplateTypeMatcher = tint::core::intrinsic::TemplateTypeMatcher<N>;

// clang-format off

/// TypeMatcher for 'type bool'
constexpr TypeMatcher kBoolMatcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
    if (!MatchBool(state, ty)) {
      return nullptr;
    }
    return BuildBool(state, ty);
  },
/* string */ [](MatchState*) -> std::string {
    return "bool";
  }
};


/// TypeMatcher for 'type i32'
constexpr TypeMatcher kI32Matcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
    if (!MatchI32(state, ty)) {
      return nullptr;
    }
    return BuildI32(state, ty);
  },
/* string */ [](MatchState*) -> std::string {
    return "i32";
  }
};


/// TypeMatcher for 'type u32'
constexpr TypeMatcher kU32Matcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
    if (!MatchU32(state, ty)) {
      return nullptr;
    }
    return BuildU32(state, ty);
  },
/* string */ [](MatchState*) -> std::string {
    return "u32";
  }
};


/// TypeMatcher for 'type f32'
constexpr TypeMatcher kF32Matcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
    if (!MatchF32(state, ty)) {
      return nullptr;
    }
    return BuildF32(state, ty);
  },
/* string */ [](MatchState*) -> std::string {
    return "f32";
  }
};


/// TypeMatcher for 'type f16'
constexpr TypeMatcher kF16Matcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
    if (!MatchF16(state, ty)) {
      return nullptr;
    }
    return BuildF16(state, ty);
  },
/* string */ [](MatchState*) -> std::string {
    return "f16";
  }
};


/// TypeMatcher for 'type vec2'
constexpr TypeMatcher kVec2Matcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
  const Type* T = nullptr;
    if (!MatchVec2(state, ty, T)) {
      return nullptr;
    }
    T = state.Type(T);
    if (T == nullptr) {
      return nullptr;
    }
    return BuildVec2(state, ty, T);
  },
/* string */ [](MatchState* state) -> std::string {
  const std::string T = state->TypeName();
    return "vec2<" + T + ">";
  }
};


/// TypeMatcher for 'type vec3'
constexpr TypeMatcher kVec3Matcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
  const Type* T = nullptr;
    if (!MatchVec3(state, ty, T)) {
      return nullptr;
    }
    T = state.Type(T);
    if (T == nullptr) {
      return nullptr;
    }
    return BuildVec3(state, ty, T);
  },
/* string */ [](MatchState* state) -> std::string {
  const std::string T = state->TypeName();
    return "vec3<" + T + ">";
  }
};


/// TypeMatcher for 'type vec4'
constexpr TypeMatcher kVec4Matcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
  const Type* T = nullptr;
    if (!MatchVec4(state, ty, T)) {
      return nullptr;
    }
    T = state.Type(T);
    if (T == nullptr) {
      return nullptr;
    }
    return BuildVec4(state, ty, T);
  },
/* string */ [](MatchState* state) -> std::string {
  const std::string T = state->TypeName();
    return "vec4<" + T + ">";
  }
};


/// TypeMatcher for 'type mat2x2'
constexpr TypeMatcher kMat2X2Matcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
  const Type* T = nullptr;
    if (!MatchMat2X2(state, ty, T)) {
      return nullptr;
    }
    T = state.Type(T);
    if (T == nullptr) {
      return nullptr;
    }
    return BuildMat2X2(state, ty, T);
  },
/* string */ [](MatchState* state) -> std::string {
  const std::string T = state->TypeName();
    return "mat2x2<" + T + ">";
  }
};


/// TypeMatcher for 'type mat2x3'
constexpr TypeMatcher kMat2X3Matcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
  const Type* T = nullptr;
    if (!MatchMat2X3(state, ty, T)) {
      return nullptr;
    }
    T = state.Type(T);
    if (T == nullptr) {
      return nullptr;
    }
    return BuildMat2X3(state, ty, T);
  },
/* string */ [](MatchState* state) -> std::string {
  const std::string T = state->TypeName();
    return "mat2x3<" + T + ">";
  }
};


/// TypeMatcher for 'type mat2x4'
constexpr TypeMatcher kMat2X4Matcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
  const Type* T = nullptr;
    if (!MatchMat2X4(state, ty, T)) {
      return nullptr;
    }
    T = state.Type(T);
    if (T == nullptr) {
      return nullptr;
    }
    return BuildMat2X4(state, ty, T);
  },
/* string */ [](MatchState* state) -> std::string {
  const std::string T = state->TypeName();
    return "mat2x4<" + T + ">";
  }
};


/// TypeMatcher for 'type mat3x2'
constexpr TypeMatcher kMat3X2Matcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
  const Type* T = nullptr;
    if (!MatchMat3X2(state, ty, T)) {
      return nullptr;
    }
    T = state.Type(T);
    if (T == nullptr) {
      return nullptr;
    }
    return BuildMat3X2(state, ty, T);
  },
/* string */ [](MatchState* state) -> std::string {
  const std::string T = state->TypeName();
    return "mat3x2<" + T + ">";
  }
};


/// TypeMatcher for 'type mat3x3'
constexpr TypeMatcher kMat3X3Matcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
  const Type* T = nullptr;
    if (!MatchMat3X3(state, ty, T)) {
      return nullptr;
    }
    T = state.Type(T);
    if (T == nullptr) {
      return nullptr;
    }
    return BuildMat3X3(state, ty, T);
  },
/* string */ [](MatchState* state) -> std::string {
  const std::string T = state->TypeName();
    return "mat3x3<" + T + ">";
  }
};


/// TypeMatcher for 'type mat3x4'
constexpr TypeMatcher kMat3X4Matcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
  const Type* T = nullptr;
    if (!MatchMat3X4(state, ty, T)) {
      return nullptr;
    }
    T = state.Type(T);
    if (T == nullptr) {
      return nullptr;
    }
    return BuildMat3X4(state, ty, T);
  },
/* string */ [](MatchState* state) -> std::string {
  const std::string T = state->TypeName();
    return "mat3x4<" + T + ">";
  }
};


/// TypeMatcher for 'type mat4x2'
constexpr TypeMatcher kMat4X2Matcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
  const Type* T = nullptr;
    if (!MatchMat4X2(state, ty, T)) {
      return nullptr;
    }
    T = state.Type(T);
    if (T == nullptr) {
      return nullptr;
    }
    return BuildMat4X2(state, ty, T);
  },
/* string */ [](MatchState* state) -> std::string {
  const std::string T = state->TypeName();
    return "mat4x2<" + T + ">";
  }
};


/// TypeMatcher for 'type mat4x3'
constexpr TypeMatcher kMat4X3Matcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
  const Type* T = nullptr;
    if (!MatchMat4X3(state, ty, T)) {
      return nullptr;
    }
    T = state.Type(T);
    if (T == nullptr) {
      return nullptr;
    }
    return BuildMat4X3(state, ty, T);
  },
/* string */ [](MatchState* state) -> std::string {
  const std::string T = state->TypeName();
    return "mat4x3<" + T + ">";
  }
};


/// TypeMatcher for 'type mat4x4'
constexpr TypeMatcher kMat4X4Matcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
  const Type* T = nullptr;
    if (!MatchMat4X4(state, ty, T)) {
      return nullptr;
    }
    T = state.Type(T);
    if (T == nullptr) {
      return nullptr;
    }
    return BuildMat4X4(state, ty, T);
  },
/* string */ [](MatchState* state) -> std::string {
  const std::string T = state->TypeName();
    return "mat4x4<" + T + ">";
  }
};


/// TypeMatcher for 'type vec'
constexpr TypeMatcher kVecMatcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
  Number N = Number::invalid;
  const Type* T = nullptr;
    if (!MatchVec(state, ty, N, T)) {
      return nullptr;
    }
    N = state.Num(N);
    if (!N.IsValid()) {
      return nullptr;
    }
    T = state.Type(T);
    if (T == nullptr) {
      return nullptr;
    }
    return BuildVec(state, ty, N, T);
  },
/* string */ [](MatchState* state) -> std::string {
  const std::string N = state->NumName();
  const std::string T = state->TypeName();
    StringStream ss;
    ss << "vec" << N << "<" << T << ">";
    return ss.str();
  }
};


/// TypeMatcher for 'type mat'
constexpr TypeMatcher kMatMatcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
  Number N = Number::invalid;
  Number M = Number::invalid;
  const Type* T = nullptr;
    if (!MatchMat(state, ty, N, M, T)) {
      return nullptr;
    }
    N = state.Num(N);
    if (!N.IsValid()) {
      return nullptr;
    }
    M = state.Num(M);
    if (!M.IsValid()) {
      return nullptr;
    }
    T = state.Type(T);
    if (T == nullptr) {
      return nullptr;
    }
    return BuildMat(state, ty, N, M, T);
  },
/* string */ [](MatchState* state) -> std::string {
  const std::string N = state->NumName();
  const std::string M = state->NumName();
  const std::string T = state->TypeName();
    StringStream ss;
    ss << "mat" << N << "x" << M << "<" << T << ">";
    return ss.str();
  }
};


/// TypeMatcher for 'type ptr'
constexpr TypeMatcher kPtrMatcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
  Number S = Number::invalid;
  const Type* T = nullptr;
  Number A = Number::invalid;
    if (!MatchPtr(state, ty, S, T, A)) {
      return nullptr;
    }
    S = state.Num(S);
    if (!S.IsValid()) {
      return nullptr;
    }
    T = state.Type(T);
    if (T == nullptr) {
      return nullptr;
    }
    A = state.Num(A);
    if (!A.IsValid()) {
      return nullptr;
    }
    return BuildPtr(state, ty, S, T, A);
  },
/* string */ [](MatchState* state) -> std::string {
  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'
constexpr TypeMatcher kAtomicMatcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
  const Type* T = nullptr;
    if (!MatchAtomic(state, ty, T)) {
      return nullptr;
    }
    T = state.Type(T);
    if (T == nullptr) {
      return nullptr;
    }
    return BuildAtomic(state, ty, T);
  },
/* string */ [](MatchState* state) -> std::string {
  const std::string T = state->TypeName();
    return "atomic<" + T + ">";
  }
};


/// TypeMatcher for 'type array'
constexpr TypeMatcher kArrayMatcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
  const Type* T = nullptr;
    if (!MatchArray(state, ty, T)) {
      return nullptr;
    }
    T = state.Type(T);
    if (T == nullptr) {
      return nullptr;
    }
    return BuildArray(state, ty, T);
  },
/* string */ [](MatchState* state) -> std::string {
  const std::string T = state->TypeName();
    return "array<" + T + ">";
  }
};


/// TypeMatcher for 'type sampler'
constexpr TypeMatcher kSamplerMatcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
    if (!MatchSampler(state, ty)) {
      return nullptr;
    }
    return BuildSampler(state, ty);
  },
/* string */ [](MatchState*) -> std::string {
    return "sampler";
  }
};


/// TypeMatcher for 'type sampler_comparison'
constexpr TypeMatcher kSamplerComparisonMatcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
    if (!MatchSamplerComparison(state, ty)) {
      return nullptr;
    }
    return BuildSamplerComparison(state, ty);
  },
/* string */ [](MatchState*) -> std::string {
    return "sampler_comparison";
  }
};


/// TypeMatcher for 'type texture_1d'
constexpr TypeMatcher kTexture1DMatcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
  const Type* T = nullptr;
    if (!MatchTexture1D(state, ty, T)) {
      return nullptr;
    }
    T = state.Type(T);
    if (T == nullptr) {
      return nullptr;
    }
    return BuildTexture1D(state, ty, T);
  },
/* string */ [](MatchState* state) -> std::string {
  const std::string T = state->TypeName();
    return "texture_1d<" + T + ">";
  }
};


/// TypeMatcher for 'type texture_2d'
constexpr TypeMatcher kTexture2DMatcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
  const Type* T = nullptr;
    if (!MatchTexture2D(state, ty, T)) {
      return nullptr;
    }
    T = state.Type(T);
    if (T == nullptr) {
      return nullptr;
    }
    return BuildTexture2D(state, ty, T);
  },
/* string */ [](MatchState* state) -> std::string {
  const std::string T = state->TypeName();
    return "texture_2d<" + T + ">";
  }
};


/// TypeMatcher for 'type texture_2d_array'
constexpr TypeMatcher kTexture2DArrayMatcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
  const Type* T = nullptr;
    if (!MatchTexture2DArray(state, ty, T)) {
      return nullptr;
    }
    T = state.Type(T);
    if (T == nullptr) {
      return nullptr;
    }
    return BuildTexture2DArray(state, ty, T);
  },
/* string */ [](MatchState* state) -> std::string {
  const std::string T = state->TypeName();
    return "texture_2d_array<" + T + ">";
  }
};


/// TypeMatcher for 'type texture_3d'
constexpr TypeMatcher kTexture3DMatcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
  const Type* T = nullptr;
    if (!MatchTexture3D(state, ty, T)) {
      return nullptr;
    }
    T = state.Type(T);
    if (T == nullptr) {
      return nullptr;
    }
    return BuildTexture3D(state, ty, T);
  },
/* string */ [](MatchState* state) -> std::string {
  const std::string T = state->TypeName();
    return "texture_3d<" + T + ">";
  }
};


/// TypeMatcher for 'type texture_cube'
constexpr TypeMatcher kTextureCubeMatcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
  const Type* T = nullptr;
    if (!MatchTextureCube(state, ty, T)) {
      return nullptr;
    }
    T = state.Type(T);
    if (T == nullptr) {
      return nullptr;
    }
    return BuildTextureCube(state, ty, T);
  },
/* string */ [](MatchState* state) -> std::string {
  const std::string T = state->TypeName();
    return "texture_cube<" + T + ">";
  }
};


/// TypeMatcher for 'type texture_cube_array'
constexpr TypeMatcher kTextureCubeArrayMatcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
  const Type* T = nullptr;
    if (!MatchTextureCubeArray(state, ty, T)) {
      return nullptr;
    }
    T = state.Type(T);
    if (T == nullptr) {
      return nullptr;
    }
    return BuildTextureCubeArray(state, ty, T);
  },
/* string */ [](MatchState* state) -> std::string {
  const std::string T = state->TypeName();
    return "texture_cube_array<" + T + ">";
  }
};


/// TypeMatcher for 'type texture_multisampled_2d'
constexpr TypeMatcher kTextureMultisampled2DMatcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
  const Type* T = nullptr;
    if (!MatchTextureMultisampled2D(state, ty, T)) {
      return nullptr;
    }
    T = state.Type(T);
    if (T == nullptr) {
      return nullptr;
    }
    return BuildTextureMultisampled2D(state, ty, T);
  },
/* string */ [](MatchState* state) -> std::string {
  const std::string T = state->TypeName();
    return "texture_multisampled_2d<" + T + ">";
  }
};


/// TypeMatcher for 'type texture_depth_2d'
constexpr TypeMatcher kTextureDepth2DMatcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
    if (!MatchTextureDepth2D(state, ty)) {
      return nullptr;
    }
    return BuildTextureDepth2D(state, ty);
  },
/* string */ [](MatchState*) -> std::string {
    return "texture_depth_2d";
  }
};


/// TypeMatcher for 'type texture_depth_2d_array'
constexpr TypeMatcher kTextureDepth2DArrayMatcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
    if (!MatchTextureDepth2DArray(state, ty)) {
      return nullptr;
    }
    return BuildTextureDepth2DArray(state, ty);
  },
/* string */ [](MatchState*) -> std::string {
    return "texture_depth_2d_array";
  }
};


/// TypeMatcher for 'type texture_depth_cube'
constexpr TypeMatcher kTextureDepthCubeMatcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
    if (!MatchTextureDepthCube(state, ty)) {
      return nullptr;
    }
    return BuildTextureDepthCube(state, ty);
  },
/* string */ [](MatchState*) -> std::string {
    return "texture_depth_cube";
  }
};


/// TypeMatcher for 'type texture_depth_cube_array'
constexpr TypeMatcher kTextureDepthCubeArrayMatcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
    if (!MatchTextureDepthCubeArray(state, ty)) {
      return nullptr;
    }
    return BuildTextureDepthCubeArray(state, ty);
  },
/* string */ [](MatchState*) -> std::string {
    return "texture_depth_cube_array";
  }
};


/// TypeMatcher for 'type texture_depth_multisampled_2d'
constexpr TypeMatcher kTextureDepthMultisampled2DMatcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
    if (!MatchTextureDepthMultisampled2D(state, ty)) {
      return nullptr;
    }
    return BuildTextureDepthMultisampled2D(state, ty);
  },
/* string */ [](MatchState*) -> std::string {
    return "texture_depth_multisampled_2d";
  }
};


/// TypeMatcher for 'type texture_storage_1d'
constexpr TypeMatcher kTextureStorage1DMatcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
  Number F = Number::invalid;
  Number A = Number::invalid;
    if (!MatchTextureStorage1D(state, ty, F, A)) {
      return nullptr;
    }
    F = state.Num(F);
    if (!F.IsValid()) {
      return nullptr;
    }
    A = state.Num(A);
    if (!A.IsValid()) {
      return nullptr;
    }
    return BuildTextureStorage1D(state, ty, F, A);
  },
/* string */ [](MatchState* state) -> std::string {
  const std::string F = state->NumName();
  const std::string A = state->NumName();
    return "texture_storage_1d<" + F + ", " + A + ">";
  }
};


/// TypeMatcher for 'type texture_storage_2d'
constexpr TypeMatcher kTextureStorage2DMatcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
  Number F = Number::invalid;
  Number A = Number::invalid;
    if (!MatchTextureStorage2D(state, ty, F, A)) {
      return nullptr;
    }
    F = state.Num(F);
    if (!F.IsValid()) {
      return nullptr;
    }
    A = state.Num(A);
    if (!A.IsValid()) {
      return nullptr;
    }
    return BuildTextureStorage2D(state, ty, F, A);
  },
/* string */ [](MatchState* state) -> std::string {
  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'
constexpr TypeMatcher kTextureStorage2DArrayMatcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
  Number F = Number::invalid;
  Number A = Number::invalid;
    if (!MatchTextureStorage2DArray(state, ty, F, A)) {
      return nullptr;
    }
    F = state.Num(F);
    if (!F.IsValid()) {
      return nullptr;
    }
    A = state.Num(A);
    if (!A.IsValid()) {
      return nullptr;
    }
    return BuildTextureStorage2DArray(state, ty, F, A);
  },
/* string */ [](MatchState* state) -> std::string {
  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'
constexpr TypeMatcher kTextureStorage3DMatcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
  Number F = Number::invalid;
  Number A = Number::invalid;
    if (!MatchTextureStorage3D(state, ty, F, A)) {
      return nullptr;
    }
    F = state.Num(F);
    if (!F.IsValid()) {
      return nullptr;
    }
    A = state.Num(A);
    if (!A.IsValid()) {
      return nullptr;
    }
    return BuildTextureStorage3D(state, ty, F, A);
  },
/* string */ [](MatchState* state) -> std::string {
  const std::string F = state->NumName();
  const std::string A = state->NumName();
    return "texture_storage_3d<" + F + ", " + A + ">";
  }
};


/// TypeMatcher for 'type texture_external'
constexpr TypeMatcher kTextureExternalMatcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
    if (!MatchTextureExternal(state, ty)) {
      return nullptr;
    }
    return BuildTextureExternal(state, ty);
  },
/* string */ [](MatchState*) -> std::string {
    return "texture_external";
  }
};


/// TypeMatcher for 'type __modf_result'
constexpr TypeMatcher kModfResultMatcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
  const Type* T = nullptr;
    if (!MatchModfResult(state, ty, T)) {
      return nullptr;
    }
    T = state.Type(T);
    if (T == nullptr) {
      return nullptr;
    }
    return BuildModfResult(state, ty, T);
  },
/* string */ [](MatchState* state) -> std::string {
  const std::string T = state->TypeName();
    StringStream ss;
    ss << "__modf_result_" << T;
    return ss.str();
  }
};


/// TypeMatcher for 'type __modf_result_vec'
constexpr TypeMatcher kModfResultVecMatcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
  Number N = Number::invalid;
  const Type* T = nullptr;
    if (!MatchModfResultVec(state, ty, N, T)) {
      return nullptr;
    }
    N = state.Num(N);
    if (!N.IsValid()) {
      return nullptr;
    }
    T = state.Type(T);
    if (T == nullptr) {
      return nullptr;
    }
    return BuildModfResultVec(state, ty, N, T);
  },
/* string */ [](MatchState* state) -> std::string {
  const std::string N = state->NumName();
  const std::string T = state->TypeName();
    StringStream ss;
    ss << "__modf_result_vec" << N << "_" << T;
    return ss.str();
  }
};


/// TypeMatcher for 'type __frexp_result'
constexpr TypeMatcher kFrexpResultMatcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
  const Type* T = nullptr;
    if (!MatchFrexpResult(state, ty, T)) {
      return nullptr;
    }
    T = state.Type(T);
    if (T == nullptr) {
      return nullptr;
    }
    return BuildFrexpResult(state, ty, T);
  },
/* string */ [](MatchState* state) -> std::string {
  const std::string T = state->TypeName();
    StringStream ss;
    ss << "__frexp_result_" << T;
    return ss.str();
  }
};


/// TypeMatcher for 'type __frexp_result_vec'
constexpr TypeMatcher kFrexpResultVecMatcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
  Number N = Number::invalid;
  const Type* T = nullptr;
    if (!MatchFrexpResultVec(state, ty, N, T)) {
      return nullptr;
    }
    N = state.Num(N);
    if (!N.IsValid()) {
      return nullptr;
    }
    T = state.Type(T);
    if (T == nullptr) {
      return nullptr;
    }
    return BuildFrexpResultVec(state, ty, N, T);
  },
/* string */ [](MatchState* state) -> std::string {
  const std::string N = state->NumName();
  const std::string T = state->TypeName();
    StringStream ss;
    ss << "__frexp_result_vec" << N << "_" << T;
    return ss.str();
  }
};


/// TypeMatcher for 'type __atomic_compare_exchange_result'
constexpr TypeMatcher kAtomicCompareExchangeResultMatcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
  const Type* T = nullptr;
    if (!MatchAtomicCompareExchangeResult(state, ty, T)) {
      return nullptr;
    }
    T = state.Type(T);
    if (T == nullptr) {
      return nullptr;
    }
    return BuildAtomicCompareExchangeResult(state, ty, T);
  },
/* string */ [](MatchState* state) -> std::string {
  const std::string T = state->TypeName();
    return "__atomic_compare_exchange_result<" + T + ">";
  }
};


/// TypeMatcher for 'match scalar'
constexpr TypeMatcher kScalarMatcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
    if (MatchI32(state, ty)) {
      return BuildI32(state, ty);
    }
    if (MatchU32(state, ty)) {
      return BuildU32(state, ty);
    }
    if (MatchF32(state, ty)) {
      return BuildF32(state, ty);
    }
    if (MatchF16(state, ty)) {
      return BuildF16(state, ty);
    }
    if (MatchBool(state, ty)) {
      return BuildBool(state, ty);
    }
    return nullptr;
  },
/* string */ [](MatchState*) -> std::string {
    StringStream ss;
    // Note: We pass nullptr to the TypeMatcher::String() functions, as 'matcher's do not support
    // template arguments, nor can they match sub-types. As such, they have no use for the MatchState.
    ss << kF32Matcher.string(nullptr) << ", " << kF16Matcher.string(nullptr) << ", " << kI32Matcher.string(nullptr) << ", " << kU32Matcher.string(nullptr) << " or " << kBoolMatcher.string(nullptr);
    return ss.str();
  }
};

/// TypeMatcher for 'match scalar_no_f32'
constexpr TypeMatcher kScalarNoF32Matcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
    if (MatchI32(state, ty)) {
      return BuildI32(state, ty);
    }
    if (MatchU32(state, ty)) {
      return BuildU32(state, ty);
    }
    if (MatchF16(state, ty)) {
      return BuildF16(state, ty);
    }
    if (MatchBool(state, ty)) {
      return BuildBool(state, ty);
    }
    return nullptr;
  },
/* string */ [](MatchState*) -> std::string {
    StringStream ss;
    // Note: We pass nullptr to the TypeMatcher::String() functions, as 'matcher's do not support
    // template arguments, nor can they match sub-types. As such, they have no use for the MatchState.
    ss << kI32Matcher.string(nullptr) << ", " << kF16Matcher.string(nullptr) << ", " << kU32Matcher.string(nullptr) << " or " << kBoolMatcher.string(nullptr);
    return ss.str();
  }
};

/// TypeMatcher for 'match scalar_no_f16'
constexpr TypeMatcher kScalarNoF16Matcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
    if (MatchI32(state, ty)) {
      return BuildI32(state, ty);
    }
    if (MatchU32(state, ty)) {
      return BuildU32(state, ty);
    }
    if (MatchF32(state, ty)) {
      return BuildF32(state, ty);
    }
    if (MatchBool(state, ty)) {
      return BuildBool(state, ty);
    }
    return nullptr;
  },
/* string */ [](MatchState*) -> std::string {
    StringStream ss;
    // Note: We pass nullptr to the TypeMatcher::String() functions, as 'matcher's do not support
    // template arguments, nor can they match sub-types. As such, they have no use for the MatchState.
    ss << kF32Matcher.string(nullptr) << ", " << kI32Matcher.string(nullptr) << ", " << kU32Matcher.string(nullptr) << " or " << kBoolMatcher.string(nullptr);
    return ss.str();
  }
};

/// TypeMatcher for 'match scalar_no_i32'
constexpr TypeMatcher kScalarNoI32Matcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
    if (MatchU32(state, ty)) {
      return BuildU32(state, ty);
    }
    if (MatchF32(state, ty)) {
      return BuildF32(state, ty);
    }
    if (MatchF16(state, ty)) {
      return BuildF16(state, ty);
    }
    if (MatchBool(state, ty)) {
      return BuildBool(state, ty);
    }
    return nullptr;
  },
/* string */ [](MatchState*) -> std::string {
    StringStream ss;
    // Note: We pass nullptr to the TypeMatcher::String() functions, as 'matcher's do not support
    // template arguments, nor can they match sub-types. As such, they have no use for the MatchState.
    ss << kF32Matcher.string(nullptr) << ", " << kF16Matcher.string(nullptr) << ", " << kU32Matcher.string(nullptr) << " or " << kBoolMatcher.string(nullptr);
    return ss.str();
  }
};

/// TypeMatcher for 'match scalar_no_u32'
constexpr TypeMatcher kScalarNoU32Matcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
    if (MatchI32(state, ty)) {
      return BuildI32(state, ty);
    }
    if (MatchF32(state, ty)) {
      return BuildF32(state, ty);
    }
    if (MatchF16(state, ty)) {
      return BuildF16(state, ty);
    }
    if (MatchBool(state, ty)) {
      return BuildBool(state, ty);
    }
    return nullptr;
  },
/* string */ [](MatchState*) -> std::string {
    StringStream ss;
    // Note: We pass nullptr to the TypeMatcher::String() functions, as 'matcher's do not support
    // template arguments, nor can they match sub-types. As such, they have no use for the MatchState.
    ss << kF32Matcher.string(nullptr) << ", " << kF16Matcher.string(nullptr) << ", " << kI32Matcher.string(nullptr) << " or " << kBoolMatcher.string(nullptr);
    return ss.str();
  }
};

/// TypeMatcher for 'match scalar_no_bool'
constexpr TypeMatcher kScalarNoBoolMatcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
    if (MatchI32(state, ty)) {
      return BuildI32(state, ty);
    }
    if (MatchU32(state, ty)) {
      return BuildU32(state, ty);
    }
    if (MatchF32(state, ty)) {
      return BuildF32(state, ty);
    }
    if (MatchF16(state, ty)) {
      return BuildF16(state, ty);
    }
    return nullptr;
  },
/* string */ [](MatchState*) -> std::string {
    StringStream ss;
    // Note: We pass nullptr to the TypeMatcher::String() functions, as 'matcher's do not support
    // template arguments, nor can they match sub-types. As such, they have no use for the MatchState.
    ss << kF32Matcher.string(nullptr) << ", " << kF16Matcher.string(nullptr) << ", " << kI32Matcher.string(nullptr) << " or " << kU32Matcher.string(nullptr);
    return ss.str();
  }
};

/// TypeMatcher for 'match fiu32_f16'
constexpr TypeMatcher kFiu32F16Matcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
    if (MatchI32(state, ty)) {
      return BuildI32(state, ty);
    }
    if (MatchU32(state, ty)) {
      return BuildU32(state, ty);
    }
    if (MatchF32(state, ty)) {
      return BuildF32(state, ty);
    }
    if (MatchF16(state, ty)) {
      return BuildF16(state, ty);
    }
    return nullptr;
  },
/* string */ [](MatchState*) -> std::string {
    StringStream ss;
    // Note: We pass nullptr to the TypeMatcher::String() functions, as 'matcher's do not support
    // template arguments, nor can they match sub-types. As such, they have no use for the MatchState.
    ss << kF32Matcher.string(nullptr) << ", " << kI32Matcher.string(nullptr) << ", " << kU32Matcher.string(nullptr) << " or " << kF16Matcher.string(nullptr);
    return ss.str();
  }
};

/// TypeMatcher for 'match fiu32'
constexpr TypeMatcher kFiu32Matcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
    if (MatchI32(state, ty)) {
      return BuildI32(state, ty);
    }
    if (MatchU32(state, ty)) {
      return BuildU32(state, ty);
    }
    if (MatchF32(state, ty)) {
      return BuildF32(state, ty);
    }
    return nullptr;
  },
/* string */ [](MatchState*) -> std::string {
    StringStream ss;
    // Note: We pass nullptr to the TypeMatcher::String() functions, as 'matcher's do not support
    // template arguments, nor can they match sub-types. As such, they have no use for the MatchState.
    ss << kF32Matcher.string(nullptr) << ", " << kI32Matcher.string(nullptr) << " or " << kU32Matcher.string(nullptr);
    return ss.str();
  }
};

/// TypeMatcher for 'match fi32_f16'
constexpr TypeMatcher kFi32F16Matcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
    if (MatchI32(state, ty)) {
      return BuildI32(state, ty);
    }
    if (MatchF32(state, ty)) {
      return BuildF32(state, ty);
    }
    if (MatchF16(state, ty)) {
      return BuildF16(state, ty);
    }
    return nullptr;
  },
/* string */ [](MatchState*) -> std::string {
    StringStream ss;
    // Note: We pass nullptr to the TypeMatcher::String() functions, as 'matcher's do not support
    // template arguments, nor can they match sub-types. As such, they have no use for the MatchState.
    ss << kF32Matcher.string(nullptr) << ", " << kI32Matcher.string(nullptr) << " or " << kF16Matcher.string(nullptr);
    return ss.str();
  }
};

/// TypeMatcher for 'match fi32'
constexpr TypeMatcher kFi32Matcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
    if (MatchI32(state, ty)) {
      return BuildI32(state, ty);
    }
    if (MatchF32(state, ty)) {
      return BuildF32(state, ty);
    }
    return nullptr;
  },
/* string */ [](MatchState*) -> std::string {
    StringStream ss;
    // Note: We pass nullptr to the TypeMatcher::String() functions, as 'matcher's do not support
    // template arguments, nor can they match sub-types. As such, they have no use for the MatchState.
    ss << kF32Matcher.string(nullptr) << " or " << kI32Matcher.string(nullptr);
    return ss.str();
  }
};

/// TypeMatcher for 'match f32_f16'
constexpr TypeMatcher kF32F16Matcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
    if (MatchF32(state, ty)) {
      return BuildF32(state, ty);
    }
    if (MatchF16(state, ty)) {
      return BuildF16(state, ty);
    }
    return nullptr;
  },
/* string */ [](MatchState*) -> std::string {
    StringStream ss;
    // Note: We pass nullptr to the TypeMatcher::String() functions, as 'matcher's do not support
    // template arguments, nor can they match sub-types. As such, they have no use for the MatchState.
    ss << kF32Matcher.string(nullptr) << " or " << kF16Matcher.string(nullptr);
    return ss.str();
  }
};

/// TypeMatcher for 'match iu32'
constexpr TypeMatcher kIu32Matcher {
/* match */ [](MatchState& state, const Type* ty) -> const Type* {
    if (MatchI32(state, ty)) {
      return BuildI32(state, ty);
    }
    if (MatchU32(state, ty)) {
      return BuildU32(state, ty);
    }
    return nullptr;
  },
/* string */ [](MatchState*) -> std::string {
    StringStream ss;
    // Note: We pass nullptr to the TypeMatcher::String() functions, as 'matcher's do not support
    // template arguments, nor can they match sub-types. As such, they have no use for the MatchState.
    ss << kI32Matcher.string(nullptr) << " or " << kU32Matcher.string(nullptr);
    return ss.str();
  }
};

/// EnumMatcher for 'match f32_texel_format'
constexpr NumberMatcher kF32TexelFormatMatcher {
/* match */ [](MatchState&, Number number) -> Number {
    switch (static_cast<core::TexelFormat>(number.Value())) {
      case core::TexelFormat::kBgra8Unorm:
      case core::TexelFormat::kRgba8Unorm:
      case core::TexelFormat::kRgba8Snorm:
      case core::TexelFormat::kRgba16Float:
      case core::TexelFormat::kR32Float:
      case core::TexelFormat::kRg32Float:
      case core::TexelFormat::kRgba32Float:
        return number;
      default:
        return Number::invalid;
    }
  },
/* string */ [](MatchState*) -> std::string {
    return "bgra8unorm, rgba8unorm, rgba8snorm, rgba16float, r32float, rg32float or rgba32float";
  }
};

/// EnumMatcher for 'match i32_texel_format'
constexpr NumberMatcher kI32TexelFormatMatcher {
/* match */ [](MatchState&, Number number) -> Number {
    switch (static_cast<core::TexelFormat>(number.Value())) {
      case core::TexelFormat::kRgba8Sint:
      case core::TexelFormat::kRgba16Sint:
      case core::TexelFormat::kR32Sint:
      case core::TexelFormat::kRg32Sint:
      case core::TexelFormat::kRgba32Sint:
        return number;
      default:
        return Number::invalid;
    }
  },
/* string */ [](MatchState*) -> std::string {
    return "rgba8sint, rgba16sint, r32sint, rg32sint or rgba32sint";
  }
};

/// EnumMatcher for 'match u32_texel_format'
constexpr NumberMatcher kU32TexelFormatMatcher {
/* match */ [](MatchState&, Number number) -> Number {
    switch (static_cast<core::TexelFormat>(number.Value())) {
      case core::TexelFormat::kRgba8Uint:
      case core::TexelFormat::kRgba16Uint:
      case core::TexelFormat::kR32Uint:
      case core::TexelFormat::kRg32Uint:
      case core::TexelFormat::kRgba32Uint:
        return number;
      default:
        return Number::invalid;
    }
  },
/* string */ [](MatchState*) -> std::string {
    return "rgba8uint, rgba16uint, r32uint, rg32uint or rgba32uint";
  }
};

/// EnumMatcher for 'match write'
constexpr NumberMatcher kWriteMatcher {
/* match */ [](MatchState&, Number number) -> Number {
    if (number.IsAny() || number.Value() == static_cast<uint32_t>(core::Access::kWrite)) {
      return Number(static_cast<uint32_t>(core::Access::kWrite));
    }
    return Number::invalid;
  },
/* string */ [](MatchState*) -> std::string {
    return "write";
  }
};

/// EnumMatcher for 'match read_write'
constexpr NumberMatcher kReadWriteMatcher {
/* match */ [](MatchState&, Number number) -> Number {
    if (number.IsAny() || number.Value() == static_cast<uint32_t>(core::Access::kReadWrite)) {
      return Number(static_cast<uint32_t>(core::Access::kReadWrite));
    }
    return Number::invalid;
  },
/* string */ [](MatchState*) -> std::string {
    return "read_write";
  }
};

/// EnumMatcher for 'match readable'
constexpr NumberMatcher kReadableMatcher {
/* match */ [](MatchState&, Number number) -> Number {
    switch (static_cast<core::Access>(number.Value())) {
      case core::Access::kRead:
      case core::Access::kReadWrite:
        return number;
      default:
        return Number::invalid;
    }
  },
/* string */ [](MatchState*) -> std::string {
    return "read or read_write";
  }
};

/// EnumMatcher for 'match writable'
constexpr NumberMatcher kWritableMatcher {
/* match */ [](MatchState&, Number number) -> Number {
    switch (static_cast<core::Access>(number.Value())) {
      case core::Access::kWrite:
      case core::Access::kReadWrite:
        return number;
      default:
        return Number::invalid;
    }
  },
/* string */ [](MatchState*) -> std::string {
    return "write or read_write";
  }
};

/// EnumMatcher for 'match function_private_workgroup'
constexpr NumberMatcher kFunctionPrivateWorkgroupMatcher {
/* match */ [](MatchState&, Number number) -> Number {
    switch (static_cast<core::AddressSpace>(number.Value())) {
      case core::AddressSpace::kFunction:
      case core::AddressSpace::kPrivate:
      case core::AddressSpace::kWorkgroup:
        return number;
      default:
        return Number::invalid;
    }
  },
/* string */ [](MatchState*) -> std::string {
    return "function, private or workgroup";
  }
};

/// EnumMatcher for 'match workgroup_or_storage'
constexpr NumberMatcher kWorkgroupOrStorageMatcher {
/* match */ [](MatchState&, Number number) -> Number {
    switch (static_cast<core::AddressSpace>(number.Value())) {
      case core::AddressSpace::kWorkgroup:
      case core::AddressSpace::kStorage:
        return number;
      default:
        return Number::invalid;
    }
  },
/* string */ [](MatchState*) -> std::string {
    return "workgroup or storage";
  }
};

/// EnumMatcher for 'match storage'
constexpr NumberMatcher kStorageMatcher {
/* match */ [](MatchState&, Number number) -> Number {
    if (number.IsAny() || number.Value() == static_cast<uint32_t>(core::AddressSpace::kStorage)) {
      return Number(static_cast<uint32_t>(core::AddressSpace::kStorage));
    }
    return Number::invalid;
  },
/* string */ [](MatchState*) -> std::string {
    return "storage";
  }
};

/// EnumMatcher for 'match workgroup'
constexpr NumberMatcher kWorkgroupMatcher {
/* match */ [](MatchState&, Number number) -> Number {
    if (number.IsAny() || number.Value() == static_cast<uint32_t>(core::AddressSpace::kWorkgroup)) {
      return Number(static_cast<uint32_t>(core::AddressSpace::kWorkgroup));
    }
    return Number::invalid;
  },
/* string */ [](MatchState*) -> std::string {
    return "workgroup";
  }
};

/// Type and number matchers

/// The template types, types, and type matchers
constexpr TypeMatcher kTypeMatchers[] = {
  /* [0] */ TemplateTypeMatcher<0>::matcher,
  /* [1] */ TemplateTypeMatcher<1>::matcher,
  /* [2] */ TemplateTypeMatcher<2>::matcher,
  /* [3] */ TemplateTypeMatcher<3>::matcher,
  /* [4] */ kBoolMatcher,
  /* [5] */ kI32Matcher,
  /* [6] */ kU32Matcher,
  /* [7] */ kF32Matcher,
  /* [8] */ kF16Matcher,
  /* [9] */ kVec2Matcher,
  /* [10] */ kVec3Matcher,
  /* [11] */ kVec4Matcher,
  /* [12] */ kMat2X2Matcher,
  /* [13] */ kMat2X3Matcher,
  /* [14] */ kMat2X4Matcher,
  /* [15] */ kMat3X2Matcher,
  /* [16] */ kMat3X3Matcher,
  /* [17] */ kMat3X4Matcher,
  /* [18] */ kMat4X2Matcher,
  /* [19] */ kMat4X3Matcher,
  /* [20] */ kMat4X4Matcher,
  /* [21] */ kVecMatcher,
  /* [22] */ kMatMatcher,
  /* [23] */ kPtrMatcher,
  /* [24] */ kAtomicMatcher,
  /* [25] */ kArrayMatcher,
  /* [26] */ kSamplerMatcher,
  /* [27] */ kSamplerComparisonMatcher,
  /* [28] */ kTexture1DMatcher,
  /* [29] */ kTexture2DMatcher,
  /* [30] */ kTexture2DArrayMatcher,
  /* [31] */ kTexture3DMatcher,
  /* [32] */ kTextureCubeMatcher,
  /* [33] */ kTextureCubeArrayMatcher,
  /* [34] */ kTextureMultisampled2DMatcher,
  /* [35] */ kTextureDepth2DMatcher,
  /* [36] */ kTextureDepth2DArrayMatcher,
  /* [37] */ kTextureDepthCubeMatcher,
  /* [38] */ kTextureDepthCubeArrayMatcher,
  /* [39] */ kTextureDepthMultisampled2DMatcher,
  /* [40] */ kTextureStorage1DMatcher,
  /* [41] */ kTextureStorage2DMatcher,
  /* [42] */ kTextureStorage2DArrayMatcher,
  /* [43] */ kTextureStorage3DMatcher,
  /* [44] */ kTextureExternalMatcher,
  /* [45] */ kModfResultMatcher,
  /* [46] */ kModfResultVecMatcher,
  /* [47] */ kFrexpResultMatcher,
  /* [48] */ kFrexpResultVecMatcher,
  /* [49] */ kAtomicCompareExchangeResultMatcher,
  /* [50] */ kScalarMatcher,
  /* [51] */ kScalarNoF32Matcher,
  /* [52] */ kScalarNoF16Matcher,
  /* [53] */ kScalarNoI32Matcher,
  /* [54] */ kScalarNoU32Matcher,
  /* [55] */ kScalarNoBoolMatcher,
  /* [56] */ kFiu32F16Matcher,
  /* [57] */ kFiu32Matcher,
  /* [58] */ kFi32F16Matcher,
  /* [59] */ kFi32Matcher,
  /* [60] */ kF32F16Matcher,
  /* [61] */ kIu32Matcher,
};

/// The template numbers, and number matchers
constexpr NumberMatcher kNumberMatchers[] = {
  /* [0] */ TemplateNumberMatcher<0>::matcher,
  /* [1] */ TemplateNumberMatcher<1>::matcher,
  /* [2] */ TemplateNumberMatcher<2>::matcher,
  /* [3] */ TemplateNumberMatcher<3>::matcher,
  /* [4] */ kF32TexelFormatMatcher,
  /* [5] */ kI32TexelFormatMatcher,
  /* [6] */ kU32TexelFormatMatcher,
  /* [7] */ kWriteMatcher,
  /* [8] */ kReadWriteMatcher,
  /* [9] */ kReadableMatcher,
  /* [10] */ kWritableMatcher,
  /* [11] */ kFunctionPrivateWorkgroupMatcher,
  /* [12] */ kWorkgroupOrStorageMatcher,
  /* [13] */ kStorageMatcher,
  /* [14] */ kWorkgroupMatcher,
};

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

static_assert(MatcherIndicesIndex::CanIndex(kMatcherIndices),
              "MatcherIndicesIndex is not large enough to index kMatcherIndices");

constexpr ParameterInfo kParameters[] = {
  {
    /* [0] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(5),
  },
  {
    /* [1] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [2] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [3] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [4] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [5] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [6] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [7] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [8] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [9] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [10] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [11] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [12] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [13] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [14] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [15] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [16] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [17] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(78),
  },
  {
    /* [18] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(78),
  },
  {
    /* [19] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(192),
  },
  {
    /* [20] */
    /* usage */ core::ParameterUsage::kSampler,
    /* matcher_indices */ MatcherIndicesIndex(270),
  },
  {
    /* [21] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(114),
  },
  {
    /* [22] */
    /* usage */ core::ParameterUsage::kArrayIndex,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [23] */
    /* usage */ core::ParameterUsage::kDdx,
    /* matcher_indices */ MatcherIndicesIndex(114),
  },
  {
    /* [24] */
    /* usage */ core::ParameterUsage::kDdy,
    /* matcher_indices */ MatcherIndicesIndex(114),
  },
  {
    /* [25] */
    /* usage */ core::ParameterUsage::kOffset,
    /* matcher_indices */ MatcherIndicesIndex(122),
  },
  {
    /* [26] */
    /* usage */ core::ParameterUsage::kComponent,
    /* matcher_indices */ MatcherIndicesIndex(4),
  },
  {
    /* [27] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(176),
  },
  {
    /* [28] */
    /* usage */ core::ParameterUsage::kSampler,
    /* matcher_indices */ MatcherIndicesIndex(270),
  },
  {
    /* [29] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(114),
  },
  {
    /* [30] */
    /* usage */ core::ParameterUsage::kArrayIndex,
    /* matcher_indices */ MatcherIndicesIndex(17),
  },
  {
    /* [31] */
    /* usage */ core::ParameterUsage::kOffset,
    /* matcher_indices */ MatcherIndicesIndex(122),
  },
  {
    /* [32] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(265),
  },
  {
    /* [33] */
    /* usage */ core::ParameterUsage::kSampler,
    /* matcher_indices */ MatcherIndicesIndex(271),
  },
  {
    /* [34] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(114),
  },
  {
    /* [35] */
    /* usage */ core::ParameterUsage::kArrayIndex,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [36] */
    /* usage */ core::ParameterUsage::kDepthRef,
    /* matcher_indices */ MatcherIndicesIndex(49),
  },
  {
    /* [37] */
    /* usage */ core::ParameterUsage::kOffset,
    /* matcher_indices */ MatcherIndicesIndex(122),
  },
  {
    /* [38] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(192),
  },
  {
    /* [39] */
    /* usage */ core::ParameterUsage::kSampler,
    /* matcher_indices */ MatcherIndicesIndex(270),
  },
  {
    /* [40] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(114),
  },
  {
    /* [41] */
    /* usage */ core::ParameterUsage::kArrayIndex,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [42] */
    /* usage */ core::ParameterUsage::kBias,
    /* matcher_indices */ MatcherIndicesIndex(49),
  },
  {
    /* [43] */
    /* usage */ core::ParameterUsage::kOffset,
    /* matcher_indices */ MatcherIndicesIndex(122),
  },
  {
    /* [44] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(190),
  },
  {
    /* [45] */
    /* usage */ core::ParameterUsage::kSampler,
    /* matcher_indices */ MatcherIndicesIndex(270),
  },
  {
    /* [46] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(114),
  },
  {
    /* [47] */
    /* usage */ core::ParameterUsage::kDdx,
    /* matcher_indices */ MatcherIndicesIndex(114),
  },
  {
    /* [48] */
    /* usage */ core::ParameterUsage::kDdy,
    /* matcher_indices */ MatcherIndicesIndex(114),
  },
  {
    /* [49] */
    /* usage */ core::ParameterUsage::kOffset,
    /* matcher_indices */ MatcherIndicesIndex(122),
  },
  {
    /* [50] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(194),
  },
  {
    /* [51] */
    /* usage */ core::ParameterUsage::kSampler,
    /* matcher_indices */ MatcherIndicesIndex(270),
  },
  {
    /* [52] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(81),
  },
  {
    /* [53] */
    /* usage */ core::ParameterUsage::kDdx,
    /* matcher_indices */ MatcherIndicesIndex(81),
  },
  {
    /* [54] */
    /* usage */ core::ParameterUsage::kDdy,
    /* matcher_indices */ MatcherIndicesIndex(81),
  },
  {
    /* [55] */
    /* usage */ core::ParameterUsage::kOffset,
    /* matcher_indices */ MatcherIndicesIndex(85),
  },
  {
    /* [56] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(198),
  },
  {
    /* [57] */
    /* usage */ core::ParameterUsage::kSampler,
    /* matcher_indices */ MatcherIndicesIndex(270),
  },
  {
    /* [58] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(81),
  },
  {
    /* [59] */
    /* usage */ core::ParameterUsage::kArrayIndex,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [60] */
    /* usage */ core::ParameterUsage::kDdx,
    /* matcher_indices */ MatcherIndicesIndex(81),
  },
  {
    /* [61] */
    /* usage */ core::ParameterUsage::kDdy,
    /* matcher_indices */ MatcherIndicesIndex(81),
  },
  {
    /* [62] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(192),
  },
  {
    /* [63] */
    /* usage */ core::ParameterUsage::kSampler,
    /* matcher_indices */ MatcherIndicesIndex(270),
  },
  {
    /* [64] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(114),
  },
  {
    /* [65] */
    /* usage */ core::ParameterUsage::kArrayIndex,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [66] */
    /* usage */ core::ParameterUsage::kLevel,
    /* matcher_indices */ MatcherIndicesIndex(49),
  },
  {
    /* [67] */
    /* usage */ core::ParameterUsage::kOffset,
    /* matcher_indices */ MatcherIndicesIndex(122),
  },
  {
    /* [68] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(265),
  },
  {
    /* [69] */
    /* usage */ core::ParameterUsage::kSampler,
    /* matcher_indices */ MatcherIndicesIndex(270),
  },
  {
    /* [70] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(114),
  },
  {
    /* [71] */
    /* usage */ core::ParameterUsage::kArrayIndex,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [72] */
    /* usage */ core::ParameterUsage::kLevel,
    /* matcher_indices */ MatcherIndicesIndex(4),
  },
  {
    /* [73] */
    /* usage */ core::ParameterUsage::kOffset,
    /* matcher_indices */ MatcherIndicesIndex(122),
  },
  {
    /* [74] */
    /* usage */ core::ParameterUsage::kComponent,
    /* matcher_indices */ MatcherIndicesIndex(4),
  },
  {
    /* [75] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(174),
  },
  {
    /* [76] */
    /* usage */ core::ParameterUsage::kSampler,
    /* matcher_indices */ MatcherIndicesIndex(270),
  },
  {
    /* [77] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(114),
  },
  {
    /* [78] */
    /* usage */ core::ParameterUsage::kOffset,
    /* matcher_indices */ MatcherIndicesIndex(122),
  },
  {
    /* [79] */
    /* usage */ core::ParameterUsage::kComponent,
    /* matcher_indices */ MatcherIndicesIndex(4),
  },
  {
    /* [80] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(182),
  },
  {
    /* [81] */
    /* usage */ core::ParameterUsage::kSampler,
    /* matcher_indices */ MatcherIndicesIndex(270),
  },
  {
    /* [82] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(81),
  },
  {
    /* [83] */
    /* usage */ core::ParameterUsage::kArrayIndex,
    /* matcher_indices */ MatcherIndicesIndex(17),
  },
  {
    /* [84] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(265),
  },
  {
    /* [85] */
    /* usage */ core::ParameterUsage::kSampler,
    /* matcher_indices */ MatcherIndicesIndex(270),
  },
  {
    /* [86] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(114),
  },
  {
    /* [87] */
    /* usage */ core::ParameterUsage::kArrayIndex,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [88] */
    /* usage */ core::ParameterUsage::kOffset,
    /* matcher_indices */ MatcherIndicesIndex(122),
  },
  {
    /* [89] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(264),
  },
  {
    /* [90] */
    /* usage */ core::ParameterUsage::kSampler,
    /* matcher_indices */ MatcherIndicesIndex(271),
  },
  {
    /* [91] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(114),
  },
  {
    /* [92] */
    /* usage */ core::ParameterUsage::kDepthRef,
    /* matcher_indices */ MatcherIndicesIndex(49),
  },
  {
    /* [93] */
    /* usage */ core::ParameterUsage::kOffset,
    /* matcher_indices */ MatcherIndicesIndex(122),
  },
  {
    /* [94] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(267),
  },
  {
    /* [95] */
    /* usage */ core::ParameterUsage::kSampler,
    /* matcher_indices */ MatcherIndicesIndex(271),
  },
  {
    /* [96] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(81),
  },
  {
    /* [97] */
    /* usage */ core::ParameterUsage::kArrayIndex,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [98] */
    /* usage */ core::ParameterUsage::kDepthRef,
    /* matcher_indices */ MatcherIndicesIndex(49),
  },
  {
    /* [99] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(192),
  },
  {
    /* [100] */
    /* usage */ core::ParameterUsage::kSampler,
    /* matcher_indices */ MatcherIndicesIndex(270),
  },
  {
    /* [101] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(114),
  },
  {
    /* [102] */
    /* usage */ core::ParameterUsage::kArrayIndex,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [103] */
    /* usage */ core::ParameterUsage::kOffset,
    /* matcher_indices */ MatcherIndicesIndex(122),
  },
  {
    /* [104] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(190),
  },
  {
    /* [105] */
    /* usage */ core::ParameterUsage::kSampler,
    /* matcher_indices */ MatcherIndicesIndex(270),
  },
  {
    /* [106] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(114),
  },
  {
    /* [107] */
    /* usage */ core::ParameterUsage::kBias,
    /* matcher_indices */ MatcherIndicesIndex(49),
  },
  {
    /* [108] */
    /* usage */ core::ParameterUsage::kOffset,
    /* matcher_indices */ MatcherIndicesIndex(122),
  },
  {
    /* [109] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(194),
  },
  {
    /* [110] */
    /* usage */ core::ParameterUsage::kSampler,
    /* matcher_indices */ MatcherIndicesIndex(270),
  },
  {
    /* [111] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(81),
  },
  {
    /* [112] */
    /* usage */ core::ParameterUsage::kBias,
    /* matcher_indices */ MatcherIndicesIndex(49),
  },
  {
    /* [113] */
    /* usage */ core::ParameterUsage::kOffset,
    /* matcher_indices */ MatcherIndicesIndex(85),
  },
  {
    /* [114] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(198),
  },
  {
    /* [115] */
    /* usage */ core::ParameterUsage::kSampler,
    /* matcher_indices */ MatcherIndicesIndex(270),
  },
  {
    /* [116] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(81),
  },
  {
    /* [117] */
    /* usage */ core::ParameterUsage::kArrayIndex,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [118] */
    /* usage */ core::ParameterUsage::kBias,
    /* matcher_indices */ MatcherIndicesIndex(49),
  },
  {
    /* [119] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(196),
  },
  {
    /* [120] */
    /* usage */ core::ParameterUsage::kSampler,
    /* matcher_indices */ MatcherIndicesIndex(270),
  },
  {
    /* [121] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(81),
  },
  {
    /* [122] */
    /* usage */ core::ParameterUsage::kDdx,
    /* matcher_indices */ MatcherIndicesIndex(81),
  },
  {
    /* [123] */
    /* usage */ core::ParameterUsage::kDdy,
    /* matcher_indices */ MatcherIndicesIndex(81),
  },
  {
    /* [124] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(190),
  },
  {
    /* [125] */
    /* usage */ core::ParameterUsage::kSampler,
    /* matcher_indices */ MatcherIndicesIndex(270),
  },
  {
    /* [126] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(114),
  },
  {
    /* [127] */
    /* usage */ core::ParameterUsage::kLevel,
    /* matcher_indices */ MatcherIndicesIndex(49),
  },
  {
    /* [128] */
    /* usage */ core::ParameterUsage::kOffset,
    /* matcher_indices */ MatcherIndicesIndex(122),
  },
  {
    /* [129] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(194),
  },
  {
    /* [130] */
    /* usage */ core::ParameterUsage::kSampler,
    /* matcher_indices */ MatcherIndicesIndex(270),
  },
  {
    /* [131] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(81),
  },
  {
    /* [132] */
    /* usage */ core::ParameterUsage::kLevel,
    /* matcher_indices */ MatcherIndicesIndex(49),
  },
  {
    /* [133] */
    /* usage */ core::ParameterUsage::kOffset,
    /* matcher_indices */ MatcherIndicesIndex(85),
  },
  {
    /* [134] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(198),
  },
  {
    /* [135] */
    /* usage */ core::ParameterUsage::kSampler,
    /* matcher_indices */ MatcherIndicesIndex(270),
  },
  {
    /* [136] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(81),
  },
  {
    /* [137] */
    /* usage */ core::ParameterUsage::kArrayIndex,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [138] */
    /* usage */ core::ParameterUsage::kLevel,
    /* matcher_indices */ MatcherIndicesIndex(49),
  },
  {
    /* [139] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(264),
  },
  {
    /* [140] */
    /* usage */ core::ParameterUsage::kSampler,
    /* matcher_indices */ MatcherIndicesIndex(270),
  },
  {
    /* [141] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(114),
  },
  {
    /* [142] */
    /* usage */ core::ParameterUsage::kLevel,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [143] */
    /* usage */ core::ParameterUsage::kOffset,
    /* matcher_indices */ MatcherIndicesIndex(122),
  },
  {
    /* [144] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(267),
  },
  {
    /* [145] */
    /* usage */ core::ParameterUsage::kSampler,
    /* matcher_indices */ MatcherIndicesIndex(270),
  },
  {
    /* [146] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(81),
  },
  {
    /* [147] */
    /* usage */ core::ParameterUsage::kArrayIndex,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [148] */
    /* usage */ core::ParameterUsage::kLevel,
    /* matcher_indices */ MatcherIndicesIndex(4),
  },
  {
    /* [149] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(38),
  },
  {
    /* [150] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(38),
  },
  {
    /* [151] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(78),
  },
  {
    /* [152] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(78),
  },
  {
    /* [153] */
    /* usage */ core::ParameterUsage::kComponent,
    /* matcher_indices */ MatcherIndicesIndex(4),
  },
  {
    /* [154] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(180),
  },
  {
    /* [155] */
    /* usage */ core::ParameterUsage::kSampler,
    /* matcher_indices */ MatcherIndicesIndex(270),
  },
  {
    /* [156] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(81),
  },
  {
    /* [157] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(264),
  },
  {
    /* [158] */
    /* usage */ core::ParameterUsage::kSampler,
    /* matcher_indices */ MatcherIndicesIndex(270),
  },
  {
    /* [159] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(114),
  },
  {
    /* [160] */
    /* usage */ core::ParameterUsage::kOffset,
    /* matcher_indices */ MatcherIndicesIndex(122),
  },
  {
    /* [161] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(266),
  },
  {
    /* [162] */
    /* usage */ core::ParameterUsage::kSampler,
    /* matcher_indices */ MatcherIndicesIndex(271),
  },
  {
    /* [163] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(81),
  },
  {
    /* [164] */
    /* usage */ core::ParameterUsage::kDepthRef,
    /* matcher_indices */ MatcherIndicesIndex(49),
  },
  {
    /* [165] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(190),
  },
  {
    /* [166] */
    /* usage */ core::ParameterUsage::kSampler,
    /* matcher_indices */ MatcherIndicesIndex(270),
  },
  {
    /* [167] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(114),
  },
  {
    /* [168] */
    /* usage */ core::ParameterUsage::kOffset,
    /* matcher_indices */ MatcherIndicesIndex(122),
  },
  {
    /* [169] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(194),
  },
  {
    /* [170] */
    /* usage */ core::ParameterUsage::kSampler,
    /* matcher_indices */ MatcherIndicesIndex(270),
  },
  {
    /* [171] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(81),
  },
  {
    /* [172] */
    /* usage */ core::ParameterUsage::kOffset,
    /* matcher_indices */ MatcherIndicesIndex(85),
  },
  {
    /* [173] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(196),
  },
  {
    /* [174] */
    /* usage */ core::ParameterUsage::kSampler,
    /* matcher_indices */ MatcherIndicesIndex(270),
  },
  {
    /* [175] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(81),
  },
  {
    /* [176] */
    /* usage */ core::ParameterUsage::kBias,
    /* matcher_indices */ MatcherIndicesIndex(49),
  },
  {
    /* [177] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(196),
  },
  {
    /* [178] */
    /* usage */ core::ParameterUsage::kSampler,
    /* matcher_indices */ MatcherIndicesIndex(270),
  },
  {
    /* [179] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(81),
  },
  {
    /* [180] */
    /* usage */ core::ParameterUsage::kLevel,
    /* matcher_indices */ MatcherIndicesIndex(49),
  },
  {
    /* [181] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(266),
  },
  {
    /* [182] */
    /* usage */ core::ParameterUsage::kSampler,
    /* matcher_indices */ MatcherIndicesIndex(270),
  },
  {
    /* [183] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(81),
  },
  {
    /* [184] */
    /* usage */ core::ParameterUsage::kLevel,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [185] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(79),
  },
  {
    /* [186] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(126),
  },
  {
    /* [187] */
    /* usage */ core::ParameterUsage::kArrayIndex,
    /* matcher_indices */ MatcherIndicesIndex(4),
  },
  {
    /* [188] */
    /* usage */ core::ParameterUsage::kValue,
    /* matcher_indices */ MatcherIndicesIndex(166),
  },
  {
    /* [189] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(94),
  },
  {
    /* [190] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(126),
  },
  {
    /* [191] */
    /* usage */ core::ParameterUsage::kArrayIndex,
    /* matcher_indices */ MatcherIndicesIndex(4),
  },
  {
    /* [192] */
    /* usage */ core::ParameterUsage::kValue,
    /* matcher_indices */ MatcherIndicesIndex(168),
  },
  {
    /* [193] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(106),
  },
  {
    /* [194] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(126),
  },
  {
    /* [195] */
    /* usage */ core::ParameterUsage::kArrayIndex,
    /* matcher_indices */ MatcherIndicesIndex(4),
  },
  {
    /* [196] */
    /* usage */ core::ParameterUsage::kValue,
    /* matcher_indices */ MatcherIndicesIndex(170),
  },
  {
    /* [197] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(176),
  },
  {
    /* [198] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(130),
  },
  {
    /* [199] */
    /* usage */ core::ParameterUsage::kArrayIndex,
    /* matcher_indices */ MatcherIndicesIndex(17),
  },
  {
    /* [200] */
    /* usage */ core::ParameterUsage::kLevel,
    /* matcher_indices */ MatcherIndicesIndex(28),
  },
  {
    /* [201] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(265),
  },
  {
    /* [202] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(126),
  },
  {
    /* [203] */
    /* usage */ core::ParameterUsage::kArrayIndex,
    /* matcher_indices */ MatcherIndicesIndex(4),
  },
  {
    /* [204] */
    /* usage */ core::ParameterUsage::kLevel,
    /* matcher_indices */ MatcherIndicesIndex(17),
  },
  {
    /* [205] */
    /* usage */ core::ParameterUsage::kX,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [206] */
    /* usage */ core::ParameterUsage::kY,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [207] */
    /* usage */ core::ParameterUsage::kZ,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [208] */
    /* usage */ core::ParameterUsage::kW,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [209] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(126),
  },
  {
    /* [210] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(126),
  },
  {
    /* [211] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(126),
  },
  {
    /* [212] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(126),
  },
  {
    /* [213] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(73),
  },
  {
    /* [214] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(73),
  },
  {
    /* [215] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(73),
  },
  {
    /* [216] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(73),
  },
  {
    /* [217] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(186),
  },
  {
    /* [218] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(186),
  },
  {
    /* [219] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(186),
  },
  {
    /* [220] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(186),
  },
  {
    /* [221] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(44),
  },
  {
    /* [222] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(44),
  },
  {
    /* [223] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(44),
  },
  {
    /* [224] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(43),
  },
  {
    /* [225] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(43),
  },
  {
    /* [226] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(38),
  },
  {
    /* [227] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(38),
  },
  {
    /* [228] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(38),
  },
  {
    /* [229] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(4),
  },
  {
    /* [230] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [231] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [232] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(43),
  },
  {
    /* [233] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(38),
  },
  {
    /* [234] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(38),
  },
  {
    /* [235] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(41),
  },
  {
    /* [236] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(41),
  },
  {
    /* [237] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(188),
  },
  {
    /* [238] */
    /* usage */ core::ParameterUsage::kSampler,
    /* matcher_indices */ MatcherIndicesIndex(270),
  },
  {
    /* [239] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(49),
  },
  {
    /* [240] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(269),
  },
  {
    /* [241] */
    /* usage */ core::ParameterUsage::kSampler,
    /* matcher_indices */ MatcherIndicesIndex(270),
  },
  {
    /* [242] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(114),
  },
  {
    /* [243] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(71),
  },
  {
    /* [244] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [245] */
    /* usage */ core::ParameterUsage::kValue,
    /* matcher_indices */ MatcherIndicesIndex(166),
  },
  {
    /* [246] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(75),
  },
  {
    /* [247] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(126),
  },
  {
    /* [248] */
    /* usage */ core::ParameterUsage::kValue,
    /* matcher_indices */ MatcherIndicesIndex(166),
  },
  {
    /* [249] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(83),
  },
  {
    /* [250] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(73),
  },
  {
    /* [251] */
    /* usage */ core::ParameterUsage::kValue,
    /* matcher_indices */ MatcherIndicesIndex(166),
  },
  {
    /* [252] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(87),
  },
  {
    /* [253] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [254] */
    /* usage */ core::ParameterUsage::kValue,
    /* matcher_indices */ MatcherIndicesIndex(168),
  },
  {
    /* [255] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(91),
  },
  {
    /* [256] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(126),
  },
  {
    /* [257] */
    /* usage */ core::ParameterUsage::kValue,
    /* matcher_indices */ MatcherIndicesIndex(168),
  },
  {
    /* [258] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(97),
  },
  {
    /* [259] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(73),
  },
  {
    /* [260] */
    /* usage */ core::ParameterUsage::kValue,
    /* matcher_indices */ MatcherIndicesIndex(168),
  },
  {
    /* [261] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(100),
  },
  {
    /* [262] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [263] */
    /* usage */ core::ParameterUsage::kValue,
    /* matcher_indices */ MatcherIndicesIndex(170),
  },
  {
    /* [264] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(103),
  },
  {
    /* [265] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(126),
  },
  {
    /* [266] */
    /* usage */ core::ParameterUsage::kValue,
    /* matcher_indices */ MatcherIndicesIndex(170),
  },
  {
    /* [267] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(109),
  },
  {
    /* [268] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(73),
  },
  {
    /* [269] */
    /* usage */ core::ParameterUsage::kValue,
    /* matcher_indices */ MatcherIndicesIndex(170),
  },
  {
    /* [270] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(172),
  },
  {
    /* [271] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(4),
  },
  {
    /* [272] */
    /* usage */ core::ParameterUsage::kLevel,
    /* matcher_indices */ MatcherIndicesIndex(17),
  },
  {
    /* [273] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(174),
  },
  {
    /* [274] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(130),
  },
  {
    /* [275] */
    /* usage */ core::ParameterUsage::kLevel,
    /* matcher_indices */ MatcherIndicesIndex(17),
  },
  {
    /* [276] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(178),
  },
  {
    /* [277] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(89),
  },
  {
    /* [278] */
    /* usage */ core::ParameterUsage::kLevel,
    /* matcher_indices */ MatcherIndicesIndex(17),
  },
  {
    /* [279] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(184),
  },
  {
    /* [280] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(130),
  },
  {
    /* [281] */
    /* usage */ core::ParameterUsage::kSampleIndex,
    /* matcher_indices */ MatcherIndicesIndex(17),
  },
  {
    /* [282] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(264),
  },
  {
    /* [283] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(126),
  },
  {
    /* [284] */
    /* usage */ core::ParameterUsage::kLevel,
    /* matcher_indices */ MatcherIndicesIndex(4),
  },
  {
    /* [285] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(268),
  },
  {
    /* [286] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(126),
  },
  {
    /* [287] */
    /* usage */ core::ParameterUsage::kSampleIndex,
    /* matcher_indices */ MatcherIndicesIndex(4),
  },
  {
    /* [288] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(135),
  },
  {
    /* [289] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(126),
  },
  {
    /* [290] */
    /* usage */ core::ParameterUsage::kArrayIndex,
    /* matcher_indices */ MatcherIndicesIndex(4),
  },
  {
    /* [291] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(138),
  },
  {
    /* [292] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(126),
  },
  {
    /* [293] */
    /* usage */ core::ParameterUsage::kArrayIndex,
    /* matcher_indices */ MatcherIndicesIndex(4),
  },
  {
    /* [294] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(141),
  },
  {
    /* [295] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(126),
  },
  {
    /* [296] */
    /* usage */ core::ParameterUsage::kArrayIndex,
    /* matcher_indices */ MatcherIndicesIndex(4),
  },
  {
    /* [297] */
    /* usage */ core::ParameterUsage::kXy,
    /* matcher_indices */ MatcherIndicesIndex(126),
  },
  {
    /* [298] */
    /* usage */ core::ParameterUsage::kZ,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [299] */
    /* usage */ core::ParameterUsage::kW,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [300] */
    /* usage */ core::ParameterUsage::kX,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [301] */
    /* usage */ core::ParameterUsage::kYz,
    /* matcher_indices */ MatcherIndicesIndex(126),
  },
  {
    /* [302] */
    /* usage */ core::ParameterUsage::kW,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [303] */
    /* usage */ core::ParameterUsage::kX,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [304] */
    /* usage */ core::ParameterUsage::kY,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [305] */
    /* usage */ core::ParameterUsage::kZw,
    /* matcher_indices */ MatcherIndicesIndex(126),
  },
  {
    /* [306] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [307] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(4),
  },
  {
    /* [308] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(38),
  },
  {
    /* [309] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(53),
  },
  {
    /* [310] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(172),
  },
  {
    /* [311] */
    /* usage */ core::ParameterUsage::kLevel,
    /* matcher_indices */ MatcherIndicesIndex(4),
  },
  {
    /* [312] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(174),
  },
  {
    /* [313] */
    /* usage */ core::ParameterUsage::kLevel,
    /* matcher_indices */ MatcherIndicesIndex(4),
  },
  {
    /* [314] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(176),
  },
  {
    /* [315] */
    /* usage */ core::ParameterUsage::kLevel,
    /* matcher_indices */ MatcherIndicesIndex(4),
  },
  {
    /* [316] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(178),
  },
  {
    /* [317] */
    /* usage */ core::ParameterUsage::kLevel,
    /* matcher_indices */ MatcherIndicesIndex(4),
  },
  {
    /* [318] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(180),
  },
  {
    /* [319] */
    /* usage */ core::ParameterUsage::kLevel,
    /* matcher_indices */ MatcherIndicesIndex(4),
  },
  {
    /* [320] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(182),
  },
  {
    /* [321] */
    /* usage */ core::ParameterUsage::kLevel,
    /* matcher_indices */ MatcherIndicesIndex(4),
  },
  {
    /* [322] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(264),
  },
  {
    /* [323] */
    /* usage */ core::ParameterUsage::kLevel,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [324] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(265),
  },
  {
    /* [325] */
    /* usage */ core::ParameterUsage::kLevel,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [326] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(266),
  },
  {
    /* [327] */
    /* usage */ core::ParameterUsage::kLevel,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [328] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(267),
  },
  {
    /* [329] */
    /* usage */ core::ParameterUsage::kLevel,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [330] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(269),
  },
  {
    /* [331] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(126),
  },
  {
    /* [332] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(112),
  },
  {
    /* [333] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [334] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(116),
  },
  {
    /* [335] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [336] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(120),
  },
  {
    /* [337] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [338] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(124),
  },
  {
    /* [339] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(126),
  },
  {
    /* [340] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(128),
  },
  {
    /* [341] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(126),
  },
  {
    /* [342] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(132),
  },
  {
    /* [343] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(126),
  },
  {
    /* [344] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(144),
  },
  {
    /* [345] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(73),
  },
  {
    /* [346] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(147),
  },
  {
    /* [347] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(73),
  },
  {
    /* [348] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(150),
  },
  {
    /* [349] */
    /* usage */ core::ParameterUsage::kCoords,
    /* matcher_indices */ MatcherIndicesIndex(73),
  },
  {
    /* [350] */
    /* usage */ core::ParameterUsage::kValue,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [351] */
    /* usage */ core::ParameterUsage::kSourceLaneIndex,
    /* matcher_indices */ MatcherIndicesIndex(78),
  },
  {
    /* [352] */
    /* usage */ core::ParameterUsage::kValue,
    /* matcher_indices */ MatcherIndicesIndex(38),
  },
  {
    /* [353] */
    /* usage */ core::ParameterUsage::kSourceLaneIndex,
    /* matcher_indices */ MatcherIndicesIndex(78),
  },
  {
    /* [354] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(44),
  },
  {
    /* [355] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [356] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(44),
  },
  {
    /* [357] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(159),
  },
  {
    /* [358] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(22),
  },
  {
    /* [359] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(22),
  },
  {
    /* [360] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [361] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(22),
  },
  {
    /* [362] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(44),
  },
  {
    /* [363] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(153),
  },
  {
    /* [364] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(22),
  },
  {
    /* [365] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(30),
  },
  {
    /* [366] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(34),
  },
  {
    /* [367] */
    /* usage */ core::ParameterUsage::kXy,
    /* matcher_indices */ MatcherIndicesIndex(126),
  },
  {
    /* [368] */
    /* usage */ core::ParameterUsage::kZw,
    /* matcher_indices */ MatcherIndicesIndex(126),
  },
  {
    /* [369] */
    /* usage */ core::ParameterUsage::kXyz,
    /* matcher_indices */ MatcherIndicesIndex(73),
  },
  {
    /* [370] */
    /* usage */ core::ParameterUsage::kW,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [371] */
    /* usage */ core::ParameterUsage::kX,
    /* matcher_indices */ MatcherIndicesIndex(3),
  },
  {
    /* [372] */
    /* usage */ core::ParameterUsage::kZyw,
    /* matcher_indices */ MatcherIndicesIndex(73),
  },
  {
    /* [373] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(0),
  },
  {
    /* [374] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(10),
  },
  {
    /* [375] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(49),
  },
  {
    /* [376] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(47),
  },
  {
    /* [377] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(114),
  },
  {
    /* [378] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(166),
  },
  {
    /* [379] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(168),
  },
  {
    /* [380] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(170),
  },
  {
    /* [381] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(18),
  },
  {
    /* [382] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(59),
  },
  {
    /* [383] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(62),
  },
  {
    /* [384] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(65),
  },
  {
    /* [385] */
    /* usage */ core::ParameterUsage::kTexture,
    /* matcher_indices */ MatcherIndicesIndex(68),
  },
  {
    /* [386] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(86),
  },
  {
    /* [387] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(9),
  },
  {
    /* [388] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(130),
  },
  {
    /* [389] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(89),
  },
  {
    /* [390] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(202),
  },
  {
    /* [391] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(204),
  },
  {
    /* [392] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(206),
  },
  {
    /* [393] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(208),
  },
  {
    /* [394] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(210),
  },
  {
    /* [395] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(212),
  },
  {
    /* [396] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(214),
  },
  {
    /* [397] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(216),
  },
  {
    /* [398] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(218),
  },
  {
    /* [399] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(220),
  },
  {
    /* [400] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(222),
  },
  {
    /* [401] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(224),
  },
  {
    /* [402] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(226),
  },
  {
    /* [403] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(228),
  },
  {
    /* [404] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(230),
  },
  {
    /* [405] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(232),
  },
  {
    /* [406] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(234),
  },
  {
    /* [407] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(236),
  },
  {
    /* [408] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(238),
  },
  {
    /* [409] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(240),
  },
  {
    /* [410] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(242),
  },
  {
    /* [411] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(244),
  },
  {
    /* [412] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(246),
  },
  {
    /* [413] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(248),
  },
  {
    /* [414] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(250),
  },
  {
    /* [415] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(252),
  },
  {
    /* [416] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(254),
  },
  {
    /* [417] */
    /* usage */ core::ParameterUsage::kNone,
    /* matcher_indices */ MatcherIndicesIndex(256),
  },
};

static_assert(ParameterIndex::CanIndex(kParameters),
              "ParameterIndex is not large enough to index kParameters");

constexpr TemplateInfo kTemplates[] = {
  {
    /* [0] */
    /* name */ "T",
    /* matcher_indices */ MatcherIndicesIndex(263),
    /* kind */ TemplateInfo::Kind::kType,
  },
  {
    /* [1] */
    /* name */ "C",
    /* matcher_indices */ MatcherIndicesIndex(260),
    /* kind */ TemplateInfo::Kind::kType,
  },
  {
    /* [2] */
    /* name */ "A",
    /* matcher_indices */ MatcherIndicesIndex(260),
    /* kind */ TemplateInfo::Kind::kType,
  },
  {
    /* [3] */
    /* name */ "L",
    /* matcher_indices */ MatcherIndicesIndex(260),
    /* kind */ TemplateInfo::Kind::kType,
  },
  {
    /* [4] */
    /* name */ "T",
    /* matcher_indices */ MatcherIndicesIndex(259),
    /* kind */ TemplateInfo::Kind::kType,
  },
  {
    /* [5] */
    /* name */ "K",
    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
    /* kind */ TemplateInfo::Kind::kNumber,
  },
  {
    /* [6] */
    /* name */ "C",
    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
    /* kind */ TemplateInfo::Kind::kNumber,
  },
  {
    /* [7] */
    /* name */ "R",
    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
    /* kind */ TemplateInfo::Kind::kNumber,
  },
  {
    /* [8] */
    /* name */ "N",
    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
    /* kind */ TemplateInfo::Kind::kNumber,
  },
  {
    /* [9] */
    /* name */ "T",
    /* matcher_indices */ MatcherIndicesIndex(259),
    /* kind */ TemplateInfo::Kind::kType,
  },
  {
    /* [10] */
    /* name */ "U",
    /* matcher_indices */ MatcherIndicesIndex(86),
    /* kind */ TemplateInfo::Kind::kType,
  },
  {
    /* [11] */
    /* name */ "M",
    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
    /* kind */ TemplateInfo::Kind::kNumber,
  },
  {
    /* [12] */
    /* name */ "N",
    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
    /* kind */ TemplateInfo::Kind::kNumber,
  },
  {
    /* [13] */
    /* name */ "T",
    /* matcher_indices */ MatcherIndicesIndex(259),
    /* kind */ TemplateInfo::Kind::kType,
  },
  {
    /* [14] */
    /* name */ "N",
    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
    /* kind */ TemplateInfo::Kind::kNumber,
  },
  {
    /* [15] */
    /* name */ "M",
    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
    /* kind */ TemplateInfo::Kind::kNumber,
  },
  {
    /* [16] */
    /* name */ "T",
    /* matcher_indices */ MatcherIndicesIndex(263),
    /* kind */ TemplateInfo::Kind::kType,
  },
  {
    /* [17] */
    /* name */ "C",
    /* matcher_indices */ MatcherIndicesIndex(260),
    /* kind */ TemplateInfo::Kind::kType,
  },
  {
    /* [18] */
    /* name */ "L",
    /* matcher_indices */ MatcherIndicesIndex(260),
    /* kind */ TemplateInfo::Kind::kType,
  },
  {
    /* [19] */
    /* name */ "T",
    /* matcher_indices */ MatcherIndicesIndex(263),
    /* kind */ TemplateInfo::Kind::kType,
  },
  {
    /* [20] */
    /* name */ "C",
    /* matcher_indices */ MatcherIndicesIndex(260),
    /* kind */ TemplateInfo::Kind::kType,
  },
  {
    /* [21] */
    /* name */ "S",
    /* matcher_indices */ MatcherIndicesIndex(260),
    /* kind */ TemplateInfo::Kind::kType,
  },
  {
    /* [22] */
    /* name */ "T",
    /* matcher_indices */ MatcherIndicesIndex(259),
    /* kind */ TemplateInfo::Kind::kType,
  },
  {
    /* [23] */
    /* name */ "C",
    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
    /* kind */ TemplateInfo::Kind::kNumber,
  },
  {
    /* [24] */
    /* name */ "R",
    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
    /* kind */ TemplateInfo::Kind::kNumber,
  },
  {
    /* [25] */
    /* name */ "N",
    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
    /* kind */ TemplateInfo::Kind::kNumber,
  },
  {
    /* [26] */
    /* name */ "T",
    /* matcher_indices */ MatcherIndicesIndex(258),
    /* kind */ TemplateInfo::Kind::kType,
  },
  {
    /* [27] */
    /* name */ "N",
    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
    /* kind */ TemplateInfo::Kind::kNumber,
  },
  {
    /* [28] */
    /* name */ "T",
    /* matcher_indices */ MatcherIndicesIndex(260),
    /* kind */ TemplateInfo::Kind::kType,
  },
  {
    /* [29] */
    /* name */ "S",
    /* matcher_indices */ MatcherIndicesIndex(204),
    /* kind */ TemplateInfo::Kind::kNumber,
  },
  {
    /* [30] */
    /* name */ "T",
    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
    /* kind */ TemplateInfo::Kind::kType,
  },
  {
    /* [31] */
    /* name */ "A",
    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
    /* kind */ TemplateInfo::Kind::kNumber,
  },
  {
    /* [32] */
    /* name */ "T",
    /* matcher_indices */ MatcherIndicesIndex(261),
    /* kind */ TemplateInfo::Kind::kType,
  },
  {
    /* [33] */
    /* name */ "N",
    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
    /* kind */ TemplateInfo::Kind::kNumber,
  },
  {
    /* [34] */
    /* name */ "T",
    /* matcher_indices */ MatcherIndicesIndex(261),
    /* kind */ TemplateInfo::Kind::kType,
  },
  {
    /* [35] */
    /* name */ "N",
    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
    /* kind */ TemplateInfo::Kind::kNumber,
  },
  {
    /* [36] */
    /* name */ "T",
    /* matcher_indices */ MatcherIndicesIndex(262),
    /* kind */ TemplateInfo::Kind::kType,
  },
  {
    /* [37] */
    /* name */ "N",
    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
    /* kind */ TemplateInfo::Kind::kNumber,
  },
  {
    /* [38] */
    /* name */ "T",
    /* matcher_indices */ MatcherIndicesIndex(263),
    /* kind */ TemplateInfo::Kind::kType,
  },
  {
    /* [39] */
    /* name */ "L",
    /* matcher_indices */ MatcherIndicesIndex(260),
    /* kind */ TemplateInfo::Kind::kType,
  },
  {
    /* [40] */
    /* name */ "F",
    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
    /* kind */ TemplateInfo::Kind::kNumber,
  },
  {
    /* [41] */
    /* name */ "A",
    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
    /* kind */ TemplateInfo::Kind::kNumber,
  },
  {
    /* [42] */
    /* name */ "T",
    /* matcher_indices */ MatcherIndicesIndex(260),
    /* kind */ TemplateInfo::Kind::kType,
  },
  {
    /* [43] */
    /* name */ "N",
    /* matcher_indices */ MatcherIndicesIndex(/* invalid */),
    /* kind */ TemplateInfo::Kind::kNumber,
  },
  {
    /* [44] */
    /* name */ "T",
    /* matcher_indices */ MatcherIndicesIndex(49),
    /* kind */ TemplateInfo::Kind::kType,
  },
  {
    /* [45] */
    /* name */ "U",
    /* matcher_indices */ MatcherIndicesIndex(274),
    /* kind */ TemplateInfo::Kind::kType,
  },
  {
    /* [46] */
    /* name */ "T",
    /* matcher_indices */ MatcherIndicesIndex(9),
    /* kind */ TemplateInfo::Kind::kType,
  },
  {
    /* [47] */
    /* name */ "U",
    /* matcher_indices */ MatcherIndicesIndex(275),
    /* kind */ TemplateInfo::Kind::kType,
  },
  {
    /* [48] */
    /* name */ "T",
    /* matcher_indices */ MatcherIndicesIndex(86),
    /* kind */ TemplateInfo::Kind::kType,
  },
  {
    /* [49] */
    /* name */ "U",
    /* matcher_indices */ MatcherIndicesIndex(272),
    /* kind */ TemplateInfo::Kind::kType,
  },
  {
    /* [50] */
    /* name */ "T",
    /* matcher_indices */ MatcherIndicesIndex(78),
    /* kind */ TemplateInfo::Kind::kType,
  },
  {
    /* [51] */
    /* name */ "U",
    /* matcher_indices */ MatcherIndicesIndex(273),
    /* kind */ TemplateInfo::Kind::kType,
  },
  {
    /* [52] */
    /* name */ "T",
    /* matcher_indices */ MatcherIndicesIndex(43),
    /* kind */ TemplateInfo::Kind::kType,
  },
  {
    /* [53] */
    /* name */ "U",
    /* matcher_indices */ MatcherIndicesIndex(276),
    /* kind */ TemplateInfo::Kind::kType,
  },
  {
    /* [54] */
    /* name */ "T",
    /* matcher_indices */ MatcherIndicesIndex(272),
    /* kind */ TemplateInfo::Kind::kType,
  },
  {
    /* [55] */
    /* name */ "T",
    /* matcher_indices */ MatcherIndicesIndex(273),
    /* kind */ TemplateInfo::Kind::kType,
  },
  {
    /* [56] */
    /* name */ "T",
    /* matcher_indices */ MatcherIndicesIndex(274),
    /* kind */ TemplateInfo::Kind::kType,
  },
  {
    /* [57] */
    /* name */ "T",
    /* matcher_indices */ MatcherIndicesIndex(275),
    /* kind */ TemplateInfo::Kind::kType,
  },
  {
    /* [58] */
    /* name */ "T",
    /* matcher_indices */ MatcherIndicesIndex(276),
    /* kind */ TemplateInfo::Kind::kType,
  },
};

static_assert(TemplateIndex::CanIndex(kTemplates),
              "TemplateIndex is not large enough to index kTemplates");

constexpr core::constant::Eval::Function kConstEvalFunctions[] = {
  /* [0] */ &core::constant::Eval::abs,
  /* [1] */ &core::constant::Eval::acos,
  /* [2] */ &core::constant::Eval::acosh,
  /* [3] */ &core::constant::Eval::all,
  /* [4] */ &core::constant::Eval::any,
  /* [5] */ &core::constant::Eval::asin,
  /* [6] */ &core::constant::Eval::asinh,
  /* [7] */ &core::constant::Eval::atan,
  /* [8] */ &core::constant::Eval::atan2,
  /* [9] */ &core::constant::Eval::atanh,
  /* [10] */ &core::constant::Eval::ceil,
  /* [11] */ &core::constant::Eval::clamp,
  /* [12] */ &core::constant::Eval::cos,
  /* [13] */ &core::constant::Eval::cosh,
  /* [14] */ &core::constant::Eval::countLeadingZeros,
  /* [15] */ &core::constant::Eval::countOneBits,
  /* [16] */ &core::constant::Eval::countTrailingZeros,
  /* [17] */ &core::constant::Eval::cross,
  /* [18] */ &core::constant::Eval::degrees,
  /* [19] */ &core::constant::Eval::determinant,
  /* [20] */ &core::constant::Eval::distance,
  /* [21] */ &core::constant::Eval::dot,
  /* [22] */ &core::constant::Eval::exp,
  /* [23] */ &core::constant::Eval::exp2,
  /* [24] */ &core::constant::Eval::extractBits,
  /* [25] */ &core::constant::Eval::faceForward,
  /* [26] */ &core::constant::Eval::firstLeadingBit,
  /* [27] */ &core::constant::Eval::firstTrailingBit,
  /* [28] */ &core::constant::Eval::floor,
  /* [29] */ &core::constant::Eval::fma,
  /* [30] */ &core::constant::Eval::fract,
  /* [31] */ &core::constant::Eval::frexp,
  /* [32] */ &core::constant::Eval::insertBits,
  /* [33] */ &core::constant::Eval::inverseSqrt,
  /* [34] */ &core::constant::Eval::ldexp,
  /* [35] */ &core::constant::Eval::length,
  /* [36] */ &core::constant::Eval::log,
  /* [37] */ &core::constant::Eval::log2,
  /* [38] */ &core::constant::Eval::max,
  /* [39] */ &core::constant::Eval::min,
  /* [40] */ &core::constant::Eval::mix,
  /* [41] */ &core::constant::Eval::modf,
  /* [42] */ &core::constant::Eval::normalize,
  /* [43] */ &core::constant::Eval::pack2x16float,
  /* [44] */ &core::constant::Eval::pack2x16snorm,
  /* [45] */ &core::constant::Eval::pack2x16unorm,
  /* [46] */ &core::constant::Eval::pack4x8snorm,
  /* [47] */ &core::constant::Eval::pack4x8unorm,
  /* [48] */ &core::constant::Eval::pack4xI8,
  /* [49] */ &core::constant::Eval::pack4xU8,
  /* [50] */ &core::constant::Eval::pack4xI8Clamp,
  /* [51] */ &core::constant::Eval::pack4xU8Clamp,
  /* [52] */ &core::constant::Eval::pow,
  /* [53] */ &core::constant::Eval::quantizeToF16,
  /* [54] */ &core::constant::Eval::radians,
  /* [55] */ &core::constant::Eval::reflect,
  /* [56] */ &core::constant::Eval::refract,
  /* [57] */ &core::constant::Eval::reverseBits,
  /* [58] */ &core::constant::Eval::round,
  /* [59] */ &core::constant::Eval::saturate,
  /* [60] */ &core::constant::Eval::select_bool,
  /* [61] */ &core::constant::Eval::select_boolvec,
  /* [62] */ &core::constant::Eval::sign,
  /* [63] */ &core::constant::Eval::sin,
  /* [64] */ &core::constant::Eval::sinh,
  /* [65] */ &core::constant::Eval::smoothstep,
  /* [66] */ &core::constant::Eval::sqrt,
  /* [67] */ &core::constant::Eval::step,
  /* [68] */ &core::constant::Eval::tan,
  /* [69] */ &core::constant::Eval::tanh,
  /* [70] */ &core::constant::Eval::transpose,
  /* [71] */ &core::constant::Eval::trunc,
  /* [72] */ &core::constant::Eval::unpack2x16float,
  /* [73] */ &core::constant::Eval::unpack2x16snorm,
  /* [74] */ &core::constant::Eval::unpack2x16unorm,
  /* [75] */ &core::constant::Eval::unpack4x8snorm,
  /* [76] */ &core::constant::Eval::unpack4x8unorm,
  /* [77] */ &core::constant::Eval::unpack4xI8,
  /* [78] */ &core::constant::Eval::unpack4xU8,
  /* [79] */ &core::constant::Eval::Not,
  /* [80] */ &core::constant::Eval::Complement,
  /* [81] */ &core::constant::Eval::UnaryMinus,
  /* [82] */ &core::constant::Eval::Plus,
  /* [83] */ &core::constant::Eval::Minus,
  /* [84] */ &core::constant::Eval::Multiply,
  /* [85] */ &core::constant::Eval::MultiplyMatVec,
  /* [86] */ &core::constant::Eval::MultiplyVecMat,
  /* [87] */ &core::constant::Eval::MultiplyMatMat,
  /* [88] */ &core::constant::Eval::Divide,
  /* [89] */ &core::constant::Eval::Modulo,
  /* [90] */ &core::constant::Eval::Xor,
  /* [91] */ &core::constant::Eval::And,
  /* [92] */ &core::constant::Eval::Or,
  /* [93] */ &core::constant::Eval::LogicalAnd,
  /* [94] */ &core::constant::Eval::LogicalOr,
  /* [95] */ &core::constant::Eval::Equal,
  /* [96] */ &core::constant::Eval::NotEqual,
  /* [97] */ &core::constant::Eval::LessThan,
  /* [98] */ &core::constant::Eval::GreaterThan,
  /* [99] */ &core::constant::Eval::LessThanEqual,
  /* [100] */ &core::constant::Eval::GreaterThanEqual,
  /* [101] */ &core::constant::Eval::ShiftLeft,
  /* [102] */ &core::constant::Eval::ShiftRight,
  /* [103] */ &core::constant::Eval::Zero,
  /* [104] */ &core::constant::Eval::Identity,
  /* [105] */ &core::constant::Eval::Conv,
  /* [106] */ &core::constant::Eval::VecSplat,
  /* [107] */ &core::constant::Eval::VecInitS,
  /* [108] */ &core::constant::Eval::VecInitM,
  /* [109] */ &core::constant::Eval::MatInitS,
  /* [110] */ &core::constant::Eval::MatInitV,
};

static_assert(ConstEvalFunctionIndex::CanIndex(kConstEvalFunctions),
              "ConstEvalFunctionIndex is not large enough to index kConstEvalFunctions");

constexpr OverloadInfo kOverloads[] = {
  {
    /* [0] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(0),
    /* parameters */ ParameterIndex(270),
    /* return_matcher_indices */ MatcherIndicesIndex(78),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [1] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(38),
    /* parameters */ ParameterIndex(310),
    /* return_matcher_indices */ MatcherIndicesIndex(78),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [2] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(0),
    /* parameters */ ParameterIndex(75),
    /* return_matcher_indices */ MatcherIndicesIndex(118),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [3] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(38),
    /* parameters */ ParameterIndex(312),
    /* return_matcher_indices */ MatcherIndicesIndex(118),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [4] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(0),
    /* parameters */ ParameterIndex(27),
    /* return_matcher_indices */ MatcherIndicesIndex(118),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [5] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(38),
    /* parameters */ ParameterIndex(314),
    /* return_matcher_indices */ MatcherIndicesIndex(118),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [6] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(0),
    /* parameters */ ParameterIndex(276),
    /* return_matcher_indices */ MatcherIndicesIndex(77),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [7] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(38),
    /* parameters */ ParameterIndex(316),
    /* return_matcher_indices */ MatcherIndicesIndex(77),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [8] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(0),
    /* parameters */ ParameterIndex(154),
    /* return_matcher_indices */ MatcherIndicesIndex(118),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [9] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(38),
    /* parameters */ ParameterIndex(318),
    /* return_matcher_indices */ MatcherIndicesIndex(118),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [10] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(0),
    /* parameters */ ParameterIndex(80),
    /* return_matcher_indices */ MatcherIndicesIndex(118),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [11] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(38),
    /* parameters */ ParameterIndex(320),
    /* return_matcher_indices */ MatcherIndicesIndex(118),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [12] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(0),
    /* parameters */ ParameterIndex(279),
    /* return_matcher_indices */ MatcherIndicesIndex(118),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [13] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(89),
    /* return_matcher_indices */ MatcherIndicesIndex(118),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [14] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(3),
    /* parameters */ ParameterIndex(322),
    /* return_matcher_indices */ MatcherIndicesIndex(118),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [15] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(32),
    /* return_matcher_indices */ MatcherIndicesIndex(118),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [16] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(3),
    /* parameters */ ParameterIndex(324),
    /* return_matcher_indices */ MatcherIndicesIndex(118),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [17] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(161),
    /* return_matcher_indices */ MatcherIndicesIndex(118),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [18] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(3),
    /* parameters */ ParameterIndex(326),
    /* return_matcher_indices */ MatcherIndicesIndex(118),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [19] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(94),
    /* return_matcher_indices */ MatcherIndicesIndex(118),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [20] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(3),
    /* parameters */ ParameterIndex(328),
    /* return_matcher_indices */ MatcherIndicesIndex(118),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [21] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(285),
    /* return_matcher_indices */ MatcherIndicesIndex(118),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [22] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(40),
    /* parameters */ ParameterIndex(382),
    /* return_matcher_indices */ MatcherIndicesIndex(78),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [23] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(40),
    /* parameters */ ParameterIndex(383),
    /* return_matcher_indices */ MatcherIndicesIndex(118),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [24] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(40),
    /* parameters */ ParameterIndex(384),
    /* return_matcher_indices */ MatcherIndicesIndex(118),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [25] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(40),
    /* parameters */ ParameterIndex(385),
    /* return_matcher_indices */ MatcherIndicesIndex(77),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [26] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(240),
    /* return_matcher_indices */ MatcherIndicesIndex(118),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [27] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 3,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 3,
    /* templates */ TemplateIndex(16),
    /* parameters */ ParameterIndex(270),
    /* return_matcher_indices */ MatcherIndicesIndex(186),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [28] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 3,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 3,
    /* templates */ TemplateIndex(16),
    /* parameters */ ParameterIndex(273),
    /* return_matcher_indices */ MatcherIndicesIndex(186),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [29] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 4,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 4,
    /* templates */ TemplateIndex(0),
    /* parameters */ ParameterIndex(197),
    /* return_matcher_indices */ MatcherIndicesIndex(186),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [30] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 3,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 3,
    /* templates */ TemplateIndex(16),
    /* parameters */ ParameterIndex(276),
    /* return_matcher_indices */ MatcherIndicesIndex(186),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [31] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 3,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 3,
    /* templates */ TemplateIndex(19),
    /* parameters */ ParameterIndex(279),
    /* return_matcher_indices */ MatcherIndicesIndex(186),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [32] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 3,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(17),
    /* parameters */ ParameterIndex(282),
    /* return_matcher_indices */ MatcherIndicesIndex(49),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [33] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 4,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 3,
    /* templates */ TemplateIndex(1),
    /* parameters */ ParameterIndex(201),
    /* return_matcher_indices */ MatcherIndicesIndex(49),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [34] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 3,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(20),
    /* parameters */ ParameterIndex(285),
    /* return_matcher_indices */ MatcherIndicesIndex(49),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [35] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(1),
    /* parameters */ ParameterIndex(330),
    /* return_matcher_indices */ MatcherIndicesIndex(166),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [36] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(1),
    /* parameters */ ParameterIndex(332),
    /* return_matcher_indices */ MatcherIndicesIndex(166),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [37] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(1),
    /* parameters */ ParameterIndex(334),
    /* return_matcher_indices */ MatcherIndicesIndex(168),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [38] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(1),
    /* parameters */ ParameterIndex(336),
    /* return_matcher_indices */ MatcherIndicesIndex(170),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [39] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(1),
    /* parameters */ ParameterIndex(338),
    /* return_matcher_indices */ MatcherIndicesIndex(166),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [40] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(1),
    /* parameters */ ParameterIndex(340),
    /* return_matcher_indices */ MatcherIndicesIndex(168),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [41] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(1),
    /* parameters */ ParameterIndex(342),
    /* return_matcher_indices */ MatcherIndicesIndex(170),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [42] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 3,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(1),
    /* parameters */ ParameterIndex(288),
    /* return_matcher_indices */ MatcherIndicesIndex(166),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [43] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 3,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(1),
    /* parameters */ ParameterIndex(291),
    /* return_matcher_indices */ MatcherIndicesIndex(168),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [44] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 3,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(1),
    /* parameters */ ParameterIndex(294),
    /* return_matcher_indices */ MatcherIndicesIndex(170),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [45] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(1),
    /* parameters */ ParameterIndex(344),
    /* return_matcher_indices */ MatcherIndicesIndex(166),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [46] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(1),
    /* parameters */ ParameterIndex(346),
    /* return_matcher_indices */ MatcherIndicesIndex(168),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [47] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(1),
    /* parameters */ ParameterIndex(348),
    /* return_matcher_indices */ MatcherIndicesIndex(170),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [48] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 3,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(237),
    /* return_matcher_indices */ MatcherIndicesIndex(166),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [49] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 3,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(44),
    /* return_matcher_indices */ MatcherIndicesIndex(166),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [50] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 4,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(165),
    /* return_matcher_indices */ MatcherIndicesIndex(166),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [51] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 4,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(2),
    /* parameters */ ParameterIndex(19),
    /* return_matcher_indices */ MatcherIndicesIndex(166),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [52] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 5,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(2),
    /* parameters */ ParameterIndex(99),
    /* return_matcher_indices */ MatcherIndicesIndex(166),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [53] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 3,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(50),
    /* return_matcher_indices */ MatcherIndicesIndex(166),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [54] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 4,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(169),
    /* return_matcher_indices */ MatcherIndicesIndex(166),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [55] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 3,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(119),
    /* return_matcher_indices */ MatcherIndicesIndex(166),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [56] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 4,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(2),
    /* parameters */ ParameterIndex(56),
    /* return_matcher_indices */ MatcherIndicesIndex(166),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [57] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 3,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(139),
    /* return_matcher_indices */ MatcherIndicesIndex(49),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [58] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 4,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(157),
    /* return_matcher_indices */ MatcherIndicesIndex(49),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [59] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 4,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(2),
    /* parameters */ ParameterIndex(68),
    /* return_matcher_indices */ MatcherIndicesIndex(49),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [60] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 5,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(2),
    /* parameters */ ParameterIndex(84),
    /* return_matcher_indices */ MatcherIndicesIndex(49),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [61] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 3,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(181),
    /* return_matcher_indices */ MatcherIndicesIndex(49),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [62] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 4,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(2),
    /* parameters */ ParameterIndex(144),
    /* return_matcher_indices */ MatcherIndicesIndex(49),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [63] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 0,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(32),
    /* parameters */ ParameterIndex(/* invalid */),
    /* return_matcher_indices */ MatcherIndicesIndex(186),
    /* const_eval_fn */ ConstEvalFunctionIndex(103),
  },
  {
    /* [64] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(32),
    /* parameters */ ParameterIndex(217),
    /* return_matcher_indices */ MatcherIndicesIndex(186),
    /* const_eval_fn */ ConstEvalFunctionIndex(104),
  },
  {
    /* [65] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(32),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(186),
    /* const_eval_fn */ ConstEvalFunctionIndex(106),
  },
  {
    /* [66] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 4,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(32),
    /* parameters */ ParameterIndex(205),
    /* return_matcher_indices */ MatcherIndicesIndex(186),
    /* const_eval_fn */ ConstEvalFunctionIndex(107),
  },
  {
    /* [67] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 3,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(32),
    /* parameters */ ParameterIndex(297),
    /* return_matcher_indices */ MatcherIndicesIndex(186),
    /* const_eval_fn */ ConstEvalFunctionIndex(108),
  },
  {
    /* [68] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 3,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(32),
    /* parameters */ ParameterIndex(300),
    /* return_matcher_indices */ MatcherIndicesIndex(186),
    /* const_eval_fn */ ConstEvalFunctionIndex(108),
  },
  {
    /* [69] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 3,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(32),
    /* parameters */ ParameterIndex(303),
    /* return_matcher_indices */ MatcherIndicesIndex(186),
    /* const_eval_fn */ ConstEvalFunctionIndex(108),
  },
  {
    /* [70] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(32),
    /* parameters */ ParameterIndex(367),
    /* return_matcher_indices */ MatcherIndicesIndex(186),
    /* const_eval_fn */ ConstEvalFunctionIndex(108),
  },
  {
    /* [71] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(32),
    /* parameters */ ParameterIndex(369),
    /* return_matcher_indices */ MatcherIndicesIndex(186),
    /* const_eval_fn */ ConstEvalFunctionIndex(108),
  },
  {
    /* [72] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(32),
    /* parameters */ ParameterIndex(371),
    /* return_matcher_indices */ MatcherIndicesIndex(186),
    /* const_eval_fn */ ConstEvalFunctionIndex(108),
  },
  {
    /* [73] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(44),
    /* parameters */ ParameterIndex(390),
    /* return_matcher_indices */ MatcherIndicesIndex(186),
    /* const_eval_fn */ ConstEvalFunctionIndex(105),
  },
  {
    /* [74] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(46),
    /* parameters */ ParameterIndex(390),
    /* return_matcher_indices */ MatcherIndicesIndex(186),
    /* const_eval_fn */ ConstEvalFunctionIndex(105),
  },
  {
    /* [75] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(48),
    /* parameters */ ParameterIndex(390),
    /* return_matcher_indices */ MatcherIndicesIndex(186),
    /* const_eval_fn */ ConstEvalFunctionIndex(105),
  },
  {
    /* [76] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(50),
    /* parameters */ ParameterIndex(390),
    /* return_matcher_indices */ MatcherIndicesIndex(186),
    /* const_eval_fn */ ConstEvalFunctionIndex(105),
  },
  {
    /* [77] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(52),
    /* parameters */ ParameterIndex(390),
    /* return_matcher_indices */ MatcherIndicesIndex(186),
    /* const_eval_fn */ ConstEvalFunctionIndex(105),
  },
  {
    /* [78] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 4,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(124),
    /* return_matcher_indices */ MatcherIndicesIndex(166),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [79] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 5,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(124),
    /* return_matcher_indices */ MatcherIndicesIndex(166),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [80] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 5,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(2),
    /* parameters */ ParameterIndex(62),
    /* return_matcher_indices */ MatcherIndicesIndex(166),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [81] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 6,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(2),
    /* parameters */ ParameterIndex(62),
    /* return_matcher_indices */ MatcherIndicesIndex(166),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [82] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 4,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(129),
    /* return_matcher_indices */ MatcherIndicesIndex(166),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [83] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 5,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(129),
    /* return_matcher_indices */ MatcherIndicesIndex(166),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [84] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 4,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(177),
    /* return_matcher_indices */ MatcherIndicesIndex(166),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [85] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 5,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(2),
    /* parameters */ ParameterIndex(134),
    /* return_matcher_indices */ MatcherIndicesIndex(166),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [86] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 4,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(3),
    /* parameters */ ParameterIndex(139),
    /* return_matcher_indices */ MatcherIndicesIndex(49),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [87] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 5,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(3),
    /* parameters */ ParameterIndex(139),
    /* return_matcher_indices */ MatcherIndicesIndex(49),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [88] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 5,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(2),
    /* parameters */ ParameterIndex(68),
    /* return_matcher_indices */ MatcherIndicesIndex(49),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [89] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 6,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(2),
    /* parameters */ ParameterIndex(68),
    /* return_matcher_indices */ MatcherIndicesIndex(49),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [90] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 4,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(3),
    /* parameters */ ParameterIndex(181),
    /* return_matcher_indices */ MatcherIndicesIndex(49),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [91] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 5,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(2),
    /* parameters */ ParameterIndex(144),
    /* return_matcher_indices */ MatcherIndicesIndex(49),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [92] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 4,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(0),
    /* parameters */ ParameterIndex(74),
    /* return_matcher_indices */ MatcherIndicesIndex(186),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [93] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 5,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(0),
    /* parameters */ ParameterIndex(74),
    /* return_matcher_indices */ MatcherIndicesIndex(186),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [94] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 5,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 3,
    /* templates */ TemplateIndex(0),
    /* parameters */ ParameterIndex(26),
    /* return_matcher_indices */ MatcherIndicesIndex(186),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [95] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 6,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 3,
    /* templates */ TemplateIndex(0),
    /* parameters */ ParameterIndex(26),
    /* return_matcher_indices */ MatcherIndicesIndex(186),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [96] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 4,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(0),
    /* parameters */ ParameterIndex(153),
    /* return_matcher_indices */ MatcherIndicesIndex(186),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [97] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 5,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 3,
    /* templates */ TemplateIndex(0),
    /* parameters */ ParameterIndex(79),
    /* return_matcher_indices */ MatcherIndicesIndex(186),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [98] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 3,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(139),
    /* return_matcher_indices */ MatcherIndicesIndex(166),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [99] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 4,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(157),
    /* return_matcher_indices */ MatcherIndicesIndex(166),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [100] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 4,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(2),
    /* parameters */ ParameterIndex(68),
    /* return_matcher_indices */ MatcherIndicesIndex(166),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [101] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 5,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(2),
    /* parameters */ ParameterIndex(84),
    /* return_matcher_indices */ MatcherIndicesIndex(166),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [102] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 3,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(181),
    /* return_matcher_indices */ MatcherIndicesIndex(166),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [103] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 4,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(2),
    /* parameters */ ParameterIndex(144),
    /* return_matcher_indices */ MatcherIndicesIndex(166),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [104] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* num_parameters */ 3,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(1),
    /* parameters */ ParameterIndex(243),
    /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [105] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* num_parameters */ 3,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(1),
    /* parameters */ ParameterIndex(246),
    /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [106] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* num_parameters */ 4,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(1),
    /* parameters */ ParameterIndex(185),
    /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [107] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* num_parameters */ 3,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(1),
    /* parameters */ ParameterIndex(249),
    /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [108] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* num_parameters */ 3,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(1),
    /* parameters */ ParameterIndex(252),
    /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [109] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* num_parameters */ 3,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(1),
    /* parameters */ ParameterIndex(255),
    /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [110] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* num_parameters */ 4,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(1),
    /* parameters */ ParameterIndex(189),
    /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [111] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* num_parameters */ 3,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(1),
    /* parameters */ ParameterIndex(258),
    /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [112] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* num_parameters */ 3,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(1),
    /* parameters */ ParameterIndex(261),
    /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [113] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* num_parameters */ 3,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(1),
    /* parameters */ ParameterIndex(264),
    /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [114] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* num_parameters */ 4,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(1),
    /* parameters */ ParameterIndex(193),
    /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [115] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* num_parameters */ 3,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(1),
    /* parameters */ ParameterIndex(267),
    /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [116] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 0,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(32),
    /* parameters */ ParameterIndex(/* invalid */),
    /* return_matcher_indices */ MatcherIndicesIndex(73),
    /* const_eval_fn */ ConstEvalFunctionIndex(103),
  },
  {
    /* [117] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(32),
    /* parameters */ ParameterIndex(213),
    /* return_matcher_indices */ MatcherIndicesIndex(73),
    /* const_eval_fn */ ConstEvalFunctionIndex(104),
  },
  {
    /* [118] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(32),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(73),
    /* const_eval_fn */ ConstEvalFunctionIndex(106),
  },
  {
    /* [119] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 3,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(32),
    /* parameters */ ParameterIndex(205),
    /* return_matcher_indices */ MatcherIndicesIndex(73),
    /* const_eval_fn */ ConstEvalFunctionIndex(107),
  },
  {
    /* [120] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(32),
    /* parameters */ ParameterIndex(297),
    /* return_matcher_indices */ MatcherIndicesIndex(73),
    /* const_eval_fn */ ConstEvalFunctionIndex(108),
  },
  {
    /* [121] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(32),
    /* parameters */ ParameterIndex(300),
    /* return_matcher_indices */ MatcherIndicesIndex(73),
    /* const_eval_fn */ ConstEvalFunctionIndex(108),
  },
  {
    /* [122] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(44),
    /* parameters */ ParameterIndex(389),
    /* return_matcher_indices */ MatcherIndicesIndex(73),
    /* const_eval_fn */ ConstEvalFunctionIndex(105),
  },
  {
    /* [123] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(46),
    /* parameters */ ParameterIndex(389),
    /* return_matcher_indices */ MatcherIndicesIndex(73),
    /* const_eval_fn */ ConstEvalFunctionIndex(105),
  },
  {
    /* [124] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(48),
    /* parameters */ ParameterIndex(389),
    /* return_matcher_indices */ MatcherIndicesIndex(73),
    /* const_eval_fn */ ConstEvalFunctionIndex(105),
  },
  {
    /* [125] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(50),
    /* parameters */ ParameterIndex(389),
    /* return_matcher_indices */ MatcherIndicesIndex(73),
    /* const_eval_fn */ ConstEvalFunctionIndex(105),
  },
  {
    /* [126] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(52),
    /* parameters */ ParameterIndex(389),
    /* return_matcher_indices */ MatcherIndicesIndex(73),
    /* const_eval_fn */ ConstEvalFunctionIndex(105),
  },
  {
    /* [127] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(0),
    /* parameters */ ParameterIndex(270),
    /* return_matcher_indices */ MatcherIndicesIndex(78),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [128] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(0),
    /* parameters */ ParameterIndex(75),
    /* return_matcher_indices */ MatcherIndicesIndex(78),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [129] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(0),
    /* parameters */ ParameterIndex(27),
    /* return_matcher_indices */ MatcherIndicesIndex(78),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [130] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(0),
    /* parameters */ ParameterIndex(276),
    /* return_matcher_indices */ MatcherIndicesIndex(78),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [131] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(0),
    /* parameters */ ParameterIndex(154),
    /* return_matcher_indices */ MatcherIndicesIndex(78),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [132] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(0),
    /* parameters */ ParameterIndex(80),
    /* return_matcher_indices */ MatcherIndicesIndex(78),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [133] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(89),
    /* return_matcher_indices */ MatcherIndicesIndex(78),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [134] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(32),
    /* return_matcher_indices */ MatcherIndicesIndex(78),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [135] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(161),
    /* return_matcher_indices */ MatcherIndicesIndex(78),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [136] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(94),
    /* return_matcher_indices */ MatcherIndicesIndex(78),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [137] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(26),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(84),
  },
  {
    /* [138] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(26),
    /* parameters */ ParameterIndex(221),
    /* return_matcher_indices */ MatcherIndicesIndex(44),
    /* const_eval_fn */ ConstEvalFunctionIndex(84),
  },
  {
    /* [139] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(26),
    /* parameters */ ParameterIndex(354),
    /* return_matcher_indices */ MatcherIndicesIndex(44),
    /* const_eval_fn */ ConstEvalFunctionIndex(84),
  },
  {
    /* [140] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(26),
    /* parameters */ ParameterIndex(355),
    /* return_matcher_indices */ MatcherIndicesIndex(44),
    /* const_eval_fn */ ConstEvalFunctionIndex(84),
  },
  {
    /* [141] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 3,
    /* templates */ TemplateIndex(13),
    /* parameters */ ParameterIndex(360),
    /* return_matcher_indices */ MatcherIndicesIndex(22),
    /* const_eval_fn */ ConstEvalFunctionIndex(84),
  },
  {
    /* [142] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 3,
    /* templates */ TemplateIndex(13),
    /* parameters */ ParameterIndex(359),
    /* return_matcher_indices */ MatcherIndicesIndex(22),
    /* const_eval_fn */ ConstEvalFunctionIndex(84),
  },
  {
    /* [143] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 3,
    /* templates */ TemplateIndex(22),
    /* parameters */ ParameterIndex(361),
    /* return_matcher_indices */ MatcherIndicesIndex(153),
    /* const_eval_fn */ ConstEvalFunctionIndex(85),
  },
  {
    /* [144] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 3,
    /* templates */ TemplateIndex(22),
    /* parameters */ ParameterIndex(363),
    /* return_matcher_indices */ MatcherIndicesIndex(44),
    /* const_eval_fn */ ConstEvalFunctionIndex(86),
  },
  {
    /* [145] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 4,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(365),
    /* return_matcher_indices */ MatcherIndicesIndex(26),
    /* const_eval_fn */ ConstEvalFunctionIndex(87),
  },
  {
    /* [146] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 0,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(32),
    /* parameters */ ParameterIndex(/* invalid */),
    /* return_matcher_indices */ MatcherIndicesIndex(126),
    /* const_eval_fn */ ConstEvalFunctionIndex(103),
  },
  {
    /* [147] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(32),
    /* parameters */ ParameterIndex(209),
    /* return_matcher_indices */ MatcherIndicesIndex(126),
    /* const_eval_fn */ ConstEvalFunctionIndex(104),
  },
  {
    /* [148] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(32),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(126),
    /* const_eval_fn */ ConstEvalFunctionIndex(106),
  },
  {
    /* [149] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(32),
    /* parameters */ ParameterIndex(205),
    /* return_matcher_indices */ MatcherIndicesIndex(126),
    /* const_eval_fn */ ConstEvalFunctionIndex(107),
  },
  {
    /* [150] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(44),
    /* parameters */ ParameterIndex(388),
    /* return_matcher_indices */ MatcherIndicesIndex(126),
    /* const_eval_fn */ ConstEvalFunctionIndex(105),
  },
  {
    /* [151] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(46),
    /* parameters */ ParameterIndex(388),
    /* return_matcher_indices */ MatcherIndicesIndex(126),
    /* const_eval_fn */ ConstEvalFunctionIndex(105),
  },
  {
    /* [152] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(48),
    /* parameters */ ParameterIndex(388),
    /* return_matcher_indices */ MatcherIndicesIndex(126),
    /* const_eval_fn */ ConstEvalFunctionIndex(105),
  },
  {
    /* [153] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(50),
    /* parameters */ ParameterIndex(388),
    /* return_matcher_indices */ MatcherIndicesIndex(126),
    /* const_eval_fn */ ConstEvalFunctionIndex(105),
  },
  {
    /* [154] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(52),
    /* parameters */ ParameterIndex(388),
    /* return_matcher_indices */ MatcherIndicesIndex(126),
    /* const_eval_fn */ ConstEvalFunctionIndex(105),
  },
  {
    /* [155] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 4,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(104),
    /* return_matcher_indices */ MatcherIndicesIndex(166),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [156] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 5,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(104),
    /* return_matcher_indices */ MatcherIndicesIndex(166),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [157] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 5,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(2),
    /* parameters */ ParameterIndex(38),
    /* return_matcher_indices */ MatcherIndicesIndex(166),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [158] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 6,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(2),
    /* parameters */ ParameterIndex(38),
    /* return_matcher_indices */ MatcherIndicesIndex(166),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [159] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 4,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(109),
    /* return_matcher_indices */ MatcherIndicesIndex(166),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [160] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 5,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(109),
    /* return_matcher_indices */ MatcherIndicesIndex(166),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [161] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 4,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(173),
    /* return_matcher_indices */ MatcherIndicesIndex(166),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [162] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 5,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(2),
    /* parameters */ ParameterIndex(114),
    /* return_matcher_indices */ MatcherIndicesIndex(166),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [163] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 5,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(44),
    /* return_matcher_indices */ MatcherIndicesIndex(166),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [164] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 6,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(44),
    /* return_matcher_indices */ MatcherIndicesIndex(166),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [165] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 6,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(2),
    /* parameters */ ParameterIndex(19),
    /* return_matcher_indices */ MatcherIndicesIndex(166),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [166] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 7,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(2),
    /* parameters */ ParameterIndex(19),
    /* return_matcher_indices */ MatcherIndicesIndex(166),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [167] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 5,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(50),
    /* return_matcher_indices */ MatcherIndicesIndex(166),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [168] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 6,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(50),
    /* return_matcher_indices */ MatcherIndicesIndex(166),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [169] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 5,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(119),
    /* return_matcher_indices */ MatcherIndicesIndex(166),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [170] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 6,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(2),
    /* parameters */ ParameterIndex(56),
    /* return_matcher_indices */ MatcherIndicesIndex(166),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [171] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 4,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(89),
    /* return_matcher_indices */ MatcherIndicesIndex(166),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [172] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 5,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(89),
    /* return_matcher_indices */ MatcherIndicesIndex(166),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [173] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 5,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(2),
    /* parameters */ ParameterIndex(32),
    /* return_matcher_indices */ MatcherIndicesIndex(166),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [174] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 6,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(2),
    /* parameters */ ParameterIndex(32),
    /* return_matcher_indices */ MatcherIndicesIndex(166),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [175] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 4,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(161),
    /* return_matcher_indices */ MatcherIndicesIndex(166),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [176] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 5,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(2),
    /* parameters */ ParameterIndex(94),
    /* return_matcher_indices */ MatcherIndicesIndex(166),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [177] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 4,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(89),
    /* return_matcher_indices */ MatcherIndicesIndex(49),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [178] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 5,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(89),
    /* return_matcher_indices */ MatcherIndicesIndex(49),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [179] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 5,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(2),
    /* parameters */ ParameterIndex(32),
    /* return_matcher_indices */ MatcherIndicesIndex(49),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [180] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 6,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(2),
    /* parameters */ ParameterIndex(32),
    /* return_matcher_indices */ MatcherIndicesIndex(49),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [181] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 4,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(161),
    /* return_matcher_indices */ MatcherIndicesIndex(49),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [182] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 5,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(2),
    /* parameters */ ParameterIndex(94),
    /* return_matcher_indices */ MatcherIndicesIndex(49),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [183] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 4,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(89),
    /* return_matcher_indices */ MatcherIndicesIndex(49),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [184] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 5,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(89),
    /* return_matcher_indices */ MatcherIndicesIndex(49),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [185] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 5,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(2),
    /* parameters */ ParameterIndex(32),
    /* return_matcher_indices */ MatcherIndicesIndex(49),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [186] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 6,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(2),
    /* parameters */ ParameterIndex(32),
    /* return_matcher_indices */ MatcherIndicesIndex(49),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [187] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 4,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(161),
    /* return_matcher_indices */ MatcherIndicesIndex(49),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [188] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 5,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(2),
    /* parameters */ ParameterIndex(94),
    /* return_matcher_indices */ MatcherIndicesIndex(49),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [189] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 0,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(/* invalid */),
    /* return_matcher_indices */ MatcherIndicesIndex(204),
    /* const_eval_fn */ ConstEvalFunctionIndex(103),
  },
  {
    /* [190] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(391),
    /* return_matcher_indices */ MatcherIndicesIndex(204),
    /* const_eval_fn */ ConstEvalFunctionIndex(104),
  },
  {
    /* [191] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 4,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(204),
    /* const_eval_fn */ ConstEvalFunctionIndex(109),
  },
  {
    /* [192] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(209),
    /* return_matcher_indices */ MatcherIndicesIndex(204),
    /* const_eval_fn */ ConstEvalFunctionIndex(110),
  },
  {
    /* [193] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(46),
    /* parameters */ ParameterIndex(392),
    /* return_matcher_indices */ MatcherIndicesIndex(204),
    /* const_eval_fn */ ConstEvalFunctionIndex(105),
  },
  {
    /* [194] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(44),
    /* parameters */ ParameterIndex(393),
    /* return_matcher_indices */ MatcherIndicesIndex(204),
    /* const_eval_fn */ ConstEvalFunctionIndex(105),
  },
  {
    /* [195] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 0,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(/* invalid */),
    /* return_matcher_indices */ MatcherIndicesIndex(210),
    /* const_eval_fn */ ConstEvalFunctionIndex(103),
  },
  {
    /* [196] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(394),
    /* return_matcher_indices */ MatcherIndicesIndex(210),
    /* const_eval_fn */ ConstEvalFunctionIndex(104),
  },
  {
    /* [197] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 6,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(210),
    /* const_eval_fn */ ConstEvalFunctionIndex(109),
  },
  {
    /* [198] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(213),
    /* return_matcher_indices */ MatcherIndicesIndex(210),
    /* const_eval_fn */ ConstEvalFunctionIndex(110),
  },
  {
    /* [199] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(46),
    /* parameters */ ParameterIndex(395),
    /* return_matcher_indices */ MatcherIndicesIndex(210),
    /* const_eval_fn */ ConstEvalFunctionIndex(105),
  },
  {
    /* [200] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(44),
    /* parameters */ ParameterIndex(396),
    /* return_matcher_indices */ MatcherIndicesIndex(210),
    /* const_eval_fn */ ConstEvalFunctionIndex(105),
  },
  {
    /* [201] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 0,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(/* invalid */),
    /* return_matcher_indices */ MatcherIndicesIndex(216),
    /* const_eval_fn */ ConstEvalFunctionIndex(103),
  },
  {
    /* [202] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(397),
    /* return_matcher_indices */ MatcherIndicesIndex(216),
    /* const_eval_fn */ ConstEvalFunctionIndex(104),
  },
  {
    /* [203] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 8,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(216),
    /* const_eval_fn */ ConstEvalFunctionIndex(109),
  },
  {
    /* [204] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(217),
    /* return_matcher_indices */ MatcherIndicesIndex(216),
    /* const_eval_fn */ ConstEvalFunctionIndex(110),
  },
  {
    /* [205] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(46),
    /* parameters */ ParameterIndex(398),
    /* return_matcher_indices */ MatcherIndicesIndex(216),
    /* const_eval_fn */ ConstEvalFunctionIndex(105),
  },
  {
    /* [206] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(44),
    /* parameters */ ParameterIndex(399),
    /* return_matcher_indices */ MatcherIndicesIndex(216),
    /* const_eval_fn */ ConstEvalFunctionIndex(105),
  },
  {
    /* [207] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 0,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(/* invalid */),
    /* return_matcher_indices */ MatcherIndicesIndex(222),
    /* const_eval_fn */ ConstEvalFunctionIndex(103),
  },
  {
    /* [208] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(400),
    /* return_matcher_indices */ MatcherIndicesIndex(222),
    /* const_eval_fn */ ConstEvalFunctionIndex(104),
  },
  {
    /* [209] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 6,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(222),
    /* const_eval_fn */ ConstEvalFunctionIndex(109),
  },
  {
    /* [210] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 3,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(209),
    /* return_matcher_indices */ MatcherIndicesIndex(222),
    /* const_eval_fn */ ConstEvalFunctionIndex(110),
  },
  {
    /* [211] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(46),
    /* parameters */ ParameterIndex(401),
    /* return_matcher_indices */ MatcherIndicesIndex(222),
    /* const_eval_fn */ ConstEvalFunctionIndex(105),
  },
  {
    /* [212] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(44),
    /* parameters */ ParameterIndex(402),
    /* return_matcher_indices */ MatcherIndicesIndex(222),
    /* const_eval_fn */ ConstEvalFunctionIndex(105),
  },
  {
    /* [213] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 0,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(/* invalid */),
    /* return_matcher_indices */ MatcherIndicesIndex(228),
    /* const_eval_fn */ ConstEvalFunctionIndex(103),
  },
  {
    /* [214] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(403),
    /* return_matcher_indices */ MatcherIndicesIndex(228),
    /* const_eval_fn */ ConstEvalFunctionIndex(104),
  },
  {
    /* [215] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 9,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(228),
    /* const_eval_fn */ ConstEvalFunctionIndex(109),
  },
  {
    /* [216] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 3,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(213),
    /* return_matcher_indices */ MatcherIndicesIndex(228),
    /* const_eval_fn */ ConstEvalFunctionIndex(110),
  },
  {
    /* [217] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(46),
    /* parameters */ ParameterIndex(404),
    /* return_matcher_indices */ MatcherIndicesIndex(228),
    /* const_eval_fn */ ConstEvalFunctionIndex(105),
  },
  {
    /* [218] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(44),
    /* parameters */ ParameterIndex(405),
    /* return_matcher_indices */ MatcherIndicesIndex(228),
    /* const_eval_fn */ ConstEvalFunctionIndex(105),
  },
  {
    /* [219] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 0,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(/* invalid */),
    /* return_matcher_indices */ MatcherIndicesIndex(234),
    /* const_eval_fn */ ConstEvalFunctionIndex(103),
  },
  {
    /* [220] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(406),
    /* return_matcher_indices */ MatcherIndicesIndex(234),
    /* const_eval_fn */ ConstEvalFunctionIndex(104),
  },
  {
    /* [221] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 12,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(234),
    /* const_eval_fn */ ConstEvalFunctionIndex(109),
  },
  {
    /* [222] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 3,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(217),
    /* return_matcher_indices */ MatcherIndicesIndex(234),
    /* const_eval_fn */ ConstEvalFunctionIndex(110),
  },
  {
    /* [223] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(46),
    /* parameters */ ParameterIndex(407),
    /* return_matcher_indices */ MatcherIndicesIndex(234),
    /* const_eval_fn */ ConstEvalFunctionIndex(105),
  },
  {
    /* [224] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(44),
    /* parameters */ ParameterIndex(408),
    /* return_matcher_indices */ MatcherIndicesIndex(234),
    /* const_eval_fn */ ConstEvalFunctionIndex(105),
  },
  {
    /* [225] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 0,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(/* invalid */),
    /* return_matcher_indices */ MatcherIndicesIndex(240),
    /* const_eval_fn */ ConstEvalFunctionIndex(103),
  },
  {
    /* [226] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(409),
    /* return_matcher_indices */ MatcherIndicesIndex(240),
    /* const_eval_fn */ ConstEvalFunctionIndex(104),
  },
  {
    /* [227] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 8,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(240),
    /* const_eval_fn */ ConstEvalFunctionIndex(109),
  },
  {
    /* [228] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 4,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(209),
    /* return_matcher_indices */ MatcherIndicesIndex(240),
    /* const_eval_fn */ ConstEvalFunctionIndex(110),
  },
  {
    /* [229] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(46),
    /* parameters */ ParameterIndex(410),
    /* return_matcher_indices */ MatcherIndicesIndex(240),
    /* const_eval_fn */ ConstEvalFunctionIndex(105),
  },
  {
    /* [230] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(44),
    /* parameters */ ParameterIndex(411),
    /* return_matcher_indices */ MatcherIndicesIndex(240),
    /* const_eval_fn */ ConstEvalFunctionIndex(105),
  },
  {
    /* [231] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 0,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(/* invalid */),
    /* return_matcher_indices */ MatcherIndicesIndex(246),
    /* const_eval_fn */ ConstEvalFunctionIndex(103),
  },
  {
    /* [232] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(412),
    /* return_matcher_indices */ MatcherIndicesIndex(246),
    /* const_eval_fn */ ConstEvalFunctionIndex(104),
  },
  {
    /* [233] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 12,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(246),
    /* const_eval_fn */ ConstEvalFunctionIndex(109),
  },
  {
    /* [234] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 4,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(213),
    /* return_matcher_indices */ MatcherIndicesIndex(246),
    /* const_eval_fn */ ConstEvalFunctionIndex(110),
  },
  {
    /* [235] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(46),
    /* parameters */ ParameterIndex(413),
    /* return_matcher_indices */ MatcherIndicesIndex(246),
    /* const_eval_fn */ ConstEvalFunctionIndex(105),
  },
  {
    /* [236] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(44),
    /* parameters */ ParameterIndex(414),
    /* return_matcher_indices */ MatcherIndicesIndex(246),
    /* const_eval_fn */ ConstEvalFunctionIndex(105),
  },
  {
    /* [237] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 0,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(/* invalid */),
    /* return_matcher_indices */ MatcherIndicesIndex(252),
    /* const_eval_fn */ ConstEvalFunctionIndex(103),
  },
  {
    /* [238] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(415),
    /* return_matcher_indices */ MatcherIndicesIndex(252),
    /* const_eval_fn */ ConstEvalFunctionIndex(104),
  },
  {
    /* [239] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 16,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(252),
    /* const_eval_fn */ ConstEvalFunctionIndex(109),
  },
  {
    /* [240] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 4,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(217),
    /* return_matcher_indices */ MatcherIndicesIndex(252),
    /* const_eval_fn */ ConstEvalFunctionIndex(110),
  },
  {
    /* [241] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(46),
    /* parameters */ ParameterIndex(416),
    /* return_matcher_indices */ MatcherIndicesIndex(252),
    /* const_eval_fn */ ConstEvalFunctionIndex(105),
  },
  {
    /* [242] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 1,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(44),
    /* parameters */ ParameterIndex(417),
    /* return_matcher_indices */ MatcherIndicesIndex(252),
    /* const_eval_fn */ ConstEvalFunctionIndex(105),
  },
  {
    /* [243] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(0),
    /* parameters */ ParameterIndex(27),
    /* return_matcher_indices */ MatcherIndicesIndex(78),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [244] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(0),
    /* parameters */ ParameterIndex(80),
    /* return_matcher_indices */ MatcherIndicesIndex(78),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [245] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(32),
    /* return_matcher_indices */ MatcherIndicesIndex(78),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [246] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(94),
    /* return_matcher_indices */ MatcherIndicesIndex(78),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [247] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(40),
    /* parameters */ ParameterIndex(384),
    /* return_matcher_indices */ MatcherIndicesIndex(78),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [248] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(26),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(82),
  },
  {
    /* [249] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(26),
    /* parameters */ ParameterIndex(221),
    /* return_matcher_indices */ MatcherIndicesIndex(44),
    /* const_eval_fn */ ConstEvalFunctionIndex(82),
  },
  {
    /* [250] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(26),
    /* parameters */ ParameterIndex(354),
    /* return_matcher_indices */ MatcherIndicesIndex(44),
    /* const_eval_fn */ ConstEvalFunctionIndex(82),
  },
  {
    /* [251] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(26),
    /* parameters */ ParameterIndex(355),
    /* return_matcher_indices */ MatcherIndicesIndex(44),
    /* const_eval_fn */ ConstEvalFunctionIndex(82),
  },
  {
    /* [252] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 3,
    /* templates */ TemplateIndex(13),
    /* parameters */ ParameterIndex(358),
    /* return_matcher_indices */ MatcherIndicesIndex(22),
    /* const_eval_fn */ ConstEvalFunctionIndex(82),
  },
  {
    /* [253] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(26),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(83),
  },
  {
    /* [254] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(26),
    /* parameters */ ParameterIndex(221),
    /* return_matcher_indices */ MatcherIndicesIndex(44),
    /* const_eval_fn */ ConstEvalFunctionIndex(83),
  },
  {
    /* [255] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(26),
    /* parameters */ ParameterIndex(354),
    /* return_matcher_indices */ MatcherIndicesIndex(44),
    /* const_eval_fn */ ConstEvalFunctionIndex(83),
  },
  {
    /* [256] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(26),
    /* parameters */ ParameterIndex(355),
    /* return_matcher_indices */ MatcherIndicesIndex(44),
    /* const_eval_fn */ ConstEvalFunctionIndex(83),
  },
  {
    /* [257] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 3,
    /* templates */ TemplateIndex(13),
    /* parameters */ ParameterIndex(358),
    /* return_matcher_indices */ MatcherIndicesIndex(22),
    /* const_eval_fn */ ConstEvalFunctionIndex(83),
  },
  {
    /* [258] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(26),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(88),
  },
  {
    /* [259] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(26),
    /* parameters */ ParameterIndex(221),
    /* return_matcher_indices */ MatcherIndicesIndex(44),
    /* const_eval_fn */ ConstEvalFunctionIndex(88),
  },
  {
    /* [260] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(26),
    /* parameters */ ParameterIndex(354),
    /* return_matcher_indices */ MatcherIndicesIndex(44),
    /* const_eval_fn */ ConstEvalFunctionIndex(88),
  },
  {
    /* [261] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(26),
    /* parameters */ ParameterIndex(355),
    /* return_matcher_indices */ MatcherIndicesIndex(44),
    /* const_eval_fn */ ConstEvalFunctionIndex(88),
  },
  {
    /* [262] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(26),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(89),
  },
  {
    /* [263] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(26),
    /* parameters */ ParameterIndex(221),
    /* return_matcher_indices */ MatcherIndicesIndex(44),
    /* const_eval_fn */ ConstEvalFunctionIndex(89),
  },
  {
    /* [264] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(26),
    /* parameters */ ParameterIndex(354),
    /* return_matcher_indices */ MatcherIndicesIndex(44),
    /* const_eval_fn */ ConstEvalFunctionIndex(89),
  },
  {
    /* [265] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(26),
    /* parameters */ ParameterIndex(355),
    /* return_matcher_indices */ MatcherIndicesIndex(44),
    /* const_eval_fn */ ConstEvalFunctionIndex(89),
  },
  {
    /* [266] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(224),
    /* return_matcher_indices */ MatcherIndicesIndex(43),
    /* const_eval_fn */ ConstEvalFunctionIndex(91),
  },
  {
    /* [267] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(8),
    /* parameters */ ParameterIndex(235),
    /* return_matcher_indices */ MatcherIndicesIndex(41),
    /* const_eval_fn */ ConstEvalFunctionIndex(91),
  },
  {
    /* [268] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(28),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(91),
  },
  {
    /* [269] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(42),
    /* parameters */ ParameterIndex(221),
    /* return_matcher_indices */ MatcherIndicesIndex(44),
    /* const_eval_fn */ ConstEvalFunctionIndex(91),
  },
  {
    /* [270] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(224),
    /* return_matcher_indices */ MatcherIndicesIndex(43),
    /* const_eval_fn */ ConstEvalFunctionIndex(92),
  },
  {
    /* [271] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(8),
    /* parameters */ ParameterIndex(235),
    /* return_matcher_indices */ MatcherIndicesIndex(41),
    /* const_eval_fn */ ConstEvalFunctionIndex(92),
  },
  {
    /* [272] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(28),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(92),
  },
  {
    /* [273] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(42),
    /* parameters */ ParameterIndex(221),
    /* return_matcher_indices */ MatcherIndicesIndex(44),
    /* const_eval_fn */ ConstEvalFunctionIndex(92),
  },
  {
    /* [274] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 3,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(40),
  },
  {
    /* [275] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 3,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(8),
    /* parameters */ ParameterIndex(226),
    /* return_matcher_indices */ MatcherIndicesIndex(38),
    /* const_eval_fn */ ConstEvalFunctionIndex(40),
  },
  {
    /* [276] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 3,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(8),
    /* parameters */ ParameterIndex(227),
    /* return_matcher_indices */ MatcherIndicesIndex(38),
    /* const_eval_fn */ ConstEvalFunctionIndex(40),
  },
  {
    /* [277] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 3,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(32),
    /* parameters */ ParameterIndex(230),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(60),
  },
  {
    /* [278] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 3,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(32),
    /* parameters */ ParameterIndex(222),
    /* return_matcher_indices */ MatcherIndicesIndex(44),
    /* const_eval_fn */ ConstEvalFunctionIndex(60),
  },
  {
    /* [279] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 3,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(33),
    /* parameters */ ParameterIndex(233),
    /* return_matcher_indices */ MatcherIndicesIndex(38),
    /* const_eval_fn */ ConstEvalFunctionIndex(61),
  },
  {
    /* [280] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 0,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(/* invalid */),
    /* return_matcher_indices */ MatcherIndicesIndex(86),
    /* const_eval_fn */ ConstEvalFunctionIndex(103),
  },
  {
    /* [281] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(386),
    /* return_matcher_indices */ MatcherIndicesIndex(86),
    /* const_eval_fn */ ConstEvalFunctionIndex(104),
  },
  {
    /* [282] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(54),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(86),
    /* const_eval_fn */ ConstEvalFunctionIndex(105),
  },
  {
    /* [283] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 0,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(/* invalid */),
    /* return_matcher_indices */ MatcherIndicesIndex(78),
    /* const_eval_fn */ ConstEvalFunctionIndex(103),
  },
  {
    /* [284] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(17),
    /* return_matcher_indices */ MatcherIndicesIndex(78),
    /* const_eval_fn */ ConstEvalFunctionIndex(104),
  },
  {
    /* [285] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(55),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(78),
    /* const_eval_fn */ ConstEvalFunctionIndex(105),
  },
  {
    /* [286] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 0,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(/* invalid */),
    /* return_matcher_indices */ MatcherIndicesIndex(49),
    /* const_eval_fn */ ConstEvalFunctionIndex(103),
  },
  {
    /* [287] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(375),
    /* return_matcher_indices */ MatcherIndicesIndex(49),
    /* const_eval_fn */ ConstEvalFunctionIndex(104),
  },
  {
    /* [288] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(56),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(49),
    /* const_eval_fn */ ConstEvalFunctionIndex(105),
  },
  {
    /* [289] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 0,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(/* invalid */),
    /* return_matcher_indices */ MatcherIndicesIndex(9),
    /* const_eval_fn */ ConstEvalFunctionIndex(103),
  },
  {
    /* [290] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(387),
    /* return_matcher_indices */ MatcherIndicesIndex(9),
    /* const_eval_fn */ ConstEvalFunctionIndex(104),
  },
  {
    /* [291] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(57),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(9),
    /* const_eval_fn */ ConstEvalFunctionIndex(105),
  },
  {
    /* [292] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 0,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(/* invalid */),
    /* return_matcher_indices */ MatcherIndicesIndex(43),
    /* const_eval_fn */ ConstEvalFunctionIndex(103),
  },
  {
    /* [293] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConstructor, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(224),
    /* return_matcher_indices */ MatcherIndicesIndex(43),
    /* const_eval_fn */ ConstEvalFunctionIndex(104),
  },
  {
    /* [294] */
    /* flags */ OverloadFlags(OverloadFlag::kIsConverter, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(58),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(43),
    /* const_eval_fn */ ConstEvalFunctionIndex(105),
  },
  {
    /* [295] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(26),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(0),
  },
  {
    /* [296] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(25),
    /* parameters */ ParameterIndex(149),
    /* return_matcher_indices */ MatcherIndicesIndex(38),
    /* const_eval_fn */ ConstEvalFunctionIndex(0),
  },
  {
    /* [297] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(1),
  },
  {
    /* [298] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(8),
    /* parameters */ ParameterIndex(149),
    /* return_matcher_indices */ MatcherIndicesIndex(38),
    /* const_eval_fn */ ConstEvalFunctionIndex(1),
  },
  {
    /* [299] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(2),
  },
  {
    /* [300] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(8),
    /* parameters */ ParameterIndex(149),
    /* return_matcher_indices */ MatcherIndicesIndex(38),
    /* const_eval_fn */ ConstEvalFunctionIndex(2),
  },
  {
    /* [301] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(224),
    /* return_matcher_indices */ MatcherIndicesIndex(43),
    /* const_eval_fn */ ConstEvalFunctionIndex(3),
  },
  {
    /* [302] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(8),
    /* parameters */ ParameterIndex(235),
    /* return_matcher_indices */ MatcherIndicesIndex(43),
    /* const_eval_fn */ ConstEvalFunctionIndex(3),
  },
  {
    /* [303] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(224),
    /* return_matcher_indices */ MatcherIndicesIndex(43),
    /* const_eval_fn */ ConstEvalFunctionIndex(4),
  },
  {
    /* [304] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(8),
    /* parameters */ ParameterIndex(235),
    /* return_matcher_indices */ MatcherIndicesIndex(43),
    /* const_eval_fn */ ConstEvalFunctionIndex(4),
  },
  {
    /* [305] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(5),
  },
  {
    /* [306] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(8),
    /* parameters */ ParameterIndex(149),
    /* return_matcher_indices */ MatcherIndicesIndex(38),
    /* const_eval_fn */ ConstEvalFunctionIndex(5),
  },
  {
    /* [307] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(6),
  },
  {
    /* [308] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(8),
    /* parameters */ ParameterIndex(149),
    /* return_matcher_indices */ MatcherIndicesIndex(38),
    /* const_eval_fn */ ConstEvalFunctionIndex(6),
  },
  {
    /* [309] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(7),
  },
  {
    /* [310] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(8),
    /* parameters */ ParameterIndex(149),
    /* return_matcher_indices */ MatcherIndicesIndex(38),
    /* const_eval_fn */ ConstEvalFunctionIndex(7),
  },
  {
    /* [311] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(8),
  },
  {
    /* [312] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(13),
    /* parameters */ ParameterIndex(221),
    /* return_matcher_indices */ MatcherIndicesIndex(44),
    /* const_eval_fn */ ConstEvalFunctionIndex(8),
  },
  {
    /* [313] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(9),
  },
  {
    /* [314] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(8),
    /* parameters */ ParameterIndex(149),
    /* return_matcher_indices */ MatcherIndicesIndex(38),
    /* const_eval_fn */ ConstEvalFunctionIndex(9),
  },
  {
    /* [315] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(10),
  },
  {
    /* [316] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(8),
    /* parameters */ ParameterIndex(149),
    /* return_matcher_indices */ MatcherIndicesIndex(38),
    /* const_eval_fn */ ConstEvalFunctionIndex(10),
  },
  {
    /* [317] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 3,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(26),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(11),
  },
  {
    /* [318] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 3,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(26),
    /* parameters */ ParameterIndex(221),
    /* return_matcher_indices */ MatcherIndicesIndex(44),
    /* const_eval_fn */ ConstEvalFunctionIndex(11),
  },
  {
    /* [319] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(12),
  },
  {
    /* [320] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(8),
    /* parameters */ ParameterIndex(149),
    /* return_matcher_indices */ MatcherIndicesIndex(38),
    /* const_eval_fn */ ConstEvalFunctionIndex(12),
  },
  {
    /* [321] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(13),
  },
  {
    /* [322] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(8),
    /* parameters */ ParameterIndex(149),
    /* return_matcher_indices */ MatcherIndicesIndex(38),
    /* const_eval_fn */ ConstEvalFunctionIndex(13),
  },
  {
    /* [323] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(28),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(14),
  },
  {
    /* [324] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(27),
    /* parameters */ ParameterIndex(149),
    /* return_matcher_indices */ MatcherIndicesIndex(38),
    /* const_eval_fn */ ConstEvalFunctionIndex(14),
  },
  {
    /* [325] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(28),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(15),
  },
  {
    /* [326] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(27),
    /* parameters */ ParameterIndex(149),
    /* return_matcher_indices */ MatcherIndicesIndex(38),
    /* const_eval_fn */ ConstEvalFunctionIndex(15),
  },
  {
    /* [327] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(28),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(16),
  },
  {
    /* [328] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(27),
    /* parameters */ ParameterIndex(149),
    /* return_matcher_indices */ MatcherIndicesIndex(38),
    /* const_eval_fn */ ConstEvalFunctionIndex(16),
  },
  {
    /* [329] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(18),
  },
  {
    /* [330] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(8),
    /* parameters */ ParameterIndex(149),
    /* return_matcher_indices */ MatcherIndicesIndex(38),
    /* const_eval_fn */ ConstEvalFunctionIndex(18),
  },
  {
    /* [331] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(20),
  },
  {
    /* [332] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(8),
    /* parameters */ ParameterIndex(149),
    /* return_matcher_indices */ MatcherIndicesIndex(4),
    /* const_eval_fn */ ConstEvalFunctionIndex(20),
  },
  {
    /* [333] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(375),
    /* return_matcher_indices */ MatcherIndicesIndex(49),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [334] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(8),
    /* parameters */ ParameterIndex(376),
    /* return_matcher_indices */ MatcherIndicesIndex(47),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [335] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(22),
  },
  {
    /* [336] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(8),
    /* parameters */ ParameterIndex(149),
    /* return_matcher_indices */ MatcherIndicesIndex(38),
    /* const_eval_fn */ ConstEvalFunctionIndex(22),
  },
  {
    /* [337] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(23),
  },
  {
    /* [338] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(8),
    /* parameters */ ParameterIndex(149),
    /* return_matcher_indices */ MatcherIndicesIndex(38),
    /* const_eval_fn */ ConstEvalFunctionIndex(23),
  },
  {
    /* [339] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 3,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(28),
    /* parameters */ ParameterIndex(16),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(24),
  },
  {
    /* [340] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 3,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(27),
    /* parameters */ ParameterIndex(150),
    /* return_matcher_indices */ MatcherIndicesIndex(38),
    /* const_eval_fn */ ConstEvalFunctionIndex(24),
  },
  {
    /* [341] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(28),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(26),
  },
  {
    /* [342] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(27),
    /* parameters */ ParameterIndex(149),
    /* return_matcher_indices */ MatcherIndicesIndex(38),
    /* const_eval_fn */ ConstEvalFunctionIndex(26),
  },
  {
    /* [343] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(28),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(27),
  },
  {
    /* [344] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(27),
    /* parameters */ ParameterIndex(149),
    /* return_matcher_indices */ MatcherIndicesIndex(38),
    /* const_eval_fn */ ConstEvalFunctionIndex(27),
  },
  {
    /* [345] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(28),
  },
  {
    /* [346] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(8),
    /* parameters */ ParameterIndex(149),
    /* return_matcher_indices */ MatcherIndicesIndex(38),
    /* const_eval_fn */ ConstEvalFunctionIndex(28),
  },
  {
    /* [347] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 3,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(29),
  },
  {
    /* [348] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 3,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(8),
    /* parameters */ ParameterIndex(226),
    /* return_matcher_indices */ MatcherIndicesIndex(38),
    /* const_eval_fn */ ConstEvalFunctionIndex(29),
  },
  {
    /* [349] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(30),
  },
  {
    /* [350] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(8),
    /* parameters */ ParameterIndex(149),
    /* return_matcher_indices */ MatcherIndicesIndex(38),
    /* const_eval_fn */ ConstEvalFunctionIndex(30),
  },
  {
    /* [351] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(162),
    /* const_eval_fn */ ConstEvalFunctionIndex(31),
  },
  {
    /* [352] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(8),
    /* parameters */ ParameterIndex(149),
    /* return_matcher_indices */ MatcherIndicesIndex(50),
    /* const_eval_fn */ ConstEvalFunctionIndex(31),
  },
  {
    /* [353] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 4,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(28),
    /* parameters */ ParameterIndex(15),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(32),
  },
  {
    /* [354] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 4,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(27),
    /* parameters */ ParameterIndex(149),
    /* return_matcher_indices */ MatcherIndicesIndex(38),
    /* const_eval_fn */ ConstEvalFunctionIndex(32),
  },
  {
    /* [355] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(33),
  },
  {
    /* [356] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(8),
    /* parameters */ ParameterIndex(149),
    /* return_matcher_indices */ MatcherIndicesIndex(38),
    /* const_eval_fn */ ConstEvalFunctionIndex(33),
  },
  {
    /* [357] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(9),
    /* parameters */ ParameterIndex(306),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(34),
  },
  {
    /* [358] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 3,
    /* templates */ TemplateIndex(8),
    /* parameters */ ParameterIndex(308),
    /* return_matcher_indices */ MatcherIndicesIndex(38),
    /* const_eval_fn */ ConstEvalFunctionIndex(34),
  },
  {
    /* [359] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(35),
  },
  {
    /* [360] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(8),
    /* parameters */ ParameterIndex(149),
    /* return_matcher_indices */ MatcherIndicesIndex(4),
    /* const_eval_fn */ ConstEvalFunctionIndex(35),
  },
  {
    /* [361] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(36),
  },
  {
    /* [362] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(8),
    /* parameters */ ParameterIndex(149),
    /* return_matcher_indices */ MatcherIndicesIndex(38),
    /* const_eval_fn */ ConstEvalFunctionIndex(36),
  },
  {
    /* [363] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(37),
  },
  {
    /* [364] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(8),
    /* parameters */ ParameterIndex(149),
    /* return_matcher_indices */ MatcherIndicesIndex(38),
    /* const_eval_fn */ ConstEvalFunctionIndex(37),
  },
  {
    /* [365] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(26),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(38),
  },
  {
    /* [366] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(25),
    /* parameters */ ParameterIndex(149),
    /* return_matcher_indices */ MatcherIndicesIndex(38),
    /* const_eval_fn */ ConstEvalFunctionIndex(38),
  },
  {
    /* [367] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(26),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(39),
  },
  {
    /* [368] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(25),
    /* parameters */ ParameterIndex(149),
    /* return_matcher_indices */ MatcherIndicesIndex(38),
    /* const_eval_fn */ ConstEvalFunctionIndex(39),
  },
  {
    /* [369] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(164),
    /* const_eval_fn */ ConstEvalFunctionIndex(41),
  },
  {
    /* [370] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(8),
    /* parameters */ ParameterIndex(149),
    /* return_matcher_indices */ MatcherIndicesIndex(56),
    /* const_eval_fn */ ConstEvalFunctionIndex(41),
  },
  {
    /* [371] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(52),
  },
  {
    /* [372] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(8),
    /* parameters */ ParameterIndex(149),
    /* return_matcher_indices */ MatcherIndicesIndex(38),
    /* const_eval_fn */ ConstEvalFunctionIndex(52),
  },
  {
    /* [373] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(375),
    /* return_matcher_indices */ MatcherIndicesIndex(49),
    /* const_eval_fn */ ConstEvalFunctionIndex(53),
  },
  {
    /* [374] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(8),
    /* parameters */ ParameterIndex(376),
    /* return_matcher_indices */ MatcherIndicesIndex(47),
    /* const_eval_fn */ ConstEvalFunctionIndex(53),
  },
  {
    /* [375] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(54),
  },
  {
    /* [376] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(8),
    /* parameters */ ParameterIndex(149),
    /* return_matcher_indices */ MatcherIndicesIndex(38),
    /* const_eval_fn */ ConstEvalFunctionIndex(54),
  },
  {
    /* [377] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(28),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(57),
  },
  {
    /* [378] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(27),
    /* parameters */ ParameterIndex(149),
    /* return_matcher_indices */ MatcherIndicesIndex(38),
    /* const_eval_fn */ ConstEvalFunctionIndex(57),
  },
  {
    /* [379] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(58),
  },
  {
    /* [380] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(8),
    /* parameters */ ParameterIndex(149),
    /* return_matcher_indices */ MatcherIndicesIndex(38),
    /* const_eval_fn */ ConstEvalFunctionIndex(58),
  },
  {
    /* [381] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(59),
  },
  {
    /* [382] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(13),
    /* parameters */ ParameterIndex(221),
    /* return_matcher_indices */ MatcherIndicesIndex(44),
    /* const_eval_fn */ ConstEvalFunctionIndex(59),
  },
  {
    /* [383] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(36),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(62),
  },
  {
    /* [384] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(35),
    /* parameters */ ParameterIndex(149),
    /* return_matcher_indices */ MatcherIndicesIndex(38),
    /* const_eval_fn */ ConstEvalFunctionIndex(62),
  },
  {
    /* [385] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(63),
  },
  {
    /* [386] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(8),
    /* parameters */ ParameterIndex(149),
    /* return_matcher_indices */ MatcherIndicesIndex(38),
    /* const_eval_fn */ ConstEvalFunctionIndex(63),
  },
  {
    /* [387] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(64),
  },
  {
    /* [388] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(8),
    /* parameters */ ParameterIndex(149),
    /* return_matcher_indices */ MatcherIndicesIndex(38),
    /* const_eval_fn */ ConstEvalFunctionIndex(64),
  },
  {
    /* [389] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 3,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(65),
  },
  {
    /* [390] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 3,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(8),
    /* parameters */ ParameterIndex(226),
    /* return_matcher_indices */ MatcherIndicesIndex(38),
    /* const_eval_fn */ ConstEvalFunctionIndex(65),
  },
  {
    /* [391] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(66),
  },
  {
    /* [392] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(8),
    /* parameters */ ParameterIndex(149),
    /* return_matcher_indices */ MatcherIndicesIndex(38),
    /* const_eval_fn */ ConstEvalFunctionIndex(66),
  },
  {
    /* [393] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(67),
  },
  {
    /* [394] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(8),
    /* parameters */ ParameterIndex(149),
    /* return_matcher_indices */ MatcherIndicesIndex(38),
    /* const_eval_fn */ ConstEvalFunctionIndex(67),
  },
  {
    /* [395] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(68),
  },
  {
    /* [396] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(8),
    /* parameters */ ParameterIndex(149),
    /* return_matcher_indices */ MatcherIndicesIndex(38),
    /* const_eval_fn */ ConstEvalFunctionIndex(68),
  },
  {
    /* [397] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(69),
  },
  {
    /* [398] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(8),
    /* parameters */ ParameterIndex(149),
    /* return_matcher_indices */ MatcherIndicesIndex(38),
    /* const_eval_fn */ ConstEvalFunctionIndex(69),
  },
  {
    /* [399] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(71),
  },
  {
    /* [400] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(8),
    /* parameters */ ParameterIndex(149),
    /* return_matcher_indices */ MatcherIndicesIndex(38),
    /* const_eval_fn */ ConstEvalFunctionIndex(71),
  },
  {
    /* [401] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(0),
    /* parameters */ ParameterIndex(279),
    /* return_matcher_indices */ MatcherIndicesIndex(78),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [402] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(285),
    /* return_matcher_indices */ MatcherIndicesIndex(78),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [403] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 3,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(44),
    /* return_matcher_indices */ MatcherIndicesIndex(166),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [404] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 3,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(240),
    /* return_matcher_indices */ MatcherIndicesIndex(166),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [405] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(26),
    /* parameters */ ParameterIndex(350),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [406] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(25),
    /* parameters */ ParameterIndex(352),
    /* return_matcher_indices */ MatcherIndicesIndex(38),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [407] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(224),
    /* return_matcher_indices */ MatcherIndicesIndex(43),
    /* const_eval_fn */ ConstEvalFunctionIndex(79),
  },
  {
    /* [408] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(8),
    /* parameters */ ParameterIndex(235),
    /* return_matcher_indices */ MatcherIndicesIndex(41),
    /* const_eval_fn */ ConstEvalFunctionIndex(79),
  },
  {
    /* [409] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(28),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(80),
  },
  {
    /* [410] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(42),
    /* parameters */ ParameterIndex(221),
    /* return_matcher_indices */ MatcherIndicesIndex(44),
    /* const_eval_fn */ ConstEvalFunctionIndex(80),
  },
  {
    /* [411] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(36),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(81),
  },
  {
    /* [412] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(36),
    /* parameters */ ParameterIndex(221),
    /* return_matcher_indices */ MatcherIndicesIndex(44),
    /* const_eval_fn */ ConstEvalFunctionIndex(81),
  },
  {
    /* [413] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(28),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(90),
  },
  {
    /* [414] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(42),
    /* parameters */ ParameterIndex(221),
    /* return_matcher_indices */ MatcherIndicesIndex(44),
    /* const_eval_fn */ ConstEvalFunctionIndex(90),
  },
  {
    /* [415] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(32),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(43),
    /* const_eval_fn */ ConstEvalFunctionIndex(95),
  },
  {
    /* [416] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(32),
    /* parameters */ ParameterIndex(221),
    /* return_matcher_indices */ MatcherIndicesIndex(156),
    /* const_eval_fn */ ConstEvalFunctionIndex(95),
  },
  {
    /* [417] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(32),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(43),
    /* const_eval_fn */ ConstEvalFunctionIndex(96),
  },
  {
    /* [418] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(32),
    /* parameters */ ParameterIndex(221),
    /* return_matcher_indices */ MatcherIndicesIndex(156),
    /* const_eval_fn */ ConstEvalFunctionIndex(96),
  },
  {
    /* [419] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(26),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(43),
    /* const_eval_fn */ ConstEvalFunctionIndex(97),
  },
  {
    /* [420] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(26),
    /* parameters */ ParameterIndex(221),
    /* return_matcher_indices */ MatcherIndicesIndex(156),
    /* const_eval_fn */ ConstEvalFunctionIndex(97),
  },
  {
    /* [421] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(26),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(43),
    /* const_eval_fn */ ConstEvalFunctionIndex(98),
  },
  {
    /* [422] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(26),
    /* parameters */ ParameterIndex(221),
    /* return_matcher_indices */ MatcherIndicesIndex(156),
    /* const_eval_fn */ ConstEvalFunctionIndex(98),
  },
  {
    /* [423] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(26),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(43),
    /* const_eval_fn */ ConstEvalFunctionIndex(99),
  },
  {
    /* [424] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(26),
    /* parameters */ ParameterIndex(221),
    /* return_matcher_indices */ MatcherIndicesIndex(156),
    /* const_eval_fn */ ConstEvalFunctionIndex(99),
  },
  {
    /* [425] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(26),
    /* parameters */ ParameterIndex(1),
    /* return_matcher_indices */ MatcherIndicesIndex(43),
    /* const_eval_fn */ ConstEvalFunctionIndex(100),
  },
  {
    /* [426] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(26),
    /* parameters */ ParameterIndex(221),
    /* return_matcher_indices */ MatcherIndicesIndex(156),
    /* const_eval_fn */ ConstEvalFunctionIndex(100),
  },
  {
    /* [427] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(28),
    /* parameters */ ParameterIndex(16),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(101),
  },
  {
    /* [428] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(42),
    /* parameters */ ParameterIndex(356),
    /* return_matcher_indices */ MatcherIndicesIndex(44),
    /* const_eval_fn */ ConstEvalFunctionIndex(101),
  },
  {
    /* [429] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(28),
    /* parameters */ ParameterIndex(16),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(102),
  },
  {
    /* [430] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(42),
    /* parameters */ ParameterIndex(356),
    /* return_matcher_indices */ MatcherIndicesIndex(44),
    /* const_eval_fn */ ConstEvalFunctionIndex(102),
  },
  {
    /* [431] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(30),
    /* parameters */ ParameterIndex(373),
    /* return_matcher_indices */ MatcherIndicesIndex(78),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [432] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 1,
    /* templates */ TemplateIndex(4),
    /* parameters */ ParameterIndex(213),
    /* return_matcher_indices */ MatcherIndicesIndex(73),
    /* const_eval_fn */ ConstEvalFunctionIndex(17),
  },
  {
    /* [433] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(8),
    /* parameters */ ParameterIndex(374),
    /* return_matcher_indices */ MatcherIndicesIndex(4),
    /* const_eval_fn */ ConstEvalFunctionIndex(19),
  },
  {
    /* [434] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(25),
    /* parameters */ ParameterIndex(149),
    /* return_matcher_indices */ MatcherIndicesIndex(4),
    /* const_eval_fn */ ConstEvalFunctionIndex(21),
  },
  {
    /* [435] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(17),
    /* return_matcher_indices */ MatcherIndicesIndex(86),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [436] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(17),
    /* return_matcher_indices */ MatcherIndicesIndex(78),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [437] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 3,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(8),
    /* parameters */ ParameterIndex(226),
    /* return_matcher_indices */ MatcherIndicesIndex(38),
    /* const_eval_fn */ ConstEvalFunctionIndex(25),
  },
  {
    /* [438] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(8),
    /* parameters */ ParameterIndex(149),
    /* return_matcher_indices */ MatcherIndicesIndex(38),
    /* const_eval_fn */ ConstEvalFunctionIndex(42),
  },
  {
    /* [439] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(377),
    /* return_matcher_indices */ MatcherIndicesIndex(78),
    /* const_eval_fn */ ConstEvalFunctionIndex(43),
  },
  {
    /* [440] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(377),
    /* return_matcher_indices */ MatcherIndicesIndex(78),
    /* const_eval_fn */ ConstEvalFunctionIndex(44),
  },
  {
    /* [441] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(377),
    /* return_matcher_indices */ MatcherIndicesIndex(78),
    /* const_eval_fn */ ConstEvalFunctionIndex(45),
  },
  {
    /* [442] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(378),
    /* return_matcher_indices */ MatcherIndicesIndex(78),
    /* const_eval_fn */ ConstEvalFunctionIndex(46),
  },
  {
    /* [443] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(378),
    /* return_matcher_indices */ MatcherIndicesIndex(78),
    /* const_eval_fn */ ConstEvalFunctionIndex(47),
  },
  {
    /* [444] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(379),
    /* return_matcher_indices */ MatcherIndicesIndex(78),
    /* const_eval_fn */ ConstEvalFunctionIndex(48),
  },
  {
    /* [445] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(380),
    /* return_matcher_indices */ MatcherIndicesIndex(78),
    /* const_eval_fn */ ConstEvalFunctionIndex(49),
  },
  {
    /* [446] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(379),
    /* return_matcher_indices */ MatcherIndicesIndex(78),
    /* const_eval_fn */ ConstEvalFunctionIndex(50),
  },
  {
    /* [447] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(380),
    /* return_matcher_indices */ MatcherIndicesIndex(78),
    /* const_eval_fn */ ConstEvalFunctionIndex(51),
  },
  {
    /* [448] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(8),
    /* parameters */ ParameterIndex(149),
    /* return_matcher_indices */ MatcherIndicesIndex(38),
    /* const_eval_fn */ ConstEvalFunctionIndex(55),
  },
  {
    /* [449] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 3,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(8),
    /* parameters */ ParameterIndex(227),
    /* return_matcher_indices */ MatcherIndicesIndex(38),
    /* const_eval_fn */ ConstEvalFunctionIndex(56),
  },
  {
    /* [450] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsComputePipeline),
    /* num_parameters */ 0,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(/* invalid */),
    /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [451] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 3,
    /* templates */ TemplateIndex(11),
    /* parameters */ ParameterIndex(381),
    /* return_matcher_indices */ MatcherIndicesIndex(14),
    /* const_eval_fn */ ConstEvalFunctionIndex(70),
  },
  {
    /* [452] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(17),
    /* return_matcher_indices */ MatcherIndicesIndex(114),
    /* const_eval_fn */ ConstEvalFunctionIndex(72),
  },
  {
    /* [453] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(17),
    /* return_matcher_indices */ MatcherIndicesIndex(114),
    /* const_eval_fn */ ConstEvalFunctionIndex(73),
  },
  {
    /* [454] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(17),
    /* return_matcher_indices */ MatcherIndicesIndex(114),
    /* const_eval_fn */ ConstEvalFunctionIndex(74),
  },
  {
    /* [455] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(17),
    /* return_matcher_indices */ MatcherIndicesIndex(166),
    /* const_eval_fn */ ConstEvalFunctionIndex(75),
  },
  {
    /* [456] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(17),
    /* return_matcher_indices */ MatcherIndicesIndex(166),
    /* const_eval_fn */ ConstEvalFunctionIndex(76),
  },
  {
    /* [457] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(17),
    /* return_matcher_indices */ MatcherIndicesIndex(168),
    /* const_eval_fn */ ConstEvalFunctionIndex(77),
  },
  {
    /* [458] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(17),
    /* return_matcher_indices */ MatcherIndicesIndex(170),
    /* const_eval_fn */ ConstEvalFunctionIndex(78),
  },
  {
    /* [459] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* num_parameters */ 1,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(28),
    /* parameters */ ParameterIndex(0),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [460] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(28),
    /* parameters */ ParameterIndex(0),
    /* return_matcher_indices */ MatcherIndicesIndex(/* invalid */),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [461] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(28),
    /* parameters */ ParameterIndex(0),
    /* return_matcher_indices */ MatcherIndicesIndex(3),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [462] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline),
    /* num_parameters */ 3,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 2,
    /* templates */ TemplateIndex(28),
    /* parameters */ ParameterIndex(0),
    /* return_matcher_indices */ MatcherIndicesIndex(200),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [463] */
    /* flags */ OverloadFlags(OverloadFlag::kIsBuiltin, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 0,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(/* invalid */),
    /* return_matcher_indices */ MatcherIndicesIndex(170),
    /* const_eval_fn */ ConstEvalFunctionIndex(/* invalid */),
  },
  {
    /* [464] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(224),
    /* return_matcher_indices */ MatcherIndicesIndex(43),
    /* const_eval_fn */ ConstEvalFunctionIndex(93),
  },
  {
    /* [465] */
    /* flags */ OverloadFlags(OverloadFlag::kIsOperator, OverloadFlag::kSupportsVertexPipeline, OverloadFlag::kSupportsFragmentPipeline, OverloadFlag::kSupportsComputePipeline, OverloadFlag::kMustUse),
    /* num_parameters */ 2,
    /* num_explicit_templates */ 0,
    /* num_templates   */ 0,
    /* templates */ TemplateIndex(/* invalid */),
    /* parameters */ ParameterIndex(224),
    /* return_matcher_indices */ MatcherIndicesIndex(43),
    /* const_eval_fn */ ConstEvalFunctionIndex(94),
  },
};

static_assert(OverloadIndex::CanIndex(kOverloads),
              "OverloadIndex is not large enough to index kOverloads");

constexpr IntrinsicInfo kBuiltins[] = {
  {
    /* [0] */
    /* fn abs[T : fiu32_f16](T) -> T */
    /* fn abs[N : num, T : fiu32_f16](vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(295),
  },
  {
    /* [1] */
    /* fn acos[T : f32_f16](@test_value(0.96891242171) T) -> T */
    /* fn acos[N : num, T : f32_f16](@test_value(0.96891242171) vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(297),
  },
  {
    /* [2] */
    /* fn acosh[T : f32_f16](@test_value(1.5430806348) T) -> T */
    /* fn acosh[N : num, T : f32_f16](@test_value(1.5430806348) vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(299),
  },
  {
    /* [3] */
    /* fn all(bool) -> bool */
    /* fn all[N : num](vec<N, bool>) -> bool */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(301),
  },
  {
    /* [4] */
    /* fn any(bool) -> bool */
    /* fn any[N : num](vec<N, bool>) -> bool */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(303),
  },
  {
    /* [5] */
    /* fn arrayLength[T, A : access](ptr<storage, array<T>, A>) -> u32 */
    /* num overloads */ 1,
    /* overloads */ OverloadIndex(431),
  },
  {
    /* [6] */
    /* fn asin[T : f32_f16](@test_value(0.479425538604) T) -> T */
    /* fn asin[N : num, T : f32_f16](@test_value(0.479425538604) vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(305),
  },
  {
    /* [7] */
    /* fn asinh[T : f32_f16](T) -> T */
    /* fn asinh[N : num, T : f32_f16](vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(307),
  },
  {
    /* [8] */
    /* fn atan[T : f32_f16](T) -> T */
    /* fn atan[N : num, T : f32_f16](vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(309),
  },
  {
    /* [9] */
    /* fn atan2[T : f32_f16](T, T) -> T */
    /* fn atan2[T : f32_f16, N : num](vec<N, T>, vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(311),
  },
  {
    /* [10] */
    /* fn atanh[T : f32_f16](@test_value(0.5) T) -> T */
    /* fn atanh[N : num, T : f32_f16](@test_value(0.5) vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(313),
  },
  {
    /* [11] */
    /* fn ceil[T : f32_f16](@test_value(1.5) T) -> T */
    /* fn ceil[N : num, T : f32_f16](@test_value(1.5) vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(315),
  },
  {
    /* [12] */
    /* fn clamp[T : fiu32_f16](T, T, T) -> T */
    /* fn clamp[T : fiu32_f16, N : num](vec<N, T>, vec<N, T>, vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(317),
  },
  {
    /* [13] */
    /* fn cos[T : f32_f16](@test_value(0) T) -> T */
    /* fn cos[N : num, T : f32_f16](@test_value(0) vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(319),
  },
  {
    /* [14] */
    /* fn cosh[T : f32_f16](@test_value(0) T) -> T */
    /* fn cosh[N : num, T : f32_f16](@test_value(0) vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(321),
  },
  {
    /* [15] */
    /* fn countLeadingZeros[T : iu32](T) -> T */
    /* fn countLeadingZeros[N : num, T : iu32](vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(323),
  },
  {
    /* [16] */
    /* fn countOneBits[T : iu32](T) -> T */
    /* fn countOneBits[N : num, T : iu32](vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(325),
  },
  {
    /* [17] */
    /* fn countTrailingZeros[T : iu32](T) -> T */
    /* fn countTrailingZeros[N : num, T : iu32](vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(327),
  },
  {
    /* [18] */
    /* fn cross[T : f32_f16](vec3<T>, vec3<T>) -> vec3<T> */
    /* num overloads */ 1,
    /* overloads */ OverloadIndex(432),
  },
  {
    /* [19] */
    /* fn degrees[T : f32_f16](T) -> T */
    /* fn degrees[N : num, T : f32_f16](vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(329),
  },
  {
    /* [20] */
    /* fn determinant[N : num, T : f32_f16](mat<N, N, T>) -> T */
    /* num overloads */ 1,
    /* overloads */ OverloadIndex(433),
  },
  {
    /* [21] */
    /* fn distance[T : f32_f16](T, T) -> T */
    /* fn distance[N : num, T : f32_f16](vec<N, T>, vec<N, T>) -> T */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(331),
  },
  {
    /* [22] */
    /* fn dot[N : num, T : fiu32_f16](vec<N, T>, vec<N, T>) -> T */
    /* num overloads */ 1,
    /* overloads */ OverloadIndex(434),
  },
  {
    /* [23] */
    /* fn dot4I8Packed(u32, u32) -> i32 */
    /* num overloads */ 1,
    /* overloads */ OverloadIndex(435),
  },
  {
    /* [24] */
    /* fn dot4U8Packed(u32, u32) -> u32 */
    /* num overloads */ 1,
    /* overloads */ OverloadIndex(436),
  },
  {
    /* [25] */
    /* fn dpdx(f32) -> f32 */
    /* fn dpdx[N : num](vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(333),
  },
  {
    /* [26] */
    /* fn dpdxCoarse(f32) -> f32 */
    /* fn dpdxCoarse[N : num](vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(333),
  },
  {
    /* [27] */
    /* fn dpdxFine(f32) -> f32 */
    /* fn dpdxFine[N : num](vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(333),
  },
  {
    /* [28] */
    /* fn dpdy(f32) -> f32 */
    /* fn dpdy[N : num](vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(333),
  },
  {
    /* [29] */
    /* fn dpdyCoarse(f32) -> f32 */
    /* fn dpdyCoarse[N : num](vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(333),
  },
  {
    /* [30] */
    /* fn dpdyFine(f32) -> f32 */
    /* fn dpdyFine[N : num](vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(333),
  },
  {
    /* [31] */
    /* fn exp[T : f32_f16](T) -> T */
    /* fn exp[N : num, T : f32_f16](vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(335),
  },
  {
    /* [32] */
    /* fn exp2[T : f32_f16](T) -> T */
    /* fn exp2[N : num, T : f32_f16](vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(337),
  },
  {
    /* [33] */
    /* fn extractBits[T : iu32](T, u32, u32) -> T */
    /* fn extractBits[N : num, T : iu32](vec<N, T>, u32, u32) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(339),
  },
  {
    /* [34] */
    /* fn faceForward[N : num, T : f32_f16](vec<N, T>, vec<N, T>, vec<N, T>) -> vec<N, T> */
    /* num overloads */ 1,
    /* overloads */ OverloadIndex(437),
  },
  {
    /* [35] */
    /* fn firstLeadingBit[T : iu32](T) -> T */
    /* fn firstLeadingBit[N : num, T : iu32](vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(341),
  },
  {
    /* [36] */
    /* fn firstTrailingBit[T : iu32](T) -> T */
    /* fn firstTrailingBit[N : num, T : iu32](vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(343),
  },
  {
    /* [37] */
    /* fn floor[T : f32_f16](@test_value(1.5) T) -> T */
    /* fn floor[N : num, T : f32_f16](@test_value(1.5) vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(345),
  },
  {
    /* [38] */
    /* fn fma[T : f32_f16](T, T, T) -> T */
    /* fn fma[N : num, T : f32_f16](vec<N, T>, vec<N, T>, vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(347),
  },
  {
    /* [39] */
    /* fn fract[T : f32_f16](@test_value(1.25) T) -> T */
    /* fn fract[N : num, T : f32_f16](@test_value(1.25) vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(349),
  },
  {
    /* [40] */
    /* fn frexp[T : f32_f16](T) -> __frexp_result<T> */
    /* fn frexp[N : num, T : f32_f16](vec<N, T>) -> __frexp_result_vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(351),
  },
  {
    /* [41] */
    /* fn fwidth(f32) -> f32 */
    /* fn fwidth[N : num](vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(333),
  },
  {
    /* [42] */
    /* fn fwidthCoarse(f32) -> f32 */
    /* fn fwidthCoarse[N : num](vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(333),
  },
  {
    /* [43] */
    /* fn fwidthFine(f32) -> f32 */
    /* fn fwidthFine[N : num](vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(333),
  },
  {
    /* [44] */
    /* fn insertBits[T : iu32](T, T, u32, u32) -> T */
    /* fn insertBits[N : num, T : iu32](vec<N, T>, vec<N, T>, u32, u32) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(353),
  },
  {
    /* [45] */
    /* fn inverseSqrt[T : f32_f16](T) -> T */
    /* fn inverseSqrt[N : num, T : f32_f16](vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(355),
  },
  {
    /* [46] */
    /* fn ldexp[T : f32_f16, U : i32](T, U) -> T */
    /* fn ldexp[N : num, T : f32_f16, U : i32](vec<N, T>, vec<N, U>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(357),
  },
  {
    /* [47] */
    /* fn length[T : f32_f16](@test_value(0) T) -> T */
    /* fn length[N : num, T : f32_f16](@test_value(0) vec<N, T>) -> T */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(359),
  },
  {
    /* [48] */
    /* fn log[T : f32_f16](T) -> T */
    /* fn log[N : num, T : f32_f16](vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(361),
  },
  {
    /* [49] */
    /* fn log2[T : f32_f16](T) -> T */
    /* fn log2[N : num, T : f32_f16](vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(363),
  },
  {
    /* [50] */
    /* fn max[T : fiu32_f16](T, T) -> T */
    /* fn max[N : num, T : fiu32_f16](vec<N, T>, vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(365),
  },
  {
    /* [51] */
    /* fn min[T : fiu32_f16](T, T) -> T */
    /* fn min[N : num, T : fiu32_f16](vec<N, T>, vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(367),
  },
  {
    /* [52] */
    /* fn mix[T : f32_f16](T, T, T) -> T */
    /* fn mix[N : num, T : f32_f16](vec<N, T>, vec<N, T>, vec<N, T>) -> vec<N, T> */
    /* fn mix[N : num, T : f32_f16](vec<N, T>, vec<N, T>, T) -> vec<N, T> */
    /* num overloads */ 3,
    /* overloads */ OverloadIndex(274),
  },
  {
    /* [53] */
    /* fn modf[T : f32_f16](@test_value(-1.5) T) -> __modf_result<T> */
    /* fn modf[N : num, T : f32_f16](@test_value(-1.5) vec<N, T>) -> __modf_result_vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(369),
  },
  {
    /* [54] */
    /* fn normalize[N : num, T : f32_f16](vec<N, T>) -> vec<N, T> */
    /* num overloads */ 1,
    /* overloads */ OverloadIndex(438),
  },
  {
    /* [55] */
    /* fn pack2x16float(vec2<f32>) -> u32 */
    /* num overloads */ 1,
    /* overloads */ OverloadIndex(439),
  },
  {
    /* [56] */
    /* fn pack2x16snorm(vec2<f32>) -> u32 */
    /* num overloads */ 1,
    /* overloads */ OverloadIndex(440),
  },
  {
    /* [57] */
    /* fn pack2x16unorm(vec2<f32>) -> u32 */
    /* num overloads */ 1,
    /* overloads */ OverloadIndex(441),
  },
  {
    /* [58] */
    /* fn pack4x8snorm(vec4<f32>) -> u32 */
    /* num overloads */ 1,
    /* overloads */ OverloadIndex(442),
  },
  {
    /* [59] */
    /* fn pack4x8unorm(vec4<f32>) -> u32 */
    /* num overloads */ 1,
    /* overloads */ OverloadIndex(443),
  },
  {
    /* [60] */
    /* fn pack4xI8(vec4<i32>) -> u32 */
    /* num overloads */ 1,
    /* overloads */ OverloadIndex(444),
  },
  {
    /* [61] */
    /* fn pack4xU8(vec4<u32>) -> u32 */
    /* num overloads */ 1,
    /* overloads */ OverloadIndex(445),
  },
  {
    /* [62] */
    /* fn pack4xI8Clamp(vec4<i32>) -> u32 */
    /* num overloads */ 1,
    /* overloads */ OverloadIndex(446),
  },
  {
    /* [63] */
    /* fn pack4xU8Clamp(vec4<u32>) -> u32 */
    /* num overloads */ 1,
    /* overloads */ OverloadIndex(447),
  },
  {
    /* [64] */
    /* fn pow[T : f32_f16](T, T) -> T */
    /* fn pow[N : num, T : f32_f16](vec<N, T>, vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(371),
  },
  {
    /* [65] */
    /* fn quantizeToF16(f32) -> f32 */
    /* fn quantizeToF16[N : num](vec<N, f32>) -> vec<N, f32> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(373),
  },
  {
    /* [66] */
    /* fn radians[T : f32_f16](T) -> T */
    /* fn radians[N : num, T : f32_f16](vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(375),
  },
  {
    /* [67] */
    /* fn reflect[N : num, T : f32_f16](vec<N, T>, vec<N, T>) -> vec<N, T> */
    /* num overloads */ 1,
    /* overloads */ OverloadIndex(448),
  },
  {
    /* [68] */
    /* fn refract[N : num, T : f32_f16](vec<N, T>, vec<N, T>, T) -> vec<N, T> */
    /* num overloads */ 1,
    /* overloads */ OverloadIndex(449),
  },
  {
    /* [69] */
    /* fn reverseBits[T : iu32](T) -> T */
    /* fn reverseBits[N : num, T : iu32](vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(377),
  },
  {
    /* [70] */
    /* fn round[T : f32_f16](@test_value(3.5) T) -> T */
    /* fn round[N : num, T : f32_f16](@test_value(3.5) vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(379),
  },
  {
    /* [71] */
    /* fn saturate[T : f32_f16](@test_value(2) T) -> T */
    /* fn saturate[T : f32_f16, N : num](@test_value(2) vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(381),
  },
  {
    /* [72] */
    /* 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 */ OverloadIndex(277),
  },
  {
    /* [73] */
    /* fn sign[T : fi32_f16](T) -> T */
    /* fn sign[N : num, T : fi32_f16](vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(383),
  },
  {
    /* [74] */
    /* fn sin[T : f32_f16](@test_value(1.57079632679) T) -> T */
    /* fn sin[N : num, T : f32_f16](@test_value(1.57079632679) vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(385),
  },
  {
    /* [75] */
    /* fn sinh[T : f32_f16](T) -> T */
    /* fn sinh[N : num, T : f32_f16](vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(387),
  },
  {
    /* [76] */
    /* fn smoothstep[T : f32_f16](@test_value(2) T, @test_value(4) T, @test_value(3) T) -> T */
    /* fn smoothstep[N : num, T : f32_f16](@test_value(2) vec<N, T>, @test_value(4) vec<N, T>, @test_value(3) vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(389),
  },
  {
    /* [77] */
    /* fn sqrt[T : f32_f16](T) -> T */
    /* fn sqrt[N : num, T : f32_f16](vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(391),
  },
  {
    /* [78] */
    /* fn step[T : f32_f16](T, T) -> T */
    /* fn step[N : num, T : f32_f16](vec<N, T>, vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(393),
  },
  {
    /* [79] */
    /* fn storageBarrier() */
    /* num overloads */ 1,
    /* overloads */ OverloadIndex(450),
  },
  {
    /* [80] */
    /* fn tan[T : f32_f16](T) -> T */
    /* fn tan[N : num, T : f32_f16](vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(395),
  },
  {
    /* [81] */
    /* fn tanh[T : f32_f16](T) -> T */
    /* fn tanh[N : num, T : f32_f16](vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(397),
  },
  {
    /* [82] */
    /* fn transpose[M : num, N : num, T : f32_f16](mat<M, N, T>) -> mat<N, M, T> */
    /* num overloads */ 1,
    /* overloads */ OverloadIndex(451),
  },
  {
    /* [83] */
    /* fn trunc[T : f32_f16](@test_value(1.5) T) -> T */
    /* fn trunc[N : num, T : f32_f16](@test_value(1.5) vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(399),
  },
  {
    /* [84] */
    /* fn unpack2x16float(u32) -> vec2<f32> */
    /* num overloads */ 1,
    /* overloads */ OverloadIndex(452),
  },
  {
    /* [85] */
    /* fn unpack2x16snorm(u32) -> vec2<f32> */
    /* num overloads */ 1,
    /* overloads */ OverloadIndex(453),
  },
  {
    /* [86] */
    /* fn unpack2x16unorm(u32) -> vec2<f32> */
    /* num overloads */ 1,
    /* overloads */ OverloadIndex(454),
  },
  {
    /* [87] */
    /* fn unpack4x8snorm(u32) -> vec4<f32> */
    /* num overloads */ 1,
    /* overloads */ OverloadIndex(455),
  },
  {
    /* [88] */
    /* fn unpack4x8unorm(u32) -> vec4<f32> */
    /* num overloads */ 1,
    /* overloads */ OverloadIndex(456),
  },
  {
    /* [89] */
    /* fn unpack4xI8(u32) -> vec4<i32> */
    /* num overloads */ 1,
    /* overloads */ OverloadIndex(457),
  },
  {
    /* [90] */
    /* fn unpack4xU8(u32) -> vec4<u32> */
    /* num overloads */ 1,
    /* overloads */ OverloadIndex(458),
  },
  {
    /* [91] */
    /* fn workgroupBarrier() */
    /* num overloads */ 1,
    /* overloads */ OverloadIndex(450),
  },
  {
    /* [92] */
    /* fn textureBarrier() */
    /* num overloads */ 1,
    /* overloads */ OverloadIndex(450),
  },
  {
    /* [93] */
    /* fn textureDimensions[T : fiu32](texture: texture_1d<T>) -> u32 */
    /* fn textureDimensions[T : fiu32, L : iu32](texture: texture_1d<T>, level: L) -> u32 */
    /* fn textureDimensions[T : fiu32](texture: texture_2d<T>) -> vec2<u32> */
    /* fn textureDimensions[T : fiu32, L : iu32](texture: texture_2d<T>, level: L) -> vec2<u32> */
    /* fn textureDimensions[T : fiu32](texture: texture_2d_array<T>) -> vec2<u32> */
    /* fn textureDimensions[T : fiu32, L : iu32](texture: texture_2d_array<T>, level: L) -> vec2<u32> */
    /* fn textureDimensions[T : fiu32](texture: texture_3d<T>) -> vec3<u32> */
    /* fn textureDimensions[T : fiu32, L : iu32](texture: texture_3d<T>, level: L) -> vec3<u32> */
    /* fn textureDimensions[T : fiu32](texture: texture_cube<T>) -> vec2<u32> */
    /* fn textureDimensions[T : fiu32, L : iu32](texture: texture_cube<T>, level: L) -> vec2<u32> */
    /* fn textureDimensions[T : fiu32](texture: texture_cube_array<T>) -> vec2<u32> */
    /* fn textureDimensions[T : fiu32, L : iu32](texture: texture_cube_array<T>, level: L) -> vec2<u32> */
    /* fn textureDimensions[T : fiu32](texture: texture_multisampled_2d<T>) -> vec2<u32> */
    /* fn textureDimensions(texture: texture_depth_2d) -> vec2<u32> */
    /* fn textureDimensions[L : iu32](texture: texture_depth_2d, level: L) -> vec2<u32> */
    /* fn textureDimensions(texture: texture_depth_2d_array) -> vec2<u32> */
    /* fn textureDimensions[L : iu32](texture: texture_depth_2d_array, level: L) -> vec2<u32> */
    /* fn textureDimensions(texture: texture_depth_cube) -> vec2<u32> */
    /* fn textureDimensions[L : iu32](texture: texture_depth_cube, level: L) -> vec2<u32> */
    /* fn textureDimensions(texture: texture_depth_cube_array) -> vec2<u32> */
    /* fn textureDimensions[L : iu32](texture: texture_depth_cube_array, level: L) -> vec2<u32> */
    /* fn textureDimensions(texture: texture_depth_multisampled_2d) -> vec2<u32> */
    /* fn textureDimensions[F : texel_format, A : access](texture: texture_storage_1d<F, A>) -> u32 */
    /* fn textureDimensions[F : texel_format, A : access](texture: texture_storage_2d<F, A>) -> vec2<u32> */
    /* fn textureDimensions[F : texel_format, A : access](texture: texture_storage_2d_array<F, A>) -> vec2<u32> */
    /* fn textureDimensions[F : texel_format, A : access](texture: texture_storage_3d<F, A>) -> vec3<u32> */
    /* fn textureDimensions(texture: texture_external) -> vec2<u32> */
    /* num overloads */ 27,
    /* overloads */ OverloadIndex(0),
  },
  {
    /* [94] */
    /* fn textureGather[T : fiu32, C : iu32](@const component: C, texture: texture_2d<T>, sampler: sampler, coords: vec2<f32>) -> vec4<T> */
    /* fn textureGather[T : fiu32, C : iu32](@const component: C, texture: texture_2d<T>, sampler: sampler, coords: vec2<f32>, @const offset: vec2<i32>) -> vec4<T> */
    /* fn textureGather[T : fiu32, C : iu32, A : iu32](@const component: C, texture: texture_2d_array<T>, sampler: sampler, coords: vec2<f32>, array_index: A) -> vec4<T> */
    /* fn textureGather[T : fiu32, C : iu32, A : iu32](@const component: C, texture: texture_2d_array<T>, sampler: sampler, coords: vec2<f32>, array_index: A, @const offset: vec2<i32>) -> vec4<T> */
    /* fn textureGather[T : fiu32, C : iu32](@const component: C, texture: texture_cube<T>, sampler: sampler, coords: vec3<f32>) -> vec4<T> */
    /* fn textureGather[T : fiu32, C : iu32, A : iu32](@const component: C, texture: texture_cube_array<T>, sampler: sampler, coords: vec3<f32>, array_index: A) -> vec4<T> */
    /* fn textureGather(texture: texture_depth_2d, sampler: sampler, coords: vec2<f32>) -> vec4<f32> */
    /* fn textureGather(texture: texture_depth_2d, sampler: sampler, coords: vec2<f32>, @const offset: vec2<i32>) -> vec4<f32> */
    /* fn textureGather[A : iu32](texture: texture_depth_2d_array, sampler: sampler, coords: vec2<f32>, array_index: A) -> vec4<f32> */
    /* fn textureGather[A : iu32](texture: texture_depth_2d_array, sampler: sampler, coords: vec2<f32>, array_index: A, @const offset: vec2<i32>) -> vec4<f32> */
    /* fn textureGather(texture: texture_depth_cube, sampler: sampler, coords: vec3<f32>) -> vec4<f32> */
    /* fn textureGather[A : iu32](texture: texture_depth_cube_array, sampler: sampler, coords: vec3<f32>, array_index: A) -> vec4<f32> */
    /* num overloads */ 12,
    /* overloads */ OverloadIndex(92),
  },
  {
    /* [95] */
    /* fn textureGatherCompare(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2<f32>, depth_ref: f32) -> vec4<f32> */
    /* fn textureGatherCompare(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2<f32>, depth_ref: f32, @const offset: vec2<i32>) -> vec4<f32> */
    /* fn textureGatherCompare[A : iu32](texture: texture_depth_2d_array, sampler: sampler_comparison, coords: vec2<f32>, array_index: A, depth_ref: f32) -> vec4<f32> */
    /* fn textureGatherCompare[A : iu32](texture: texture_depth_2d_array, sampler: sampler_comparison, coords: vec2<f32>, array_index: A, depth_ref: f32, @const offset: vec2<i32>) -> vec4<f32> */
    /* fn textureGatherCompare(texture: texture_depth_cube, sampler: sampler_comparison, coords: vec3<f32>, depth_ref: f32) -> vec4<f32> */
    /* fn textureGatherCompare[A : iu32](texture: texture_depth_cube_array, sampler: sampler_comparison, coords: vec3<f32>, array_index: A, depth_ref: f32) -> vec4<f32> */
    /* num overloads */ 6,
    /* overloads */ OverloadIndex(171),
  },
  {
    /* [96] */
    /* fn textureNumLayers[T : fiu32](texture: texture_2d_array<T>) -> u32 */
    /* fn textureNumLayers[T : fiu32](texture: texture_cube_array<T>) -> u32 */
    /* fn textureNumLayers(texture: texture_depth_2d_array) -> u32 */
    /* fn textureNumLayers(texture: texture_depth_cube_array) -> u32 */
    /* fn textureNumLayers[F : texel_format, A : access](texture: texture_storage_2d_array<F, A>) -> u32 */
    /* num overloads */ 5,
    /* overloads */ OverloadIndex(243),
  },
  {
    /* [97] */
    /* fn textureNumLevels[T : fiu32](texture: texture_1d<T>) -> u32 */
    /* fn textureNumLevels[T : fiu32](texture: texture_2d<T>) -> u32 */
    /* fn textureNumLevels[T : fiu32](texture: texture_2d_array<T>) -> u32 */
    /* fn textureNumLevels[T : fiu32](texture: texture_3d<T>) -> u32 */
    /* fn textureNumLevels[T : fiu32](texture: texture_cube<T>) -> u32 */
    /* fn textureNumLevels[T : fiu32](texture: texture_cube_array<T>) -> u32 */
    /* fn textureNumLevels(texture: texture_depth_2d) -> u32 */
    /* fn textureNumLevels(texture: texture_depth_2d_array) -> u32 */
    /* fn textureNumLevels(texture: texture_depth_cube) -> u32 */
    /* fn textureNumLevels(texture: texture_depth_cube_array) -> u32 */
    /* num overloads */ 10,
    /* overloads */ OverloadIndex(127),
  },
  {
    /* [98] */
    /* fn textureNumSamples[T : fiu32](texture: texture_multisampled_2d<T>) -> u32 */
    /* fn textureNumSamples(texture: texture_depth_multisampled_2d) -> u32 */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(401),
  },
  {
    /* [99] */
    /* fn textureSample(texture: texture_1d<f32>, sampler: sampler, coords: f32) -> vec4<f32> */
    /* fn textureSample(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>) -> vec4<f32> */
    /* fn textureSample(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, @const offset: vec2<i32>) -> vec4<f32> */
    /* fn textureSample[A : iu32](texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: A) -> vec4<f32> */
    /* fn textureSample[A : iu32](texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: A, @const offset: vec2<i32>) -> vec4<f32> */
    /* fn textureSample(texture: texture_3d<f32>, sampler: sampler, coords: vec3<f32>) -> vec4<f32> */
    /* fn textureSample(texture: texture_3d<f32>, sampler: sampler, coords: vec3<f32>, @const offset: vec3<i32>) -> vec4<f32> */
    /* fn textureSample(texture: texture_cube<f32>, sampler: sampler, coords: vec3<f32>) -> vec4<f32> */
    /* fn textureSample[A : iu32](texture: texture_cube_array<f32>, sampler: sampler, coords: vec3<f32>, array_index: A) -> vec4<f32> */
    /* fn textureSample(texture: texture_depth_2d, sampler: sampler, coords: vec2<f32>) -> f32 */
    /* fn textureSample(texture: texture_depth_2d, sampler: sampler, coords: vec2<f32>, @const offset: vec2<i32>) -> f32 */
    /* fn textureSample[A : iu32](texture: texture_depth_2d_array, sampler: sampler, coords: vec2<f32>, array_index: A) -> f32 */
    /* fn textureSample[A : iu32](texture: texture_depth_2d_array, sampler: sampler, coords: vec2<f32>, array_index: A, @const offset: vec2<i32>) -> f32 */
    /* fn textureSample(texture: texture_depth_cube, sampler: sampler, coords: vec3<f32>) -> f32 */
    /* fn textureSample[A : iu32](texture: texture_depth_cube_array, sampler: sampler, coords: vec3<f32>, array_index: A) -> f32 */
    /* num overloads */ 15,
    /* overloads */ OverloadIndex(48),
  },
  {
    /* [100] */
    /* fn textureSampleBias(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, bias: f32) -> vec4<f32> */
    /* fn textureSampleBias(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, bias: f32, @const offset: vec2<i32>) -> vec4<f32> */
    /* fn textureSampleBias[A : iu32](texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: A, bias: f32) -> vec4<f32> */
    /* fn textureSampleBias[A : iu32](texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: A, bias: f32, @const offset: vec2<i32>) -> vec4<f32> */
    /* fn textureSampleBias(texture: texture_3d<f32>, sampler: sampler, coords: vec3<f32>, bias: f32) -> vec4<f32> */
    /* fn textureSampleBias(texture: texture_3d<f32>, sampler: sampler, coords: vec3<f32>, bias: f32, @const offset: vec3<i32>) -> vec4<f32> */
    /* fn textureSampleBias(texture: texture_cube<f32>, sampler: sampler, coords: vec3<f32>, bias: f32) -> vec4<f32> */
    /* fn textureSampleBias[A : iu32](texture: texture_cube_array<f32>, sampler: sampler, coords: vec3<f32>, array_index: A, bias: f32) -> vec4<f32> */
    /* num overloads */ 8,
    /* overloads */ OverloadIndex(155),
  },
  {
    /* [101] */
    /* fn textureSampleCompare(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2<f32>, depth_ref: f32) -> f32 */
    /* fn textureSampleCompare(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2<f32>, depth_ref: f32, @const offset: vec2<i32>) -> f32 */
    /* fn textureSampleCompare[A : iu32](texture: texture_depth_2d_array, sampler: sampler_comparison, coords: vec2<f32>, array_index: A, depth_ref: f32) -> f32 */
    /* fn textureSampleCompare[A : iu32](texture: texture_depth_2d_array, sampler: sampler_comparison, coords: vec2<f32>, array_index: A, depth_ref: f32, @const offset: vec2<i32>) -> f32 */
    /* fn textureSampleCompare(texture: texture_depth_cube, sampler: sampler_comparison, coords: vec3<f32>, depth_ref: f32) -> f32 */
    /* fn textureSampleCompare[A : iu32](texture: texture_depth_cube_array, sampler: sampler_comparison, coords: vec3<f32>, array_index: A, depth_ref: f32) -> f32 */
    /* num overloads */ 6,
    /* overloads */ OverloadIndex(177),
  },
  {
    /* [102] */
    /* fn textureSampleCompareLevel(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2<f32>, depth_ref: f32) -> f32 */
    /* fn textureSampleCompareLevel(texture: texture_depth_2d, sampler: sampler_comparison, coords: vec2<f32>, depth_ref: f32, @const offset: vec2<i32>) -> f32 */
    /* fn textureSampleCompareLevel[A : iu32](texture: texture_depth_2d_array, sampler: sampler_comparison, coords: vec2<f32>, array_index: A, depth_ref: f32) -> f32 */
    /* fn textureSampleCompareLevel[A : iu32](texture: texture_depth_2d_array, sampler: sampler_comparison, coords: vec2<f32>, array_index: A, depth_ref: f32, @const offset: vec2<i32>) -> f32 */
    /* fn textureSampleCompareLevel(texture: texture_depth_cube, sampler: sampler_comparison, coords: vec3<f32>, depth_ref: f32) -> f32 */
    /* fn textureSampleCompareLevel[A : iu32](texture: texture_depth_cube_array, sampler: sampler_comparison, coords: vec3<f32>, array_index: A, depth_ref: f32) -> f32 */
    /* num overloads */ 6,
    /* overloads */ OverloadIndex(183),
  },
  {
    /* [103] */
    /* fn textureSampleGrad(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, ddx: vec2<f32>, ddy: vec2<f32>) -> vec4<f32> */
    /* fn textureSampleGrad(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, ddx: vec2<f32>, ddy: vec2<f32>, @const offset: vec2<i32>) -> vec4<f32> */
    /* fn textureSampleGrad[A : iu32](texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: A, ddx: vec2<f32>, ddy: vec2<f32>) -> vec4<f32> */
    /* fn textureSampleGrad[A : iu32](texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: A, ddx: vec2<f32>, ddy: vec2<f32>, @const offset: vec2<i32>) -> vec4<f32> */
    /* fn textureSampleGrad(texture: texture_3d<f32>, sampler: sampler, coords: vec3<f32>, ddx: vec3<f32>, ddy: vec3<f32>) -> vec4<f32> */
    /* fn textureSampleGrad(texture: texture_3d<f32>, sampler: sampler, coords: vec3<f32>, ddx: vec3<f32>, ddy: vec3<f32>, @const offset: vec3<i32>) -> vec4<f32> */
    /* fn textureSampleGrad(texture: texture_cube<f32>, sampler: sampler, coords: vec3<f32>, ddx: vec3<f32>, ddy: vec3<f32>) -> vec4<f32> */
    /* fn textureSampleGrad[A : iu32](texture: texture_cube_array<f32>, sampler: sampler, coords: vec3<f32>, array_index: A, ddx: vec3<f32>, ddy: vec3<f32>) -> vec4<f32> */
    /* num overloads */ 8,
    /* overloads */ OverloadIndex(163),
  },
  {
    /* [104] */
    /* fn textureSampleLevel(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, level: f32) -> vec4<f32> */
    /* fn textureSampleLevel(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>, level: f32, @const offset: vec2<i32>) -> vec4<f32> */
    /* fn textureSampleLevel[A : iu32](texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: A, level: f32) -> vec4<f32> */
    /* fn textureSampleLevel[A : iu32](texture: texture_2d_array<f32>, sampler: sampler, coords: vec2<f32>, array_index: A, level: f32, @const offset: vec2<i32>) -> vec4<f32> */
    /* fn textureSampleLevel(texture: texture_3d<f32>, sampler: sampler, coords: vec3<f32>, level: f32) -> vec4<f32> */
    /* fn textureSampleLevel(texture: texture_3d<f32>, sampler: sampler, coords: vec3<f32>, level: f32, @const offset: vec3<i32>) -> vec4<f32> */
    /* fn textureSampleLevel(texture: texture_cube<f32>, sampler: sampler, coords: vec3<f32>, level: f32) -> vec4<f32> */
    /* fn textureSampleLevel[A : iu32](texture: texture_cube_array<f32>, sampler: sampler, coords: vec3<f32>, array_index: A, level: f32) -> vec4<f32> */
    /* fn textureSampleLevel[L : iu32](texture: texture_depth_2d, sampler: sampler, coords: vec2<f32>, level: L) -> f32 */
    /* fn textureSampleLevel[L : iu32](texture: texture_depth_2d, sampler: sampler, coords: vec2<f32>, level: L, @const offset: vec2<i32>) -> f32 */
    /* fn textureSampleLevel[A : iu32, L : iu32](texture: texture_depth_2d_array, sampler: sampler, coords: vec2<f32>, array_index: A, level: L) -> f32 */
    /* fn textureSampleLevel[A : iu32, L : iu32](texture: texture_depth_2d_array, sampler: sampler, coords: vec2<f32>, array_index: A, level: L, @const offset: vec2<i32>) -> f32 */
    /* fn textureSampleLevel[L : iu32](texture: texture_depth_cube, sampler: sampler, coords: vec3<f32>, level: L) -> f32 */
    /* fn textureSampleLevel[A : iu32, L : iu32](texture: texture_depth_cube_array, sampler: sampler, coords: vec3<f32>, array_index: A, level: L) -> f32 */
    /* num overloads */ 14,
    /* overloads */ OverloadIndex(78),
  },
  {
    /* [105] */
    /* fn textureSampleBaseClampToEdge(texture: texture_2d<f32>, sampler: sampler, coords: vec2<f32>) -> vec4<f32> */
    /* fn textureSampleBaseClampToEdge(texture: texture_external, sampler: sampler, coords: vec2<f32>) -> vec4<f32> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(403),
  },
  {
    /* [106] */
    /* fn textureStore[C : iu32](texture: texture_storage_1d<f32_texel_format, writable>, coords: C, value: vec4<f32>) */
    /* fn textureStore[C : iu32](texture: texture_storage_2d<f32_texel_format, writable>, coords: vec2<C>, value: vec4<f32>) */
    /* fn textureStore[C : iu32, A : iu32](texture: texture_storage_2d_array<f32_texel_format, writable>, coords: vec2<C>, array_index: A, value: vec4<f32>) */
    /* fn textureStore[C : iu32](texture: texture_storage_3d<f32_texel_format, writable>, coords: vec3<C>, value: vec4<f32>) */
    /* fn textureStore[C : iu32](texture: texture_storage_1d<i32_texel_format, writable>, coords: C, value: vec4<i32>) */
    /* fn textureStore[C : iu32](texture: texture_storage_2d<i32_texel_format, writable>, coords: vec2<C>, value: vec4<i32>) */
    /* fn textureStore[C : iu32, A : iu32](texture: texture_storage_2d_array<i32_texel_format, writable>, coords: vec2<C>, array_index: A, value: vec4<i32>) */
    /* fn textureStore[C : iu32](texture: texture_storage_3d<i32_texel_format, writable>, coords: vec3<C>, value: vec4<i32>) */
    /* fn textureStore[C : iu32](texture: texture_storage_1d<u32_texel_format, writable>, coords: C, value: vec4<u32>) */
    /* fn textureStore[C : iu32](texture: texture_storage_2d<u32_texel_format, writable>, coords: vec2<C>, value: vec4<u32>) */
    /* fn textureStore[C : iu32, A : iu32](texture: texture_storage_2d_array<u32_texel_format, writable>, coords: vec2<C>, array_index: A, value: vec4<u32>) */
    /* fn textureStore[C : iu32](texture: texture_storage_3d<u32_texel_format, writable>, coords: vec3<C>, value: vec4<u32>) */
    /* num overloads */ 12,
    /* overloads */ OverloadIndex(104),
  },
  {
    /* [107] */
    /* fn textureLoad[T : fiu32, C : iu32, L : iu32](texture: texture_1d<T>, coords: C, level: L) -> vec4<T> */
    /* fn textureLoad[T : fiu32, C : iu32, L : iu32](texture: texture_2d<T>, coords: vec2<C>, level: L) -> vec4<T> */
    /* fn textureLoad[T : fiu32, C : iu32, A : iu32, L : iu32](texture: texture_2d_array<T>, coords: vec2<C>, array_index: A, level: L) -> vec4<T> */
    /* fn textureLoad[T : fiu32, C : iu32, L : iu32](texture: texture_3d<T>, coords: vec3<C>, level: L) -> vec4<T> */
    /* fn textureLoad[T : fiu32, C : iu32, S : iu32](texture: texture_multisampled_2d<T>, coords: vec2<C>, sample_index: S) -> vec4<T> */
    /* fn textureLoad[C : iu32, L : iu32](texture: texture_depth_2d, coords: vec2<C>, level: L) -> f32 */
    /* fn textureLoad[C : iu32, A : iu32, L : iu32](texture: texture_depth_2d_array, coords: vec2<C>, array_index: A, level: L) -> f32 */
    /* fn textureLoad[C : iu32, S : iu32](texture: texture_depth_multisampled_2d, coords: vec2<C>, sample_index: S) -> f32 */
    /* fn textureLoad[C : iu32](texture: texture_external, coords: vec2<C>) -> vec4<f32> */
    /* fn textureLoad[C : iu32](texture: texture_storage_1d<f32_texel_format, readable>, coords: C) -> vec4<f32> */
    /* fn textureLoad[C : iu32](texture: texture_storage_1d<i32_texel_format, readable>, coords: C) -> vec4<i32> */
    /* fn textureLoad[C : iu32](texture: texture_storage_1d<u32_texel_format, readable>, coords: C) -> vec4<u32> */
    /* fn textureLoad[C : iu32](texture: texture_storage_2d<f32_texel_format, readable>, coords: vec2<C>) -> vec4<f32> */
    /* fn textureLoad[C : iu32](texture: texture_storage_2d<i32_texel_format, readable>, coords: vec2<C>) -> vec4<i32> */
    /* fn textureLoad[C : iu32](texture: texture_storage_2d<u32_texel_format, readable>, coords: vec2<C>) -> vec4<u32> */
    /* fn textureLoad[C : iu32, A : iu32](texture: texture_storage_2d_array<f32_texel_format, readable>, coords: vec2<C>, array_index: A) -> vec4<f32> */
    /* fn textureLoad[C : iu32, A : iu32](texture: texture_storage_2d_array<i32_texel_format, readable>, coords: vec2<C>, array_index: A) -> vec4<i32> */
    /* fn textureLoad[C : iu32, A : iu32](texture: texture_storage_2d_array<u32_texel_format, readable>, coords: vec2<C>, array_index: A) -> vec4<u32> */
    /* fn textureLoad[C : iu32](texture: texture_storage_3d<f32_texel_format, readable>, coords: vec3<C>) -> vec4<f32> */
    /* fn textureLoad[C : iu32](texture: texture_storage_3d<i32_texel_format, readable>, coords: vec3<C>) -> vec4<i32> */
    /* fn textureLoad[C : iu32](texture: texture_storage_3d<u32_texel_format, readable>, coords: vec3<C>) -> vec4<u32> */
    /* num overloads */ 21,
    /* overloads */ OverloadIndex(27),
  },
  {
    /* [108] */
    /* fn atomicLoad[T : iu32, S : workgroup_or_storage](ptr<S, atomic<T>, read_write>) -> T */
    /* num overloads */ 1,
    /* overloads */ OverloadIndex(459),
  },
  {
    /* [109] */
    /* fn atomicStore[T : iu32, S : workgroup_or_storage](ptr<S, atomic<T>, read_write>, T) */
    /* num overloads */ 1,
    /* overloads */ OverloadIndex(460),
  },
  {
    /* [110] */
    /* fn atomicAdd[T : iu32, S : workgroup_or_storage](ptr<S, atomic<T>, read_write>, T) -> T */
    /* num overloads */ 1,
    /* overloads */ OverloadIndex(461),
  },
  {
    /* [111] */
    /* fn atomicSub[T : iu32, S : workgroup_or_storage](ptr<S, atomic<T>, read_write>, T) -> T */
    /* num overloads */ 1,
    /* overloads */ OverloadIndex(461),
  },
  {
    /* [112] */
    /* fn atomicMax[T : iu32, S : workgroup_or_storage](ptr<S, atomic<T>, read_write>, T) -> T */
    /* num overloads */ 1,
    /* overloads */ OverloadIndex(461),
  },
  {
    /* [113] */
    /* fn atomicMin[T : iu32, S : workgroup_or_storage](ptr<S, atomic<T>, read_write>, T) -> T */
    /* num overloads */ 1,
    /* overloads */ OverloadIndex(461),
  },
  {
    /* [114] */
    /* fn atomicAnd[T : iu32, S : workgroup_or_storage](ptr<S, atomic<T>, read_write>, T) -> T */
    /* num overloads */ 1,
    /* overloads */ OverloadIndex(461),
  },
  {
    /* [115] */
    /* fn atomicOr[T : iu32, S : workgroup_or_storage](ptr<S, atomic<T>, read_write>, T) -> T */
    /* num overloads */ 1,
    /* overloads */ OverloadIndex(461),
  },
  {
    /* [116] */
    /* fn atomicXor[T : iu32, S : workgroup_or_storage](ptr<S, atomic<T>, read_write>, T) -> T */
    /* num overloads */ 1,
    /* overloads */ OverloadIndex(461),
  },
  {
    /* [117] */
    /* fn atomicExchange[T : iu32, S : workgroup_or_storage](ptr<S, atomic<T>, read_write>, T) -> T */
    /* num overloads */ 1,
    /* overloads */ OverloadIndex(461),
  },
  {
    /* [118] */
    /* fn atomicCompareExchangeWeak[T : iu32, S : workgroup_or_storage](ptr<S, atomic<T>, read_write>, T, T) -> __atomic_compare_exchange_result<T> */
    /* num overloads */ 1,
    /* overloads */ OverloadIndex(462),
  },
  {
    /* [119] */
    /* fn subgroupBallot() -> vec4<u32> */
    /* num overloads */ 1,
    /* overloads */ OverloadIndex(463),
  },
  {
    /* [120] */
    /* fn subgroupBroadcast[T : fiu32_f16](value: T, @const sourceLaneIndex: u32) -> T */
    /* fn subgroupBroadcast[N : num, T : fiu32_f16](value: vec<N, T>, @const sourceLaneIndex: u32) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(405),
  },
};

constexpr IntrinsicInfo kUnaryOperators[] = {
  {
    /* [0] */
    /* op !(bool) -> bool */
    /* op ![N : num](vec<N, bool>) -> vec<N, bool> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(407),
  },
  {
    /* [1] */
    /* op ~[T : iu32](T) -> T */
    /* op ~[T : iu32, N : num](vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(409),
  },
  {
    /* [2] */
    /* op -[T : fi32_f16](T) -> T */
    /* op -[T : fi32_f16, N : num](vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(411),
  },
};
constexpr uint8_t kUnaryOperatorNot = 0;
constexpr uint8_t kUnaryOperatorComplement = 1;
constexpr uint8_t kUnaryOperatorMinus = 2;

constexpr IntrinsicInfo kBinaryOperators[] = {
  {
    /* [0] */
    /* op +[T : fiu32_f16](T, T) -> T */
    /* op +[T : fiu32_f16, N : num](vec<N, T>, vec<N, T>) -> vec<N, T> */
    /* op +[T : fiu32_f16, N : num](vec<N, T>, T) -> vec<N, T> */
    /* op +[T : fiu32_f16, N : num](T, vec<N, T>) -> vec<N, T> */
    /* op +[T : f32_f16, N : num, M : num](mat<N, M, T>, mat<N, M, T>) -> mat<N, M, T> */
    /* num overloads */ 5,
    /* overloads */ OverloadIndex(248),
  },
  {
    /* [1] */
    /* op -[T : fiu32_f16](T, T) -> T */
    /* op -[T : fiu32_f16, N : num](vec<N, T>, vec<N, T>) -> vec<N, T> */
    /* op -[T : fiu32_f16, N : num](vec<N, T>, T) -> vec<N, T> */
    /* op -[T : fiu32_f16, N : num](T, vec<N, T>) -> vec<N, T> */
    /* op -[T : f32_f16, N : num, M : num](mat<N, M, T>, mat<N, M, T>) -> mat<N, M, T> */
    /* num overloads */ 5,
    /* overloads */ OverloadIndex(253),
  },
  {
    /* [2] */
    /* op *[T : fiu32_f16](T, T) -> T */
    /* op *[T : fiu32_f16, N : num](vec<N, T>, vec<N, T>) -> vec<N, T> */
    /* op *[T : fiu32_f16, N : num](vec<N, T>, T) -> vec<N, T> */
    /* op *[T : fiu32_f16, N : num](T, vec<N, T>) -> vec<N, T> */
    /* op *[T : f32_f16, N : num, M : num](T, mat<N, M, T>) -> mat<N, M, T> */
    /* op *[T : f32_f16, N : num, M : num](mat<N, M, T>, T) -> mat<N, M, T> */
    /* op *[T : f32_f16, C : num, R : num](mat<C, R, T>, vec<C, T>) -> vec<R, T> */
    /* op *[T : f32_f16, C : num, R : num](vec<R, T>, mat<C, R, T>) -> vec<C, T> */
    /* op *[T : f32_f16, K : num, C : num, R : num](mat<K, R, T>, mat<C, K, T>) -> mat<C, R, T> */
    /* num overloads */ 9,
    /* overloads */ OverloadIndex(137),
  },
  {
    /* [3] */
    /* op /[T : fiu32_f16](T, T) -> T */
    /* op /[T : fiu32_f16, N : num](vec<N, T>, vec<N, T>) -> vec<N, T> */
    /* op /[T : fiu32_f16, N : num](vec<N, T>, T) -> vec<N, T> */
    /* op /[T : fiu32_f16, N : num](T, vec<N, T>) -> vec<N, T> */
    /* num overloads */ 4,
    /* overloads */ OverloadIndex(258),
  },
  {
    /* [4] */
    /* op %[T : fiu32_f16](T, T) -> T */
    /* op %[T : fiu32_f16, N : num](vec<N, T>, vec<N, T>) -> vec<N, T> */
    /* op %[T : fiu32_f16, N : num](vec<N, T>, T) -> vec<N, T> */
    /* op %[T : fiu32_f16, N : num](T, vec<N, T>) -> vec<N, T> */
    /* num overloads */ 4,
    /* overloads */ OverloadIndex(262),
  },
  {
    /* [5] */
    /* op ^[T : iu32](T, T) -> T */
    /* op ^[T : iu32, N : num](vec<N, T>, vec<N, T>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(413),
  },
  {
    /* [6] */
    /* op &(bool, bool) -> bool */
    /* op &[N : num](vec<N, bool>, vec<N, bool>) -> vec<N, bool> */
    /* op &[T : iu32](T, T) -> T */
    /* op &[T : iu32, N : num](vec<N, T>, vec<N, T>) -> vec<N, T> */
    /* num overloads */ 4,
    /* overloads */ OverloadIndex(266),
  },
  {
    /* [7] */
    /* op |(bool, bool) -> bool */
    /* op |[N : num](vec<N, bool>, vec<N, bool>) -> vec<N, bool> */
    /* op |[T : iu32](T, T) -> T */
    /* op |[T : iu32, N : num](vec<N, T>, vec<N, T>) -> vec<N, T> */
    /* num overloads */ 4,
    /* overloads */ OverloadIndex(270),
  },
  {
    /* [8] */
    /* op &&(bool, bool) -> bool */
    /* num overloads */ 1,
    /* overloads */ OverloadIndex(464),
  },
  {
    /* [9] */
    /* op ||(bool, bool) -> bool */
    /* num overloads */ 1,
    /* overloads */ OverloadIndex(465),
  },
  {
    /* [10] */
    /* op ==[T : scalar](T, T) -> bool */
    /* op ==[T : scalar, N : num](vec<N, T>, vec<N, T>) -> vec<N, bool> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(415),
  },
  {
    /* [11] */
    /* op !=[T : scalar](T, T) -> bool */
    /* op !=[T : scalar, N : num](vec<N, T>, vec<N, T>) -> vec<N, bool> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(417),
  },
  {
    /* [12] */
    /* op <[T : fiu32_f16](T, T) -> bool */
    /* op <[T : fiu32_f16, N : num](vec<N, T>, vec<N, T>) -> vec<N, bool> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(419),
  },
  {
    /* [13] */
    /* op >[T : fiu32_f16](T, T) -> bool */
    /* op >[T : fiu32_f16, N : num](vec<N, T>, vec<N, T>) -> vec<N, bool> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(421),
  },
  {
    /* [14] */
    /* op <=[T : fiu32_f16](T, T) -> bool */
    /* op <=[T : fiu32_f16, N : num](vec<N, T>, vec<N, T>) -> vec<N, bool> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(423),
  },
  {
    /* [15] */
    /* op >=[T : fiu32_f16](T, T) -> bool */
    /* op >=[T : fiu32_f16, N : num](vec<N, T>, vec<N, T>) -> vec<N, bool> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(425),
  },
  {
    /* [16] */
    /* op <<[T : iu32](T, u32) -> T */
    /* op <<[T : iu32, N : num](vec<N, T>, vec<N, u32>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(427),
  },
  {
    /* [17] */
    /* op >>[T : iu32](T, u32) -> T */
    /* op >>[T : iu32, N : num](vec<N, T>, vec<N, u32>) -> vec<N, T> */
    /* num overloads */ 2,
    /* overloads */ OverloadIndex(429),
  },
};
constexpr uint8_t kBinaryOperatorPlus = 0;
constexpr uint8_t kBinaryOperatorMinus = 1;
constexpr uint8_t kBinaryOperatorStar = 2;
constexpr uint8_t kBinaryOperatorDivide = 3;
constexpr uint8_t kBinaryOperatorModulo = 4;
constexpr uint8_t kBinaryOperatorXor = 5;
constexpr uint8_t kBinaryOperatorAnd = 6;
constexpr uint8_t kBinaryOperatorOr = 7;
constexpr uint8_t kBinaryOperatorLogicalAnd = 8;
constexpr uint8_t kBinaryOperatorLogicalOr = 9;
constexpr uint8_t kBinaryOperatorEqual = 10;
constexpr uint8_t kBinaryOperatorNotEqual = 11;
constexpr uint8_t kBinaryOperatorLessThan = 12;
constexpr uint8_t kBinaryOperatorGreaterThan = 13;
constexpr uint8_t kBinaryOperatorLessThanEqual = 14;
constexpr uint8_t kBinaryOperatorGreaterThanEqual = 15;
constexpr uint8_t kBinaryOperatorShiftLeft = 16;
constexpr uint8_t kBinaryOperatorShiftRight = 17;

constexpr IntrinsicInfo kConstructorsAndConverters[] = {
  {
    /* [0] */
    /* ctor i32() -> i32 */
    /* ctor i32(i32) -> i32 */
    /* conv i32[T : scalar_no_i32](T) -> i32 */
    /* num overloads */ 3,
    /* overloads */ OverloadIndex(280),
  },
  {
    /* [1] */
    /* ctor u32() -> u32 */
    /* ctor u32(u32) -> u32 */
    /* conv u32[T : scalar_no_u32](T) -> u32 */
    /* num overloads */ 3,
    /* overloads */ OverloadIndex(283),
  },
  {
    /* [2] */
    /* ctor f32() -> f32 */
    /* ctor f32(f32) -> f32 */
    /* conv f32[T : scalar_no_f32](T) -> f32 */
    /* num overloads */ 3,
    /* overloads */ OverloadIndex(286),
  },
  {
    /* [3] */
    /* ctor f16() -> f16 */
    /* ctor f16(f16) -> f16 */
    /* conv f16[T : scalar_no_f16](T) -> f16 */
    /* num overloads */ 3,
    /* overloads */ OverloadIndex(289),
  },
  {
    /* [4] */
    /* ctor bool() -> bool */
    /* ctor bool(bool) -> bool */
    /* conv bool[T : scalar_no_bool](T) -> bool */
    /* num overloads */ 3,
    /* overloads */ OverloadIndex(292),
  },
  {
    /* [5] */
    /* ctor vec2<T : scalar>() -> vec2<T> */
    /* ctor vec2<T : scalar>(vec2<T>) -> vec2<T> */
    /* ctor vec2<T : scalar>(T) -> vec2<T> */
    /* ctor vec2<T : scalar>(x: T, y: T) -> vec2<T> */
    /* conv vec2<T : f32>[U : scalar_no_f32](vec2<U>) -> vec2<T> */
    /* conv vec2<T : f16>[U : scalar_no_f16](vec2<U>) -> vec2<T> */
    /* conv vec2<T : i32>[U : scalar_no_i32](vec2<U>) -> vec2<T> */
    /* conv vec2<T : u32>[U : scalar_no_u32](vec2<U>) -> vec2<T> */
    /* conv vec2<T : bool>[U : scalar_no_bool](vec2<U>) -> vec2<T> */
    /* num overloads */ 9,
    /* overloads */ OverloadIndex(146),
  },
  {
    /* [6] */
    /* ctor vec3<T : scalar>() -> vec3<T> */
    /* ctor vec3<T : scalar>(vec3<T>) -> vec3<T> */
    /* ctor vec3<T : scalar>(T) -> vec3<T> */
    /* ctor vec3<T : scalar>(x: T, y: T, z: T) -> vec3<T> */
    /* ctor vec3<T : scalar>(xy: vec2<T>, z: T) -> vec3<T> */
    /* ctor vec3<T : scalar>(x: T, yz: vec2<T>) -> vec3<T> */
    /* conv vec3<T : f32>[U : scalar_no_f32](vec3<U>) -> vec3<T> */
    /* conv vec3<T : f16>[U : scalar_no_f16](vec3<U>) -> vec3<T> */
    /* conv vec3<T : i32>[U : scalar_no_i32](vec3<U>) -> vec3<T> */
    /* conv vec3<T : u32>[U : scalar_no_u32](vec3<U>) -> vec3<T> */
    /* conv vec3<T : bool>[U : scalar_no_bool](vec3<U>) -> vec3<T> */
    /* num overloads */ 11,
    /* overloads */ OverloadIndex(116),
  },
  {
    /* [7] */
    /* ctor vec4<T : scalar>() -> vec4<T> */
    /* ctor vec4<T : scalar>(vec4<T>) -> vec4<T> */
    /* ctor vec4<T : scalar>(T) -> vec4<T> */
    /* ctor vec4<T : scalar>(x: T, y: T, z: T, w: T) -> vec4<T> */
    /* ctor vec4<T : scalar>(xy: vec2<T>, z: T, w: T) -> vec4<T> */
    /* ctor vec4<T : scalar>(x: T, yz: vec2<T>, w: T) -> vec4<T> */
    /* ctor vec4<T : scalar>(x: T, y: T, zw: vec2<T>) -> vec4<T> */
    /* ctor vec4<T : scalar>(xy: vec2<T>, zw: vec2<T>) -> vec4<T> */
    /* ctor vec4<T : scalar>(xyz: vec3<T>, w: T) -> vec4<T> */
    /* ctor vec4<T : scalar>(x: T, zyw: vec3<T>) -> vec4<T> */
    /* conv vec4<T : f32>[U : scalar_no_f32](vec4<U>) -> vec4<T> */
    /* conv vec4<T : f16>[U : scalar_no_f16](vec4<U>) -> vec4<T> */
    /* conv vec4<T : i32>[U : scalar_no_i32](vec4<U>) -> vec4<T> */
    /* conv vec4<T : u32>[U : scalar_no_u32](vec4<U>) -> vec4<T> */
    /* conv vec4<T : bool>[U : scalar_no_bool](vec4<U>) -> vec4<T> */
    /* num overloads */ 15,
    /* overloads */ OverloadIndex(63),
  },
  {
    /* [8] */
    /* ctor mat2x2<T : f32_f16>() -> mat2x2<T> */
    /* ctor mat2x2<T : f32_f16>(mat2x2<T>) -> mat2x2<T> */
    /* ctor mat2x2<T : f32_f16>(T, T, T, T) -> mat2x2<T> */
    /* ctor mat2x2<T : f32_f16>(vec2<T>, vec2<T>) -> mat2x2<T> */
    /* conv mat2x2<T : f16>(mat2x2<f32>) -> mat2x2<T> */
    /* conv mat2x2<T : f32>(mat2x2<f16>) -> mat2x2<T> */
    /* num overloads */ 6,
    /* overloads */ OverloadIndex(189),
  },
  {
    /* [9] */
    /* ctor mat2x3<T : f32_f16>() -> mat2x3<T> */
    /* ctor mat2x3<T : f32_f16>(mat2x3<T>) -> mat2x3<T> */
    /* ctor mat2x3<T : f32_f16>(T, T, T, T, T, T) -> mat2x3<T> */
    /* ctor mat2x3<T : f32_f16>(vec3<T>, vec3<T>) -> mat2x3<T> */
    /* conv mat2x3<T : f16>(mat2x3<f32>) -> mat2x3<T> */
    /* conv mat2x3<T : f32>(mat2x3<f16>) -> mat2x3<T> */
    /* num overloads */ 6,
    /* overloads */ OverloadIndex(195),
  },
  {
    /* [10] */
    /* ctor mat2x4<T : f32_f16>() -> mat2x4<T> */
    /* ctor mat2x4<T : f32_f16>(mat2x4<T>) -> mat2x4<T> */
    /* ctor mat2x4<T : f32_f16>(T, T, T, T, T, T, T, T) -> mat2x4<T> */
    /* ctor mat2x4<T : f32_f16>(vec4<T>, vec4<T>) -> mat2x4<T> */
    /* conv mat2x4<T : f16>(mat2x4<f32>) -> mat2x4<T> */
    /* conv mat2x4<T : f32>(mat2x4<f16>) -> mat2x4<T> */
    /* num overloads */ 6,
    /* overloads */ OverloadIndex(201),
  },
  {
    /* [11] */
    /* ctor mat3x2<T : f32_f16>() -> mat3x2<T> */
    /* ctor mat3x2<T : f32_f16>(mat3x2<T>) -> mat3x2<T> */
    /* ctor mat3x2<T : f32_f16>(T, T, T, T, T, T) -> mat3x2<T> */
    /* ctor mat3x2<T : f32_f16>(vec2<T>, vec2<T>, vec2<T>) -> mat3x2<T> */
    /* conv mat3x2<T : f16>(mat3x2<f32>) -> mat3x2<T> */
    /* conv mat3x2<T : f32>(mat3x2<f16>) -> mat3x2<T> */
    /* num overloads */ 6,
    /* overloads */ OverloadIndex(207),
  },
  {
    /* [12] */
    /* ctor mat3x3<T : f32_f16>() -> mat3x3<T> */
    /* ctor mat3x3<T : f32_f16>(mat3x3<T>) -> mat3x3<T> */
    /* ctor mat3x3<T : f32_f16>(T, T, T, T, T, T, T, T, T) -> mat3x3<T> */
    /* ctor mat3x3<T : f32_f16>(vec3<T>, vec3<T>, vec3<T>) -> mat3x3<T> */
    /* conv mat3x3<T : f16>(mat3x3<f32>) -> mat3x3<T> */
    /* conv mat3x3<T : f32>(mat3x3<f16>) -> mat3x3<T> */
    /* num overloads */ 6,
    /* overloads */ OverloadIndex(213),
  },
  {
    /* [13] */
    /* ctor mat3x4<T : f32_f16>() -> mat3x4<T> */
    /* ctor mat3x4<T : f32_f16>(mat3x4<T>) -> mat3x4<T> */
    /* ctor mat3x4<T : f32_f16>(T, T, T, T, T, T, T, T, T, T, T, T) -> mat3x4<T> */
    /* ctor mat3x4<T : f32_f16>(vec4<T>, vec4<T>, vec4<T>) -> mat3x4<T> */
    /* conv mat3x4<T : f16>(mat3x4<f32>) -> mat3x4<T> */
    /* conv mat3x4<T : f32>(mat3x4<f16>) -> mat3x4<T> */
    /* num overloads */ 6,
    /* overloads */ OverloadIndex(219),
  },
  {
    /* [14] */
    /* ctor mat4x2<T : f32_f16>() -> mat4x2<T> */
    /* ctor mat4x2<T : f32_f16>(mat4x2<T>) -> mat4x2<T> */
    /* ctor mat4x2<T : f32_f16>(T, T, T, T, T, T, T, T) -> mat4x2<T> */
    /* ctor mat4x2<T : f32_f16>(vec2<T>, vec2<T>, vec2<T>, vec2<T>) -> mat4x2<T> */
    /* conv mat4x2<T : f16>(mat4x2<f32>) -> mat4x2<T> */
    /* conv mat4x2<T : f32>(mat4x2<f16>) -> mat4x2<T> */
    /* num overloads */ 6,
    /* overloads */ OverloadIndex(225),
  },
  {
    /* [15] */
    /* ctor mat4x3<T : f32_f16>() -> mat4x3<T> */
    /* ctor mat4x3<T : f32_f16>(mat4x3<T>) -> mat4x3<T> */
    /* ctor mat4x3<T : f32_f16>(T, T, T, T, T, T, T, T, T, T, T, T) -> mat4x3<T> */
    /* ctor mat4x3<T : f32_f16>(vec3<T>, vec3<T>, vec3<T>, vec3<T>) -> mat4x3<T> */
    /* conv mat4x3<T : f16>(mat4x3<f32>) -> mat4x3<T> */
    /* conv mat4x3<T : f32>(mat4x3<f16>) -> mat4x3<T> */
    /* num overloads */ 6,
    /* overloads */ OverloadIndex(231),
  },
  {
    /* [16] */
    /* ctor mat4x4<T : f32_f16>() -> mat4x4<T> */
    /* ctor mat4x4<T : f32_f16>(mat4x4<T>) -> mat4x4<T> */
    /* ctor mat4x4<T : f32_f16>(T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T) -> mat4x4<T> */
    /* ctor mat4x4<T : f32_f16>(vec4<T>, vec4<T>, vec4<T>, vec4<T>) -> mat4x4<T> */
    /* conv mat4x4<T : f16>(mat4x4<f32>) -> mat4x4<T> */
    /* conv mat4x4<T : f32>(mat4x4<f16>) -> mat4x4<T> */
    /* num overloads */ 6,
    /* overloads */ OverloadIndex(237),
  },
};

// clang-format on

}  // anonymous namespace

const core::intrinsic::TableData Dialect::kData{
    /* templates */ kTemplates,
    /* type_matcher_indices */ kMatcherIndices,
    /* type_matchers */ kTypeMatchers,
    /* number_matchers */ kNumberMatchers,
    /* parameters */ kParameters,
    /* overloads */ kOverloads,
    /* const_eval_functions */ kConstEvalFunctions,
    /* ctor_conv */ kConstructorsAndConverters,
    /* builtins */ kBuiltins,
    /* binary '+' */ kBinaryOperators[kBinaryOperatorPlus],
    /* binary '-' */ kBinaryOperators[kBinaryOperatorMinus],
    /* binary '*' */ kBinaryOperators[kBinaryOperatorStar],
    /* binary '/' */ kBinaryOperators[kBinaryOperatorDivide],
    /* binary '%' */ kBinaryOperators[kBinaryOperatorModulo],
    /* binary '^' */ kBinaryOperators[kBinaryOperatorXor],
    /* binary '&' */ kBinaryOperators[kBinaryOperatorAnd],
    /* binary '|' */ kBinaryOperators[kBinaryOperatorOr],
    /* binary '&&' */ kBinaryOperators[kBinaryOperatorLogicalAnd],
    /* binary '||' */ kBinaryOperators[kBinaryOperatorLogicalOr],
    /* binary '==' */ kBinaryOperators[kBinaryOperatorEqual],
    /* binary '!=' */ kBinaryOperators[kBinaryOperatorNotEqual],
    /* binary '<' */ kBinaryOperators[kBinaryOperatorLessThan],
    /* binary '>' */ kBinaryOperators[kBinaryOperatorGreaterThan],
    /* binary '<=' */ kBinaryOperators[kBinaryOperatorLessThanEqual],
    /* binary '>=' */ kBinaryOperators[kBinaryOperatorGreaterThanEqual],
    /* binary '<<' */ kBinaryOperators[kBinaryOperatorShiftLeft],
    /* binary '>>' */ kBinaryOperators[kBinaryOperatorShiftRight],
    /* unary '!' */ kUnaryOperators[kUnaryOperatorNot],
    /* unary '~' */ kUnaryOperators[kUnaryOperatorComplement],
    /* unary '-' */ kUnaryOperators[kUnaryOperatorMinus],
    /* unary '*' */ tint::core::intrinsic::kNoOverloads,
    /* unary '&' */ tint::core::intrinsic::kNoOverloads,
};

}  // namespace tint::core::intrinsic
