Home | History | Annotate | Download | only in spirv
      1 /*
      2 ** Copyright (c) 2014-2015 The Khronos Group Inc.
      3 **
      4 ** Permission is hereby granted, free of charge, to any person obtaining a copy
      5 ** of this software and/or associated documentation files (the "Materials"),
      6 ** to deal in the Materials without restriction, including without limitation
      7 ** the rights to use, copy, modify, merge, publish, distribute, sublicense,
      8 ** and/or sell copies of the Materials, and to permit persons to whom the
      9 ** Materials are furnished to do so, subject to the following conditions:
     10 **
     11 ** The above copyright notice and this permission notice shall be included in
     12 ** all copies or substantial portions of the Materials.
     13 **
     14 ** MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
     15 ** STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
     16 ** HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/
     17 **
     18 ** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
     19 ** OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
     20 ** FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
     21 ** THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
     22 ** LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
     23 ** FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
     24 ** IN THE MATERIALS.
     25 */
     26 
     27 /*
     28 ** This header is automatically generated by the same tool that creates
     29 ** the Binary Section of the SPIR-V specification.
     30 */
     31 
     32 /*
     33 ** Enumeration tokens for SPIR-V, in various styles:
     34 **   C, C++, C++11, JSON, Lua, Python
     35 **
     36 ** - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
     37 ** - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
     38 ** - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL
     39 ** - Lua will use tables, e.g.: spv.SourceLanguage.GLSL
     40 ** - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']
     41 **
     42 ** Some tokens act like mask values, which can be OR'd together,
     43 ** while others are mutually exclusive.  The mask-like ones have
     44 ** "Mask" in their name, and a parallel enum that has the shift
     45 ** amount (1 << x) for each corresponding enumerant.
     46 */
     47 
     48 #ifndef spirv_H
     49 #define spirv_H
     50 
     51 typedef unsigned int SpvId;
     52 
     53 #define SPV_VERSION 0x10000
     54 #define SPV_REVISION 2
     55 
     56 static const unsigned int SpvMagicNumber = 0x07230203;
     57 static const unsigned int SpvVersion = 0x00010000;
     58 static const unsigned int SpvRevision = 2;
     59 static const unsigned int SpvOpCodeMask = 0xffff;
     60 static const unsigned int SpvWordCountShift = 16;
     61 
     62 typedef enum SpvSourceLanguage_ {
     63     SpvSourceLanguageUnknown = 0,
     64     SpvSourceLanguageESSL = 1,
     65     SpvSourceLanguageGLSL = 2,
     66     SpvSourceLanguageOpenCL_C = 3,
     67     SpvSourceLanguageOpenCL_CPP = 4,
     68 } SpvSourceLanguage;
     69 
     70 typedef enum SpvExecutionModel_ {
     71     SpvExecutionModelVertex = 0,
     72     SpvExecutionModelTessellationControl = 1,
     73     SpvExecutionModelTessellationEvaluation = 2,
     74     SpvExecutionModelGeometry = 3,
     75     SpvExecutionModelFragment = 4,
     76     SpvExecutionModelGLCompute = 5,
     77     SpvExecutionModelKernel = 6,
     78 } SpvExecutionModel;
     79 
     80 typedef enum SpvAddressingModel_ {
     81     SpvAddressingModelLogical = 0,
     82     SpvAddressingModelPhysical32 = 1,
     83     SpvAddressingModelPhysical64 = 2,
     84 } SpvAddressingModel;
     85 
     86 typedef enum SpvMemoryModel_ {
     87     SpvMemoryModelSimple = 0,
     88     SpvMemoryModelGLSL450 = 1,
     89     SpvMemoryModelOpenCL = 2,
     90 } SpvMemoryModel;
     91 
     92 typedef enum SpvExecutionMode_ {
     93     SpvExecutionModeInvocations = 0,
     94     SpvExecutionModeSpacingEqual = 1,
     95     SpvExecutionModeSpacingFractionalEven = 2,
     96     SpvExecutionModeSpacingFractionalOdd = 3,
     97     SpvExecutionModeVertexOrderCw = 4,
     98     SpvExecutionModeVertexOrderCcw = 5,
     99     SpvExecutionModePixelCenterInteger = 6,
    100     SpvExecutionModeOriginUpperLeft = 7,
    101     SpvExecutionModeOriginLowerLeft = 8,
    102     SpvExecutionModeEarlyFragmentTests = 9,
    103     SpvExecutionModePointMode = 10,
    104     SpvExecutionModeXfb = 11,
    105     SpvExecutionModeDepthReplacing = 12,
    106     SpvExecutionModeDepthGreater = 14,
    107     SpvExecutionModeDepthLess = 15,
    108     SpvExecutionModeDepthUnchanged = 16,
    109     SpvExecutionModeLocalSize = 17,
    110     SpvExecutionModeLocalSizeHint = 18,
    111     SpvExecutionModeInputPoints = 19,
    112     SpvExecutionModeInputLines = 20,
    113     SpvExecutionModeInputLinesAdjacency = 21,
    114     SpvExecutionModeTriangles = 22,
    115     SpvExecutionModeInputTrianglesAdjacency = 23,
    116     SpvExecutionModeQuads = 24,
    117     SpvExecutionModeIsolines = 25,
    118     SpvExecutionModeOutputVertices = 26,
    119     SpvExecutionModeOutputPoints = 27,
    120     SpvExecutionModeOutputLineStrip = 28,
    121     SpvExecutionModeOutputTriangleStrip = 29,
    122     SpvExecutionModeVecTypeHint = 30,
    123     SpvExecutionModeContractionOff = 31,
    124 } SpvExecutionMode;
    125 
    126 typedef enum SpvStorageClass_ {
    127     SpvStorageClassUniformConstant = 0,
    128     SpvStorageClassInput = 1,
    129     SpvStorageClassUniform = 2,
    130     SpvStorageClassOutput = 3,
    131     SpvStorageClassWorkgroup = 4,
    132     SpvStorageClassCrossWorkgroup = 5,
    133     SpvStorageClassPrivate = 6,
    134     SpvStorageClassFunction = 7,
    135     SpvStorageClassGeneric = 8,
    136     SpvStorageClassPushConstant = 9,
    137     SpvStorageClassAtomicCounter = 10,
    138     SpvStorageClassImage = 11,
    139 } SpvStorageClass;
    140 
    141 typedef enum SpvDim_ {
    142     SpvDim1D = 0,
    143     SpvDim2D = 1,
    144     SpvDim3D = 2,
    145     SpvDimCube = 3,
    146     SpvDimRect = 4,
    147     SpvDimBuffer = 5,
    148     SpvDimSubpassData = 6,
    149 } SpvDim;
    150 
    151 typedef enum SpvSamplerAddressingMode_ {
    152     SpvSamplerAddressingModeNone = 0,
    153     SpvSamplerAddressingModeClampToEdge = 1,
    154     SpvSamplerAddressingModeClamp = 2,
    155     SpvSamplerAddressingModeRepeat = 3,
    156     SpvSamplerAddressingModeRepeatMirrored = 4,
    157 } SpvSamplerAddressingMode;
    158 
    159 typedef enum SpvSamplerFilterMode_ {
    160     SpvSamplerFilterModeNearest = 0,
    161     SpvSamplerFilterModeLinear = 1,
    162 } SpvSamplerFilterMode;
    163 
    164 typedef enum SpvImageFormat_ {
    165     SpvImageFormatUnknown = 0,
    166     SpvImageFormatRgba32f = 1,
    167     SpvImageFormatRgba16f = 2,
    168     SpvImageFormatR32f = 3,
    169     SpvImageFormatRgba8 = 4,
    170     SpvImageFormatRgba8Snorm = 5,
    171     SpvImageFormatRg32f = 6,
    172     SpvImageFormatRg16f = 7,
    173     SpvImageFormatR11fG11fB10f = 8,
    174     SpvImageFormatR16f = 9,
    175     SpvImageFormatRgba16 = 10,
    176     SpvImageFormatRgb10A2 = 11,
    177     SpvImageFormatRg16 = 12,
    178     SpvImageFormatRg8 = 13,
    179     SpvImageFormatR16 = 14,
    180     SpvImageFormatR8 = 15,
    181     SpvImageFormatRgba16Snorm = 16,
    182     SpvImageFormatRg16Snorm = 17,
    183     SpvImageFormatRg8Snorm = 18,
    184     SpvImageFormatR16Snorm = 19,
    185     SpvImageFormatR8Snorm = 20,
    186     SpvImageFormatRgba32i = 21,
    187     SpvImageFormatRgba16i = 22,
    188     SpvImageFormatRgba8i = 23,
    189     SpvImageFormatR32i = 24,
    190     SpvImageFormatRg32i = 25,
    191     SpvImageFormatRg16i = 26,
    192     SpvImageFormatRg8i = 27,
    193     SpvImageFormatR16i = 28,
    194     SpvImageFormatR8i = 29,
    195     SpvImageFormatRgba32ui = 30,
    196     SpvImageFormatRgba16ui = 31,
    197     SpvImageFormatRgba8ui = 32,
    198     SpvImageFormatR32ui = 33,
    199     SpvImageFormatRgb10a2ui = 34,
    200     SpvImageFormatRg32ui = 35,
    201     SpvImageFormatRg16ui = 36,
    202     SpvImageFormatRg8ui = 37,
    203     SpvImageFormatR16ui = 38,
    204     SpvImageFormatR8ui = 39,
    205 } SpvImageFormat;
    206 
    207 typedef enum SpvImageChannelOrder_ {
    208     SpvImageChannelOrderR = 0,
    209     SpvImageChannelOrderA = 1,
    210     SpvImageChannelOrderRG = 2,
    211     SpvImageChannelOrderRA = 3,
    212     SpvImageChannelOrderRGB = 4,
    213     SpvImageChannelOrderRGBA = 5,
    214     SpvImageChannelOrderBGRA = 6,
    215     SpvImageChannelOrderARGB = 7,
    216     SpvImageChannelOrderIntensity = 8,
    217     SpvImageChannelOrderLuminance = 9,
    218     SpvImageChannelOrderRx = 10,
    219     SpvImageChannelOrderRGx = 11,
    220     SpvImageChannelOrderRGBx = 12,
    221     SpvImageChannelOrderDepth = 13,
    222     SpvImageChannelOrderDepthStencil = 14,
    223     SpvImageChannelOrdersRGB = 15,
    224     SpvImageChannelOrdersRGBx = 16,
    225     SpvImageChannelOrdersRGBA = 17,
    226     SpvImageChannelOrdersBGRA = 18,
    227 } SpvImageChannelOrder;
    228 
    229 typedef enum SpvImageChannelDataType_ {
    230     SpvImageChannelDataTypeSnormInt8 = 0,
    231     SpvImageChannelDataTypeSnormInt16 = 1,
    232     SpvImageChannelDataTypeUnormInt8 = 2,
    233     SpvImageChannelDataTypeUnormInt16 = 3,
    234     SpvImageChannelDataTypeUnormShort565 = 4,
    235     SpvImageChannelDataTypeUnormShort555 = 5,
    236     SpvImageChannelDataTypeUnormInt101010 = 6,
    237     SpvImageChannelDataTypeSignedInt8 = 7,
    238     SpvImageChannelDataTypeSignedInt16 = 8,
    239     SpvImageChannelDataTypeSignedInt32 = 9,
    240     SpvImageChannelDataTypeUnsignedInt8 = 10,
    241     SpvImageChannelDataTypeUnsignedInt16 = 11,
    242     SpvImageChannelDataTypeUnsignedInt32 = 12,
    243     SpvImageChannelDataTypeHalfFloat = 13,
    244     SpvImageChannelDataTypeFloat = 14,
    245     SpvImageChannelDataTypeUnormInt24 = 15,
    246     SpvImageChannelDataTypeUnormInt101010_2 = 16,
    247 } SpvImageChannelDataType;
    248 
    249 typedef enum SpvImageOperandsShift_ {
    250     SpvImageOperandsBiasShift = 0,
    251     SpvImageOperandsLodShift = 1,
    252     SpvImageOperandsGradShift = 2,
    253     SpvImageOperandsConstOffsetShift = 3,
    254     SpvImageOperandsOffsetShift = 4,
    255     SpvImageOperandsConstOffsetsShift = 5,
    256     SpvImageOperandsSampleShift = 6,
    257     SpvImageOperandsMinLodShift = 7,
    258 } SpvImageOperandsShift;
    259 
    260 typedef enum SpvImageOperandsMask_ {
    261     SpvImageOperandsMaskNone = 0,
    262     SpvImageOperandsBiasMask = 0x00000001,
    263     SpvImageOperandsLodMask = 0x00000002,
    264     SpvImageOperandsGradMask = 0x00000004,
    265     SpvImageOperandsConstOffsetMask = 0x00000008,
    266     SpvImageOperandsOffsetMask = 0x00000010,
    267     SpvImageOperandsConstOffsetsMask = 0x00000020,
    268     SpvImageOperandsSampleMask = 0x00000040,
    269     SpvImageOperandsMinLodMask = 0x00000080,
    270 } SpvImageOperandsMask;
    271 
    272 typedef enum SpvFPFastMathModeShift_ {
    273     SpvFPFastMathModeNotNaNShift = 0,
    274     SpvFPFastMathModeNotInfShift = 1,
    275     SpvFPFastMathModeNSZShift = 2,
    276     SpvFPFastMathModeAllowRecipShift = 3,
    277     SpvFPFastMathModeFastShift = 4,
    278 } SpvFPFastMathModeShift;
    279 
    280 typedef enum SpvFPFastMathModeMask_ {
    281     SpvFPFastMathModeMaskNone = 0,
    282     SpvFPFastMathModeNotNaNMask = 0x00000001,
    283     SpvFPFastMathModeNotInfMask = 0x00000002,
    284     SpvFPFastMathModeNSZMask = 0x00000004,
    285     SpvFPFastMathModeAllowRecipMask = 0x00000008,
    286     SpvFPFastMathModeFastMask = 0x00000010,
    287 } SpvFPFastMathModeMask;
    288 
    289 typedef enum SpvFPRoundingMode_ {
    290     SpvFPRoundingModeRTE = 0,
    291     SpvFPRoundingModeRTZ = 1,
    292     SpvFPRoundingModeRTP = 2,
    293     SpvFPRoundingModeRTN = 3,
    294 } SpvFPRoundingMode;
    295 
    296 typedef enum SpvLinkageType_ {
    297     SpvLinkageTypeExport = 0,
    298     SpvLinkageTypeImport = 1,
    299 } SpvLinkageType;
    300 
    301 typedef enum SpvAccessQualifier_ {
    302     SpvAccessQualifierReadOnly = 0,
    303     SpvAccessQualifierWriteOnly = 1,
    304     SpvAccessQualifierReadWrite = 2,
    305 } SpvAccessQualifier;
    306 
    307 typedef enum SpvFunctionParameterAttribute_ {
    308     SpvFunctionParameterAttributeZext = 0,
    309     SpvFunctionParameterAttributeSext = 1,
    310     SpvFunctionParameterAttributeByVal = 2,
    311     SpvFunctionParameterAttributeSret = 3,
    312     SpvFunctionParameterAttributeNoAlias = 4,
    313     SpvFunctionParameterAttributeNoCapture = 5,
    314     SpvFunctionParameterAttributeNoWrite = 6,
    315     SpvFunctionParameterAttributeNoReadWrite = 7,
    316 } SpvFunctionParameterAttribute;
    317 
    318 typedef enum SpvDecoration_ {
    319     SpvDecorationRelaxedPrecision = 0,
    320     SpvDecorationSpecId = 1,
    321     SpvDecorationBlock = 2,
    322     SpvDecorationBufferBlock = 3,
    323     SpvDecorationRowMajor = 4,
    324     SpvDecorationColMajor = 5,
    325     SpvDecorationArrayStride = 6,
    326     SpvDecorationMatrixStride = 7,
    327     SpvDecorationGLSLShared = 8,
    328     SpvDecorationGLSLPacked = 9,
    329     SpvDecorationCPacked = 10,
    330     SpvDecorationBuiltIn = 11,
    331     SpvDecorationNoPerspective = 13,
    332     SpvDecorationFlat = 14,
    333     SpvDecorationPatch = 15,
    334     SpvDecorationCentroid = 16,
    335     SpvDecorationSample = 17,
    336     SpvDecorationInvariant = 18,
    337     SpvDecorationRestrict = 19,
    338     SpvDecorationAliased = 20,
    339     SpvDecorationVolatile = 21,
    340     SpvDecorationConstant = 22,
    341     SpvDecorationCoherent = 23,
    342     SpvDecorationNonWritable = 24,
    343     SpvDecorationNonReadable = 25,
    344     SpvDecorationUniform = 26,
    345     SpvDecorationSaturatedConversion = 28,
    346     SpvDecorationStream = 29,
    347     SpvDecorationLocation = 30,
    348     SpvDecorationComponent = 31,
    349     SpvDecorationIndex = 32,
    350     SpvDecorationBinding = 33,
    351     SpvDecorationDescriptorSet = 34,
    352     SpvDecorationOffset = 35,
    353     SpvDecorationXfbBuffer = 36,
    354     SpvDecorationXfbStride = 37,
    355     SpvDecorationFuncParamAttr = 38,
    356     SpvDecorationFPRoundingMode = 39,
    357     SpvDecorationFPFastMathMode = 40,
    358     SpvDecorationLinkageAttributes = 41,
    359     SpvDecorationNoContraction = 42,
    360     SpvDecorationInputAttachmentIndex = 43,
    361     SpvDecorationAlignment = 44,
    362 } SpvDecoration;
    363 
    364 typedef enum SpvBuiltIn_ {
    365     SpvBuiltInPosition = 0,
    366     SpvBuiltInPointSize = 1,
    367     SpvBuiltInClipDistance = 3,
    368     SpvBuiltInCullDistance = 4,
    369     SpvBuiltInVertexId = 5,
    370     SpvBuiltInInstanceId = 6,
    371     SpvBuiltInPrimitiveId = 7,
    372     SpvBuiltInInvocationId = 8,
    373     SpvBuiltInLayer = 9,
    374     SpvBuiltInViewportIndex = 10,
    375     SpvBuiltInTessLevelOuter = 11,
    376     SpvBuiltInTessLevelInner = 12,
    377     SpvBuiltInTessCoord = 13,
    378     SpvBuiltInPatchVertices = 14,
    379     SpvBuiltInFragCoord = 15,
    380     SpvBuiltInPointCoord = 16,
    381     SpvBuiltInFrontFacing = 17,
    382     SpvBuiltInSampleId = 18,
    383     SpvBuiltInSamplePosition = 19,
    384     SpvBuiltInSampleMask = 20,
    385     SpvBuiltInFragDepth = 22,
    386     SpvBuiltInHelperInvocation = 23,
    387     SpvBuiltInNumWorkgroups = 24,
    388     SpvBuiltInWorkgroupSize = 25,
    389     SpvBuiltInWorkgroupId = 26,
    390     SpvBuiltInLocalInvocationId = 27,
    391     SpvBuiltInGlobalInvocationId = 28,
    392     SpvBuiltInLocalInvocationIndex = 29,
    393     SpvBuiltInWorkDim = 30,
    394     SpvBuiltInGlobalSize = 31,
    395     SpvBuiltInEnqueuedWorkgroupSize = 32,
    396     SpvBuiltInGlobalOffset = 33,
    397     SpvBuiltInGlobalLinearId = 34,
    398     SpvBuiltInSubgroupSize = 36,
    399     SpvBuiltInSubgroupMaxSize = 37,
    400     SpvBuiltInNumSubgroups = 38,
    401     SpvBuiltInNumEnqueuedSubgroups = 39,
    402     SpvBuiltInSubgroupId = 40,
    403     SpvBuiltInSubgroupLocalInvocationId = 41,
    404     SpvBuiltInVertexIndex = 42,
    405     SpvBuiltInInstanceIndex = 43,
    406 } SpvBuiltIn;
    407 
    408 typedef enum SpvSelectionControlShift_ {
    409     SpvSelectionControlFlattenShift = 0,
    410     SpvSelectionControlDontFlattenShift = 1,
    411 } SpvSelectionControlShift;
    412 
    413 typedef enum SpvSelectionControlMask_ {
    414     SpvSelectionControlMaskNone = 0,
    415     SpvSelectionControlFlattenMask = 0x00000001,
    416     SpvSelectionControlDontFlattenMask = 0x00000002,
    417 } SpvSelectionControlMask;
    418 
    419 typedef enum SpvLoopControlShift_ {
    420     SpvLoopControlUnrollShift = 0,
    421     SpvLoopControlDontUnrollShift = 1,
    422 } SpvLoopControlShift;
    423 
    424 typedef enum SpvLoopControlMask_ {
    425     SpvLoopControlMaskNone = 0,
    426     SpvLoopControlUnrollMask = 0x00000001,
    427     SpvLoopControlDontUnrollMask = 0x00000002,
    428 } SpvLoopControlMask;
    429 
    430 typedef enum SpvFunctionControlShift_ {
    431     SpvFunctionControlInlineShift = 0,
    432     SpvFunctionControlDontInlineShift = 1,
    433     SpvFunctionControlPureShift = 2,
    434     SpvFunctionControlConstShift = 3,
    435 } SpvFunctionControlShift;
    436 
    437 typedef enum SpvFunctionControlMask_ {
    438     SpvFunctionControlMaskNone = 0,
    439     SpvFunctionControlInlineMask = 0x00000001,
    440     SpvFunctionControlDontInlineMask = 0x00000002,
    441     SpvFunctionControlPureMask = 0x00000004,
    442     SpvFunctionControlConstMask = 0x00000008,
    443 } SpvFunctionControlMask;
    444 
    445 typedef enum SpvMemorySemanticsShift_ {
    446     SpvMemorySemanticsAcquireShift = 1,
    447     SpvMemorySemanticsReleaseShift = 2,
    448     SpvMemorySemanticsAcquireReleaseShift = 3,
    449     SpvMemorySemanticsSequentiallyConsistentShift = 4,
    450     SpvMemorySemanticsUniformMemoryShift = 6,
    451     SpvMemorySemanticsSubgroupMemoryShift = 7,
    452     SpvMemorySemanticsWorkgroupMemoryShift = 8,
    453     SpvMemorySemanticsCrossWorkgroupMemoryShift = 9,
    454     SpvMemorySemanticsAtomicCounterMemoryShift = 10,
    455     SpvMemorySemanticsImageMemoryShift = 11,
    456 } SpvMemorySemanticsShift;
    457 
    458 typedef enum SpvMemorySemanticsMask_ {
    459     SpvMemorySemanticsMaskNone = 0,
    460     SpvMemorySemanticsAcquireMask = 0x00000002,
    461     SpvMemorySemanticsReleaseMask = 0x00000004,
    462     SpvMemorySemanticsAcquireReleaseMask = 0x00000008,
    463     SpvMemorySemanticsSequentiallyConsistentMask = 0x00000010,
    464     SpvMemorySemanticsUniformMemoryMask = 0x00000040,
    465     SpvMemorySemanticsSubgroupMemoryMask = 0x00000080,
    466     SpvMemorySemanticsWorkgroupMemoryMask = 0x00000100,
    467     SpvMemorySemanticsCrossWorkgroupMemoryMask = 0x00000200,
    468     SpvMemorySemanticsAtomicCounterMemoryMask = 0x00000400,
    469     SpvMemorySemanticsImageMemoryMask = 0x00000800,
    470 } SpvMemorySemanticsMask;
    471 
    472 typedef enum SpvMemoryAccessShift_ {
    473     SpvMemoryAccessVolatileShift = 0,
    474     SpvMemoryAccessAlignedShift = 1,
    475     SpvMemoryAccessNontemporalShift = 2,
    476 } SpvMemoryAccessShift;
    477 
    478 typedef enum SpvMemoryAccessMask_ {
    479     SpvMemoryAccessMaskNone = 0,
    480     SpvMemoryAccessVolatileMask = 0x00000001,
    481     SpvMemoryAccessAlignedMask = 0x00000002,
    482     SpvMemoryAccessNontemporalMask = 0x00000004,
    483 } SpvMemoryAccessMask;
    484 
    485 typedef enum SpvScope_ {
    486     SpvScopeCrossDevice = 0,
    487     SpvScopeDevice = 1,
    488     SpvScopeWorkgroup = 2,
    489     SpvScopeSubgroup = 3,
    490     SpvScopeInvocation = 4,
    491 } SpvScope;
    492 
    493 typedef enum SpvGroupOperation_ {
    494     SpvGroupOperationReduce = 0,
    495     SpvGroupOperationInclusiveScan = 1,
    496     SpvGroupOperationExclusiveScan = 2,
    497 } SpvGroupOperation;
    498 
    499 typedef enum SpvKernelEnqueueFlags_ {
    500     SpvKernelEnqueueFlagsNoWait = 0,
    501     SpvKernelEnqueueFlagsWaitKernel = 1,
    502     SpvKernelEnqueueFlagsWaitWorkGroup = 2,
    503 } SpvKernelEnqueueFlags;
    504 
    505 typedef enum SpvKernelProfilingInfoShift_ {
    506     SpvKernelProfilingInfoCmdExecTimeShift = 0,
    507 } SpvKernelProfilingInfoShift;
    508 
    509 typedef enum SpvKernelProfilingInfoMask_ {
    510     SpvKernelProfilingInfoMaskNone = 0,
    511     SpvKernelProfilingInfoCmdExecTimeMask = 0x00000001,
    512 } SpvKernelProfilingInfoMask;
    513 
    514 typedef enum SpvCapability_ {
    515     SpvCapabilityMatrix = 0,
    516     SpvCapabilityShader = 1,
    517     SpvCapabilityGeometry = 2,
    518     SpvCapabilityTessellation = 3,
    519     SpvCapabilityAddresses = 4,
    520     SpvCapabilityLinkage = 5,
    521     SpvCapabilityKernel = 6,
    522     SpvCapabilityVector16 = 7,
    523     SpvCapabilityFloat16Buffer = 8,
    524     SpvCapabilityFloat16 = 9,
    525     SpvCapabilityFloat64 = 10,
    526     SpvCapabilityInt64 = 11,
    527     SpvCapabilityInt64Atomics = 12,
    528     SpvCapabilityImageBasic = 13,
    529     SpvCapabilityImageReadWrite = 14,
    530     SpvCapabilityImageMipmap = 15,
    531     SpvCapabilityPipes = 17,
    532     SpvCapabilityGroups = 18,
    533     SpvCapabilityDeviceEnqueue = 19,
    534     SpvCapabilityLiteralSampler = 20,
    535     SpvCapabilityAtomicStorage = 21,
    536     SpvCapabilityInt16 = 22,
    537     SpvCapabilityTessellationPointSize = 23,
    538     SpvCapabilityGeometryPointSize = 24,
    539     SpvCapabilityImageGatherExtended = 25,
    540     SpvCapabilityStorageImageMultisample = 27,
    541     SpvCapabilityUniformBufferArrayDynamicIndexing = 28,
    542     SpvCapabilitySampledImageArrayDynamicIndexing = 29,
    543     SpvCapabilityStorageBufferArrayDynamicIndexing = 30,
    544     SpvCapabilityStorageImageArrayDynamicIndexing = 31,
    545     SpvCapabilityClipDistance = 32,
    546     SpvCapabilityCullDistance = 33,
    547     SpvCapabilityImageCubeArray = 34,
    548     SpvCapabilitySampleRateShading = 35,
    549     SpvCapabilityImageRect = 36,
    550     SpvCapabilitySampledRect = 37,
    551     SpvCapabilityGenericPointer = 38,
    552     SpvCapabilityInt8 = 39,
    553     SpvCapabilityInputAttachment = 40,
    554     SpvCapabilitySparseResidency = 41,
    555     SpvCapabilityMinLod = 42,
    556     SpvCapabilitySampled1D = 43,
    557     SpvCapabilityImage1D = 44,
    558     SpvCapabilitySampledCubeArray = 45,
    559     SpvCapabilitySampledBuffer = 46,
    560     SpvCapabilityImageBuffer = 47,
    561     SpvCapabilityImageMSArray = 48,
    562     SpvCapabilityStorageImageExtendedFormats = 49,
    563     SpvCapabilityImageQuery = 50,
    564     SpvCapabilityDerivativeControl = 51,
    565     SpvCapabilityInterpolationFunction = 52,
    566     SpvCapabilityTransformFeedback = 53,
    567     SpvCapabilityGeometryStreams = 54,
    568     SpvCapabilityStorageImageReadWithoutFormat = 55,
    569     SpvCapabilityStorageImageWriteWithoutFormat = 56,
    570     SpvCapabilityMultiViewport = 57,
    571 } SpvCapability;
    572 
    573 typedef enum SpvOp_ {
    574     SpvOpNop = 0,
    575     SpvOpUndef = 1,
    576     SpvOpSourceContinued = 2,
    577     SpvOpSource = 3,
    578     SpvOpSourceExtension = 4,
    579     SpvOpName = 5,
    580     SpvOpMemberName = 6,
    581     SpvOpString = 7,
    582     SpvOpLine = 8,
    583     SpvOpExtension = 10,
    584     SpvOpExtInstImport = 11,
    585     SpvOpExtInst = 12,
    586     SpvOpMemoryModel = 14,
    587     SpvOpEntryPoint = 15,
    588     SpvOpExecutionMode = 16,
    589     SpvOpCapability = 17,
    590     SpvOpTypeVoid = 19,
    591     SpvOpTypeBool = 20,
    592     SpvOpTypeInt = 21,
    593     SpvOpTypeFloat = 22,
    594     SpvOpTypeVector = 23,
    595     SpvOpTypeMatrix = 24,
    596     SpvOpTypeImage = 25,
    597     SpvOpTypeSampler = 26,
    598     SpvOpTypeSampledImage = 27,
    599     SpvOpTypeArray = 28,
    600     SpvOpTypeRuntimeArray = 29,
    601     SpvOpTypeStruct = 30,
    602     SpvOpTypeOpaque = 31,
    603     SpvOpTypePointer = 32,
    604     SpvOpTypeFunction = 33,
    605     SpvOpTypeEvent = 34,
    606     SpvOpTypeDeviceEvent = 35,
    607     SpvOpTypeReserveId = 36,
    608     SpvOpTypeQueue = 37,
    609     SpvOpTypePipe = 38,
    610     SpvOpTypeForwardPointer = 39,
    611     SpvOpConstantTrue = 41,
    612     SpvOpConstantFalse = 42,
    613     SpvOpConstant = 43,
    614     SpvOpConstantComposite = 44,
    615     SpvOpConstantSampler = 45,
    616     SpvOpConstantNull = 46,
    617     SpvOpSpecConstantTrue = 48,
    618     SpvOpSpecConstantFalse = 49,
    619     SpvOpSpecConstant = 50,
    620     SpvOpSpecConstantComposite = 51,
    621     SpvOpSpecConstantOp = 52,
    622     SpvOpFunction = 54,
    623     SpvOpFunctionParameter = 55,
    624     SpvOpFunctionEnd = 56,
    625     SpvOpFunctionCall = 57,
    626     SpvOpVariable = 59,
    627     SpvOpImageTexelPointer = 60,
    628     SpvOpLoad = 61,
    629     SpvOpStore = 62,
    630     SpvOpCopyMemory = 63,
    631     SpvOpCopyMemorySized = 64,
    632     SpvOpAccessChain = 65,
    633     SpvOpInBoundsAccessChain = 66,
    634     SpvOpPtrAccessChain = 67,
    635     SpvOpArrayLength = 68,
    636     SpvOpGenericPtrMemSemantics = 69,
    637     SpvOpInBoundsPtrAccessChain = 70,
    638     SpvOpDecorate = 71,
    639     SpvOpMemberDecorate = 72,
    640     SpvOpDecorationGroup = 73,
    641     SpvOpGroupDecorate = 74,
    642     SpvOpGroupMemberDecorate = 75,
    643     SpvOpVectorExtractDynamic = 77,
    644     SpvOpVectorInsertDynamic = 78,
    645     SpvOpVectorShuffle = 79,
    646     SpvOpCompositeConstruct = 80,
    647     SpvOpCompositeExtract = 81,
    648     SpvOpCompositeInsert = 82,
    649     SpvOpCopyObject = 83,
    650     SpvOpTranspose = 84,
    651     SpvOpSampledImage = 86,
    652     SpvOpImageSampleImplicitLod = 87,
    653     SpvOpImageSampleExplicitLod = 88,
    654     SpvOpImageSampleDrefImplicitLod = 89,
    655     SpvOpImageSampleDrefExplicitLod = 90,
    656     SpvOpImageSampleProjImplicitLod = 91,
    657     SpvOpImageSampleProjExplicitLod = 92,
    658     SpvOpImageSampleProjDrefImplicitLod = 93,
    659     SpvOpImageSampleProjDrefExplicitLod = 94,
    660     SpvOpImageFetch = 95,
    661     SpvOpImageGather = 96,
    662     SpvOpImageDrefGather = 97,
    663     SpvOpImageRead = 98,
    664     SpvOpImageWrite = 99,
    665     SpvOpImage = 100,
    666     SpvOpImageQueryFormat = 101,
    667     SpvOpImageQueryOrder = 102,
    668     SpvOpImageQuerySizeLod = 103,
    669     SpvOpImageQuerySize = 104,
    670     SpvOpImageQueryLod = 105,
    671     SpvOpImageQueryLevels = 106,
    672     SpvOpImageQuerySamples = 107,
    673     SpvOpConvertFToU = 109,
    674     SpvOpConvertFToS = 110,
    675     SpvOpConvertSToF = 111,
    676     SpvOpConvertUToF = 112,
    677     SpvOpUConvert = 113,
    678     SpvOpSConvert = 114,
    679     SpvOpFConvert = 115,
    680     SpvOpQuantizeToF16 = 116,
    681     SpvOpConvertPtrToU = 117,
    682     SpvOpSatConvertSToU = 118,
    683     SpvOpSatConvertUToS = 119,
    684     SpvOpConvertUToPtr = 120,
    685     SpvOpPtrCastToGeneric = 121,
    686     SpvOpGenericCastToPtr = 122,
    687     SpvOpGenericCastToPtrExplicit = 123,
    688     SpvOpBitcast = 124,
    689     SpvOpSNegate = 126,
    690     SpvOpFNegate = 127,
    691     SpvOpIAdd = 128,
    692     SpvOpFAdd = 129,
    693     SpvOpISub = 130,
    694     SpvOpFSub = 131,
    695     SpvOpIMul = 132,
    696     SpvOpFMul = 133,
    697     SpvOpUDiv = 134,
    698     SpvOpSDiv = 135,
    699     SpvOpFDiv = 136,
    700     SpvOpUMod = 137,
    701     SpvOpSRem = 138,
    702     SpvOpSMod = 139,
    703     SpvOpFRem = 140,
    704     SpvOpFMod = 141,
    705     SpvOpVectorTimesScalar = 142,
    706     SpvOpMatrixTimesScalar = 143,
    707     SpvOpVectorTimesMatrix = 144,
    708     SpvOpMatrixTimesVector = 145,
    709     SpvOpMatrixTimesMatrix = 146,
    710     SpvOpOuterProduct = 147,
    711     SpvOpDot = 148,
    712     SpvOpIAddCarry = 149,
    713     SpvOpISubBorrow = 150,
    714     SpvOpUMulExtended = 151,
    715     SpvOpSMulExtended = 152,
    716     SpvOpAny = 154,
    717     SpvOpAll = 155,
    718     SpvOpIsNan = 156,
    719     SpvOpIsInf = 157,
    720     SpvOpIsFinite = 158,
    721     SpvOpIsNormal = 159,
    722     SpvOpSignBitSet = 160,
    723     SpvOpLessOrGreater = 161,
    724     SpvOpOrdered = 162,
    725     SpvOpUnordered = 163,
    726     SpvOpLogicalEqual = 164,
    727     SpvOpLogicalNotEqual = 165,
    728     SpvOpLogicalOr = 166,
    729     SpvOpLogicalAnd = 167,
    730     SpvOpLogicalNot = 168,
    731     SpvOpSelect = 169,
    732     SpvOpIEqual = 170,
    733     SpvOpINotEqual = 171,
    734     SpvOpUGreaterThan = 172,
    735     SpvOpSGreaterThan = 173,
    736     SpvOpUGreaterThanEqual = 174,
    737     SpvOpSGreaterThanEqual = 175,
    738     SpvOpULessThan = 176,
    739     SpvOpSLessThan = 177,
    740     SpvOpULessThanEqual = 178,
    741     SpvOpSLessThanEqual = 179,
    742     SpvOpFOrdEqual = 180,
    743     SpvOpFUnordEqual = 181,
    744     SpvOpFOrdNotEqual = 182,
    745     SpvOpFUnordNotEqual = 183,
    746     SpvOpFOrdLessThan = 184,
    747     SpvOpFUnordLessThan = 185,
    748     SpvOpFOrdGreaterThan = 186,
    749     SpvOpFUnordGreaterThan = 187,
    750     SpvOpFOrdLessThanEqual = 188,
    751     SpvOpFUnordLessThanEqual = 189,
    752     SpvOpFOrdGreaterThanEqual = 190,
    753     SpvOpFUnordGreaterThanEqual = 191,
    754     SpvOpShiftRightLogical = 194,
    755     SpvOpShiftRightArithmetic = 195,
    756     SpvOpShiftLeftLogical = 196,
    757     SpvOpBitwiseOr = 197,
    758     SpvOpBitwiseXor = 198,
    759     SpvOpBitwiseAnd = 199,
    760     SpvOpNot = 200,
    761     SpvOpBitFieldInsert = 201,
    762     SpvOpBitFieldSExtract = 202,
    763     SpvOpBitFieldUExtract = 203,
    764     SpvOpBitReverse = 204,
    765     SpvOpBitCount = 205,
    766     SpvOpDPdx = 207,
    767     SpvOpDPdy = 208,
    768     SpvOpFwidth = 209,
    769     SpvOpDPdxFine = 210,
    770     SpvOpDPdyFine = 211,
    771     SpvOpFwidthFine = 212,
    772     SpvOpDPdxCoarse = 213,
    773     SpvOpDPdyCoarse = 214,
    774     SpvOpFwidthCoarse = 215,
    775     SpvOpEmitVertex = 218,
    776     SpvOpEndPrimitive = 219,
    777     SpvOpEmitStreamVertex = 220,
    778     SpvOpEndStreamPrimitive = 221,
    779     SpvOpControlBarrier = 224,
    780     SpvOpMemoryBarrier = 225,
    781     SpvOpAtomicLoad = 227,
    782     SpvOpAtomicStore = 228,
    783     SpvOpAtomicExchange = 229,
    784     SpvOpAtomicCompareExchange = 230,
    785     SpvOpAtomicCompareExchangeWeak = 231,
    786     SpvOpAtomicIIncrement = 232,
    787     SpvOpAtomicIDecrement = 233,
    788     SpvOpAtomicIAdd = 234,
    789     SpvOpAtomicISub = 235,
    790     SpvOpAtomicSMin = 236,
    791     SpvOpAtomicUMin = 237,
    792     SpvOpAtomicSMax = 238,
    793     SpvOpAtomicUMax = 239,
    794     SpvOpAtomicAnd = 240,
    795     SpvOpAtomicOr = 241,
    796     SpvOpAtomicXor = 242,
    797     SpvOpPhi = 245,
    798     SpvOpLoopMerge = 246,
    799     SpvOpSelectionMerge = 247,
    800     SpvOpLabel = 248,
    801     SpvOpBranch = 249,
    802     SpvOpBranchConditional = 250,
    803     SpvOpSwitch = 251,
    804     SpvOpKill = 252,
    805     SpvOpReturn = 253,
    806     SpvOpReturnValue = 254,
    807     SpvOpUnreachable = 255,
    808     SpvOpLifetimeStart = 256,
    809     SpvOpLifetimeStop = 257,
    810     SpvOpGroupAsyncCopy = 259,
    811     SpvOpGroupWaitEvents = 260,
    812     SpvOpGroupAll = 261,
    813     SpvOpGroupAny = 262,
    814     SpvOpGroupBroadcast = 263,
    815     SpvOpGroupIAdd = 264,
    816     SpvOpGroupFAdd = 265,
    817     SpvOpGroupFMin = 266,
    818     SpvOpGroupUMin = 267,
    819     SpvOpGroupSMin = 268,
    820     SpvOpGroupFMax = 269,
    821     SpvOpGroupUMax = 270,
    822     SpvOpGroupSMax = 271,
    823     SpvOpReadPipe = 274,
    824     SpvOpWritePipe = 275,
    825     SpvOpReservedReadPipe = 276,
    826     SpvOpReservedWritePipe = 277,
    827     SpvOpReserveReadPipePackets = 278,
    828     SpvOpReserveWritePipePackets = 279,
    829     SpvOpCommitReadPipe = 280,
    830     SpvOpCommitWritePipe = 281,
    831     SpvOpIsValidReserveId = 282,
    832     SpvOpGetNumPipePackets = 283,
    833     SpvOpGetMaxPipePackets = 284,
    834     SpvOpGroupReserveReadPipePackets = 285,
    835     SpvOpGroupReserveWritePipePackets = 286,
    836     SpvOpGroupCommitReadPipe = 287,
    837     SpvOpGroupCommitWritePipe = 288,
    838     SpvOpEnqueueMarker = 291,
    839     SpvOpEnqueueKernel = 292,
    840     SpvOpGetKernelNDrangeSubGroupCount = 293,
    841     SpvOpGetKernelNDrangeMaxSubGroupSize = 294,
    842     SpvOpGetKernelWorkGroupSize = 295,
    843     SpvOpGetKernelPreferredWorkGroupSizeMultiple = 296,
    844     SpvOpRetainEvent = 297,
    845     SpvOpReleaseEvent = 298,
    846     SpvOpCreateUserEvent = 299,
    847     SpvOpIsValidEvent = 300,
    848     SpvOpSetUserEventStatus = 301,
    849     SpvOpCaptureEventProfilingInfo = 302,
    850     SpvOpGetDefaultQueue = 303,
    851     SpvOpBuildNDRange = 304,
    852     SpvOpImageSparseSampleImplicitLod = 305,
    853     SpvOpImageSparseSampleExplicitLod = 306,
    854     SpvOpImageSparseSampleDrefImplicitLod = 307,
    855     SpvOpImageSparseSampleDrefExplicitLod = 308,
    856     SpvOpImageSparseSampleProjImplicitLod = 309,
    857     SpvOpImageSparseSampleProjExplicitLod = 310,
    858     SpvOpImageSparseSampleProjDrefImplicitLod = 311,
    859     SpvOpImageSparseSampleProjDrefExplicitLod = 312,
    860     SpvOpImageSparseFetch = 313,
    861     SpvOpImageSparseGather = 314,
    862     SpvOpImageSparseDrefGather = 315,
    863     SpvOpImageSparseTexelsResident = 316,
    864     SpvOpNoLine = 317,
    865     SpvOpAtomicFlagTestAndSet = 318,
    866     SpvOpAtomicFlagClear = 319,
    867 } SpvOp;
    868 
    869 #endif  // #ifndef spirv_H
    870 
    871