| // 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.h.tmpl | |
| // | |
| // Do not modify this file directly | |
| //////////////////////////////////////////////////////////////////////////////// | |
| #ifndef SRC_TINT_BUILTIN_FUNCTION_H_ | |
| #define SRC_TINT_BUILTIN_FUNCTION_H_ | |
| #include <string> | |
| #include "src/tint/utils/string_stream.h" | |
| // \cond DO_NOT_DOCUMENT | |
| namespace tint::builtin { | |
| /// Enumerator of all builtin functions | |
| enum class Function { | |
| kNone = -1, | |
| kAbs, | |
| kAcos, | |
| kAcosh, | |
| kAll, | |
| kAny, | |
| kArrayLength, | |
| kAsin, | |
| kAsinh, | |
| kAtan, | |
| kAtan2, | |
| kAtanh, | |
| kCeil, | |
| kClamp, | |
| kCos, | |
| kCosh, | |
| kCountLeadingZeros, | |
| kCountOneBits, | |
| kCountTrailingZeros, | |
| kCross, | |
| kDegrees, | |
| kDeterminant, | |
| kDistance, | |
| kDot, | |
| kDot4I8Packed, | |
| kDot4U8Packed, | |
| kDpdx, | |
| kDpdxCoarse, | |
| kDpdxFine, | |
| kDpdy, | |
| kDpdyCoarse, | |
| kDpdyFine, | |
| kExp, | |
| kExp2, | |
| kExtractBits, | |
| kFaceForward, | |
| kFirstLeadingBit, | |
| kFirstTrailingBit, | |
| kFloor, | |
| kFma, | |
| kFract, | |
| kFrexp, | |
| kFwidth, | |
| kFwidthCoarse, | |
| kFwidthFine, | |
| kInsertBits, | |
| kInverseSqrt, | |
| kLdexp, | |
| kLength, | |
| kLog, | |
| kLog2, | |
| kMax, | |
| kMin, | |
| kMix, | |
| kModf, | |
| kNormalize, | |
| kPack2X16Float, | |
| kPack2X16Snorm, | |
| kPack2X16Unorm, | |
| kPack4X8Snorm, | |
| kPack4X8Unorm, | |
| kPow, | |
| kQuantizeToF16, | |
| kRadians, | |
| kReflect, | |
| kRefract, | |
| kReverseBits, | |
| kRound, | |
| kSaturate, | |
| kSelect, | |
| kSign, | |
| kSin, | |
| kSinh, | |
| kSmoothstep, | |
| kSqrt, | |
| kStep, | |
| kStorageBarrier, | |
| kTan, | |
| kTanh, | |
| kTranspose, | |
| kTrunc, | |
| kUnpack2X16Float, | |
| kUnpack2X16Snorm, | |
| kUnpack2X16Unorm, | |
| kUnpack4X8Snorm, | |
| kUnpack4X8Unorm, | |
| kWorkgroupBarrier, | |
| kWorkgroupUniformLoad, | |
| kTextureDimensions, | |
| kTextureGather, | |
| kTextureGatherCompare, | |
| kTextureNumLayers, | |
| kTextureNumLevels, | |
| kTextureNumSamples, | |
| kTextureSample, | |
| kTextureSampleBias, | |
| kTextureSampleCompare, | |
| kTextureSampleCompareLevel, | |
| kTextureSampleGrad, | |
| kTextureSampleLevel, | |
| kTextureSampleBaseClampToEdge, | |
| kTextureStore, | |
| kTextureLoad, | |
| kAtomicLoad, | |
| kAtomicStore, | |
| kAtomicAdd, | |
| kAtomicSub, | |
| kAtomicMax, | |
| kAtomicMin, | |
| kAtomicAnd, | |
| kAtomicOr, | |
| kAtomicXor, | |
| kAtomicExchange, | |
| kAtomicCompareExchangeWeak, | |
| kTintMaterialize, | |
| }; | |
| /// Matches the Function by name | |
| /// @param name the builtin name to parse | |
| /// @returns the parsed Function, or Function::kNone if `name` did not | |
| /// match any builtin function. | |
| Function ParseFunction(std::string_view name); | |
| /// @returns the name of the builtin function type. The spelling, including | |
| /// case, matches the name in the WGSL spec. | |
| const char* str(Function i); | |
| /// Emits the name of the builtin function type. The spelling, including case, | |
| /// matches the name in the WGSL spec. | |
| utils::StringStream& operator<<(utils::StringStream& out, Function i); | |
| /// All builtin functions | |
| constexpr Function kFunctions[] = { | |
| Function::kAbs, | |
| Function::kAcos, | |
| Function::kAcosh, | |
| Function::kAll, | |
| Function::kAny, | |
| Function::kArrayLength, | |
| Function::kAsin, | |
| Function::kAsinh, | |
| Function::kAtan, | |
| Function::kAtan2, | |
| Function::kAtanh, | |
| Function::kCeil, | |
| Function::kClamp, | |
| Function::kCos, | |
| Function::kCosh, | |
| Function::kCountLeadingZeros, | |
| Function::kCountOneBits, | |
| Function::kCountTrailingZeros, | |
| Function::kCross, | |
| Function::kDegrees, | |
| Function::kDeterminant, | |
| Function::kDistance, | |
| Function::kDot, | |
| Function::kDot4I8Packed, | |
| Function::kDot4U8Packed, | |
| Function::kDpdx, | |
| Function::kDpdxCoarse, | |
| Function::kDpdxFine, | |
| Function::kDpdy, | |
| Function::kDpdyCoarse, | |
| Function::kDpdyFine, | |
| Function::kExp, | |
| Function::kExp2, | |
| Function::kExtractBits, | |
| Function::kFaceForward, | |
| Function::kFirstLeadingBit, | |
| Function::kFirstTrailingBit, | |
| Function::kFloor, | |
| Function::kFma, | |
| Function::kFract, | |
| Function::kFrexp, | |
| Function::kFwidth, | |
| Function::kFwidthCoarse, | |
| Function::kFwidthFine, | |
| Function::kInsertBits, | |
| Function::kInverseSqrt, | |
| Function::kLdexp, | |
| Function::kLength, | |
| Function::kLog, | |
| Function::kLog2, | |
| Function::kMax, | |
| Function::kMin, | |
| Function::kMix, | |
| Function::kModf, | |
| Function::kNormalize, | |
| Function::kPack2X16Float, | |
| Function::kPack2X16Snorm, | |
| Function::kPack2X16Unorm, | |
| Function::kPack4X8Snorm, | |
| Function::kPack4X8Unorm, | |
| Function::kPow, | |
| Function::kQuantizeToF16, | |
| Function::kRadians, | |
| Function::kReflect, | |
| Function::kRefract, | |
| Function::kReverseBits, | |
| Function::kRound, | |
| Function::kSaturate, | |
| Function::kSelect, | |
| Function::kSign, | |
| Function::kSin, | |
| Function::kSinh, | |
| Function::kSmoothstep, | |
| Function::kSqrt, | |
| Function::kStep, | |
| Function::kStorageBarrier, | |
| Function::kTan, | |
| Function::kTanh, | |
| Function::kTranspose, | |
| Function::kTrunc, | |
| Function::kUnpack2X16Float, | |
| Function::kUnpack2X16Snorm, | |
| Function::kUnpack2X16Unorm, | |
| Function::kUnpack4X8Snorm, | |
| Function::kUnpack4X8Unorm, | |
| Function::kWorkgroupBarrier, | |
| Function::kWorkgroupUniformLoad, | |
| Function::kTextureDimensions, | |
| Function::kTextureGather, | |
| Function::kTextureGatherCompare, | |
| Function::kTextureNumLayers, | |
| Function::kTextureNumLevels, | |
| Function::kTextureNumSamples, | |
| Function::kTextureSample, | |
| Function::kTextureSampleBias, | |
| Function::kTextureSampleCompare, | |
| Function::kTextureSampleCompareLevel, | |
| Function::kTextureSampleGrad, | |
| Function::kTextureSampleLevel, | |
| Function::kTextureSampleBaseClampToEdge, | |
| Function::kTextureStore, | |
| Function::kTextureLoad, | |
| Function::kAtomicLoad, | |
| Function::kAtomicStore, | |
| Function::kAtomicAdd, | |
| Function::kAtomicSub, | |
| Function::kAtomicMax, | |
| Function::kAtomicMin, | |
| Function::kAtomicAnd, | |
| Function::kAtomicOr, | |
| Function::kAtomicXor, | |
| Function::kAtomicExchange, | |
| Function::kAtomicCompareExchangeWeak, | |
| Function::kTintMaterialize, | |
| }; | |
| /// All builtin function names | |
| constexpr const char* kFunctionStrings[] = { | |
| "abs", | |
| "acos", | |
| "acosh", | |
| "all", | |
| "any", | |
| "arrayLength", | |
| "asin", | |
| "asinh", | |
| "atan", | |
| "atan2", | |
| "atanh", | |
| "ceil", | |
| "clamp", | |
| "cos", | |
| "cosh", | |
| "countLeadingZeros", | |
| "countOneBits", | |
| "countTrailingZeros", | |
| "cross", | |
| "degrees", | |
| "determinant", | |
| "distance", | |
| "dot", | |
| "dot4I8Packed", | |
| "dot4U8Packed", | |
| "dpdx", | |
| "dpdxCoarse", | |
| "dpdxFine", | |
| "dpdy", | |
| "dpdyCoarse", | |
| "dpdyFine", | |
| "exp", | |
| "exp2", | |
| "extractBits", | |
| "faceForward", | |
| "firstLeadingBit", | |
| "firstTrailingBit", | |
| "floor", | |
| "fma", | |
| "fract", | |
| "frexp", | |
| "fwidth", | |
| "fwidthCoarse", | |
| "fwidthFine", | |
| "insertBits", | |
| "inverseSqrt", | |
| "ldexp", | |
| "length", | |
| "log", | |
| "log2", | |
| "max", | |
| "min", | |
| "mix", | |
| "modf", | |
| "normalize", | |
| "pack2x16float", | |
| "pack2x16snorm", | |
| "pack2x16unorm", | |
| "pack4x8snorm", | |
| "pack4x8unorm", | |
| "pow", | |
| "quantizeToF16", | |
| "radians", | |
| "reflect", | |
| "refract", | |
| "reverseBits", | |
| "round", | |
| "saturate", | |
| "select", | |
| "sign", | |
| "sin", | |
| "sinh", | |
| "smoothstep", | |
| "sqrt", | |
| "step", | |
| "storageBarrier", | |
| "tan", | |
| "tanh", | |
| "transpose", | |
| "trunc", | |
| "unpack2x16float", | |
| "unpack2x16snorm", | |
| "unpack2x16unorm", | |
| "unpack4x8snorm", | |
| "unpack4x8unorm", | |
| "workgroupBarrier", | |
| "workgroupUniformLoad", | |
| "textureDimensions", | |
| "textureGather", | |
| "textureGatherCompare", | |
| "textureNumLayers", | |
| "textureNumLevels", | |
| "textureNumSamples", | |
| "textureSample", | |
| "textureSampleBias", | |
| "textureSampleCompare", | |
| "textureSampleCompareLevel", | |
| "textureSampleGrad", | |
| "textureSampleLevel", | |
| "textureSampleBaseClampToEdge", | |
| "textureStore", | |
| "textureLoad", | |
| "atomicLoad", | |
| "atomicStore", | |
| "atomicAdd", | |
| "atomicSub", | |
| "atomicMax", | |
| "atomicMin", | |
| "atomicAnd", | |
| "atomicOr", | |
| "atomicXor", | |
| "atomicExchange", | |
| "atomicCompareExchangeWeak", | |
| "_tint_materialize", | |
| }; | |
| } // namespace tint::builtin | |
| // \endcond | |
| #endif // SRC_TINT_BUILTIN_FUNCTION_H_ |