2 ** Copyright (c) 2014-2017 The Khronos Group Inc.
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:
11 ** The above copyright notice and this permission notice shall be included in
12 ** all copies or substantial portions of the Materials.
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/
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
28 ** This header is automatically generated by the same tool that creates
29 ** the Binary Section of the SPIR-V specification.
33 ** Enumeration tokens for SPIR-V, in various styles:
34 ** C, C++, C++11, JSON, Lua, Python
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']
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.
51 typedef unsigned int SpvId
;
53 #define SPV_VERSION 0x10200
54 #define SPV_REVISION 1
56 static const unsigned int SpvMagicNumber
= 0x07230203;
57 static const unsigned int SpvVersion
= 0x00010200;
58 static const unsigned int SpvRevision
= 1;
59 static const unsigned int SpvOpCodeMask
= 0xffff;
60 static const unsigned int SpvWordCountShift
= 16;
62 typedef enum SpvSourceLanguage_
{
63 SpvSourceLanguageUnknown
= 0,
64 SpvSourceLanguageESSL
= 1,
65 SpvSourceLanguageGLSL
= 2,
66 SpvSourceLanguageOpenCL_C
= 3,
67 SpvSourceLanguageOpenCL_CPP
= 4,
68 SpvSourceLanguageHLSL
= 5,
69 SpvSourceLanguageMax
= 0x7fffffff,
72 typedef enum SpvExecutionModel_
{
73 SpvExecutionModelVertex
= 0,
74 SpvExecutionModelTessellationControl
= 1,
75 SpvExecutionModelTessellationEvaluation
= 2,
76 SpvExecutionModelGeometry
= 3,
77 SpvExecutionModelFragment
= 4,
78 SpvExecutionModelGLCompute
= 5,
79 SpvExecutionModelKernel
= 6,
80 SpvExecutionModelMax
= 0x7fffffff,
83 typedef enum SpvAddressingModel_
{
84 SpvAddressingModelLogical
= 0,
85 SpvAddressingModelPhysical32
= 1,
86 SpvAddressingModelPhysical64
= 2,
87 SpvAddressingModelMax
= 0x7fffffff,
90 typedef enum SpvMemoryModel_
{
91 SpvMemoryModelSimple
= 0,
92 SpvMemoryModelGLSL450
= 1,
93 SpvMemoryModelOpenCL
= 2,
94 SpvMemoryModelMax
= 0x7fffffff,
97 typedef enum SpvExecutionMode_
{
98 SpvExecutionModeInvocations
= 0,
99 SpvExecutionModeSpacingEqual
= 1,
100 SpvExecutionModeSpacingFractionalEven
= 2,
101 SpvExecutionModeSpacingFractionalOdd
= 3,
102 SpvExecutionModeVertexOrderCw
= 4,
103 SpvExecutionModeVertexOrderCcw
= 5,
104 SpvExecutionModePixelCenterInteger
= 6,
105 SpvExecutionModeOriginUpperLeft
= 7,
106 SpvExecutionModeOriginLowerLeft
= 8,
107 SpvExecutionModeEarlyFragmentTests
= 9,
108 SpvExecutionModePointMode
= 10,
109 SpvExecutionModeXfb
= 11,
110 SpvExecutionModeDepthReplacing
= 12,
111 SpvExecutionModeDepthGreater
= 14,
112 SpvExecutionModeDepthLess
= 15,
113 SpvExecutionModeDepthUnchanged
= 16,
114 SpvExecutionModeLocalSize
= 17,
115 SpvExecutionModeLocalSizeHint
= 18,
116 SpvExecutionModeInputPoints
= 19,
117 SpvExecutionModeInputLines
= 20,
118 SpvExecutionModeInputLinesAdjacency
= 21,
119 SpvExecutionModeTriangles
= 22,
120 SpvExecutionModeInputTrianglesAdjacency
= 23,
121 SpvExecutionModeQuads
= 24,
122 SpvExecutionModeIsolines
= 25,
123 SpvExecutionModeOutputVertices
= 26,
124 SpvExecutionModeOutputPoints
= 27,
125 SpvExecutionModeOutputLineStrip
= 28,
126 SpvExecutionModeOutputTriangleStrip
= 29,
127 SpvExecutionModeVecTypeHint
= 30,
128 SpvExecutionModeContractionOff
= 31,
129 SpvExecutionModeInitializer
= 33,
130 SpvExecutionModeFinalizer
= 34,
131 SpvExecutionModeSubgroupSize
= 35,
132 SpvExecutionModeSubgroupsPerWorkgroup
= 36,
133 SpvExecutionModeSubgroupsPerWorkgroupId
= 37,
134 SpvExecutionModeLocalSizeId
= 38,
135 SpvExecutionModeLocalSizeHintId
= 39,
136 SpvExecutionModePostDepthCoverage
= 4446,
137 SpvExecutionModeMax
= 0x7fffffff,
140 typedef enum SpvStorageClass_
{
141 SpvStorageClassUniformConstant
= 0,
142 SpvStorageClassInput
= 1,
143 SpvStorageClassUniform
= 2,
144 SpvStorageClassOutput
= 3,
145 SpvStorageClassWorkgroup
= 4,
146 SpvStorageClassCrossWorkgroup
= 5,
147 SpvStorageClassPrivate
= 6,
148 SpvStorageClassFunction
= 7,
149 SpvStorageClassGeneric
= 8,
150 SpvStorageClassPushConstant
= 9,
151 SpvStorageClassAtomicCounter
= 10,
152 SpvStorageClassImage
= 11,
153 SpvStorageClassStorageBuffer
= 12,
154 SpvStorageClassMax
= 0x7fffffff,
157 typedef enum SpvDim_
{
164 SpvDimSubpassData
= 6,
165 SpvDimMax
= 0x7fffffff,
168 typedef enum SpvSamplerAddressingMode_
{
169 SpvSamplerAddressingModeNone
= 0,
170 SpvSamplerAddressingModeClampToEdge
= 1,
171 SpvSamplerAddressingModeClamp
= 2,
172 SpvSamplerAddressingModeRepeat
= 3,
173 SpvSamplerAddressingModeRepeatMirrored
= 4,
174 SpvSamplerAddressingModeMax
= 0x7fffffff,
175 } SpvSamplerAddressingMode
;
177 typedef enum SpvSamplerFilterMode_
{
178 SpvSamplerFilterModeNearest
= 0,
179 SpvSamplerFilterModeLinear
= 1,
180 SpvSamplerFilterModeMax
= 0x7fffffff,
181 } SpvSamplerFilterMode
;
183 typedef enum SpvImageFormat_
{
184 SpvImageFormatUnknown
= 0,
185 SpvImageFormatRgba32f
= 1,
186 SpvImageFormatRgba16f
= 2,
187 SpvImageFormatR32f
= 3,
188 SpvImageFormatRgba8
= 4,
189 SpvImageFormatRgba8Snorm
= 5,
190 SpvImageFormatRg32f
= 6,
191 SpvImageFormatRg16f
= 7,
192 SpvImageFormatR11fG11fB10f
= 8,
193 SpvImageFormatR16f
= 9,
194 SpvImageFormatRgba16
= 10,
195 SpvImageFormatRgb10A2
= 11,
196 SpvImageFormatRg16
= 12,
197 SpvImageFormatRg8
= 13,
198 SpvImageFormatR16
= 14,
199 SpvImageFormatR8
= 15,
200 SpvImageFormatRgba16Snorm
= 16,
201 SpvImageFormatRg16Snorm
= 17,
202 SpvImageFormatRg8Snorm
= 18,
203 SpvImageFormatR16Snorm
= 19,
204 SpvImageFormatR8Snorm
= 20,
205 SpvImageFormatRgba32i
= 21,
206 SpvImageFormatRgba16i
= 22,
207 SpvImageFormatRgba8i
= 23,
208 SpvImageFormatR32i
= 24,
209 SpvImageFormatRg32i
= 25,
210 SpvImageFormatRg16i
= 26,
211 SpvImageFormatRg8i
= 27,
212 SpvImageFormatR16i
= 28,
213 SpvImageFormatR8i
= 29,
214 SpvImageFormatRgba32ui
= 30,
215 SpvImageFormatRgba16ui
= 31,
216 SpvImageFormatRgba8ui
= 32,
217 SpvImageFormatR32ui
= 33,
218 SpvImageFormatRgb10a2ui
= 34,
219 SpvImageFormatRg32ui
= 35,
220 SpvImageFormatRg16ui
= 36,
221 SpvImageFormatRg8ui
= 37,
222 SpvImageFormatR16ui
= 38,
223 SpvImageFormatR8ui
= 39,
224 SpvImageFormatMax
= 0x7fffffff,
227 typedef enum SpvImageChannelOrder_
{
228 SpvImageChannelOrderR
= 0,
229 SpvImageChannelOrderA
= 1,
230 SpvImageChannelOrderRG
= 2,
231 SpvImageChannelOrderRA
= 3,
232 SpvImageChannelOrderRGB
= 4,
233 SpvImageChannelOrderRGBA
= 5,
234 SpvImageChannelOrderBGRA
= 6,
235 SpvImageChannelOrderARGB
= 7,
236 SpvImageChannelOrderIntensity
= 8,
237 SpvImageChannelOrderLuminance
= 9,
238 SpvImageChannelOrderRx
= 10,
239 SpvImageChannelOrderRGx
= 11,
240 SpvImageChannelOrderRGBx
= 12,
241 SpvImageChannelOrderDepth
= 13,
242 SpvImageChannelOrderDepthStencil
= 14,
243 SpvImageChannelOrdersRGB
= 15,
244 SpvImageChannelOrdersRGBx
= 16,
245 SpvImageChannelOrdersRGBA
= 17,
246 SpvImageChannelOrdersBGRA
= 18,
247 SpvImageChannelOrderABGR
= 19,
248 SpvImageChannelOrderMax
= 0x7fffffff,
249 } SpvImageChannelOrder
;
251 typedef enum SpvImageChannelDataType_
{
252 SpvImageChannelDataTypeSnormInt8
= 0,
253 SpvImageChannelDataTypeSnormInt16
= 1,
254 SpvImageChannelDataTypeUnormInt8
= 2,
255 SpvImageChannelDataTypeUnormInt16
= 3,
256 SpvImageChannelDataTypeUnormShort565
= 4,
257 SpvImageChannelDataTypeUnormShort555
= 5,
258 SpvImageChannelDataTypeUnormInt101010
= 6,
259 SpvImageChannelDataTypeSignedInt8
= 7,
260 SpvImageChannelDataTypeSignedInt16
= 8,
261 SpvImageChannelDataTypeSignedInt32
= 9,
262 SpvImageChannelDataTypeUnsignedInt8
= 10,
263 SpvImageChannelDataTypeUnsignedInt16
= 11,
264 SpvImageChannelDataTypeUnsignedInt32
= 12,
265 SpvImageChannelDataTypeHalfFloat
= 13,
266 SpvImageChannelDataTypeFloat
= 14,
267 SpvImageChannelDataTypeUnormInt24
= 15,
268 SpvImageChannelDataTypeUnormInt101010_2
= 16,
269 SpvImageChannelDataTypeMax
= 0x7fffffff,
270 } SpvImageChannelDataType
;
272 typedef enum SpvImageOperandsShift_
{
273 SpvImageOperandsBiasShift
= 0,
274 SpvImageOperandsLodShift
= 1,
275 SpvImageOperandsGradShift
= 2,
276 SpvImageOperandsConstOffsetShift
= 3,
277 SpvImageOperandsOffsetShift
= 4,
278 SpvImageOperandsConstOffsetsShift
= 5,
279 SpvImageOperandsSampleShift
= 6,
280 SpvImageOperandsMinLodShift
= 7,
281 SpvImageOperandsMax
= 0x7fffffff,
282 } SpvImageOperandsShift
;
284 typedef enum SpvImageOperandsMask_
{
285 SpvImageOperandsMaskNone
= 0,
286 SpvImageOperandsBiasMask
= 0x00000001,
287 SpvImageOperandsLodMask
= 0x00000002,
288 SpvImageOperandsGradMask
= 0x00000004,
289 SpvImageOperandsConstOffsetMask
= 0x00000008,
290 SpvImageOperandsOffsetMask
= 0x00000010,
291 SpvImageOperandsConstOffsetsMask
= 0x00000020,
292 SpvImageOperandsSampleMask
= 0x00000040,
293 SpvImageOperandsMinLodMask
= 0x00000080,
294 } SpvImageOperandsMask
;
296 typedef enum SpvFPFastMathModeShift_
{
297 SpvFPFastMathModeNotNaNShift
= 0,
298 SpvFPFastMathModeNotInfShift
= 1,
299 SpvFPFastMathModeNSZShift
= 2,
300 SpvFPFastMathModeAllowRecipShift
= 3,
301 SpvFPFastMathModeFastShift
= 4,
302 SpvFPFastMathModeMax
= 0x7fffffff,
303 } SpvFPFastMathModeShift
;
305 typedef enum SpvFPFastMathModeMask_
{
306 SpvFPFastMathModeMaskNone
= 0,
307 SpvFPFastMathModeNotNaNMask
= 0x00000001,
308 SpvFPFastMathModeNotInfMask
= 0x00000002,
309 SpvFPFastMathModeNSZMask
= 0x00000004,
310 SpvFPFastMathModeAllowRecipMask
= 0x00000008,
311 SpvFPFastMathModeFastMask
= 0x00000010,
312 } SpvFPFastMathModeMask
;
314 typedef enum SpvFPRoundingMode_
{
315 SpvFPRoundingModeRTE
= 0,
316 SpvFPRoundingModeRTZ
= 1,
317 SpvFPRoundingModeRTP
= 2,
318 SpvFPRoundingModeRTN
= 3,
319 SpvFPRoundingModeMax
= 0x7fffffff,
322 typedef enum SpvLinkageType_
{
323 SpvLinkageTypeExport
= 0,
324 SpvLinkageTypeImport
= 1,
325 SpvLinkageTypeMax
= 0x7fffffff,
328 typedef enum SpvAccessQualifier_
{
329 SpvAccessQualifierReadOnly
= 0,
330 SpvAccessQualifierWriteOnly
= 1,
331 SpvAccessQualifierReadWrite
= 2,
332 SpvAccessQualifierMax
= 0x7fffffff,
333 } SpvAccessQualifier
;
335 typedef enum SpvFunctionParameterAttribute_
{
336 SpvFunctionParameterAttributeZext
= 0,
337 SpvFunctionParameterAttributeSext
= 1,
338 SpvFunctionParameterAttributeByVal
= 2,
339 SpvFunctionParameterAttributeSret
= 3,
340 SpvFunctionParameterAttributeNoAlias
= 4,
341 SpvFunctionParameterAttributeNoCapture
= 5,
342 SpvFunctionParameterAttributeNoWrite
= 6,
343 SpvFunctionParameterAttributeNoReadWrite
= 7,
344 SpvFunctionParameterAttributeMax
= 0x7fffffff,
345 } SpvFunctionParameterAttribute
;
347 typedef enum SpvDecoration_
{
348 SpvDecorationRelaxedPrecision
= 0,
349 SpvDecorationSpecId
= 1,
350 SpvDecorationBlock
= 2,
351 SpvDecorationBufferBlock
= 3,
352 SpvDecorationRowMajor
= 4,
353 SpvDecorationColMajor
= 5,
354 SpvDecorationArrayStride
= 6,
355 SpvDecorationMatrixStride
= 7,
356 SpvDecorationGLSLShared
= 8,
357 SpvDecorationGLSLPacked
= 9,
358 SpvDecorationCPacked
= 10,
359 SpvDecorationBuiltIn
= 11,
360 SpvDecorationNoPerspective
= 13,
361 SpvDecorationFlat
= 14,
362 SpvDecorationPatch
= 15,
363 SpvDecorationCentroid
= 16,
364 SpvDecorationSample
= 17,
365 SpvDecorationInvariant
= 18,
366 SpvDecorationRestrict
= 19,
367 SpvDecorationAliased
= 20,
368 SpvDecorationVolatile
= 21,
369 SpvDecorationConstant
= 22,
370 SpvDecorationCoherent
= 23,
371 SpvDecorationNonWritable
= 24,
372 SpvDecorationNonReadable
= 25,
373 SpvDecorationUniform
= 26,
374 SpvDecorationSaturatedConversion
= 28,
375 SpvDecorationStream
= 29,
376 SpvDecorationLocation
= 30,
377 SpvDecorationComponent
= 31,
378 SpvDecorationIndex
= 32,
379 SpvDecorationBinding
= 33,
380 SpvDecorationDescriptorSet
= 34,
381 SpvDecorationOffset
= 35,
382 SpvDecorationXfbBuffer
= 36,
383 SpvDecorationXfbStride
= 37,
384 SpvDecorationFuncParamAttr
= 38,
385 SpvDecorationFPRoundingMode
= 39,
386 SpvDecorationFPFastMathMode
= 40,
387 SpvDecorationLinkageAttributes
= 41,
388 SpvDecorationNoContraction
= 42,
389 SpvDecorationInputAttachmentIndex
= 43,
390 SpvDecorationAlignment
= 44,
391 SpvDecorationMaxByteOffset
= 45,
392 SpvDecorationAlignmentId
= 46,
393 SpvDecorationMaxByteOffsetId
= 47,
394 SpvDecorationExplicitInterpAMD
= 4999,
395 SpvDecorationOverrideCoverageNV
= 5248,
396 SpvDecorationPassthroughNV
= 5250,
397 SpvDecorationViewportRelativeNV
= 5252,
398 SpvDecorationSecondaryViewportRelativeNV
= 5256,
399 SpvDecorationMax
= 0x7fffffff,
402 typedef enum SpvBuiltIn_
{
403 SpvBuiltInPosition
= 0,
404 SpvBuiltInPointSize
= 1,
405 SpvBuiltInClipDistance
= 3,
406 SpvBuiltInCullDistance
= 4,
407 SpvBuiltInVertexId
= 5,
408 SpvBuiltInInstanceId
= 6,
409 SpvBuiltInPrimitiveId
= 7,
410 SpvBuiltInInvocationId
= 8,
412 SpvBuiltInViewportIndex
= 10,
413 SpvBuiltInTessLevelOuter
= 11,
414 SpvBuiltInTessLevelInner
= 12,
415 SpvBuiltInTessCoord
= 13,
416 SpvBuiltInPatchVertices
= 14,
417 SpvBuiltInFragCoord
= 15,
418 SpvBuiltInPointCoord
= 16,
419 SpvBuiltInFrontFacing
= 17,
420 SpvBuiltInSampleId
= 18,
421 SpvBuiltInSamplePosition
= 19,
422 SpvBuiltInSampleMask
= 20,
423 SpvBuiltInFragDepth
= 22,
424 SpvBuiltInHelperInvocation
= 23,
425 SpvBuiltInNumWorkgroups
= 24,
426 SpvBuiltInWorkgroupSize
= 25,
427 SpvBuiltInWorkgroupId
= 26,
428 SpvBuiltInLocalInvocationId
= 27,
429 SpvBuiltInGlobalInvocationId
= 28,
430 SpvBuiltInLocalInvocationIndex
= 29,
431 SpvBuiltInWorkDim
= 30,
432 SpvBuiltInGlobalSize
= 31,
433 SpvBuiltInEnqueuedWorkgroupSize
= 32,
434 SpvBuiltInGlobalOffset
= 33,
435 SpvBuiltInGlobalLinearId
= 34,
436 SpvBuiltInSubgroupSize
= 36,
437 SpvBuiltInSubgroupMaxSize
= 37,
438 SpvBuiltInNumSubgroups
= 38,
439 SpvBuiltInNumEnqueuedSubgroups
= 39,
440 SpvBuiltInSubgroupId
= 40,
441 SpvBuiltInSubgroupLocalInvocationId
= 41,
442 SpvBuiltInVertexIndex
= 42,
443 SpvBuiltInInstanceIndex
= 43,
444 SpvBuiltInSubgroupEqMaskKHR
= 4416,
445 SpvBuiltInSubgroupGeMaskKHR
= 4417,
446 SpvBuiltInSubgroupGtMaskKHR
= 4418,
447 SpvBuiltInSubgroupLeMaskKHR
= 4419,
448 SpvBuiltInSubgroupLtMaskKHR
= 4420,
449 SpvBuiltInBaseVertex
= 4424,
450 SpvBuiltInBaseInstance
= 4425,
451 SpvBuiltInDrawIndex
= 4426,
452 SpvBuiltInDeviceIndex
= 4438,
453 SpvBuiltInViewIndex
= 4440,
454 SpvBuiltInBaryCoordNoPerspAMD
= 4992,
455 SpvBuiltInBaryCoordNoPerspCentroidAMD
= 4993,
456 SpvBuiltInBaryCoordNoPerspSampleAMD
= 4994,
457 SpvBuiltInBaryCoordSmoothAMD
= 4995,
458 SpvBuiltInBaryCoordSmoothCentroidAMD
= 4996,
459 SpvBuiltInBaryCoordSmoothSampleAMD
= 4997,
460 SpvBuiltInBaryCoordPullModelAMD
= 4998,
461 SpvBuiltInViewportMaskNV
= 5253,
462 SpvBuiltInSecondaryPositionNV
= 5257,
463 SpvBuiltInSecondaryViewportMaskNV
= 5258,
464 SpvBuiltInPositionPerViewNV
= 5261,
465 SpvBuiltInViewportMaskPerViewNV
= 5262,
466 SpvBuiltInMax
= 0x7fffffff,
469 typedef enum SpvSelectionControlShift_
{
470 SpvSelectionControlFlattenShift
= 0,
471 SpvSelectionControlDontFlattenShift
= 1,
472 SpvSelectionControlMax
= 0x7fffffff,
473 } SpvSelectionControlShift
;
475 typedef enum SpvSelectionControlMask_
{
476 SpvSelectionControlMaskNone
= 0,
477 SpvSelectionControlFlattenMask
= 0x00000001,
478 SpvSelectionControlDontFlattenMask
= 0x00000002,
479 } SpvSelectionControlMask
;
481 typedef enum SpvLoopControlShift_
{
482 SpvLoopControlUnrollShift
= 0,
483 SpvLoopControlDontUnrollShift
= 1,
484 SpvLoopControlDependencyInfiniteShift
= 2,
485 SpvLoopControlDependencyLengthShift
= 3,
486 SpvLoopControlMax
= 0x7fffffff,
487 } SpvLoopControlShift
;
489 typedef enum SpvLoopControlMask_
{
490 SpvLoopControlMaskNone
= 0,
491 SpvLoopControlUnrollMask
= 0x00000001,
492 SpvLoopControlDontUnrollMask
= 0x00000002,
493 SpvLoopControlDependencyInfiniteMask
= 0x00000004,
494 SpvLoopControlDependencyLengthMask
= 0x00000008,
495 } SpvLoopControlMask
;
497 typedef enum SpvFunctionControlShift_
{
498 SpvFunctionControlInlineShift
= 0,
499 SpvFunctionControlDontInlineShift
= 1,
500 SpvFunctionControlPureShift
= 2,
501 SpvFunctionControlConstShift
= 3,
502 SpvFunctionControlMax
= 0x7fffffff,
503 } SpvFunctionControlShift
;
505 typedef enum SpvFunctionControlMask_
{
506 SpvFunctionControlMaskNone
= 0,
507 SpvFunctionControlInlineMask
= 0x00000001,
508 SpvFunctionControlDontInlineMask
= 0x00000002,
509 SpvFunctionControlPureMask
= 0x00000004,
510 SpvFunctionControlConstMask
= 0x00000008,
511 } SpvFunctionControlMask
;
513 typedef enum SpvMemorySemanticsShift_
{
514 SpvMemorySemanticsAcquireShift
= 1,
515 SpvMemorySemanticsReleaseShift
= 2,
516 SpvMemorySemanticsAcquireReleaseShift
= 3,
517 SpvMemorySemanticsSequentiallyConsistentShift
= 4,
518 SpvMemorySemanticsUniformMemoryShift
= 6,
519 SpvMemorySemanticsSubgroupMemoryShift
= 7,
520 SpvMemorySemanticsWorkgroupMemoryShift
= 8,
521 SpvMemorySemanticsCrossWorkgroupMemoryShift
= 9,
522 SpvMemorySemanticsAtomicCounterMemoryShift
= 10,
523 SpvMemorySemanticsImageMemoryShift
= 11,
524 SpvMemorySemanticsMax
= 0x7fffffff,
525 } SpvMemorySemanticsShift
;
527 typedef enum SpvMemorySemanticsMask_
{
528 SpvMemorySemanticsMaskNone
= 0,
529 SpvMemorySemanticsAcquireMask
= 0x00000002,
530 SpvMemorySemanticsReleaseMask
= 0x00000004,
531 SpvMemorySemanticsAcquireReleaseMask
= 0x00000008,
532 SpvMemorySemanticsSequentiallyConsistentMask
= 0x00000010,
533 SpvMemorySemanticsUniformMemoryMask
= 0x00000040,
534 SpvMemorySemanticsSubgroupMemoryMask
= 0x00000080,
535 SpvMemorySemanticsWorkgroupMemoryMask
= 0x00000100,
536 SpvMemorySemanticsCrossWorkgroupMemoryMask
= 0x00000200,
537 SpvMemorySemanticsAtomicCounterMemoryMask
= 0x00000400,
538 SpvMemorySemanticsImageMemoryMask
= 0x00000800,
539 } SpvMemorySemanticsMask
;
541 typedef enum SpvMemoryAccessShift_
{
542 SpvMemoryAccessVolatileShift
= 0,
543 SpvMemoryAccessAlignedShift
= 1,
544 SpvMemoryAccessNontemporalShift
= 2,
545 SpvMemoryAccessMax
= 0x7fffffff,
546 } SpvMemoryAccessShift
;
548 typedef enum SpvMemoryAccessMask_
{
549 SpvMemoryAccessMaskNone
= 0,
550 SpvMemoryAccessVolatileMask
= 0x00000001,
551 SpvMemoryAccessAlignedMask
= 0x00000002,
552 SpvMemoryAccessNontemporalMask
= 0x00000004,
553 } SpvMemoryAccessMask
;
555 typedef enum SpvScope_
{
556 SpvScopeCrossDevice
= 0,
558 SpvScopeWorkgroup
= 2,
559 SpvScopeSubgroup
= 3,
560 SpvScopeInvocation
= 4,
561 SpvScopeMax
= 0x7fffffff,
564 typedef enum SpvGroupOperation_
{
565 SpvGroupOperationReduce
= 0,
566 SpvGroupOperationInclusiveScan
= 1,
567 SpvGroupOperationExclusiveScan
= 2,
568 SpvGroupOperationMax
= 0x7fffffff,
571 typedef enum SpvKernelEnqueueFlags_
{
572 SpvKernelEnqueueFlagsNoWait
= 0,
573 SpvKernelEnqueueFlagsWaitKernel
= 1,
574 SpvKernelEnqueueFlagsWaitWorkGroup
= 2,
575 SpvKernelEnqueueFlagsMax
= 0x7fffffff,
576 } SpvKernelEnqueueFlags
;
578 typedef enum SpvKernelProfilingInfoShift_
{
579 SpvKernelProfilingInfoCmdExecTimeShift
= 0,
580 SpvKernelProfilingInfoMax
= 0x7fffffff,
581 } SpvKernelProfilingInfoShift
;
583 typedef enum SpvKernelProfilingInfoMask_
{
584 SpvKernelProfilingInfoMaskNone
= 0,
585 SpvKernelProfilingInfoCmdExecTimeMask
= 0x00000001,
586 } SpvKernelProfilingInfoMask
;
588 typedef enum SpvCapability_
{
589 SpvCapabilityMatrix
= 0,
590 SpvCapabilityShader
= 1,
591 SpvCapabilityGeometry
= 2,
592 SpvCapabilityTessellation
= 3,
593 SpvCapabilityAddresses
= 4,
594 SpvCapabilityLinkage
= 5,
595 SpvCapabilityKernel
= 6,
596 SpvCapabilityVector16
= 7,
597 SpvCapabilityFloat16Buffer
= 8,
598 SpvCapabilityFloat16
= 9,
599 SpvCapabilityFloat64
= 10,
600 SpvCapabilityInt64
= 11,
601 SpvCapabilityInt64Atomics
= 12,
602 SpvCapabilityImageBasic
= 13,
603 SpvCapabilityImageReadWrite
= 14,
604 SpvCapabilityImageMipmap
= 15,
605 SpvCapabilityPipes
= 17,
606 SpvCapabilityGroups
= 18,
607 SpvCapabilityDeviceEnqueue
= 19,
608 SpvCapabilityLiteralSampler
= 20,
609 SpvCapabilityAtomicStorage
= 21,
610 SpvCapabilityInt16
= 22,
611 SpvCapabilityTessellationPointSize
= 23,
612 SpvCapabilityGeometryPointSize
= 24,
613 SpvCapabilityImageGatherExtended
= 25,
614 SpvCapabilityStorageImageMultisample
= 27,
615 SpvCapabilityUniformBufferArrayDynamicIndexing
= 28,
616 SpvCapabilitySampledImageArrayDynamicIndexing
= 29,
617 SpvCapabilityStorageBufferArrayDynamicIndexing
= 30,
618 SpvCapabilityStorageImageArrayDynamicIndexing
= 31,
619 SpvCapabilityClipDistance
= 32,
620 SpvCapabilityCullDistance
= 33,
621 SpvCapabilityImageCubeArray
= 34,
622 SpvCapabilitySampleRateShading
= 35,
623 SpvCapabilityImageRect
= 36,
624 SpvCapabilitySampledRect
= 37,
625 SpvCapabilityGenericPointer
= 38,
626 SpvCapabilityInt8
= 39,
627 SpvCapabilityInputAttachment
= 40,
628 SpvCapabilitySparseResidency
= 41,
629 SpvCapabilityMinLod
= 42,
630 SpvCapabilitySampled1D
= 43,
631 SpvCapabilityImage1D
= 44,
632 SpvCapabilitySampledCubeArray
= 45,
633 SpvCapabilitySampledBuffer
= 46,
634 SpvCapabilityImageBuffer
= 47,
635 SpvCapabilityImageMSArray
= 48,
636 SpvCapabilityStorageImageExtendedFormats
= 49,
637 SpvCapabilityImageQuery
= 50,
638 SpvCapabilityDerivativeControl
= 51,
639 SpvCapabilityInterpolationFunction
= 52,
640 SpvCapabilityTransformFeedback
= 53,
641 SpvCapabilityGeometryStreams
= 54,
642 SpvCapabilityStorageImageReadWithoutFormat
= 55,
643 SpvCapabilityStorageImageWriteWithoutFormat
= 56,
644 SpvCapabilityMultiViewport
= 57,
645 SpvCapabilitySubgroupDispatch
= 58,
646 SpvCapabilityNamedBarrier
= 59,
647 SpvCapabilityPipeStorage
= 60,
648 SpvCapabilitySubgroupBallotKHR
= 4423,
649 SpvCapabilityDrawParameters
= 4427,
650 SpvCapabilitySubgroupVoteKHR
= 4431,
651 SpvCapabilityStorageBuffer16BitAccess
= 4433,
652 SpvCapabilityStorageUniformBufferBlock16
= 4433,
653 SpvCapabilityStorageUniform16
= 4434,
654 SpvCapabilityUniformAndStorageBuffer16BitAccess
= 4434,
655 SpvCapabilityStoragePushConstant16
= 4435,
656 SpvCapabilityStorageInputOutput16
= 4436,
657 SpvCapabilityDeviceGroup
= 4437,
658 SpvCapabilityMultiView
= 4439,
659 SpvCapabilityVariablePointersStorageBuffer
= 4441,
660 SpvCapabilityVariablePointers
= 4442,
661 SpvCapabilityAtomicStorageOps
= 4445,
662 SpvCapabilitySampleMaskPostDepthCoverage
= 4447,
663 SpvCapabilityImageGatherBiasLodAMD
= 5009,
664 SpvCapabilitySampleMaskOverrideCoverageNV
= 5249,
665 SpvCapabilityGeometryShaderPassthroughNV
= 5251,
666 SpvCapabilityShaderViewportIndexLayerNV
= 5254,
667 SpvCapabilityShaderViewportMaskNV
= 5255,
668 SpvCapabilityShaderStereoViewNV
= 5259,
669 SpvCapabilityPerViewAttributesNV
= 5260,
670 SpvCapabilityMax
= 0x7fffffff,
673 typedef enum SpvOp_
{
676 SpvOpSourceContinued
= 2,
678 SpvOpSourceExtension
= 4,
684 SpvOpExtInstImport
= 11,
686 SpvOpMemoryModel
= 14,
687 SpvOpEntryPoint
= 15,
688 SpvOpExecutionMode
= 16,
689 SpvOpCapability
= 17,
694 SpvOpTypeVector
= 23,
695 SpvOpTypeMatrix
= 24,
697 SpvOpTypeSampler
= 26,
698 SpvOpTypeSampledImage
= 27,
700 SpvOpTypeRuntimeArray
= 29,
701 SpvOpTypeStruct
= 30,
702 SpvOpTypeOpaque
= 31,
703 SpvOpTypePointer
= 32,
704 SpvOpTypeFunction
= 33,
706 SpvOpTypeDeviceEvent
= 35,
707 SpvOpTypeReserveId
= 36,
710 SpvOpTypeForwardPointer
= 39,
711 SpvOpConstantTrue
= 41,
712 SpvOpConstantFalse
= 42,
714 SpvOpConstantComposite
= 44,
715 SpvOpConstantSampler
= 45,
716 SpvOpConstantNull
= 46,
717 SpvOpSpecConstantTrue
= 48,
718 SpvOpSpecConstantFalse
= 49,
719 SpvOpSpecConstant
= 50,
720 SpvOpSpecConstantComposite
= 51,
721 SpvOpSpecConstantOp
= 52,
723 SpvOpFunctionParameter
= 55,
724 SpvOpFunctionEnd
= 56,
725 SpvOpFunctionCall
= 57,
727 SpvOpImageTexelPointer
= 60,
730 SpvOpCopyMemory
= 63,
731 SpvOpCopyMemorySized
= 64,
732 SpvOpAccessChain
= 65,
733 SpvOpInBoundsAccessChain
= 66,
734 SpvOpPtrAccessChain
= 67,
735 SpvOpArrayLength
= 68,
736 SpvOpGenericPtrMemSemantics
= 69,
737 SpvOpInBoundsPtrAccessChain
= 70,
739 SpvOpMemberDecorate
= 72,
740 SpvOpDecorationGroup
= 73,
741 SpvOpGroupDecorate
= 74,
742 SpvOpGroupMemberDecorate
= 75,
743 SpvOpVectorExtractDynamic
= 77,
744 SpvOpVectorInsertDynamic
= 78,
745 SpvOpVectorShuffle
= 79,
746 SpvOpCompositeConstruct
= 80,
747 SpvOpCompositeExtract
= 81,
748 SpvOpCompositeInsert
= 82,
749 SpvOpCopyObject
= 83,
751 SpvOpSampledImage
= 86,
752 SpvOpImageSampleImplicitLod
= 87,
753 SpvOpImageSampleExplicitLod
= 88,
754 SpvOpImageSampleDrefImplicitLod
= 89,
755 SpvOpImageSampleDrefExplicitLod
= 90,
756 SpvOpImageSampleProjImplicitLod
= 91,
757 SpvOpImageSampleProjExplicitLod
= 92,
758 SpvOpImageSampleProjDrefImplicitLod
= 93,
759 SpvOpImageSampleProjDrefExplicitLod
= 94,
760 SpvOpImageFetch
= 95,
761 SpvOpImageGather
= 96,
762 SpvOpImageDrefGather
= 97,
764 SpvOpImageWrite
= 99,
766 SpvOpImageQueryFormat
= 101,
767 SpvOpImageQueryOrder
= 102,
768 SpvOpImageQuerySizeLod
= 103,
769 SpvOpImageQuerySize
= 104,
770 SpvOpImageQueryLod
= 105,
771 SpvOpImageQueryLevels
= 106,
772 SpvOpImageQuerySamples
= 107,
773 SpvOpConvertFToU
= 109,
774 SpvOpConvertFToS
= 110,
775 SpvOpConvertSToF
= 111,
776 SpvOpConvertUToF
= 112,
780 SpvOpQuantizeToF16
= 116,
781 SpvOpConvertPtrToU
= 117,
782 SpvOpSatConvertSToU
= 118,
783 SpvOpSatConvertUToS
= 119,
784 SpvOpConvertUToPtr
= 120,
785 SpvOpPtrCastToGeneric
= 121,
786 SpvOpGenericCastToPtr
= 122,
787 SpvOpGenericCastToPtrExplicit
= 123,
805 SpvOpVectorTimesScalar
= 142,
806 SpvOpMatrixTimesScalar
= 143,
807 SpvOpVectorTimesMatrix
= 144,
808 SpvOpMatrixTimesVector
= 145,
809 SpvOpMatrixTimesMatrix
= 146,
810 SpvOpOuterProduct
= 147,
812 SpvOpIAddCarry
= 149,
813 SpvOpISubBorrow
= 150,
814 SpvOpUMulExtended
= 151,
815 SpvOpSMulExtended
= 152,
822 SpvOpSignBitSet
= 160,
823 SpvOpLessOrGreater
= 161,
825 SpvOpUnordered
= 163,
826 SpvOpLogicalEqual
= 164,
827 SpvOpLogicalNotEqual
= 165,
828 SpvOpLogicalOr
= 166,
829 SpvOpLogicalAnd
= 167,
830 SpvOpLogicalNot
= 168,
833 SpvOpINotEqual
= 171,
834 SpvOpUGreaterThan
= 172,
835 SpvOpSGreaterThan
= 173,
836 SpvOpUGreaterThanEqual
= 174,
837 SpvOpSGreaterThanEqual
= 175,
838 SpvOpULessThan
= 176,
839 SpvOpSLessThan
= 177,
840 SpvOpULessThanEqual
= 178,
841 SpvOpSLessThanEqual
= 179,
842 SpvOpFOrdEqual
= 180,
843 SpvOpFUnordEqual
= 181,
844 SpvOpFOrdNotEqual
= 182,
845 SpvOpFUnordNotEqual
= 183,
846 SpvOpFOrdLessThan
= 184,
847 SpvOpFUnordLessThan
= 185,
848 SpvOpFOrdGreaterThan
= 186,
849 SpvOpFUnordGreaterThan
= 187,
850 SpvOpFOrdLessThanEqual
= 188,
851 SpvOpFUnordLessThanEqual
= 189,
852 SpvOpFOrdGreaterThanEqual
= 190,
853 SpvOpFUnordGreaterThanEqual
= 191,
854 SpvOpShiftRightLogical
= 194,
855 SpvOpShiftRightArithmetic
= 195,
856 SpvOpShiftLeftLogical
= 196,
857 SpvOpBitwiseOr
= 197,
858 SpvOpBitwiseXor
= 198,
859 SpvOpBitwiseAnd
= 199,
861 SpvOpBitFieldInsert
= 201,
862 SpvOpBitFieldSExtract
= 202,
863 SpvOpBitFieldUExtract
= 203,
864 SpvOpBitReverse
= 204,
871 SpvOpFwidthFine
= 212,
872 SpvOpDPdxCoarse
= 213,
873 SpvOpDPdyCoarse
= 214,
874 SpvOpFwidthCoarse
= 215,
875 SpvOpEmitVertex
= 218,
876 SpvOpEndPrimitive
= 219,
877 SpvOpEmitStreamVertex
= 220,
878 SpvOpEndStreamPrimitive
= 221,
879 SpvOpControlBarrier
= 224,
880 SpvOpMemoryBarrier
= 225,
881 SpvOpAtomicLoad
= 227,
882 SpvOpAtomicStore
= 228,
883 SpvOpAtomicExchange
= 229,
884 SpvOpAtomicCompareExchange
= 230,
885 SpvOpAtomicCompareExchangeWeak
= 231,
886 SpvOpAtomicIIncrement
= 232,
887 SpvOpAtomicIDecrement
= 233,
888 SpvOpAtomicIAdd
= 234,
889 SpvOpAtomicISub
= 235,
890 SpvOpAtomicSMin
= 236,
891 SpvOpAtomicUMin
= 237,
892 SpvOpAtomicSMax
= 238,
893 SpvOpAtomicUMax
= 239,
894 SpvOpAtomicAnd
= 240,
896 SpvOpAtomicXor
= 242,
898 SpvOpLoopMerge
= 246,
899 SpvOpSelectionMerge
= 247,
902 SpvOpBranchConditional
= 250,
906 SpvOpReturnValue
= 254,
907 SpvOpUnreachable
= 255,
908 SpvOpLifetimeStart
= 256,
909 SpvOpLifetimeStop
= 257,
910 SpvOpGroupAsyncCopy
= 259,
911 SpvOpGroupWaitEvents
= 260,
914 SpvOpGroupBroadcast
= 263,
915 SpvOpGroupIAdd
= 264,
916 SpvOpGroupFAdd
= 265,
917 SpvOpGroupFMin
= 266,
918 SpvOpGroupUMin
= 267,
919 SpvOpGroupSMin
= 268,
920 SpvOpGroupFMax
= 269,
921 SpvOpGroupUMax
= 270,
922 SpvOpGroupSMax
= 271,
924 SpvOpWritePipe
= 275,
925 SpvOpReservedReadPipe
= 276,
926 SpvOpReservedWritePipe
= 277,
927 SpvOpReserveReadPipePackets
= 278,
928 SpvOpReserveWritePipePackets
= 279,
929 SpvOpCommitReadPipe
= 280,
930 SpvOpCommitWritePipe
= 281,
931 SpvOpIsValidReserveId
= 282,
932 SpvOpGetNumPipePackets
= 283,
933 SpvOpGetMaxPipePackets
= 284,
934 SpvOpGroupReserveReadPipePackets
= 285,
935 SpvOpGroupReserveWritePipePackets
= 286,
936 SpvOpGroupCommitReadPipe
= 287,
937 SpvOpGroupCommitWritePipe
= 288,
938 SpvOpEnqueueMarker
= 291,
939 SpvOpEnqueueKernel
= 292,
940 SpvOpGetKernelNDrangeSubGroupCount
= 293,
941 SpvOpGetKernelNDrangeMaxSubGroupSize
= 294,
942 SpvOpGetKernelWorkGroupSize
= 295,
943 SpvOpGetKernelPreferredWorkGroupSizeMultiple
= 296,
944 SpvOpRetainEvent
= 297,
945 SpvOpReleaseEvent
= 298,
946 SpvOpCreateUserEvent
= 299,
947 SpvOpIsValidEvent
= 300,
948 SpvOpSetUserEventStatus
= 301,
949 SpvOpCaptureEventProfilingInfo
= 302,
950 SpvOpGetDefaultQueue
= 303,
951 SpvOpBuildNDRange
= 304,
952 SpvOpImageSparseSampleImplicitLod
= 305,
953 SpvOpImageSparseSampleExplicitLod
= 306,
954 SpvOpImageSparseSampleDrefImplicitLod
= 307,
955 SpvOpImageSparseSampleDrefExplicitLod
= 308,
956 SpvOpImageSparseSampleProjImplicitLod
= 309,
957 SpvOpImageSparseSampleProjExplicitLod
= 310,
958 SpvOpImageSparseSampleProjDrefImplicitLod
= 311,
959 SpvOpImageSparseSampleProjDrefExplicitLod
= 312,
960 SpvOpImageSparseFetch
= 313,
961 SpvOpImageSparseGather
= 314,
962 SpvOpImageSparseDrefGather
= 315,
963 SpvOpImageSparseTexelsResident
= 316,
965 SpvOpAtomicFlagTestAndSet
= 318,
966 SpvOpAtomicFlagClear
= 319,
967 SpvOpImageSparseRead
= 320,
969 SpvOpTypePipeStorage
= 322,
970 SpvOpConstantPipeStorage
= 323,
971 SpvOpCreatePipeFromPipeStorage
= 324,
972 SpvOpGetKernelLocalSizeForSubgroupCount
= 325,
973 SpvOpGetKernelMaxNumSubgroups
= 326,
974 SpvOpTypeNamedBarrier
= 327,
975 SpvOpNamedBarrierInitialize
= 328,
976 SpvOpMemoryNamedBarrier
= 329,
977 SpvOpModuleProcessed
= 330,
978 SpvOpExecutionModeId
= 331,
979 SpvOpDecorateId
= 332,
980 SpvOpSubgroupBallotKHR
= 4421,
981 SpvOpSubgroupFirstInvocationKHR
= 4422,
982 SpvOpSubgroupAllKHR
= 4428,
983 SpvOpSubgroupAnyKHR
= 4429,
984 SpvOpSubgroupAllEqualKHR
= 4430,
985 SpvOpSubgroupReadInvocationKHR
= 4432,
986 SpvOpGroupIAddNonUniformAMD
= 5000,
987 SpvOpGroupFAddNonUniformAMD
= 5001,
988 SpvOpGroupFMinNonUniformAMD
= 5002,
989 SpvOpGroupUMinNonUniformAMD
= 5003,
990 SpvOpGroupSMinNonUniformAMD
= 5004,
991 SpvOpGroupFMaxNonUniformAMD
= 5005,
992 SpvOpGroupUMaxNonUniformAMD
= 5006,
993 SpvOpGroupSMaxNonUniformAMD
= 5007,
994 SpvOpMax
= 0x7fffffff,
997 #endif // #ifndef spirv_H