2 ** Copyright (c) 2014-2016 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 0x10100
54 #define SPV_REVISION 4
56 static const unsigned int SpvMagicNumber
= 0x07230203;
57 static const unsigned int SpvVersion
= 0x00010100;
58 static const unsigned int SpvRevision
= 4;
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 SpvSourceLanguageMax
= 0x7fffffff,
71 typedef enum SpvExecutionModel_
{
72 SpvExecutionModelVertex
= 0,
73 SpvExecutionModelTessellationControl
= 1,
74 SpvExecutionModelTessellationEvaluation
= 2,
75 SpvExecutionModelGeometry
= 3,
76 SpvExecutionModelFragment
= 4,
77 SpvExecutionModelGLCompute
= 5,
78 SpvExecutionModelKernel
= 6,
79 SpvExecutionModelMax
= 0x7fffffff,
82 typedef enum SpvAddressingModel_
{
83 SpvAddressingModelLogical
= 0,
84 SpvAddressingModelPhysical32
= 1,
85 SpvAddressingModelPhysical64
= 2,
86 SpvAddressingModelMax
= 0x7fffffff,
89 typedef enum SpvMemoryModel_
{
90 SpvMemoryModelSimple
= 0,
91 SpvMemoryModelGLSL450
= 1,
92 SpvMemoryModelOpenCL
= 2,
93 SpvMemoryModelMax
= 0x7fffffff,
96 typedef enum SpvExecutionMode_
{
97 SpvExecutionModeInvocations
= 0,
98 SpvExecutionModeSpacingEqual
= 1,
99 SpvExecutionModeSpacingFractionalEven
= 2,
100 SpvExecutionModeSpacingFractionalOdd
= 3,
101 SpvExecutionModeVertexOrderCw
= 4,
102 SpvExecutionModeVertexOrderCcw
= 5,
103 SpvExecutionModePixelCenterInteger
= 6,
104 SpvExecutionModeOriginUpperLeft
= 7,
105 SpvExecutionModeOriginLowerLeft
= 8,
106 SpvExecutionModeEarlyFragmentTests
= 9,
107 SpvExecutionModePointMode
= 10,
108 SpvExecutionModeXfb
= 11,
109 SpvExecutionModeDepthReplacing
= 12,
110 SpvExecutionModeDepthGreater
= 14,
111 SpvExecutionModeDepthLess
= 15,
112 SpvExecutionModeDepthUnchanged
= 16,
113 SpvExecutionModeLocalSize
= 17,
114 SpvExecutionModeLocalSizeHint
= 18,
115 SpvExecutionModeInputPoints
= 19,
116 SpvExecutionModeInputLines
= 20,
117 SpvExecutionModeInputLinesAdjacency
= 21,
118 SpvExecutionModeTriangles
= 22,
119 SpvExecutionModeInputTrianglesAdjacency
= 23,
120 SpvExecutionModeQuads
= 24,
121 SpvExecutionModeIsolines
= 25,
122 SpvExecutionModeOutputVertices
= 26,
123 SpvExecutionModeOutputPoints
= 27,
124 SpvExecutionModeOutputLineStrip
= 28,
125 SpvExecutionModeOutputTriangleStrip
= 29,
126 SpvExecutionModeVecTypeHint
= 30,
127 SpvExecutionModeContractionOff
= 31,
128 SpvExecutionModeInitializer
= 33,
129 SpvExecutionModeFinalizer
= 34,
130 SpvExecutionModeSubgroupSize
= 35,
131 SpvExecutionModeSubgroupsPerWorkgroup
= 36,
132 SpvExecutionModeMax
= 0x7fffffff,
135 typedef enum SpvStorageClass_
{
136 SpvStorageClassUniformConstant
= 0,
137 SpvStorageClassInput
= 1,
138 SpvStorageClassUniform
= 2,
139 SpvStorageClassOutput
= 3,
140 SpvStorageClassWorkgroup
= 4,
141 SpvStorageClassCrossWorkgroup
= 5,
142 SpvStorageClassPrivate
= 6,
143 SpvStorageClassFunction
= 7,
144 SpvStorageClassGeneric
= 8,
145 SpvStorageClassPushConstant
= 9,
146 SpvStorageClassAtomicCounter
= 10,
147 SpvStorageClassImage
= 11,
148 SpvStorageClassMax
= 0x7fffffff,
151 typedef enum SpvDim_
{
158 SpvDimSubpassData
= 6,
159 SpvDimMax
= 0x7fffffff,
162 typedef enum SpvSamplerAddressingMode_
{
163 SpvSamplerAddressingModeNone
= 0,
164 SpvSamplerAddressingModeClampToEdge
= 1,
165 SpvSamplerAddressingModeClamp
= 2,
166 SpvSamplerAddressingModeRepeat
= 3,
167 SpvSamplerAddressingModeRepeatMirrored
= 4,
168 SpvSamplerAddressingModeMax
= 0x7fffffff,
169 } SpvSamplerAddressingMode
;
171 typedef enum SpvSamplerFilterMode_
{
172 SpvSamplerFilterModeNearest
= 0,
173 SpvSamplerFilterModeLinear
= 1,
174 SpvSamplerFilterModeMax
= 0x7fffffff,
175 } SpvSamplerFilterMode
;
177 typedef enum SpvImageFormat_
{
178 SpvImageFormatUnknown
= 0,
179 SpvImageFormatRgba32f
= 1,
180 SpvImageFormatRgba16f
= 2,
181 SpvImageFormatR32f
= 3,
182 SpvImageFormatRgba8
= 4,
183 SpvImageFormatRgba8Snorm
= 5,
184 SpvImageFormatRg32f
= 6,
185 SpvImageFormatRg16f
= 7,
186 SpvImageFormatR11fG11fB10f
= 8,
187 SpvImageFormatR16f
= 9,
188 SpvImageFormatRgba16
= 10,
189 SpvImageFormatRgb10A2
= 11,
190 SpvImageFormatRg16
= 12,
191 SpvImageFormatRg8
= 13,
192 SpvImageFormatR16
= 14,
193 SpvImageFormatR8
= 15,
194 SpvImageFormatRgba16Snorm
= 16,
195 SpvImageFormatRg16Snorm
= 17,
196 SpvImageFormatRg8Snorm
= 18,
197 SpvImageFormatR16Snorm
= 19,
198 SpvImageFormatR8Snorm
= 20,
199 SpvImageFormatRgba32i
= 21,
200 SpvImageFormatRgba16i
= 22,
201 SpvImageFormatRgba8i
= 23,
202 SpvImageFormatR32i
= 24,
203 SpvImageFormatRg32i
= 25,
204 SpvImageFormatRg16i
= 26,
205 SpvImageFormatRg8i
= 27,
206 SpvImageFormatR16i
= 28,
207 SpvImageFormatR8i
= 29,
208 SpvImageFormatRgba32ui
= 30,
209 SpvImageFormatRgba16ui
= 31,
210 SpvImageFormatRgba8ui
= 32,
211 SpvImageFormatR32ui
= 33,
212 SpvImageFormatRgb10a2ui
= 34,
213 SpvImageFormatRg32ui
= 35,
214 SpvImageFormatRg16ui
= 36,
215 SpvImageFormatRg8ui
= 37,
216 SpvImageFormatR16ui
= 38,
217 SpvImageFormatR8ui
= 39,
218 SpvImageFormatMax
= 0x7fffffff,
221 typedef enum SpvImageChannelOrder_
{
222 SpvImageChannelOrderR
= 0,
223 SpvImageChannelOrderA
= 1,
224 SpvImageChannelOrderRG
= 2,
225 SpvImageChannelOrderRA
= 3,
226 SpvImageChannelOrderRGB
= 4,
227 SpvImageChannelOrderRGBA
= 5,
228 SpvImageChannelOrderBGRA
= 6,
229 SpvImageChannelOrderARGB
= 7,
230 SpvImageChannelOrderIntensity
= 8,
231 SpvImageChannelOrderLuminance
= 9,
232 SpvImageChannelOrderRx
= 10,
233 SpvImageChannelOrderRGx
= 11,
234 SpvImageChannelOrderRGBx
= 12,
235 SpvImageChannelOrderDepth
= 13,
236 SpvImageChannelOrderDepthStencil
= 14,
237 SpvImageChannelOrdersRGB
= 15,
238 SpvImageChannelOrdersRGBx
= 16,
239 SpvImageChannelOrdersRGBA
= 17,
240 SpvImageChannelOrdersBGRA
= 18,
241 SpvImageChannelOrderABGR
= 19,
242 SpvImageChannelOrderMax
= 0x7fffffff,
243 } SpvImageChannelOrder
;
245 typedef enum SpvImageChannelDataType_
{
246 SpvImageChannelDataTypeSnormInt8
= 0,
247 SpvImageChannelDataTypeSnormInt16
= 1,
248 SpvImageChannelDataTypeUnormInt8
= 2,
249 SpvImageChannelDataTypeUnormInt16
= 3,
250 SpvImageChannelDataTypeUnormShort565
= 4,
251 SpvImageChannelDataTypeUnormShort555
= 5,
252 SpvImageChannelDataTypeUnormInt101010
= 6,
253 SpvImageChannelDataTypeSignedInt8
= 7,
254 SpvImageChannelDataTypeSignedInt16
= 8,
255 SpvImageChannelDataTypeSignedInt32
= 9,
256 SpvImageChannelDataTypeUnsignedInt8
= 10,
257 SpvImageChannelDataTypeUnsignedInt16
= 11,
258 SpvImageChannelDataTypeUnsignedInt32
= 12,
259 SpvImageChannelDataTypeHalfFloat
= 13,
260 SpvImageChannelDataTypeFloat
= 14,
261 SpvImageChannelDataTypeUnormInt24
= 15,
262 SpvImageChannelDataTypeUnormInt101010_2
= 16,
263 SpvImageChannelDataTypeMax
= 0x7fffffff,
264 } SpvImageChannelDataType
;
266 typedef enum SpvImageOperandsShift_
{
267 SpvImageOperandsBiasShift
= 0,
268 SpvImageOperandsLodShift
= 1,
269 SpvImageOperandsGradShift
= 2,
270 SpvImageOperandsConstOffsetShift
= 3,
271 SpvImageOperandsOffsetShift
= 4,
272 SpvImageOperandsConstOffsetsShift
= 5,
273 SpvImageOperandsSampleShift
= 6,
274 SpvImageOperandsMinLodShift
= 7,
275 SpvImageOperandsMax
= 0x7fffffff,
276 } SpvImageOperandsShift
;
278 typedef enum SpvImageOperandsMask_
{
279 SpvImageOperandsMaskNone
= 0,
280 SpvImageOperandsBiasMask
= 0x00000001,
281 SpvImageOperandsLodMask
= 0x00000002,
282 SpvImageOperandsGradMask
= 0x00000004,
283 SpvImageOperandsConstOffsetMask
= 0x00000008,
284 SpvImageOperandsOffsetMask
= 0x00000010,
285 SpvImageOperandsConstOffsetsMask
= 0x00000020,
286 SpvImageOperandsSampleMask
= 0x00000040,
287 SpvImageOperandsMinLodMask
= 0x00000080,
288 } SpvImageOperandsMask
;
290 typedef enum SpvFPFastMathModeShift_
{
291 SpvFPFastMathModeNotNaNShift
= 0,
292 SpvFPFastMathModeNotInfShift
= 1,
293 SpvFPFastMathModeNSZShift
= 2,
294 SpvFPFastMathModeAllowRecipShift
= 3,
295 SpvFPFastMathModeFastShift
= 4,
296 SpvFPFastMathModeMax
= 0x7fffffff,
297 } SpvFPFastMathModeShift
;
299 typedef enum SpvFPFastMathModeMask_
{
300 SpvFPFastMathModeMaskNone
= 0,
301 SpvFPFastMathModeNotNaNMask
= 0x00000001,
302 SpvFPFastMathModeNotInfMask
= 0x00000002,
303 SpvFPFastMathModeNSZMask
= 0x00000004,
304 SpvFPFastMathModeAllowRecipMask
= 0x00000008,
305 SpvFPFastMathModeFastMask
= 0x00000010,
306 } SpvFPFastMathModeMask
;
308 typedef enum SpvFPRoundingMode_
{
309 SpvFPRoundingModeRTE
= 0,
310 SpvFPRoundingModeRTZ
= 1,
311 SpvFPRoundingModeRTP
= 2,
312 SpvFPRoundingModeRTN
= 3,
313 SpvFPRoundingModeMax
= 0x7fffffff,
316 typedef enum SpvLinkageType_
{
317 SpvLinkageTypeExport
= 0,
318 SpvLinkageTypeImport
= 1,
319 SpvLinkageTypeMax
= 0x7fffffff,
322 typedef enum SpvAccessQualifier_
{
323 SpvAccessQualifierReadOnly
= 0,
324 SpvAccessQualifierWriteOnly
= 1,
325 SpvAccessQualifierReadWrite
= 2,
326 SpvAccessQualifierMax
= 0x7fffffff,
327 } SpvAccessQualifier
;
329 typedef enum SpvFunctionParameterAttribute_
{
330 SpvFunctionParameterAttributeZext
= 0,
331 SpvFunctionParameterAttributeSext
= 1,
332 SpvFunctionParameterAttributeByVal
= 2,
333 SpvFunctionParameterAttributeSret
= 3,
334 SpvFunctionParameterAttributeNoAlias
= 4,
335 SpvFunctionParameterAttributeNoCapture
= 5,
336 SpvFunctionParameterAttributeNoWrite
= 6,
337 SpvFunctionParameterAttributeNoReadWrite
= 7,
338 SpvFunctionParameterAttributeMax
= 0x7fffffff,
339 } SpvFunctionParameterAttribute
;
341 typedef enum SpvDecoration_
{
342 SpvDecorationRelaxedPrecision
= 0,
343 SpvDecorationSpecId
= 1,
344 SpvDecorationBlock
= 2,
345 SpvDecorationBufferBlock
= 3,
346 SpvDecorationRowMajor
= 4,
347 SpvDecorationColMajor
= 5,
348 SpvDecorationArrayStride
= 6,
349 SpvDecorationMatrixStride
= 7,
350 SpvDecorationGLSLShared
= 8,
351 SpvDecorationGLSLPacked
= 9,
352 SpvDecorationCPacked
= 10,
353 SpvDecorationBuiltIn
= 11,
354 SpvDecorationNoPerspective
= 13,
355 SpvDecorationFlat
= 14,
356 SpvDecorationPatch
= 15,
357 SpvDecorationCentroid
= 16,
358 SpvDecorationSample
= 17,
359 SpvDecorationInvariant
= 18,
360 SpvDecorationRestrict
= 19,
361 SpvDecorationAliased
= 20,
362 SpvDecorationVolatile
= 21,
363 SpvDecorationConstant
= 22,
364 SpvDecorationCoherent
= 23,
365 SpvDecorationNonWritable
= 24,
366 SpvDecorationNonReadable
= 25,
367 SpvDecorationUniform
= 26,
368 SpvDecorationSaturatedConversion
= 28,
369 SpvDecorationStream
= 29,
370 SpvDecorationLocation
= 30,
371 SpvDecorationComponent
= 31,
372 SpvDecorationIndex
= 32,
373 SpvDecorationBinding
= 33,
374 SpvDecorationDescriptorSet
= 34,
375 SpvDecorationOffset
= 35,
376 SpvDecorationXfbBuffer
= 36,
377 SpvDecorationXfbStride
= 37,
378 SpvDecorationFuncParamAttr
= 38,
379 SpvDecorationFPRoundingMode
= 39,
380 SpvDecorationFPFastMathMode
= 40,
381 SpvDecorationLinkageAttributes
= 41,
382 SpvDecorationNoContraction
= 42,
383 SpvDecorationInputAttachmentIndex
= 43,
384 SpvDecorationAlignment
= 44,
385 SpvDecorationMaxByteOffset
= 45,
386 SpvDecorationMax
= 0x7fffffff,
389 typedef enum SpvBuiltIn_
{
390 SpvBuiltInPosition
= 0,
391 SpvBuiltInPointSize
= 1,
392 SpvBuiltInClipDistance
= 3,
393 SpvBuiltInCullDistance
= 4,
394 SpvBuiltInVertexId
= 5,
395 SpvBuiltInInstanceId
= 6,
396 SpvBuiltInPrimitiveId
= 7,
397 SpvBuiltInInvocationId
= 8,
399 SpvBuiltInViewportIndex
= 10,
400 SpvBuiltInTessLevelOuter
= 11,
401 SpvBuiltInTessLevelInner
= 12,
402 SpvBuiltInTessCoord
= 13,
403 SpvBuiltInPatchVertices
= 14,
404 SpvBuiltInFragCoord
= 15,
405 SpvBuiltInPointCoord
= 16,
406 SpvBuiltInFrontFacing
= 17,
407 SpvBuiltInSampleId
= 18,
408 SpvBuiltInSamplePosition
= 19,
409 SpvBuiltInSampleMask
= 20,
410 SpvBuiltInFragDepth
= 22,
411 SpvBuiltInHelperInvocation
= 23,
412 SpvBuiltInNumWorkgroups
= 24,
413 SpvBuiltInWorkgroupSize
= 25,
414 SpvBuiltInWorkgroupId
= 26,
415 SpvBuiltInLocalInvocationId
= 27,
416 SpvBuiltInGlobalInvocationId
= 28,
417 SpvBuiltInLocalInvocationIndex
= 29,
418 SpvBuiltInWorkDim
= 30,
419 SpvBuiltInGlobalSize
= 31,
420 SpvBuiltInEnqueuedWorkgroupSize
= 32,
421 SpvBuiltInGlobalOffset
= 33,
422 SpvBuiltInGlobalLinearId
= 34,
423 SpvBuiltInSubgroupSize
= 36,
424 SpvBuiltInSubgroupMaxSize
= 37,
425 SpvBuiltInNumSubgroups
= 38,
426 SpvBuiltInNumEnqueuedSubgroups
= 39,
427 SpvBuiltInSubgroupId
= 40,
428 SpvBuiltInSubgroupLocalInvocationId
= 41,
429 SpvBuiltInVertexIndex
= 42,
430 SpvBuiltInInstanceIndex
= 43,
431 SpvBuiltInSubgroupEqMaskKHR
= 4416,
432 SpvBuiltInSubgroupGeMaskKHR
= 4417,
433 SpvBuiltInSubgroupGtMaskKHR
= 4418,
434 SpvBuiltInSubgroupLeMaskKHR
= 4419,
435 SpvBuiltInSubgroupLtMaskKHR
= 4420,
436 SpvBuiltInBaseVertex
= 4424,
437 SpvBuiltInBaseInstance
= 4425,
438 SpvBuiltInDrawIndex
= 4426,
439 SpvBuiltInMax
= 0x7fffffff,
442 typedef enum SpvSelectionControlShift_
{
443 SpvSelectionControlFlattenShift
= 0,
444 SpvSelectionControlDontFlattenShift
= 1,
445 SpvSelectionControlMax
= 0x7fffffff,
446 } SpvSelectionControlShift
;
448 typedef enum SpvSelectionControlMask_
{
449 SpvSelectionControlMaskNone
= 0,
450 SpvSelectionControlFlattenMask
= 0x00000001,
451 SpvSelectionControlDontFlattenMask
= 0x00000002,
452 } SpvSelectionControlMask
;
454 typedef enum SpvLoopControlShift_
{
455 SpvLoopControlUnrollShift
= 0,
456 SpvLoopControlDontUnrollShift
= 1,
457 SpvLoopControlDependencyInfiniteShift
= 2,
458 SpvLoopControlDependencyLengthShift
= 3,
459 SpvLoopControlMax
= 0x7fffffff,
460 } SpvLoopControlShift
;
462 typedef enum SpvLoopControlMask_
{
463 SpvLoopControlMaskNone
= 0,
464 SpvLoopControlUnrollMask
= 0x00000001,
465 SpvLoopControlDontUnrollMask
= 0x00000002,
466 SpvLoopControlDependencyInfiniteMask
= 0x00000004,
467 SpvLoopControlDependencyLengthMask
= 0x00000008,
468 } SpvLoopControlMask
;
470 typedef enum SpvFunctionControlShift_
{
471 SpvFunctionControlInlineShift
= 0,
472 SpvFunctionControlDontInlineShift
= 1,
473 SpvFunctionControlPureShift
= 2,
474 SpvFunctionControlConstShift
= 3,
475 SpvFunctionControlMax
= 0x7fffffff,
476 } SpvFunctionControlShift
;
478 typedef enum SpvFunctionControlMask_
{
479 SpvFunctionControlMaskNone
= 0,
480 SpvFunctionControlInlineMask
= 0x00000001,
481 SpvFunctionControlDontInlineMask
= 0x00000002,
482 SpvFunctionControlPureMask
= 0x00000004,
483 SpvFunctionControlConstMask
= 0x00000008,
484 } SpvFunctionControlMask
;
486 typedef enum SpvMemorySemanticsShift_
{
487 SpvMemorySemanticsAcquireShift
= 1,
488 SpvMemorySemanticsReleaseShift
= 2,
489 SpvMemorySemanticsAcquireReleaseShift
= 3,
490 SpvMemorySemanticsSequentiallyConsistentShift
= 4,
491 SpvMemorySemanticsUniformMemoryShift
= 6,
492 SpvMemorySemanticsSubgroupMemoryShift
= 7,
493 SpvMemorySemanticsWorkgroupMemoryShift
= 8,
494 SpvMemorySemanticsCrossWorkgroupMemoryShift
= 9,
495 SpvMemorySemanticsAtomicCounterMemoryShift
= 10,
496 SpvMemorySemanticsImageMemoryShift
= 11,
497 SpvMemorySemanticsMax
= 0x7fffffff,
498 } SpvMemorySemanticsShift
;
500 typedef enum SpvMemorySemanticsMask_
{
501 SpvMemorySemanticsMaskNone
= 0,
502 SpvMemorySemanticsAcquireMask
= 0x00000002,
503 SpvMemorySemanticsReleaseMask
= 0x00000004,
504 SpvMemorySemanticsAcquireReleaseMask
= 0x00000008,
505 SpvMemorySemanticsSequentiallyConsistentMask
= 0x00000010,
506 SpvMemorySemanticsUniformMemoryMask
= 0x00000040,
507 SpvMemorySemanticsSubgroupMemoryMask
= 0x00000080,
508 SpvMemorySemanticsWorkgroupMemoryMask
= 0x00000100,
509 SpvMemorySemanticsCrossWorkgroupMemoryMask
= 0x00000200,
510 SpvMemorySemanticsAtomicCounterMemoryMask
= 0x00000400,
511 SpvMemorySemanticsImageMemoryMask
= 0x00000800,
512 } SpvMemorySemanticsMask
;
514 typedef enum SpvMemoryAccessShift_
{
515 SpvMemoryAccessVolatileShift
= 0,
516 SpvMemoryAccessAlignedShift
= 1,
517 SpvMemoryAccessNontemporalShift
= 2,
518 SpvMemoryAccessMax
= 0x7fffffff,
519 } SpvMemoryAccessShift
;
521 typedef enum SpvMemoryAccessMask_
{
522 SpvMemoryAccessMaskNone
= 0,
523 SpvMemoryAccessVolatileMask
= 0x00000001,
524 SpvMemoryAccessAlignedMask
= 0x00000002,
525 SpvMemoryAccessNontemporalMask
= 0x00000004,
526 } SpvMemoryAccessMask
;
528 typedef enum SpvScope_
{
529 SpvScopeCrossDevice
= 0,
531 SpvScopeWorkgroup
= 2,
532 SpvScopeSubgroup
= 3,
533 SpvScopeInvocation
= 4,
534 SpvScopeMax
= 0x7fffffff,
537 typedef enum SpvGroupOperation_
{
538 SpvGroupOperationReduce
= 0,
539 SpvGroupOperationInclusiveScan
= 1,
540 SpvGroupOperationExclusiveScan
= 2,
541 SpvGroupOperationMax
= 0x7fffffff,
544 typedef enum SpvKernelEnqueueFlags_
{
545 SpvKernelEnqueueFlagsNoWait
= 0,
546 SpvKernelEnqueueFlagsWaitKernel
= 1,
547 SpvKernelEnqueueFlagsWaitWorkGroup
= 2,
548 SpvKernelEnqueueFlagsMax
= 0x7fffffff,
549 } SpvKernelEnqueueFlags
;
551 typedef enum SpvKernelProfilingInfoShift_
{
552 SpvKernelProfilingInfoCmdExecTimeShift
= 0,
553 SpvKernelProfilingInfoMax
= 0x7fffffff,
554 } SpvKernelProfilingInfoShift
;
556 typedef enum SpvKernelProfilingInfoMask_
{
557 SpvKernelProfilingInfoMaskNone
= 0,
558 SpvKernelProfilingInfoCmdExecTimeMask
= 0x00000001,
559 } SpvKernelProfilingInfoMask
;
561 typedef enum SpvCapability_
{
562 SpvCapabilityMatrix
= 0,
563 SpvCapabilityShader
= 1,
564 SpvCapabilityGeometry
= 2,
565 SpvCapabilityTessellation
= 3,
566 SpvCapabilityAddresses
= 4,
567 SpvCapabilityLinkage
= 5,
568 SpvCapabilityKernel
= 6,
569 SpvCapabilityVector16
= 7,
570 SpvCapabilityFloat16Buffer
= 8,
571 SpvCapabilityFloat16
= 9,
572 SpvCapabilityFloat64
= 10,
573 SpvCapabilityInt64
= 11,
574 SpvCapabilityInt64Atomics
= 12,
575 SpvCapabilityImageBasic
= 13,
576 SpvCapabilityImageReadWrite
= 14,
577 SpvCapabilityImageMipmap
= 15,
578 SpvCapabilityPipes
= 17,
579 SpvCapabilityGroups
= 18,
580 SpvCapabilityDeviceEnqueue
= 19,
581 SpvCapabilityLiteralSampler
= 20,
582 SpvCapabilityAtomicStorage
= 21,
583 SpvCapabilityInt16
= 22,
584 SpvCapabilityTessellationPointSize
= 23,
585 SpvCapabilityGeometryPointSize
= 24,
586 SpvCapabilityImageGatherExtended
= 25,
587 SpvCapabilityStorageImageMultisample
= 27,
588 SpvCapabilityUniformBufferArrayDynamicIndexing
= 28,
589 SpvCapabilitySampledImageArrayDynamicIndexing
= 29,
590 SpvCapabilityStorageBufferArrayDynamicIndexing
= 30,
591 SpvCapabilityStorageImageArrayDynamicIndexing
= 31,
592 SpvCapabilityClipDistance
= 32,
593 SpvCapabilityCullDistance
= 33,
594 SpvCapabilityImageCubeArray
= 34,
595 SpvCapabilitySampleRateShading
= 35,
596 SpvCapabilityImageRect
= 36,
597 SpvCapabilitySampledRect
= 37,
598 SpvCapabilityGenericPointer
= 38,
599 SpvCapabilityInt8
= 39,
600 SpvCapabilityInputAttachment
= 40,
601 SpvCapabilitySparseResidency
= 41,
602 SpvCapabilityMinLod
= 42,
603 SpvCapabilitySampled1D
= 43,
604 SpvCapabilityImage1D
= 44,
605 SpvCapabilitySampledCubeArray
= 45,
606 SpvCapabilitySampledBuffer
= 46,
607 SpvCapabilityImageBuffer
= 47,
608 SpvCapabilityImageMSArray
= 48,
609 SpvCapabilityStorageImageExtendedFormats
= 49,
610 SpvCapabilityImageQuery
= 50,
611 SpvCapabilityDerivativeControl
= 51,
612 SpvCapabilityInterpolationFunction
= 52,
613 SpvCapabilityTransformFeedback
= 53,
614 SpvCapabilityGeometryStreams
= 54,
615 SpvCapabilityStorageImageReadWithoutFormat
= 55,
616 SpvCapabilityStorageImageWriteWithoutFormat
= 56,
617 SpvCapabilityMultiViewport
= 57,
618 SpvCapabilitySubgroupDispatch
= 58,
619 SpvCapabilityNamedBarrier
= 59,
620 SpvCapabilityPipeStorage
= 60,
621 SpvCapabilitySubgroupBallotKHR
= 4423,
622 SpvCapabilityDrawParameters
= 4427,
623 SpvCapabilityMax
= 0x7fffffff,
626 typedef enum SpvOp_
{
629 SpvOpSourceContinued
= 2,
631 SpvOpSourceExtension
= 4,
637 SpvOpExtInstImport
= 11,
639 SpvOpMemoryModel
= 14,
640 SpvOpEntryPoint
= 15,
641 SpvOpExecutionMode
= 16,
642 SpvOpCapability
= 17,
647 SpvOpTypeVector
= 23,
648 SpvOpTypeMatrix
= 24,
650 SpvOpTypeSampler
= 26,
651 SpvOpTypeSampledImage
= 27,
653 SpvOpTypeRuntimeArray
= 29,
654 SpvOpTypeStruct
= 30,
655 SpvOpTypeOpaque
= 31,
656 SpvOpTypePointer
= 32,
657 SpvOpTypeFunction
= 33,
659 SpvOpTypeDeviceEvent
= 35,
660 SpvOpTypeReserveId
= 36,
663 SpvOpTypeForwardPointer
= 39,
664 SpvOpConstantTrue
= 41,
665 SpvOpConstantFalse
= 42,
667 SpvOpConstantComposite
= 44,
668 SpvOpConstantSampler
= 45,
669 SpvOpConstantNull
= 46,
670 SpvOpSpecConstantTrue
= 48,
671 SpvOpSpecConstantFalse
= 49,
672 SpvOpSpecConstant
= 50,
673 SpvOpSpecConstantComposite
= 51,
674 SpvOpSpecConstantOp
= 52,
676 SpvOpFunctionParameter
= 55,
677 SpvOpFunctionEnd
= 56,
678 SpvOpFunctionCall
= 57,
680 SpvOpImageTexelPointer
= 60,
683 SpvOpCopyMemory
= 63,
684 SpvOpCopyMemorySized
= 64,
685 SpvOpAccessChain
= 65,
686 SpvOpInBoundsAccessChain
= 66,
687 SpvOpPtrAccessChain
= 67,
688 SpvOpArrayLength
= 68,
689 SpvOpGenericPtrMemSemantics
= 69,
690 SpvOpInBoundsPtrAccessChain
= 70,
692 SpvOpMemberDecorate
= 72,
693 SpvOpDecorationGroup
= 73,
694 SpvOpGroupDecorate
= 74,
695 SpvOpGroupMemberDecorate
= 75,
696 SpvOpVectorExtractDynamic
= 77,
697 SpvOpVectorInsertDynamic
= 78,
698 SpvOpVectorShuffle
= 79,
699 SpvOpCompositeConstruct
= 80,
700 SpvOpCompositeExtract
= 81,
701 SpvOpCompositeInsert
= 82,
702 SpvOpCopyObject
= 83,
704 SpvOpSampledImage
= 86,
705 SpvOpImageSampleImplicitLod
= 87,
706 SpvOpImageSampleExplicitLod
= 88,
707 SpvOpImageSampleDrefImplicitLod
= 89,
708 SpvOpImageSampleDrefExplicitLod
= 90,
709 SpvOpImageSampleProjImplicitLod
= 91,
710 SpvOpImageSampleProjExplicitLod
= 92,
711 SpvOpImageSampleProjDrefImplicitLod
= 93,
712 SpvOpImageSampleProjDrefExplicitLod
= 94,
713 SpvOpImageFetch
= 95,
714 SpvOpImageGather
= 96,
715 SpvOpImageDrefGather
= 97,
717 SpvOpImageWrite
= 99,
719 SpvOpImageQueryFormat
= 101,
720 SpvOpImageQueryOrder
= 102,
721 SpvOpImageQuerySizeLod
= 103,
722 SpvOpImageQuerySize
= 104,
723 SpvOpImageQueryLod
= 105,
724 SpvOpImageQueryLevels
= 106,
725 SpvOpImageQuerySamples
= 107,
726 SpvOpConvertFToU
= 109,
727 SpvOpConvertFToS
= 110,
728 SpvOpConvertSToF
= 111,
729 SpvOpConvertUToF
= 112,
733 SpvOpQuantizeToF16
= 116,
734 SpvOpConvertPtrToU
= 117,
735 SpvOpSatConvertSToU
= 118,
736 SpvOpSatConvertUToS
= 119,
737 SpvOpConvertUToPtr
= 120,
738 SpvOpPtrCastToGeneric
= 121,
739 SpvOpGenericCastToPtr
= 122,
740 SpvOpGenericCastToPtrExplicit
= 123,
758 SpvOpVectorTimesScalar
= 142,
759 SpvOpMatrixTimesScalar
= 143,
760 SpvOpVectorTimesMatrix
= 144,
761 SpvOpMatrixTimesVector
= 145,
762 SpvOpMatrixTimesMatrix
= 146,
763 SpvOpOuterProduct
= 147,
765 SpvOpIAddCarry
= 149,
766 SpvOpISubBorrow
= 150,
767 SpvOpUMulExtended
= 151,
768 SpvOpSMulExtended
= 152,
775 SpvOpSignBitSet
= 160,
776 SpvOpLessOrGreater
= 161,
778 SpvOpUnordered
= 163,
779 SpvOpLogicalEqual
= 164,
780 SpvOpLogicalNotEqual
= 165,
781 SpvOpLogicalOr
= 166,
782 SpvOpLogicalAnd
= 167,
783 SpvOpLogicalNot
= 168,
786 SpvOpINotEqual
= 171,
787 SpvOpUGreaterThan
= 172,
788 SpvOpSGreaterThan
= 173,
789 SpvOpUGreaterThanEqual
= 174,
790 SpvOpSGreaterThanEqual
= 175,
791 SpvOpULessThan
= 176,
792 SpvOpSLessThan
= 177,
793 SpvOpULessThanEqual
= 178,
794 SpvOpSLessThanEqual
= 179,
795 SpvOpFOrdEqual
= 180,
796 SpvOpFUnordEqual
= 181,
797 SpvOpFOrdNotEqual
= 182,
798 SpvOpFUnordNotEqual
= 183,
799 SpvOpFOrdLessThan
= 184,
800 SpvOpFUnordLessThan
= 185,
801 SpvOpFOrdGreaterThan
= 186,
802 SpvOpFUnordGreaterThan
= 187,
803 SpvOpFOrdLessThanEqual
= 188,
804 SpvOpFUnordLessThanEqual
= 189,
805 SpvOpFOrdGreaterThanEqual
= 190,
806 SpvOpFUnordGreaterThanEqual
= 191,
807 SpvOpShiftRightLogical
= 194,
808 SpvOpShiftRightArithmetic
= 195,
809 SpvOpShiftLeftLogical
= 196,
810 SpvOpBitwiseOr
= 197,
811 SpvOpBitwiseXor
= 198,
812 SpvOpBitwiseAnd
= 199,
814 SpvOpBitFieldInsert
= 201,
815 SpvOpBitFieldSExtract
= 202,
816 SpvOpBitFieldUExtract
= 203,
817 SpvOpBitReverse
= 204,
824 SpvOpFwidthFine
= 212,
825 SpvOpDPdxCoarse
= 213,
826 SpvOpDPdyCoarse
= 214,
827 SpvOpFwidthCoarse
= 215,
828 SpvOpEmitVertex
= 218,
829 SpvOpEndPrimitive
= 219,
830 SpvOpEmitStreamVertex
= 220,
831 SpvOpEndStreamPrimitive
= 221,
832 SpvOpControlBarrier
= 224,
833 SpvOpMemoryBarrier
= 225,
834 SpvOpAtomicLoad
= 227,
835 SpvOpAtomicStore
= 228,
836 SpvOpAtomicExchange
= 229,
837 SpvOpAtomicCompareExchange
= 230,
838 SpvOpAtomicCompareExchangeWeak
= 231,
839 SpvOpAtomicIIncrement
= 232,
840 SpvOpAtomicIDecrement
= 233,
841 SpvOpAtomicIAdd
= 234,
842 SpvOpAtomicISub
= 235,
843 SpvOpAtomicSMin
= 236,
844 SpvOpAtomicUMin
= 237,
845 SpvOpAtomicSMax
= 238,
846 SpvOpAtomicUMax
= 239,
847 SpvOpAtomicAnd
= 240,
849 SpvOpAtomicXor
= 242,
851 SpvOpLoopMerge
= 246,
852 SpvOpSelectionMerge
= 247,
855 SpvOpBranchConditional
= 250,
859 SpvOpReturnValue
= 254,
860 SpvOpUnreachable
= 255,
861 SpvOpLifetimeStart
= 256,
862 SpvOpLifetimeStop
= 257,
863 SpvOpGroupAsyncCopy
= 259,
864 SpvOpGroupWaitEvents
= 260,
867 SpvOpGroupBroadcast
= 263,
868 SpvOpGroupIAdd
= 264,
869 SpvOpGroupFAdd
= 265,
870 SpvOpGroupFMin
= 266,
871 SpvOpGroupUMin
= 267,
872 SpvOpGroupSMin
= 268,
873 SpvOpGroupFMax
= 269,
874 SpvOpGroupUMax
= 270,
875 SpvOpGroupSMax
= 271,
877 SpvOpWritePipe
= 275,
878 SpvOpReservedReadPipe
= 276,
879 SpvOpReservedWritePipe
= 277,
880 SpvOpReserveReadPipePackets
= 278,
881 SpvOpReserveWritePipePackets
= 279,
882 SpvOpCommitReadPipe
= 280,
883 SpvOpCommitWritePipe
= 281,
884 SpvOpIsValidReserveId
= 282,
885 SpvOpGetNumPipePackets
= 283,
886 SpvOpGetMaxPipePackets
= 284,
887 SpvOpGroupReserveReadPipePackets
= 285,
888 SpvOpGroupReserveWritePipePackets
= 286,
889 SpvOpGroupCommitReadPipe
= 287,
890 SpvOpGroupCommitWritePipe
= 288,
891 SpvOpEnqueueMarker
= 291,
892 SpvOpEnqueueKernel
= 292,
893 SpvOpGetKernelNDrangeSubGroupCount
= 293,
894 SpvOpGetKernelNDrangeMaxSubGroupSize
= 294,
895 SpvOpGetKernelWorkGroupSize
= 295,
896 SpvOpGetKernelPreferredWorkGroupSizeMultiple
= 296,
897 SpvOpRetainEvent
= 297,
898 SpvOpReleaseEvent
= 298,
899 SpvOpCreateUserEvent
= 299,
900 SpvOpIsValidEvent
= 300,
901 SpvOpSetUserEventStatus
= 301,
902 SpvOpCaptureEventProfilingInfo
= 302,
903 SpvOpGetDefaultQueue
= 303,
904 SpvOpBuildNDRange
= 304,
905 SpvOpImageSparseSampleImplicitLod
= 305,
906 SpvOpImageSparseSampleExplicitLod
= 306,
907 SpvOpImageSparseSampleDrefImplicitLod
= 307,
908 SpvOpImageSparseSampleDrefExplicitLod
= 308,
909 SpvOpImageSparseSampleProjImplicitLod
= 309,
910 SpvOpImageSparseSampleProjExplicitLod
= 310,
911 SpvOpImageSparseSampleProjDrefImplicitLod
= 311,
912 SpvOpImageSparseSampleProjDrefExplicitLod
= 312,
913 SpvOpImageSparseFetch
= 313,
914 SpvOpImageSparseGather
= 314,
915 SpvOpImageSparseDrefGather
= 315,
916 SpvOpImageSparseTexelsResident
= 316,
918 SpvOpAtomicFlagTestAndSet
= 318,
919 SpvOpAtomicFlagClear
= 319,
920 SpvOpImageSparseRead
= 320,
922 SpvOpTypePipeStorage
= 322,
923 SpvOpConstantPipeStorage
= 323,
924 SpvOpCreatePipeFromPipeStorage
= 324,
925 SpvOpGetKernelLocalSizeForSubgroupCount
= 325,
926 SpvOpGetKernelMaxNumSubgroups
= 326,
927 SpvOpTypeNamedBarrier
= 327,
928 SpvOpNamedBarrierInitialize
= 328,
929 SpvOpMemoryNamedBarrier
= 329,
930 SpvOpModuleProcessed
= 330,
931 SpvOpSubgroupBallotKHR
= 4421,
932 SpvOpSubgroupFirstInvocationKHR
= 4422,
933 SpvOpMax
= 0x7fffffff,
936 #endif // #ifndef spirv_H