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