diff options
Diffstat (limited to 'gfx/angle/checkout/src/compiler/translator/Operator_autogen.h')
-rw-r--r-- | gfx/angle/checkout/src/compiler/translator/Operator_autogen.h | 578 |
1 files changed, 578 insertions, 0 deletions
diff --git a/gfx/angle/checkout/src/compiler/translator/Operator_autogen.h b/gfx/angle/checkout/src/compiler/translator/Operator_autogen.h new file mode 100644 index 0000000000..153dcb6339 --- /dev/null +++ b/gfx/angle/checkout/src/compiler/translator/Operator_autogen.h @@ -0,0 +1,578 @@ +// GENERATED FILE - DO NOT EDIT. +// Generated by gen_builtin_symbols.py using data from builtin_function_declarations.txt. +// +// Copyright 2021 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// +// Operator_autogen.h: +// Operators used by the high-level (parse tree) representation. + +#ifndef COMPILER_TRANSLATOR_OPERATOR_AUTOGEN_H_ +#define COMPILER_TRANSLATOR_OPERATOR_AUTOGEN_H_ + +#include <stdint.h> + +namespace sh +{ + +enum TOperator : uint16_t +{ + EOpNull, // if in a node, should only mean a node is still being built + + // Call a function defined in the AST. This might be a user-defined function or a function + // inserted by an AST transformation. + EOpCallFunctionInAST, + + // Call an internal helper function with a raw implementation - the implementation can't be + // subject to AST transformations. Raw functions have a few constraints to keep them compatible + // with AST traversers: + // * They should not return arrays. + // * They should not have out parameters. + // + // DEPRECATED; DO NOT USE. TODO: remove this. http://anglebug.com/6059 + // + EOpCallInternalRawFunction, + + // + // Branch (TIntermBranch) + // + + EOpKill, // Fragment only + EOpReturn, + EOpBreak, + EOpContinue, + + // + // Constructor (TIntermAggregate) + // + + EOpConstruct, + + // + // Unary operators with special GLSL syntax (TIntermUnary). + // + + EOpNegative, + EOpPositive, + EOpLogicalNot, + EOpBitwiseNot, + + EOpPostIncrement, + EOpPostDecrement, + EOpPreIncrement, + EOpPreDecrement, + + EOpArrayLength, + + // + // Binary operators with special GLSL syntax (TIntermBinary). + // + + EOpAdd, + EOpSub, + EOpMul, + EOpDiv, + EOpIMod, + + EOpEqual, + EOpNotEqual, + EOpLessThan, + EOpGreaterThan, + EOpLessThanEqual, + EOpGreaterThanEqual, + + EOpComma, + + EOpVectorTimesScalar, + EOpVectorTimesMatrix, + EOpMatrixTimesVector, + EOpMatrixTimesScalar, + EOpMatrixTimesMatrix, + + EOpLogicalOr, + EOpLogicalXor, + EOpLogicalAnd, + + EOpBitShiftLeft, + EOpBitShiftRight, + + EOpBitwiseAnd, + EOpBitwiseXor, + EOpBitwiseOr, + + EOpIndexDirect, + EOpIndexIndirect, + EOpIndexDirectStruct, + EOpIndexDirectInterfaceBlock, + + // + // Moves (TIntermBinary) + // + + EOpAssign, + EOpInitialize, + EOpAddAssign, + EOpSubAssign, + + EOpMulAssign, + EOpVectorTimesMatrixAssign, + EOpVectorTimesScalarAssign, + EOpMatrixTimesScalarAssign, + EOpMatrixTimesMatrixAssign, + + EOpDivAssign, + EOpIModAssign, + EOpBitShiftLeftAssign, + EOpBitShiftRightAssign, + EOpBitwiseAndAssign, + EOpBitwiseXorAssign, + EOpBitwiseOrAssign, + + // Not an op, but a marker for the start of built-in ops. + EOpLastNonBuiltIn = EOpBitwiseOrAssign, + + // + // Built-in functions mapped to operators (either unary (TIntermUnary) or with multiple + // parameters (TIntermAggregate)) + // + + // Group Math + + // Group MathTrigonometric + EOpRadians, // Unary + EOpDegrees, // Unary + EOpSin, // Unary + EOpCos, // Unary + EOpTan, // Unary + EOpAsin, // Unary + EOpAcos, // Unary + EOpAtan, + EOpSinh, // Unary + EOpCosh, // Unary + EOpTanh, // Unary + EOpAsinh, // Unary + EOpAcosh, // Unary + EOpAtanh, // Unary + + // Group MathExponential + EOpPow, + EOpExp, // Unary + EOpLog, // Unary + EOpExp2, // Unary + EOpLog2, // Unary + EOpSqrt, // Unary + EOpInversesqrt, // Unary + + // Group MathCommon + EOpAbs, // Unary + EOpSign, // Unary + EOpFloor, // Unary + EOpTrunc, // Unary + EOpRound, // Unary + EOpRoundEven, // Unary + EOpCeil, // Unary + EOpFract, // Unary + EOpMod, + EOpMin, + EOpMax, + EOpClamp, + EOpMix, + EOpStep, + EOpSmoothstep, + EOpModf, + EOpIsnan, // Unary + EOpIsinf, // Unary + EOpFloatBitsToInt, // Unary + EOpFloatBitsToUint, // Unary + EOpIntBitsToFloat, // Unary + EOpUintBitsToFloat, // Unary + EOpFma, + EOpFrexp, + EOpLdexp, + EOpPackSnorm2x16, // Unary + EOpPackHalf2x16, // Unary + EOpUnpackSnorm2x16, // Unary + EOpUnpackHalf2x16, // Unary + EOpPackUnorm2x16, // Unary + EOpUnpackUnorm2x16, // Unary + EOpPackUnorm4x8, // Unary + EOpPackSnorm4x8, // Unary + EOpUnpackUnorm4x8, // Unary + EOpUnpackSnorm4x8, // Unary + EOpPackDouble2x32, // Unary + EOpUnpackDouble2x32, // Unary + + // Group MathGeometric + EOpLength, // Unary + EOpDistance, + EOpDot, + EOpCross, + EOpNormalize, // Unary + EOpFaceforward, + EOpReflect, + EOpRefract, + + // Group MathGeometricVS + EOpFtransform, + + // Group MathMatrix + EOpMatrixCompMult, + EOpOuterProduct, + EOpTranspose, // Unary + EOpDeterminant, // Unary + EOpInverse, // Unary + + // Group MathVector + EOpLessThanComponentWise, + EOpLessThanEqualComponentWise, + EOpGreaterThanComponentWise, + EOpGreaterThanEqualComponentWise, + EOpEqualComponentWise, + EOpNotEqualComponentWise, + EOpAny, // Unary + EOpAll, // Unary + EOpNotComponentWise, // Unary + + // Group MathInteger + EOpBitfieldExtract, + EOpBitfieldInsert, + EOpBitfieldReverse, // Unary + EOpBitCount, // Unary + EOpFindLSB, // Unary + EOpFindMSB, // Unary + EOpUaddCarry, + EOpUsubBorrow, + EOpUmulExtended, + EOpImulExtended, + + // Group Texture + + // Group TextureFirstVersions + EOpTexture2D, + EOpTexture2DProj, + EOpTextureCube, + EOpTexture1D, + EOpTexture1DProj, + EOpTexture3D, + EOpTexture3DProj, + EOpShadow1D, + EOpShadow1DProj, + EOpShadow2D, + EOpShadow2DProj, + EOpShadow2DEXT, + EOpShadow2DProjEXT, + EOpTexture2DRect, + EOpTexture2DRectProj, + EOpTexture2DGradEXT, + EOpTexture2DProjGradEXT, + EOpTextureCubeGradEXT, + EOpTextureVideoWEBGL, + + // Group TextureFirstVersionsBias + EOpTexture2DBias, + EOpTexture2DProjBias, + EOpTextureCubeBias, + EOpTexture3DBias, + EOpTexture3DProjBias, + EOpTexture1DBias, + EOpTexture1DProjBias, + EOpShadow1DBias, + EOpShadow1DProjBias, + EOpShadow2DBias, + EOpShadow2DProjBias, + + // Group TextureFirstVersionsLod + EOpTexture2DLod, + EOpTexture2DProjLod, + EOpTextureCubeLod, + EOpTexture1DLod, + EOpTexture1DProjLod, + EOpShadow1DLod, + EOpShadow1DProjLod, + EOpShadow2DLod, + EOpShadow2DProjLod, + EOpTexture3DLod, + EOpTexture3DProjLod, + + // Group TextureFirstVersionsLodVS + EOpTexture2DLodVS, + EOpTexture2DProjLodVS, + EOpTextureCubeLodVS, + + // Group TextureFirstVersionsLodFS + EOpTexture2DLodEXTFS, + EOpTexture2DProjLodEXTFS, + EOpTextureCubeLodEXTFS, + + // Group TextureNoBias + EOpTexture, + EOpTextureProj, + EOpTextureLod, + EOpTextureSize, + EOpTextureProjLod, + EOpTexelFetch, + EOpTextureGrad, + EOpTextureProjGrad, + EOpTextureQueryLevels, + EOpTextureSamples, + + // Group TextureBias + EOpTextureBias, + EOpTextureProjBias, + + // Group TextureQueryLod + EOpTextureQueryLod, + + // Group TextureOffsetNoBias + EOpTextureOffset, + EOpTextureProjOffset, + EOpTextureLodOffset, + EOpTextureProjLodOffset, + EOpTexelFetchOffset, + EOpTextureGradOffset, + EOpTextureProjGradOffset, + + // Group TextureOffsetBias + EOpTextureOffsetBias, + EOpTextureProjOffsetBias, + + // Group TextureGather + EOpTextureGather, + + // Group TextureGatherOffset + + // Group TextureGatherOffsetNoComp + EOpTextureGatherOffset, + + // Group TextureGatherOffsetComp + EOpTextureGatherOffsetComp, + + // Group TextureGatherOffsets + + // Group TextureGatherOffsetsNoComp + EOpTextureGatherOffsets, + + // Group TextureGatherOffsetsComp + EOpTextureGatherOffsetsComp, + + // Group EXT_YUV_target + EOpRgb_2_yuv, + EOpYuv_2_rgb, + + // Group DerivativesFS + EOpDFdx, + EOpDFdy, + EOpFwidth, + EOpDFdxFine, + EOpDFdyFine, + EOpDFdxCoarse, + EOpDFdyCoarse, + EOpFwidthFine, + EOpFwidthCoarse, + + // Group InterpolationFS + EOpInterpolateAtCentroid, + EOpInterpolateAtSample, + EOpInterpolateAtOffset, + + // Group AtomicCounter + EOpAtomicCounter, + EOpAtomicCounterIncrement, + EOpAtomicCounterDecrement, + EOpAtomicCounterAdd, + EOpAtomicCounterSubtract, + EOpAtomicCounterMin, + EOpAtomicCounterMax, + EOpAtomicCounterAnd, + EOpAtomicCounterOr, + EOpAtomicCounterXor, + EOpAtomicCounterExchange, + EOpAtomicCounterCompSwap, + + // Group AtomicMemory + EOpAtomicAdd, + EOpAtomicMin, + EOpAtomicMax, + EOpAtomicAnd, + EOpAtomicOr, + EOpAtomicXor, + EOpAtomicExchange, + EOpAtomicCompSwap, + + // Group Image + EOpImageSize, + EOpImageSamples, + + // Group ImageStore + EOpImageStore, + + // Group ImageLoad + EOpImageLoad, + + // Group ImageAtomic + EOpImageAtomicAdd, + EOpImageAtomicMin, + EOpImageAtomicMax, + EOpImageAtomicAnd, + EOpImageAtomicOr, + EOpImageAtomicXor, + EOpImageAtomicExchange, + EOpImageAtomicCompSwap, + + // Group PixelLocal + + // Group PixelLocalLoad + EOpPixelLocalLoadANGLE, + + // Group PixelLocalStore + EOpPixelLocalStoreANGLE, + + // Group FragmentSynchronization + EOpBeginInvocationInterlockNV, + EOpEndInvocationInterlockNV, + EOpBeginFragmentShaderOrderingINTEL, + EOpBeginInvocationInterlockARB, + EOpEndInvocationInterlockARB, + + // Group Noise + EOpNoise1, + EOpNoise2, + EOpNoise3, + EOpNoise4, + + // Group Barrier + EOpMemoryBarrier, + EOpMemoryBarrierAtomicCounter, + EOpMemoryBarrierBuffer, + EOpMemoryBarrierImage, + + // Group ESSL310CS + EOpBarrier, + EOpMemoryBarrierShared, + EOpGroupMemoryBarrier, + + // Group ESSL310TCS + EOpBarrierTCS, + + // Group GS + EOpEmitVertex, + EOpEndPrimitive, + EOpEmitStreamVertex, + EOpEndStreamPrimitive, + + // Group SubpassInput + EOpSubpassLoad, + + // Group ShaderInvocationGroup + EOpAnyInvocation, + EOpAllInvocations, + EOpAllInvocationsEqual, +}; + +// Returns the string corresponding to the operator in GLSL. For built-in functions use the +// function name directly. +const char *GetOperatorString(TOperator op); + +// Say whether or not a binary or unary operation changes the value of a variable. +bool IsAssignment(TOperator op); + +namespace BuiltInGroup +{ +static inline bool IsBuiltIn(TOperator op) +{ + return op > EOpLastNonBuiltIn; +} +static inline bool IsMath(TOperator op) +{ + return op >= EOpRadians && op <= EOpImulExtended; +} +static inline bool IsTextureOffsetNoBias(TOperator op) +{ + return op >= EOpTextureOffset && op <= EOpTextureProjGradOffset; +} +static inline bool IsTextureOffsetBias(TOperator op) +{ + return op >= EOpTextureOffsetBias && op <= EOpTextureProjOffsetBias; +} +static inline bool IsTextureGatherOffsetNoComp(TOperator op) +{ + return op >= EOpTextureGatherOffset && op <= EOpTextureGatherOffset; +} +static inline bool IsTextureGatherOffsetComp(TOperator op) +{ + return op >= EOpTextureGatherOffsetComp && op <= EOpTextureGatherOffsetComp; +} +static inline bool IsTextureGatherOffset(TOperator op) +{ + return op >= EOpTextureGatherOffset && op <= EOpTextureGatherOffsetComp; +} +static inline bool IsTextureGatherOffsetsNoComp(TOperator op) +{ + return op >= EOpTextureGatherOffsets && op <= EOpTextureGatherOffsets; +} +static inline bool IsTextureGatherOffsetsComp(TOperator op) +{ + return op >= EOpTextureGatherOffsetsComp && op <= EOpTextureGatherOffsetsComp; +} +static inline bool IsTextureGatherOffsets(TOperator op) +{ + return op >= EOpTextureGatherOffsets && op <= EOpTextureGatherOffsetsComp; +} +static inline bool IsTextureGather(TOperator op) +{ + return op >= EOpTextureGather && op <= EOpTextureGatherOffsetsComp; +} +static inline bool IsTexture(TOperator op) +{ + return op >= EOpTexture2D && op <= EOpTextureGatherOffsetsComp; +} +static inline bool IsDerivativesFS(TOperator op) +{ + return op >= EOpDFdx && op <= EOpFwidthCoarse; +} +static inline bool IsInterpolationFS(TOperator op) +{ + return op >= EOpInterpolateAtCentroid && op <= EOpInterpolateAtOffset; +} +static inline bool IsAtomicCounter(TOperator op) +{ + return op >= EOpAtomicCounter && op <= EOpAtomicCounterCompSwap; +} +static inline bool IsAtomicMemory(TOperator op) +{ + return op >= EOpAtomicAdd && op <= EOpAtomicCompSwap; +} +static inline bool IsImageStore(TOperator op) +{ + return op >= EOpImageStore && op <= EOpImageStore; +} +static inline bool IsImageLoad(TOperator op) +{ + return op >= EOpImageLoad && op <= EOpImageLoad; +} +static inline bool IsImageAtomic(TOperator op) +{ + return op >= EOpImageAtomicAdd && op <= EOpImageAtomicCompSwap; +} +static inline bool IsImage(TOperator op) +{ + return op >= EOpImageSize && op <= EOpImageAtomicCompSwap; +} +static inline bool IsPixelLocalLoad(TOperator op) +{ + return op >= EOpPixelLocalLoadANGLE && op <= EOpPixelLocalLoadANGLE; +} +static inline bool IsPixelLocalStore(TOperator op) +{ + return op >= EOpPixelLocalStoreANGLE && op <= EOpPixelLocalStoreANGLE; +} +static inline bool IsPixelLocal(TOperator op) +{ + return op >= EOpPixelLocalLoadANGLE && op <= EOpPixelLocalStoreANGLE; +} +} // namespace BuiltInGroup + +} // namespace sh + +#endif // COMPILER_TRANSLATOR_OPERATOR_AUTOGEN_H_ |