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

////////////////////////////////////////////////////////////////////////////////
// File generated by tools/src/cmd/gen
// using the template:
//   src/tint/builtin/function.cc.tmpl
//
// Do not modify this file directly
////////////////////////////////////////////////////////////////////////////////

#include "src/tint/builtin/function.h"

namespace tint::builtin {

Function ParseFunction(std::string_view name) {
    if (name == "abs") {
        return Function::kAbs;
    }
    if (name == "acos") {
        return Function::kAcos;
    }
    if (name == "acosh") {
        return Function::kAcosh;
    }
    if (name == "all") {
        return Function::kAll;
    }
    if (name == "any") {
        return Function::kAny;
    }
    if (name == "arrayLength") {
        return Function::kArrayLength;
    }
    if (name == "asin") {
        return Function::kAsin;
    }
    if (name == "asinh") {
        return Function::kAsinh;
    }
    if (name == "atan") {
        return Function::kAtan;
    }
    if (name == "atan2") {
        return Function::kAtan2;
    }
    if (name == "atanh") {
        return Function::kAtanh;
    }
    if (name == "ceil") {
        return Function::kCeil;
    }
    if (name == "clamp") {
        return Function::kClamp;
    }
    if (name == "cos") {
        return Function::kCos;
    }
    if (name == "cosh") {
        return Function::kCosh;
    }
    if (name == "countLeadingZeros") {
        return Function::kCountLeadingZeros;
    }
    if (name == "countOneBits") {
        return Function::kCountOneBits;
    }
    if (name == "countTrailingZeros") {
        return Function::kCountTrailingZeros;
    }
    if (name == "cross") {
        return Function::kCross;
    }
    if (name == "degrees") {
        return Function::kDegrees;
    }
    if (name == "determinant") {
        return Function::kDeterminant;
    }
    if (name == "distance") {
        return Function::kDistance;
    }
    if (name == "dot") {
        return Function::kDot;
    }
    if (name == "dot4I8Packed") {
        return Function::kDot4I8Packed;
    }
    if (name == "dot4U8Packed") {
        return Function::kDot4U8Packed;
    }
    if (name == "dpdx") {
        return Function::kDpdx;
    }
    if (name == "dpdxCoarse") {
        return Function::kDpdxCoarse;
    }
    if (name == "dpdxFine") {
        return Function::kDpdxFine;
    }
    if (name == "dpdy") {
        return Function::kDpdy;
    }
    if (name == "dpdyCoarse") {
        return Function::kDpdyCoarse;
    }
    if (name == "dpdyFine") {
        return Function::kDpdyFine;
    }
    if (name == "exp") {
        return Function::kExp;
    }
    if (name == "exp2") {
        return Function::kExp2;
    }
    if (name == "extractBits") {
        return Function::kExtractBits;
    }
    if (name == "faceForward") {
        return Function::kFaceForward;
    }
    if (name == "firstLeadingBit") {
        return Function::kFirstLeadingBit;
    }
    if (name == "firstTrailingBit") {
        return Function::kFirstTrailingBit;
    }
    if (name == "floor") {
        return Function::kFloor;
    }
    if (name == "fma") {
        return Function::kFma;
    }
    if (name == "fract") {
        return Function::kFract;
    }
    if (name == "frexp") {
        return Function::kFrexp;
    }
    if (name == "fwidth") {
        return Function::kFwidth;
    }
    if (name == "fwidthCoarse") {
        return Function::kFwidthCoarse;
    }
    if (name == "fwidthFine") {
        return Function::kFwidthFine;
    }
    if (name == "insertBits") {
        return Function::kInsertBits;
    }
    if (name == "inverseSqrt") {
        return Function::kInverseSqrt;
    }
    if (name == "ldexp") {
        return Function::kLdexp;
    }
    if (name == "length") {
        return Function::kLength;
    }
    if (name == "log") {
        return Function::kLog;
    }
    if (name == "log2") {
        return Function::kLog2;
    }
    if (name == "max") {
        return Function::kMax;
    }
    if (name == "min") {
        return Function::kMin;
    }
    if (name == "mix") {
        return Function::kMix;
    }
    if (name == "modf") {
        return Function::kModf;
    }
    if (name == "normalize") {
        return Function::kNormalize;
    }
    if (name == "pack2x16float") {
        return Function::kPack2X16Float;
    }
    if (name == "pack2x16snorm") {
        return Function::kPack2X16Snorm;
    }
    if (name == "pack2x16unorm") {
        return Function::kPack2X16Unorm;
    }
    if (name == "pack4x8snorm") {
        return Function::kPack4X8Snorm;
    }
    if (name == "pack4x8unorm") {
        return Function::kPack4X8Unorm;
    }
    if (name == "pow") {
        return Function::kPow;
    }
    if (name == "quantizeToF16") {
        return Function::kQuantizeToF16;
    }
    if (name == "radians") {
        return Function::kRadians;
    }
    if (name == "reflect") {
        return Function::kReflect;
    }
    if (name == "refract") {
        return Function::kRefract;
    }
    if (name == "reverseBits") {
        return Function::kReverseBits;
    }
    if (name == "round") {
        return Function::kRound;
    }
    if (name == "saturate") {
        return Function::kSaturate;
    }
    if (name == "select") {
        return Function::kSelect;
    }
    if (name == "sign") {
        return Function::kSign;
    }
    if (name == "sin") {
        return Function::kSin;
    }
    if (name == "sinh") {
        return Function::kSinh;
    }
    if (name == "smoothstep") {
        return Function::kSmoothstep;
    }
    if (name == "sqrt") {
        return Function::kSqrt;
    }
    if (name == "step") {
        return Function::kStep;
    }
    if (name == "storageBarrier") {
        return Function::kStorageBarrier;
    }
    if (name == "tan") {
        return Function::kTan;
    }
    if (name == "tanh") {
        return Function::kTanh;
    }
    if (name == "transpose") {
        return Function::kTranspose;
    }
    if (name == "trunc") {
        return Function::kTrunc;
    }
    if (name == "unpack2x16float") {
        return Function::kUnpack2X16Float;
    }
    if (name == "unpack2x16snorm") {
        return Function::kUnpack2X16Snorm;
    }
    if (name == "unpack2x16unorm") {
        return Function::kUnpack2X16Unorm;
    }
    if (name == "unpack4x8snorm") {
        return Function::kUnpack4X8Snorm;
    }
    if (name == "unpack4x8unorm") {
        return Function::kUnpack4X8Unorm;
    }
    if (name == "workgroupBarrier") {
        return Function::kWorkgroupBarrier;
    }
    if (name == "workgroupUniformLoad") {
        return Function::kWorkgroupUniformLoad;
    }
    if (name == "textureDimensions") {
        return Function::kTextureDimensions;
    }
    if (name == "textureGather") {
        return Function::kTextureGather;
    }
    if (name == "textureGatherCompare") {
        return Function::kTextureGatherCompare;
    }
    if (name == "textureNumLayers") {
        return Function::kTextureNumLayers;
    }
    if (name == "textureNumLevels") {
        return Function::kTextureNumLevels;
    }
    if (name == "textureNumSamples") {
        return Function::kTextureNumSamples;
    }
    if (name == "textureSample") {
        return Function::kTextureSample;
    }
    if (name == "textureSampleBias") {
        return Function::kTextureSampleBias;
    }
    if (name == "textureSampleCompare") {
        return Function::kTextureSampleCompare;
    }
    if (name == "textureSampleCompareLevel") {
        return Function::kTextureSampleCompareLevel;
    }
    if (name == "textureSampleGrad") {
        return Function::kTextureSampleGrad;
    }
    if (name == "textureSampleLevel") {
        return Function::kTextureSampleLevel;
    }
    if (name == "textureSampleBaseClampToEdge") {
        return Function::kTextureSampleBaseClampToEdge;
    }
    if (name == "textureStore") {
        return Function::kTextureStore;
    }
    if (name == "textureLoad") {
        return Function::kTextureLoad;
    }
    if (name == "atomicLoad") {
        return Function::kAtomicLoad;
    }
    if (name == "atomicStore") {
        return Function::kAtomicStore;
    }
    if (name == "atomicAdd") {
        return Function::kAtomicAdd;
    }
    if (name == "atomicSub") {
        return Function::kAtomicSub;
    }
    if (name == "atomicMax") {
        return Function::kAtomicMax;
    }
    if (name == "atomicMin") {
        return Function::kAtomicMin;
    }
    if (name == "atomicAnd") {
        return Function::kAtomicAnd;
    }
    if (name == "atomicOr") {
        return Function::kAtomicOr;
    }
    if (name == "atomicXor") {
        return Function::kAtomicXor;
    }
    if (name == "atomicExchange") {
        return Function::kAtomicExchange;
    }
    if (name == "atomicCompareExchangeWeak") {
        return Function::kAtomicCompareExchangeWeak;
    }
    if (name == "_tint_materialize") {
        return Function::kTintMaterialize;
    }
    return Function::kNone;
}

const char* str(Function i) {
    switch (i) {
        case Function::kNone:
            return "<none>";
        case Function::kAbs:
            return "abs";
        case Function::kAcos:
            return "acos";
        case Function::kAcosh:
            return "acosh";
        case Function::kAll:
            return "all";
        case Function::kAny:
            return "any";
        case Function::kArrayLength:
            return "arrayLength";
        case Function::kAsin:
            return "asin";
        case Function::kAsinh:
            return "asinh";
        case Function::kAtan:
            return "atan";
        case Function::kAtan2:
            return "atan2";
        case Function::kAtanh:
            return "atanh";
        case Function::kCeil:
            return "ceil";
        case Function::kClamp:
            return "clamp";
        case Function::kCos:
            return "cos";
        case Function::kCosh:
            return "cosh";
        case Function::kCountLeadingZeros:
            return "countLeadingZeros";
        case Function::kCountOneBits:
            return "countOneBits";
        case Function::kCountTrailingZeros:
            return "countTrailingZeros";
        case Function::kCross:
            return "cross";
        case Function::kDegrees:
            return "degrees";
        case Function::kDeterminant:
            return "determinant";
        case Function::kDistance:
            return "distance";
        case Function::kDot:
            return "dot";
        case Function::kDot4I8Packed:
            return "dot4I8Packed";
        case Function::kDot4U8Packed:
            return "dot4U8Packed";
        case Function::kDpdx:
            return "dpdx";
        case Function::kDpdxCoarse:
            return "dpdxCoarse";
        case Function::kDpdxFine:
            return "dpdxFine";
        case Function::kDpdy:
            return "dpdy";
        case Function::kDpdyCoarse:
            return "dpdyCoarse";
        case Function::kDpdyFine:
            return "dpdyFine";
        case Function::kExp:
            return "exp";
        case Function::kExp2:
            return "exp2";
        case Function::kExtractBits:
            return "extractBits";
        case Function::kFaceForward:
            return "faceForward";
        case Function::kFirstLeadingBit:
            return "firstLeadingBit";
        case Function::kFirstTrailingBit:
            return "firstTrailingBit";
        case Function::kFloor:
            return "floor";
        case Function::kFma:
            return "fma";
        case Function::kFract:
            return "fract";
        case Function::kFrexp:
            return "frexp";
        case Function::kFwidth:
            return "fwidth";
        case Function::kFwidthCoarse:
            return "fwidthCoarse";
        case Function::kFwidthFine:
            return "fwidthFine";
        case Function::kInsertBits:
            return "insertBits";
        case Function::kInverseSqrt:
            return "inverseSqrt";
        case Function::kLdexp:
            return "ldexp";
        case Function::kLength:
            return "length";
        case Function::kLog:
            return "log";
        case Function::kLog2:
            return "log2";
        case Function::kMax:
            return "max";
        case Function::kMin:
            return "min";
        case Function::kMix:
            return "mix";
        case Function::kModf:
            return "modf";
        case Function::kNormalize:
            return "normalize";
        case Function::kPack2X16Float:
            return "pack2x16float";
        case Function::kPack2X16Snorm:
            return "pack2x16snorm";
        case Function::kPack2X16Unorm:
            return "pack2x16unorm";
        case Function::kPack4X8Snorm:
            return "pack4x8snorm";
        case Function::kPack4X8Unorm:
            return "pack4x8unorm";
        case Function::kPow:
            return "pow";
        case Function::kQuantizeToF16:
            return "quantizeToF16";
        case Function::kRadians:
            return "radians";
        case Function::kReflect:
            return "reflect";
        case Function::kRefract:
            return "refract";
        case Function::kReverseBits:
            return "reverseBits";
        case Function::kRound:
            return "round";
        case Function::kSaturate:
            return "saturate";
        case Function::kSelect:
            return "select";
        case Function::kSign:
            return "sign";
        case Function::kSin:
            return "sin";
        case Function::kSinh:
            return "sinh";
        case Function::kSmoothstep:
            return "smoothstep";
        case Function::kSqrt:
            return "sqrt";
        case Function::kStep:
            return "step";
        case Function::kStorageBarrier:
            return "storageBarrier";
        case Function::kTan:
            return "tan";
        case Function::kTanh:
            return "tanh";
        case Function::kTranspose:
            return "transpose";
        case Function::kTrunc:
            return "trunc";
        case Function::kUnpack2X16Float:
            return "unpack2x16float";
        case Function::kUnpack2X16Snorm:
            return "unpack2x16snorm";
        case Function::kUnpack2X16Unorm:
            return "unpack2x16unorm";
        case Function::kUnpack4X8Snorm:
            return "unpack4x8snorm";
        case Function::kUnpack4X8Unorm:
            return "unpack4x8unorm";
        case Function::kWorkgroupBarrier:
            return "workgroupBarrier";
        case Function::kWorkgroupUniformLoad:
            return "workgroupUniformLoad";
        case Function::kTextureDimensions:
            return "textureDimensions";
        case Function::kTextureGather:
            return "textureGather";
        case Function::kTextureGatherCompare:
            return "textureGatherCompare";
        case Function::kTextureNumLayers:
            return "textureNumLayers";
        case Function::kTextureNumLevels:
            return "textureNumLevels";
        case Function::kTextureNumSamples:
            return "textureNumSamples";
        case Function::kTextureSample:
            return "textureSample";
        case Function::kTextureSampleBias:
            return "textureSampleBias";
        case Function::kTextureSampleCompare:
            return "textureSampleCompare";
        case Function::kTextureSampleCompareLevel:
            return "textureSampleCompareLevel";
        case Function::kTextureSampleGrad:
            return "textureSampleGrad";
        case Function::kTextureSampleLevel:
            return "textureSampleLevel";
        case Function::kTextureSampleBaseClampToEdge:
            return "textureSampleBaseClampToEdge";
        case Function::kTextureStore:
            return "textureStore";
        case Function::kTextureLoad:
            return "textureLoad";
        case Function::kAtomicLoad:
            return "atomicLoad";
        case Function::kAtomicStore:
            return "atomicStore";
        case Function::kAtomicAdd:
            return "atomicAdd";
        case Function::kAtomicSub:
            return "atomicSub";
        case Function::kAtomicMax:
            return "atomicMax";
        case Function::kAtomicMin:
            return "atomicMin";
        case Function::kAtomicAnd:
            return "atomicAnd";
        case Function::kAtomicOr:
            return "atomicOr";
        case Function::kAtomicXor:
            return "atomicXor";
        case Function::kAtomicExchange:
            return "atomicExchange";
        case Function::kAtomicCompareExchangeWeak:
            return "atomicCompareExchangeWeak";
        case Function::kTintMaterialize:
            return "_tint_materialize";
    }
    return "<unknown>";
}

utils::StringStream& operator<<(utils::StringStream& out, Function i) {
    out << str(i);
    return out;
}

}  // namespace tint::builtin
