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

////////////////////////////////////////////////////////////////////////////////
// File generated by tools/intrinsic-gen
// using the template:
//   src/tint/sem/builtin_type.cc.tmpl
// and the intrinsic defintion file:
//   src/tint/intrinsics.def
//
// Do not modify this file directly
////////////////////////////////////////////////////////////////////////////////

#include "src/tint/sem/builtin_type.h"

#include <sstream>

namespace tint::sem {

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

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

std::ostream& operator<<(std::ostream& out, BuiltinType i) {
    out << str(i);
    return out;
}

}  // namespace tint::sem
