tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

Operator_autogen.h (13469B)


      1 // GENERATED FILE - DO NOT EDIT.
      2 // Generated by gen_builtin_symbols.py using data from builtin_function_declarations.txt.
      3 //
      4 // Copyright 2021 The ANGLE Project Authors. All rights reserved.
      5 // Use of this source code is governed by a BSD-style license that can be
      6 // found in the LICENSE file.
      7 //
      8 // Operator_autogen.h:
      9 //   Operators used by the high-level (parse tree) representation.
     10 
     11 #ifndef COMPILER_TRANSLATOR_OPERATOR_AUTOGEN_H_
     12 #define COMPILER_TRANSLATOR_OPERATOR_AUTOGEN_H_
     13 
     14 #include <stdint.h>
     15 
     16 namespace sh
     17 {
     18 
     19 enum TOperator : uint16_t
     20 {
     21    EOpNull,  // if in a node, should only mean a node is still being built
     22 
     23    // Call a function defined in the AST. This might be a user-defined function or a function
     24    // inserted by an AST transformation.
     25    EOpCallFunctionInAST,
     26 
     27    // Call an internal helper function with a raw implementation - the implementation can't be
     28    // subject to AST transformations. Raw functions have a few constraints to keep them compatible
     29    // with AST traversers:
     30    // * They should not return arrays.
     31    // * They should not have out parameters.
     32    //
     33    // DEPRECATED; DO NOT USE.  TODO: remove this.  http://anglebug.com/6059
     34    //
     35    EOpCallInternalRawFunction,
     36 
     37    //
     38    // Branch (TIntermBranch)
     39    //
     40 
     41    EOpKill,  // Fragment only
     42    EOpReturn,
     43    EOpBreak,
     44    EOpContinue,
     45 
     46    //
     47    // Constructor (TIntermAggregate)
     48    //
     49 
     50    EOpConstruct,
     51 
     52    //
     53    // Unary operators with special GLSL syntax (TIntermUnary).
     54    //
     55 
     56    EOpNegative,
     57    EOpPositive,
     58    EOpLogicalNot,
     59    EOpBitwiseNot,
     60 
     61    EOpPostIncrement,
     62    EOpPostDecrement,
     63    EOpPreIncrement,
     64    EOpPreDecrement,
     65 
     66    EOpArrayLength,
     67 
     68    //
     69    // Binary operators with special GLSL syntax (TIntermBinary).
     70    //
     71 
     72    EOpAdd,
     73    EOpSub,
     74    EOpMul,
     75    EOpDiv,
     76    EOpIMod,
     77 
     78    EOpEqual,
     79    EOpNotEqual,
     80    EOpLessThan,
     81    EOpGreaterThan,
     82    EOpLessThanEqual,
     83    EOpGreaterThanEqual,
     84 
     85    EOpComma,
     86 
     87    EOpVectorTimesScalar,
     88    EOpVectorTimesMatrix,
     89    EOpMatrixTimesVector,
     90    EOpMatrixTimesScalar,
     91    EOpMatrixTimesMatrix,
     92 
     93    EOpLogicalOr,
     94    EOpLogicalXor,
     95    EOpLogicalAnd,
     96 
     97    EOpBitShiftLeft,
     98    EOpBitShiftRight,
     99 
    100    EOpBitwiseAnd,
    101    EOpBitwiseXor,
    102    EOpBitwiseOr,
    103 
    104    EOpIndexDirect,
    105    EOpIndexIndirect,
    106    EOpIndexDirectStruct,
    107    EOpIndexDirectInterfaceBlock,
    108 
    109    //
    110    // Moves (TIntermBinary)
    111    //
    112 
    113    EOpAssign,
    114    EOpInitialize,
    115    EOpAddAssign,
    116    EOpSubAssign,
    117 
    118    EOpMulAssign,
    119    EOpVectorTimesMatrixAssign,
    120    EOpVectorTimesScalarAssign,
    121    EOpMatrixTimesScalarAssign,
    122    EOpMatrixTimesMatrixAssign,
    123 
    124    EOpDivAssign,
    125    EOpIModAssign,
    126    EOpBitShiftLeftAssign,
    127    EOpBitShiftRightAssign,
    128    EOpBitwiseAndAssign,
    129    EOpBitwiseXorAssign,
    130    EOpBitwiseOrAssign,
    131 
    132    // Not an op, but a marker for the start of built-in ops.
    133    EOpLastNonBuiltIn = EOpBitwiseOrAssign,
    134 
    135    //
    136    // Built-in functions mapped to operators (either unary (TIntermUnary) or with multiple
    137    // parameters (TIntermAggregate))
    138    //
    139 
    140    // Group Math
    141 
    142    // Group MathTrigonometric
    143    EOpRadians,  // Unary
    144    EOpDegrees,  // Unary
    145    EOpSin,      // Unary
    146    EOpCos,      // Unary
    147    EOpTan,      // Unary
    148    EOpAsin,     // Unary
    149    EOpAcos,     // Unary
    150    EOpAtan,
    151    EOpSinh,   // Unary
    152    EOpCosh,   // Unary
    153    EOpTanh,   // Unary
    154    EOpAsinh,  // Unary
    155    EOpAcosh,  // Unary
    156    EOpAtanh,  // Unary
    157 
    158    // Group MathExponential
    159    EOpPow,
    160    EOpExp,          // Unary
    161    EOpLog,          // Unary
    162    EOpExp2,         // Unary
    163    EOpLog2,         // Unary
    164    EOpSqrt,         // Unary
    165    EOpInversesqrt,  // Unary
    166 
    167    // Group MathCommon
    168    EOpAbs,        // Unary
    169    EOpSign,       // Unary
    170    EOpFloor,      // Unary
    171    EOpTrunc,      // Unary
    172    EOpRound,      // Unary
    173    EOpRoundEven,  // Unary
    174    EOpCeil,       // Unary
    175    EOpFract,      // Unary
    176    EOpMod,
    177    EOpMin,
    178    EOpMax,
    179    EOpClamp,
    180    EOpMix,
    181    EOpStep,
    182    EOpSmoothstep,
    183    EOpModf,
    184    EOpIsnan,            // Unary
    185    EOpIsinf,            // Unary
    186    EOpFloatBitsToInt,   // Unary
    187    EOpFloatBitsToUint,  // Unary
    188    EOpIntBitsToFloat,   // Unary
    189    EOpUintBitsToFloat,  // Unary
    190    EOpFma,
    191    EOpFrexp,
    192    EOpLdexp,
    193    EOpPackSnorm2x16,     // Unary
    194    EOpPackHalf2x16,      // Unary
    195    EOpUnpackSnorm2x16,   // Unary
    196    EOpUnpackHalf2x16,    // Unary
    197    EOpPackUnorm2x16,     // Unary
    198    EOpUnpackUnorm2x16,   // Unary
    199    EOpPackUnorm4x8,      // Unary
    200    EOpPackSnorm4x8,      // Unary
    201    EOpUnpackUnorm4x8,    // Unary
    202    EOpUnpackSnorm4x8,    // Unary
    203    EOpPackDouble2x32,    // Unary
    204    EOpUnpackDouble2x32,  // Unary
    205 
    206    // Group MathGeometric
    207    EOpLength,  // Unary
    208    EOpDistance,
    209    EOpDot,
    210    EOpCross,
    211    EOpNormalize,  // Unary
    212    EOpFaceforward,
    213    EOpReflect,
    214    EOpRefract,
    215 
    216    // Group MathGeometricVS
    217    EOpFtransform,
    218 
    219    // Group MathMatrix
    220    EOpMatrixCompMult,
    221    EOpOuterProduct,
    222    EOpTranspose,    // Unary
    223    EOpDeterminant,  // Unary
    224    EOpInverse,      // Unary
    225 
    226    // Group MathVector
    227    EOpLessThanComponentWise,
    228    EOpLessThanEqualComponentWise,
    229    EOpGreaterThanComponentWise,
    230    EOpGreaterThanEqualComponentWise,
    231    EOpEqualComponentWise,
    232    EOpNotEqualComponentWise,
    233    EOpAny,               // Unary
    234    EOpAll,               // Unary
    235    EOpNotComponentWise,  // Unary
    236 
    237    // Group MathInteger
    238    EOpBitfieldExtract,
    239    EOpBitfieldInsert,
    240    EOpBitfieldReverse,  // Unary
    241    EOpBitCount,         // Unary
    242    EOpFindLSB,          // Unary
    243    EOpFindMSB,          // Unary
    244    EOpUaddCarry,
    245    EOpUsubBorrow,
    246    EOpUmulExtended,
    247    EOpImulExtended,
    248 
    249    // Group Texture
    250 
    251    // Group TextureFirstVersions
    252    EOpTexture2D,
    253    EOpTexture2DProj,
    254    EOpTextureCube,
    255    EOpTexture1D,
    256    EOpTexture1DProj,
    257    EOpTexture3D,
    258    EOpTexture3DProj,
    259    EOpShadow1D,
    260    EOpShadow1DProj,
    261    EOpShadow2D,
    262    EOpShadow2DProj,
    263    EOpShadow2DEXT,
    264    EOpShadow2DProjEXT,
    265    EOpTexture2DRect,
    266    EOpTexture2DRectProj,
    267    EOpTexture2DGradEXT,
    268    EOpTexture2DProjGradEXT,
    269    EOpTextureCubeGradEXT,
    270    EOpTextureVideoWEBGL,
    271 
    272    // Group TextureFirstVersionsBias
    273    EOpTexture2DBias,
    274    EOpTexture2DProjBias,
    275    EOpTextureCubeBias,
    276    EOpTexture3DBias,
    277    EOpTexture3DProjBias,
    278    EOpTexture1DBias,
    279    EOpTexture1DProjBias,
    280    EOpShadow1DBias,
    281    EOpShadow1DProjBias,
    282    EOpShadow2DBias,
    283    EOpShadow2DProjBias,
    284 
    285    // Group TextureFirstVersionsLod
    286    EOpTexture2DLod,
    287    EOpTexture2DProjLod,
    288    EOpTextureCubeLod,
    289    EOpTexture1DLod,
    290    EOpTexture1DProjLod,
    291    EOpShadow1DLod,
    292    EOpShadow1DProjLod,
    293    EOpShadow2DLod,
    294    EOpShadow2DProjLod,
    295    EOpTexture3DLod,
    296    EOpTexture3DProjLod,
    297 
    298    // Group TextureFirstVersionsLodVS
    299    EOpTexture2DLodVS,
    300    EOpTexture2DProjLodVS,
    301    EOpTextureCubeLodVS,
    302 
    303    // Group TextureFirstVersionsLodFS
    304    EOpTexture2DLodEXTFS,
    305    EOpTexture2DProjLodEXTFS,
    306    EOpTextureCubeLodEXTFS,
    307 
    308    // Group TextureNoBias
    309    EOpTexture,
    310    EOpTextureProj,
    311    EOpTextureLod,
    312    EOpTextureSize,
    313    EOpTextureProjLod,
    314    EOpTexelFetch,
    315    EOpTextureGrad,
    316    EOpTextureProjGrad,
    317    EOpTextureQueryLevels,
    318    EOpTextureSamples,
    319 
    320    // Group TextureBias
    321    EOpTextureBias,
    322    EOpTextureProjBias,
    323 
    324    // Group TextureQueryLod
    325    EOpTextureQueryLod,
    326 
    327    // Group TextureOffsetNoBias
    328    EOpTextureOffset,
    329    EOpTextureProjOffset,
    330    EOpTextureLodOffset,
    331    EOpTextureProjLodOffset,
    332    EOpTexelFetchOffset,
    333    EOpTextureGradOffset,
    334    EOpTextureProjGradOffset,
    335 
    336    // Group TextureOffsetBias
    337    EOpTextureOffsetBias,
    338    EOpTextureProjOffsetBias,
    339 
    340    // Group TextureGather
    341    EOpTextureGather,
    342 
    343    // Group TextureGatherOffset
    344 
    345    // Group TextureGatherOffsetNoComp
    346    EOpTextureGatherOffset,
    347 
    348    // Group TextureGatherOffsetComp
    349    EOpTextureGatherOffsetComp,
    350 
    351    // Group TextureGatherOffsets
    352 
    353    // Group TextureGatherOffsetsNoComp
    354    EOpTextureGatherOffsets,
    355 
    356    // Group TextureGatherOffsetsComp
    357    EOpTextureGatherOffsetsComp,
    358 
    359    // Group EXT_YUV_target
    360    EOpRgb_2_yuv,
    361    EOpYuv_2_rgb,
    362 
    363    // Group DerivativesFS
    364    EOpDFdx,
    365    EOpDFdy,
    366    EOpFwidth,
    367    EOpDFdxFine,
    368    EOpDFdyFine,
    369    EOpDFdxCoarse,
    370    EOpDFdyCoarse,
    371    EOpFwidthFine,
    372    EOpFwidthCoarse,
    373 
    374    // Group InterpolationFS
    375    EOpInterpolateAtCentroid,
    376    EOpInterpolateAtSample,
    377    EOpInterpolateAtOffset,
    378 
    379    // Group AtomicCounter
    380    EOpAtomicCounter,
    381    EOpAtomicCounterIncrement,
    382    EOpAtomicCounterDecrement,
    383    EOpAtomicCounterAdd,
    384    EOpAtomicCounterSubtract,
    385    EOpAtomicCounterMin,
    386    EOpAtomicCounterMax,
    387    EOpAtomicCounterAnd,
    388    EOpAtomicCounterOr,
    389    EOpAtomicCounterXor,
    390    EOpAtomicCounterExchange,
    391    EOpAtomicCounterCompSwap,
    392 
    393    // Group AtomicMemory
    394    EOpAtomicAdd,
    395    EOpAtomicMin,
    396    EOpAtomicMax,
    397    EOpAtomicAnd,
    398    EOpAtomicOr,
    399    EOpAtomicXor,
    400    EOpAtomicExchange,
    401    EOpAtomicCompSwap,
    402 
    403    // Group Image
    404    EOpImageSize,
    405    EOpImageSamples,
    406 
    407    // Group ImageStore
    408    EOpImageStore,
    409 
    410    // Group ImageLoad
    411    EOpImageLoad,
    412 
    413    // Group ImageAtomic
    414    EOpImageAtomicAdd,
    415    EOpImageAtomicMin,
    416    EOpImageAtomicMax,
    417    EOpImageAtomicAnd,
    418    EOpImageAtomicOr,
    419    EOpImageAtomicXor,
    420    EOpImageAtomicExchange,
    421    EOpImageAtomicCompSwap,
    422 
    423    // Group PixelLocal
    424 
    425    // Group PixelLocalLoad
    426    EOpPixelLocalLoadANGLE,
    427 
    428    // Group PixelLocalStore
    429    EOpPixelLocalStoreANGLE,
    430 
    431    // Group FragmentSynchronization
    432    EOpBeginInvocationInterlockNV,
    433    EOpEndInvocationInterlockNV,
    434    EOpBeginFragmentShaderOrderingINTEL,
    435    EOpBeginInvocationInterlockARB,
    436    EOpEndInvocationInterlockARB,
    437 
    438    // Group Noise
    439    EOpNoise1,
    440    EOpNoise2,
    441    EOpNoise3,
    442    EOpNoise4,
    443 
    444    // Group Barrier
    445    EOpMemoryBarrier,
    446    EOpMemoryBarrierAtomicCounter,
    447    EOpMemoryBarrierBuffer,
    448    EOpMemoryBarrierImage,
    449 
    450    // Group ESSL310CS
    451    EOpBarrier,
    452    EOpMemoryBarrierShared,
    453    EOpGroupMemoryBarrier,
    454 
    455    // Group ESSL310TCS
    456    EOpBarrierTCS,
    457 
    458    // Group GS
    459    EOpEmitVertex,
    460    EOpEndPrimitive,
    461    EOpEmitStreamVertex,
    462    EOpEndStreamPrimitive,
    463 
    464    // Group SubpassInput
    465    EOpSubpassLoad,
    466 
    467    // Group ShaderInvocationGroup
    468    EOpAnyInvocation,
    469    EOpAllInvocations,
    470    EOpAllInvocationsEqual,
    471 };
    472 
    473 // Returns the string corresponding to the operator in GLSL.  For built-in functions use the
    474 // function name directly.
    475 const char *GetOperatorString(TOperator op);
    476 
    477 // Say whether or not a binary or unary operation changes the value of a variable.
    478 bool IsAssignment(TOperator op);
    479 
    480 namespace BuiltInGroup
    481 {
    482 static inline bool IsBuiltIn(TOperator op)
    483 {
    484    return op > EOpLastNonBuiltIn;
    485 }
    486 static inline bool IsMath(TOperator op)
    487 {
    488    return op >= EOpRadians && op <= EOpImulExtended;
    489 }
    490 static inline bool IsTextureOffsetNoBias(TOperator op)
    491 {
    492    return op >= EOpTextureOffset && op <= EOpTextureProjGradOffset;
    493 }
    494 static inline bool IsTextureOffsetBias(TOperator op)
    495 {
    496    return op >= EOpTextureOffsetBias && op <= EOpTextureProjOffsetBias;
    497 }
    498 static inline bool IsTextureGatherOffsetNoComp(TOperator op)
    499 {
    500    return op >= EOpTextureGatherOffset && op <= EOpTextureGatherOffset;
    501 }
    502 static inline bool IsTextureGatherOffsetComp(TOperator op)
    503 {
    504    return op >= EOpTextureGatherOffsetComp && op <= EOpTextureGatherOffsetComp;
    505 }
    506 static inline bool IsTextureGatherOffset(TOperator op)
    507 {
    508    return op >= EOpTextureGatherOffset && op <= EOpTextureGatherOffsetComp;
    509 }
    510 static inline bool IsTextureGatherOffsetsNoComp(TOperator op)
    511 {
    512    return op >= EOpTextureGatherOffsets && op <= EOpTextureGatherOffsets;
    513 }
    514 static inline bool IsTextureGatherOffsetsComp(TOperator op)
    515 {
    516    return op >= EOpTextureGatherOffsetsComp && op <= EOpTextureGatherOffsetsComp;
    517 }
    518 static inline bool IsTextureGatherOffsets(TOperator op)
    519 {
    520    return op >= EOpTextureGatherOffsets && op <= EOpTextureGatherOffsetsComp;
    521 }
    522 static inline bool IsTextureGather(TOperator op)
    523 {
    524    return op >= EOpTextureGather && op <= EOpTextureGatherOffsetsComp;
    525 }
    526 static inline bool IsTexture(TOperator op)
    527 {
    528    return op >= EOpTexture2D && op <= EOpTextureGatherOffsetsComp;
    529 }
    530 static inline bool IsDerivativesFS(TOperator op)
    531 {
    532    return op >= EOpDFdx && op <= EOpFwidthCoarse;
    533 }
    534 static inline bool IsInterpolationFS(TOperator op)
    535 {
    536    return op >= EOpInterpolateAtCentroid && op <= EOpInterpolateAtOffset;
    537 }
    538 static inline bool IsAtomicCounter(TOperator op)
    539 {
    540    return op >= EOpAtomicCounter && op <= EOpAtomicCounterCompSwap;
    541 }
    542 static inline bool IsAtomicMemory(TOperator op)
    543 {
    544    return op >= EOpAtomicAdd && op <= EOpAtomicCompSwap;
    545 }
    546 static inline bool IsImageStore(TOperator op)
    547 {
    548    return op >= EOpImageStore && op <= EOpImageStore;
    549 }
    550 static inline bool IsImageLoad(TOperator op)
    551 {
    552    return op >= EOpImageLoad && op <= EOpImageLoad;
    553 }
    554 static inline bool IsImageAtomic(TOperator op)
    555 {
    556    return op >= EOpImageAtomicAdd && op <= EOpImageAtomicCompSwap;
    557 }
    558 static inline bool IsImage(TOperator op)
    559 {
    560    return op >= EOpImageSize && op <= EOpImageAtomicCompSwap;
    561 }
    562 static inline bool IsPixelLocalLoad(TOperator op)
    563 {
    564    return op >= EOpPixelLocalLoadANGLE && op <= EOpPixelLocalLoadANGLE;
    565 }
    566 static inline bool IsPixelLocalStore(TOperator op)
    567 {
    568    return op >= EOpPixelLocalStoreANGLE && op <= EOpPixelLocalStoreANGLE;
    569 }
    570 static inline bool IsPixelLocal(TOperator op)
    571 {
    572    return op >= EOpPixelLocalLoadANGLE && op <= EOpPixelLocalStoreANGLE;
    573 }
    574 }  // namespace BuiltInGroup
    575 
    576 }  // namespace sh
    577 
    578 #endif  // COMPILER_TRANSLATOR_OPERATOR_AUTOGEN_H_