blob: 629ae38447a7595535903530ccb779da18991cc1 [file] [log] [blame]
// Copyright 2024 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/glsl/builtin_fn.cc.tmpl
//
// To regenerate run: './tools/run gen'
//
// Do not modify this file directly
////////////////////////////////////////////////////////////////////////////////
#include "src/tint/lang/glsl/builtin_fn.h"
namespace tint::glsl {
const char* str(BuiltinFn i) {
switch (i) {
case BuiltinFn::kNone:
return "<none>";
case BuiltinFn::kLength:
return "length";
case BuiltinFn::kBarrier:
return "barrier";
case BuiltinFn::kMemoryBarrierBuffer:
return "memoryBarrierBuffer";
case BuiltinFn::kMemoryBarrierImage:
return "memoryBarrierImage";
case BuiltinFn::kAtomicCompSwap:
return "atomicCompSwap";
case BuiltinFn::kAtomicSub:
return "atomicSub";
case BuiltinFn::kFloatBitsToInt:
return "floatBitsToInt";
case BuiltinFn::kFloatBitsToUint:
return "floatBitsToUint";
case BuiltinFn::kIntBitsToFloat:
return "intBitsToFloat";
case BuiltinFn::kUintBitsToFloat:
return "uintBitsToFloat";
case BuiltinFn::kBitCount:
return "bitCount";
case BuiltinFn::kBitfieldExtract:
return "bitfieldExtract";
case BuiltinFn::kBitfieldInsert:
return "bitfieldInsert";
case BuiltinFn::kPackFloat2X16:
return "packFloat2x16";
case BuiltinFn::kUnpackFloat2X16:
return "unpackFloat2x16";
case BuiltinFn::kAbs:
return "abs";
case BuiltinFn::kAny:
return "any";
case BuiltinFn::kAll:
return "all";
case BuiltinFn::kDot:
return "dot";
case BuiltinFn::kMix:
return "mix";
case BuiltinFn::kModf:
return "modf";
case BuiltinFn::kFrexp:
return "frexp";
case BuiltinFn::kTexture:
return "texture";
case BuiltinFn::kTextureOffset:
return "textureOffset";
case BuiltinFn::kTextureLod:
return "textureLod";
case BuiltinFn::kExtTextureLod:
return "extTextureLod";
case BuiltinFn::kTextureLodOffset:
return "textureLodOffset";
case BuiltinFn::kExtTextureLodOffset:
return "extTextureLodOffset";
case BuiltinFn::kTextureGrad:
return "textureGrad";
case BuiltinFn::kTextureGradOffset:
return "textureGradOffset";
case BuiltinFn::kTextureGather:
return "textureGather";
case BuiltinFn::kTextureGatherOffset:
return "textureGatherOffset";
case BuiltinFn::kTextureSize:
return "textureSize";
case BuiltinFn::kImageSize:
return "imageSize";
case BuiltinFn::kTexelFetch:
return "texelFetch";
case BuiltinFn::kImageLoad:
return "imageLoad";
case BuiltinFn::kImageStore:
return "imageStore";
case BuiltinFn::kLessThan:
return "lessThan";
case BuiltinFn::kLessThanEqual:
return "lessThanEqual";
case BuiltinFn::kGreaterThan:
return "greaterThan";
case BuiltinFn::kGreaterThanEqual:
return "greaterThanEqual";
case BuiltinFn::kEqual:
return "equal";
case BuiltinFn::kNotEqual:
return "notEqual";
}
return "<unknown>";
}
tint::core::ir::Instruction::Accesses GetSideEffects(BuiltinFn fn) {
switch (fn) {
case BuiltinFn::kBarrier:
case BuiltinFn::kMemoryBarrierBuffer:
case BuiltinFn::kMemoryBarrierImage:
case BuiltinFn::kAtomicCompSwap:
case BuiltinFn::kAtomicSub:
return core::ir::Instruction::Accesses{core::ir::Instruction::Access::kLoad,
core::ir::Instruction::Access::kStore};
case BuiltinFn::kTexture:
case BuiltinFn::kTextureOffset:
case BuiltinFn::kTextureLod:
case BuiltinFn::kExtTextureLod:
case BuiltinFn::kTextureLodOffset:
case BuiltinFn::kExtTextureLodOffset:
case BuiltinFn::kTextureGrad:
case BuiltinFn::kTextureGradOffset:
case BuiltinFn::kTextureGather:
case BuiltinFn::kTextureGatherOffset:
case BuiltinFn::kTexelFetch:
case BuiltinFn::kImageLoad:
return core::ir::Instruction::Accesses{core::ir::Instruction::Access::kLoad};
case BuiltinFn::kImageStore:
return core::ir::Instruction::Accesses{core::ir::Instruction::Access::kStore};
case BuiltinFn::kLength:
case BuiltinFn::kFloatBitsToInt:
case BuiltinFn::kFloatBitsToUint:
case BuiltinFn::kIntBitsToFloat:
case BuiltinFn::kUintBitsToFloat:
case BuiltinFn::kBitCount:
case BuiltinFn::kBitfieldExtract:
case BuiltinFn::kBitfieldInsert:
case BuiltinFn::kPackFloat2X16:
case BuiltinFn::kUnpackFloat2X16:
case BuiltinFn::kAbs:
case BuiltinFn::kAny:
case BuiltinFn::kAll:
case BuiltinFn::kDot:
case BuiltinFn::kMix:
case BuiltinFn::kModf:
case BuiltinFn::kFrexp:
case BuiltinFn::kLessThan:
case BuiltinFn::kLessThanEqual:
case BuiltinFn::kGreaterThan:
case BuiltinFn::kGreaterThanEqual:
case BuiltinFn::kEqual:
case BuiltinFn::kNotEqual:
case BuiltinFn::kTextureSize:
case BuiltinFn::kImageSize:
case BuiltinFn::kNone:
break;
}
return core::ir::Instruction::Accesses{};
}
} // namespace tint::glsl