Edit

kc3-lang/angle/src/compiler/translator/Operator_autogen.h

Branch :

  • Show log

    Commit

  • Author : Shahbaz Youssefi
    Date : 2021-08-04 10:07:47
    Hash : 061188a7
    Message : Translator: General clean up General clean up done as part of other changes, split to simplify review. Bug: angleproject:4889 Bug: angleproject:6132 Change-Id: Iade9954d187a759be9edd0e3754be007f4133c56 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3071598 Reviewed-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>

  • src/compiler/translator/Operator_autogen.h
  • // 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 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;
    }
    }  // namespace BuiltInGroup
    
    }  // namespace sh
    
    #endif  // COMPILER_TRANSLATOR_OPERATOR_AUTOGEN_H_