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 5
56 static const unsigned int SpvMagicNumber = 0x07230203;
57 static const unsigned int SpvVersion = 0x00010000;
58 static const unsigned int SpvRevision = 5;
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,
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,
80 typedef enum SpvAddressingModel_ {
81 SpvAddressingModelLogical = 0,
82 SpvAddressingModelPhysical32 = 1,
83 SpvAddressingModelPhysical64 = 2,
86 typedef enum SpvMemoryModel_ {
87 SpvMemoryModelSimple = 0,
88 SpvMemoryModelGLSL450 = 1,
89 SpvMemoryModelOpenCL = 2,
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,
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,
141 typedef enum SpvDim_ {
148 SpvDimSubpassData = 6,
151 typedef enum SpvSamplerAddressingMode_ {
152 SpvSamplerAddressingModeNone = 0,
153 SpvSamplerAddressingModeClampToEdge = 1,
154 SpvSamplerAddressingModeClamp = 2,
155 SpvSamplerAddressingModeRepeat = 3,
156 SpvSamplerAddressingModeRepeatMirrored = 4,
157 } SpvSamplerAddressingMode;
159 typedef enum SpvSamplerFilterMode_ {
160 SpvSamplerFilterModeNearest = 0,
161 SpvSamplerFilterModeLinear = 1,
162 } SpvSamplerFilterMode;
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,
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 SpvImageChannelOrderABGR = 19,
228 } SpvImageChannelOrder;
230 typedef enum SpvImageChannelDataType_ {
231 SpvImageChannelDataTypeSnormInt8 = 0,
232 SpvImageChannelDataTypeSnormInt16 = 1,
233 SpvImageChannelDataTypeUnormInt8 = 2,
234 SpvImageChannelDataTypeUnormInt16 = 3,
235 SpvImageChannelDataTypeUnormShort565 = 4,
236 SpvImageChannelDataTypeUnormShort555 = 5,
237 SpvImageChannelDataTypeUnormInt101010 = 6,
238 SpvImageChannelDataTypeSignedInt8 = 7,
239 SpvImageChannelDataTypeSignedInt16 = 8,
240 SpvImageChannelDataTypeSignedInt32 = 9,
241 SpvImageChannelDataTypeUnsignedInt8 = 10,
242 SpvImageChannelDataTypeUnsignedInt16 = 11,
243 SpvImageChannelDataTypeUnsignedInt32 = 12,
244 SpvImageChannelDataTypeHalfFloat = 13,
245 SpvImageChannelDataTypeFloat = 14,
246 SpvImageChannelDataTypeUnormInt24 = 15,
247 SpvImageChannelDataTypeUnormInt101010_2 = 16,
248 } SpvImageChannelDataType;
250 typedef enum SpvImageOperandsShift_ {
251 SpvImageOperandsBiasShift = 0,
252 SpvImageOperandsLodShift = 1,
253 SpvImageOperandsGradShift = 2,
254 SpvImageOperandsConstOffsetShift = 3,
255 SpvImageOperandsOffsetShift = 4,
256 SpvImageOperandsConstOffsetsShift = 5,
257 SpvImageOperandsSampleShift = 6,
258 SpvImageOperandsMinLodShift = 7,
259 } SpvImageOperandsShift;
261 typedef enum SpvImageOperandsMask_ {
262 SpvImageOperandsMaskNone = 0,
263 SpvImageOperandsBiasMask = 0x00000001,
264 SpvImageOperandsLodMask = 0x00000002,
265 SpvImageOperandsGradMask = 0x00000004,
266 SpvImageOperandsConstOffsetMask = 0x00000008,
267 SpvImageOperandsOffsetMask = 0x00000010,
268 SpvImageOperandsConstOffsetsMask = 0x00000020,
269 SpvImageOperandsSampleMask = 0x00000040,
270 SpvImageOperandsMinLodMask = 0x00000080,
271 } SpvImageOperandsMask;
273 typedef enum SpvFPFastMathModeShift_ {
274 SpvFPFastMathModeNotNaNShift = 0,
275 SpvFPFastMathModeNotInfShift = 1,
276 SpvFPFastMathModeNSZShift = 2,
277 SpvFPFastMathModeAllowRecipShift = 3,
278 SpvFPFastMathModeFastShift = 4,
279 } SpvFPFastMathModeShift;
281 typedef enum SpvFPFastMathModeMask_ {
282 SpvFPFastMathModeMaskNone = 0,
283 SpvFPFastMathModeNotNaNMask = 0x00000001,
284 SpvFPFastMathModeNotInfMask = 0x00000002,
285 SpvFPFastMathModeNSZMask = 0x00000004,
286 SpvFPFastMathModeAllowRecipMask = 0x00000008,
287 SpvFPFastMathModeFastMask = 0x00000010,
288 } SpvFPFastMathModeMask;
290 typedef enum SpvFPRoundingMode_ {
291 SpvFPRoundingModeRTE = 0,
292 SpvFPRoundingModeRTZ = 1,
293 SpvFPRoundingModeRTP = 2,
294 SpvFPRoundingModeRTN = 3,
297 typedef enum SpvLinkageType_ {
298 SpvLinkageTypeExport = 0,
299 SpvLinkageTypeImport = 1,
302 typedef enum SpvAccessQualifier_ {
303 SpvAccessQualifierReadOnly = 0,
304 SpvAccessQualifierWriteOnly = 1,
305 SpvAccessQualifierReadWrite = 2,
306 } SpvAccessQualifier;
308 typedef enum SpvFunctionParameterAttribute_ {
309 SpvFunctionParameterAttributeZext = 0,
310 SpvFunctionParameterAttributeSext = 1,
311 SpvFunctionParameterAttributeByVal = 2,
312 SpvFunctionParameterAttributeSret = 3,
313 SpvFunctionParameterAttributeNoAlias = 4,
314 SpvFunctionParameterAttributeNoCapture = 5,
315 SpvFunctionParameterAttributeNoWrite = 6,
316 SpvFunctionParameterAttributeNoReadWrite = 7,
317 } SpvFunctionParameterAttribute;
319 typedef enum SpvDecoration_ {
320 SpvDecorationRelaxedPrecision = 0,
321 SpvDecorationSpecId = 1,
322 SpvDecorationBlock = 2,
323 SpvDecorationBufferBlock = 3,
324 SpvDecorationRowMajor = 4,
325 SpvDecorationColMajor = 5,
326 SpvDecorationArrayStride = 6,
327 SpvDecorationMatrixStride = 7,
328 SpvDecorationGLSLShared = 8,
329 SpvDecorationGLSLPacked = 9,
330 SpvDecorationCPacked = 10,
331 SpvDecorationBuiltIn = 11,
332 SpvDecorationNoPerspective = 13,
333 SpvDecorationFlat = 14,
334 SpvDecorationPatch = 15,
335 SpvDecorationCentroid = 16,
336 SpvDecorationSample = 17,
337 SpvDecorationInvariant = 18,
338 SpvDecorationRestrict = 19,
339 SpvDecorationAliased = 20,
340 SpvDecorationVolatile = 21,
341 SpvDecorationConstant = 22,
342 SpvDecorationCoherent = 23,
343 SpvDecorationNonWritable = 24,
344 SpvDecorationNonReadable = 25,
345 SpvDecorationUniform = 26,
346 SpvDecorationSaturatedConversion = 28,
347 SpvDecorationStream = 29,
348 SpvDecorationLocation = 30,
349 SpvDecorationComponent = 31,
350 SpvDecorationIndex = 32,
351 SpvDecorationBinding = 33,
352 SpvDecorationDescriptorSet = 34,
353 SpvDecorationOffset = 35,
354 SpvDecorationXfbBuffer = 36,
355 SpvDecorationXfbStride = 37,
356 SpvDecorationFuncParamAttr = 38,
357 SpvDecorationFPRoundingMode = 39,
358 SpvDecorationFPFastMathMode = 40,
359 SpvDecorationLinkageAttributes = 41,
360 SpvDecorationNoContraction = 42,
361 SpvDecorationInputAttachmentIndex = 43,
362 SpvDecorationAlignment = 44,
365 typedef enum SpvBuiltIn_ {
366 SpvBuiltInPosition = 0,
367 SpvBuiltInPointSize = 1,
368 SpvBuiltInClipDistance = 3,
369 SpvBuiltInCullDistance = 4,
370 SpvBuiltInVertexId = 5,
371 SpvBuiltInInstanceId = 6,
372 SpvBuiltInPrimitiveId = 7,
373 SpvBuiltInInvocationId = 8,
375 SpvBuiltInViewportIndex = 10,
376 SpvBuiltInTessLevelOuter = 11,
377 SpvBuiltInTessLevelInner = 12,
378 SpvBuiltInTessCoord = 13,
379 SpvBuiltInPatchVertices = 14,
380 SpvBuiltInFragCoord = 15,
381 SpvBuiltInPointCoord = 16,
382 SpvBuiltInFrontFacing = 17,
383 SpvBuiltInSampleId = 18,
384 SpvBuiltInSamplePosition = 19,
385 SpvBuiltInSampleMask = 20,
386 SpvBuiltInFragDepth = 22,
387 SpvBuiltInHelperInvocation = 23,
388 SpvBuiltInNumWorkgroups = 24,
389 SpvBuiltInWorkgroupSize = 25,
390 SpvBuiltInWorkgroupId = 26,
391 SpvBuiltInLocalInvocationId = 27,
392 SpvBuiltInGlobalInvocationId = 28,
393 SpvBuiltInLocalInvocationIndex = 29,
394 SpvBuiltInWorkDim = 30,
395 SpvBuiltInGlobalSize = 31,
396 SpvBuiltInEnqueuedWorkgroupSize = 32,
397 SpvBuiltInGlobalOffset = 33,
398 SpvBuiltInGlobalLinearId = 34,
399 SpvBuiltInSubgroupSize = 36,
400 SpvBuiltInSubgroupMaxSize = 37,
401 SpvBuiltInNumSubgroups = 38,
402 SpvBuiltInNumEnqueuedSubgroups = 39,
403 SpvBuiltInSubgroupId = 40,
404 SpvBuiltInSubgroupLocalInvocationId = 41,
405 SpvBuiltInVertexIndex = 42,
406 SpvBuiltInInstanceIndex = 43,
409 typedef enum SpvSelectionControlShift_ {
410 SpvSelectionControlFlattenShift = 0,
411 SpvSelectionControlDontFlattenShift = 1,
412 } SpvSelectionControlShift;
414 typedef enum SpvSelectionControlMask_ {
415 SpvSelectionControlMaskNone = 0,
416 SpvSelectionControlFlattenMask = 0x00000001,
417 SpvSelectionControlDontFlattenMask = 0x00000002,
418 } SpvSelectionControlMask;
420 typedef enum SpvLoopControlShift_ {
421 SpvLoopControlUnrollShift = 0,
422 SpvLoopControlDontUnrollShift = 1,
423 } SpvLoopControlShift;
425 typedef enum SpvLoopControlMask_ {
426 SpvLoopControlMaskNone = 0,
427 SpvLoopControlUnrollMask = 0x00000001,
428 SpvLoopControlDontUnrollMask = 0x00000002,
429 } SpvLoopControlMask;
431 typedef enum SpvFunctionControlShift_ {
432 SpvFunctionControlInlineShift = 0,
433 SpvFunctionControlDontInlineShift = 1,
434 SpvFunctionControlPureShift = 2,
435 SpvFunctionControlConstShift = 3,
436 } SpvFunctionControlShift;
438 typedef enum SpvFunctionControlMask_ {
439 SpvFunctionControlMaskNone = 0,
440 SpvFunctionControlInlineMask = 0x00000001,
441 SpvFunctionControlDontInlineMask = 0x00000002,
442 SpvFunctionControlPureMask = 0x00000004,
443 SpvFunctionControlConstMask = 0x00000008,
444 } SpvFunctionControlMask;
446 typedef enum SpvMemorySemanticsShift_ {
447 SpvMemorySemanticsAcquireShift = 1,
448 SpvMemorySemanticsReleaseShift = 2,
449 SpvMemorySemanticsAcquireReleaseShift = 3,
450 SpvMemorySemanticsSequentiallyConsistentShift = 4,
451 SpvMemorySemanticsUniformMemoryShift = 6,
452 SpvMemorySemanticsSubgroupMemoryShift = 7,
453 SpvMemorySemanticsWorkgroupMemoryShift = 8,
454 SpvMemorySemanticsCrossWorkgroupMemoryShift = 9,
455 SpvMemorySemanticsAtomicCounterMemoryShift = 10,
456 SpvMemorySemanticsImageMemoryShift = 11,
457 } SpvMemorySemanticsShift;
459 typedef enum SpvMemorySemanticsMask_ {
460 SpvMemorySemanticsMaskNone = 0,
461 SpvMemorySemanticsAcquireMask = 0x00000002,
462 SpvMemorySemanticsReleaseMask = 0x00000004,
463 SpvMemorySemanticsAcquireReleaseMask = 0x00000008,
464 SpvMemorySemanticsSequentiallyConsistentMask = 0x00000010,
465 SpvMemorySemanticsUniformMemoryMask = 0x00000040,
466 SpvMemorySemanticsSubgroupMemoryMask = 0x00000080,
467 SpvMemorySemanticsWorkgroupMemoryMask = 0x00000100,
468 SpvMemorySemanticsCrossWorkgroupMemoryMask = 0x00000200,
469 SpvMemorySemanticsAtomicCounterMemoryMask = 0x00000400,
470 SpvMemorySemanticsImageMemoryMask = 0x00000800,
471 } SpvMemorySemanticsMask;
473 typedef enum SpvMemoryAccessShift_ {
474 SpvMemoryAccessVolatileShift = 0,
475 SpvMemoryAccessAlignedShift = 1,
476 SpvMemoryAccessNontemporalShift = 2,
477 } SpvMemoryAccessShift;
479 typedef enum SpvMemoryAccessMask_ {
480 SpvMemoryAccessMaskNone = 0,
481 SpvMemoryAccessVolatileMask = 0x00000001,
482 SpvMemoryAccessAlignedMask = 0x00000002,
483 SpvMemoryAccessNontemporalMask = 0x00000004,
484 } SpvMemoryAccessMask;
486 typedef enum SpvScope_ {
487 SpvScopeCrossDevice = 0,
489 SpvScopeWorkgroup = 2,
490 SpvScopeSubgroup = 3,
491 SpvScopeInvocation = 4,
494 typedef enum SpvGroupOperation_ {
495 SpvGroupOperationReduce = 0,
496 SpvGroupOperationInclusiveScan = 1,
497 SpvGroupOperationExclusiveScan = 2,
500 typedef enum SpvKernelEnqueueFlags_ {
501 SpvKernelEnqueueFlagsNoWait = 0,
502 SpvKernelEnqueueFlagsWaitKernel = 1,
503 SpvKernelEnqueueFlagsWaitWorkGroup = 2,
504 } SpvKernelEnqueueFlags;
506 typedef enum SpvKernelProfilingInfoShift_ {
507 SpvKernelProfilingInfoCmdExecTimeShift = 0,
508 } SpvKernelProfilingInfoShift;
510 typedef enum SpvKernelProfilingInfoMask_ {
511 SpvKernelProfilingInfoMaskNone = 0,
512 SpvKernelProfilingInfoCmdExecTimeMask = 0x00000001,
513 } SpvKernelProfilingInfoMask;
515 typedef enum SpvCapability_ {
516 SpvCapabilityMatrix = 0,
517 SpvCapabilityShader = 1,
518 SpvCapabilityGeometry = 2,
519 SpvCapabilityTessellation = 3,
520 SpvCapabilityAddresses = 4,
521 SpvCapabilityLinkage = 5,
522 SpvCapabilityKernel = 6,
523 SpvCapabilityVector16 = 7,
524 SpvCapabilityFloat16Buffer = 8,
525 SpvCapabilityFloat16 = 9,
526 SpvCapabilityFloat64 = 10,
527 SpvCapabilityInt64 = 11,
528 SpvCapabilityInt64Atomics = 12,
529 SpvCapabilityImageBasic = 13,
530 SpvCapabilityImageReadWrite = 14,
531 SpvCapabilityImageMipmap = 15,
532 SpvCapabilityPipes = 17,
533 SpvCapabilityGroups = 18,
534 SpvCapabilityDeviceEnqueue = 19,
535 SpvCapabilityLiteralSampler = 20,
536 SpvCapabilityAtomicStorage = 21,
537 SpvCapabilityInt16 = 22,
538 SpvCapabilityTessellationPointSize = 23,
539 SpvCapabilityGeometryPointSize = 24,
540 SpvCapabilityImageGatherExtended = 25,
541 SpvCapabilityStorageImageMultisample = 27,
542 SpvCapabilityUniformBufferArrayDynamicIndexing = 28,
543 SpvCapabilitySampledImageArrayDynamicIndexing = 29,
544 SpvCapabilityStorageBufferArrayDynamicIndexing = 30,
545 SpvCapabilityStorageImageArrayDynamicIndexing = 31,
546 SpvCapabilityClipDistance = 32,
547 SpvCapabilityCullDistance = 33,
548 SpvCapabilityImageCubeArray = 34,
549 SpvCapabilitySampleRateShading = 35,
550 SpvCapabilityImageRect = 36,
551 SpvCapabilitySampledRect = 37,
552 SpvCapabilityGenericPointer = 38,
553 SpvCapabilityInt8 = 39,
554 SpvCapabilityInputAttachment = 40,
555 SpvCapabilitySparseResidency = 41,
556 SpvCapabilityMinLod = 42,
557 SpvCapabilitySampled1D = 43,
558 SpvCapabilityImage1D = 44,
559 SpvCapabilitySampledCubeArray = 45,
560 SpvCapabilitySampledBuffer = 46,
561 SpvCapabilityImageBuffer = 47,
562 SpvCapabilityImageMSArray = 48,
563 SpvCapabilityStorageImageExtendedFormats = 49,
564 SpvCapabilityImageQuery = 50,
565 SpvCapabilityDerivativeControl = 51,
566 SpvCapabilityInterpolationFunction = 52,
567 SpvCapabilityTransformFeedback = 53,
568 SpvCapabilityGeometryStreams = 54,
569 SpvCapabilityStorageImageReadWithoutFormat = 55,
570 SpvCapabilityStorageImageWriteWithoutFormat = 56,
571 SpvCapabilityMultiViewport = 57,
574 typedef enum SpvOp_ {
577 SpvOpSourceContinued = 2,
579 SpvOpSourceExtension = 4,
585 SpvOpExtInstImport = 11,
587 SpvOpMemoryModel = 14,
588 SpvOpEntryPoint = 15,
589 SpvOpExecutionMode = 16,
590 SpvOpCapability = 17,
595 SpvOpTypeVector = 23,
596 SpvOpTypeMatrix = 24,
598 SpvOpTypeSampler = 26,
599 SpvOpTypeSampledImage = 27,
601 SpvOpTypeRuntimeArray = 29,
602 SpvOpTypeStruct = 30,
603 SpvOpTypeOpaque = 31,
604 SpvOpTypePointer = 32,
605 SpvOpTypeFunction = 33,
607 SpvOpTypeDeviceEvent = 35,
608 SpvOpTypeReserveId = 36,
611 SpvOpTypeForwardPointer = 39,
612 SpvOpConstantTrue = 41,
613 SpvOpConstantFalse = 42,
615 SpvOpConstantComposite = 44,
616 SpvOpConstantSampler = 45,
617 SpvOpConstantNull = 46,
618 SpvOpSpecConstantTrue = 48,
619 SpvOpSpecConstantFalse = 49,
620 SpvOpSpecConstant = 50,
621 SpvOpSpecConstantComposite = 51,
622 SpvOpSpecConstantOp = 52,
624 SpvOpFunctionParameter = 55,
625 SpvOpFunctionEnd = 56,
626 SpvOpFunctionCall = 57,
628 SpvOpImageTexelPointer = 60,
631 SpvOpCopyMemory = 63,
632 SpvOpCopyMemorySized = 64,
633 SpvOpAccessChain = 65,
634 SpvOpInBoundsAccessChain = 66,
635 SpvOpPtrAccessChain = 67,
636 SpvOpArrayLength = 68,
637 SpvOpGenericPtrMemSemantics = 69,
638 SpvOpInBoundsPtrAccessChain = 70,
640 SpvOpMemberDecorate = 72,
641 SpvOpDecorationGroup = 73,
642 SpvOpGroupDecorate = 74,
643 SpvOpGroupMemberDecorate = 75,
644 SpvOpVectorExtractDynamic = 77,
645 SpvOpVectorInsertDynamic = 78,
646 SpvOpVectorShuffle = 79,
647 SpvOpCompositeConstruct = 80,
648 SpvOpCompositeExtract = 81,
649 SpvOpCompositeInsert = 82,
650 SpvOpCopyObject = 83,
652 SpvOpSampledImage = 86,
653 SpvOpImageSampleImplicitLod = 87,
654 SpvOpImageSampleExplicitLod = 88,
655 SpvOpImageSampleDrefImplicitLod = 89,
656 SpvOpImageSampleDrefExplicitLod = 90,
657 SpvOpImageSampleProjImplicitLod = 91,
658 SpvOpImageSampleProjExplicitLod = 92,
659 SpvOpImageSampleProjDrefImplicitLod = 93,
660 SpvOpImageSampleProjDrefExplicitLod = 94,
661 SpvOpImageFetch = 95,
662 SpvOpImageGather = 96,
663 SpvOpImageDrefGather = 97,
665 SpvOpImageWrite = 99,
667 SpvOpImageQueryFormat = 101,
668 SpvOpImageQueryOrder = 102,
669 SpvOpImageQuerySizeLod = 103,
670 SpvOpImageQuerySize = 104,
671 SpvOpImageQueryLod = 105,
672 SpvOpImageQueryLevels = 106,
673 SpvOpImageQuerySamples = 107,
674 SpvOpConvertFToU = 109,
675 SpvOpConvertFToS = 110,
676 SpvOpConvertSToF = 111,
677 SpvOpConvertUToF = 112,
681 SpvOpQuantizeToF16 = 116,
682 SpvOpConvertPtrToU = 117,
683 SpvOpSatConvertSToU = 118,
684 SpvOpSatConvertUToS = 119,
685 SpvOpConvertUToPtr = 120,
686 SpvOpPtrCastToGeneric = 121,
687 SpvOpGenericCastToPtr = 122,
688 SpvOpGenericCastToPtrExplicit = 123,
706 SpvOpVectorTimesScalar = 142,
707 SpvOpMatrixTimesScalar = 143,
708 SpvOpVectorTimesMatrix = 144,
709 SpvOpMatrixTimesVector = 145,
710 SpvOpMatrixTimesMatrix = 146,
711 SpvOpOuterProduct = 147,
713 SpvOpIAddCarry = 149,
714 SpvOpISubBorrow = 150,
715 SpvOpUMulExtended = 151,
716 SpvOpSMulExtended = 152,
723 SpvOpSignBitSet = 160,
724 SpvOpLessOrGreater = 161,
726 SpvOpUnordered = 163,
727 SpvOpLogicalEqual = 164,
728 SpvOpLogicalNotEqual = 165,
729 SpvOpLogicalOr = 166,
730 SpvOpLogicalAnd = 167,
731 SpvOpLogicalNot = 168,
734 SpvOpINotEqual = 171,
735 SpvOpUGreaterThan = 172,
736 SpvOpSGreaterThan = 173,
737 SpvOpUGreaterThanEqual = 174,
738 SpvOpSGreaterThanEqual = 175,
739 SpvOpULessThan = 176,
740 SpvOpSLessThan = 177,
741 SpvOpULessThanEqual = 178,
742 SpvOpSLessThanEqual = 179,
743 SpvOpFOrdEqual = 180,
744 SpvOpFUnordEqual = 181,
745 SpvOpFOrdNotEqual = 182,
746 SpvOpFUnordNotEqual = 183,
747 SpvOpFOrdLessThan = 184,
748 SpvOpFUnordLessThan = 185,
749 SpvOpFOrdGreaterThan = 186,
750 SpvOpFUnordGreaterThan = 187,
751 SpvOpFOrdLessThanEqual = 188,
752 SpvOpFUnordLessThanEqual = 189,
753 SpvOpFOrdGreaterThanEqual = 190,
754 SpvOpFUnordGreaterThanEqual = 191,
755 SpvOpShiftRightLogical = 194,
756 SpvOpShiftRightArithmetic = 195,
757 SpvOpShiftLeftLogical = 196,
758 SpvOpBitwiseOr = 197,
759 SpvOpBitwiseXor = 198,
760 SpvOpBitwiseAnd = 199,
762 SpvOpBitFieldInsert = 201,
763 SpvOpBitFieldSExtract = 202,
764 SpvOpBitFieldUExtract = 203,
765 SpvOpBitReverse = 204,
772 SpvOpFwidthFine = 212,
773 SpvOpDPdxCoarse = 213,
774 SpvOpDPdyCoarse = 214,
775 SpvOpFwidthCoarse = 215,
776 SpvOpEmitVertex = 218,
777 SpvOpEndPrimitive = 219,
778 SpvOpEmitStreamVertex = 220,
779 SpvOpEndStreamPrimitive = 221,
780 SpvOpControlBarrier = 224,
781 SpvOpMemoryBarrier = 225,
782 SpvOpAtomicLoad = 227,
783 SpvOpAtomicStore = 228,
784 SpvOpAtomicExchange = 229,
785 SpvOpAtomicCompareExchange = 230,
786 SpvOpAtomicCompareExchangeWeak = 231,
787 SpvOpAtomicIIncrement = 232,
788 SpvOpAtomicIDecrement = 233,
789 SpvOpAtomicIAdd = 234,
790 SpvOpAtomicISub = 235,
791 SpvOpAtomicSMin = 236,
792 SpvOpAtomicUMin = 237,
793 SpvOpAtomicSMax = 238,
794 SpvOpAtomicUMax = 239,
795 SpvOpAtomicAnd = 240,
797 SpvOpAtomicXor = 242,
799 SpvOpLoopMerge = 246,
800 SpvOpSelectionMerge = 247,
803 SpvOpBranchConditional = 250,
807 SpvOpReturnValue = 254,
808 SpvOpUnreachable = 255,
809 SpvOpLifetimeStart = 256,
810 SpvOpLifetimeStop = 257,
811 SpvOpGroupAsyncCopy = 259,
812 SpvOpGroupWaitEvents = 260,
815 SpvOpGroupBroadcast = 263,
816 SpvOpGroupIAdd = 264,
817 SpvOpGroupFAdd = 265,
818 SpvOpGroupFMin = 266,
819 SpvOpGroupUMin = 267,
820 SpvOpGroupSMin = 268,
821 SpvOpGroupFMax = 269,
822 SpvOpGroupUMax = 270,
823 SpvOpGroupSMax = 271,
825 SpvOpWritePipe = 275,
826 SpvOpReservedReadPipe = 276,
827 SpvOpReservedWritePipe = 277,
828 SpvOpReserveReadPipePackets = 278,
829 SpvOpReserveWritePipePackets = 279,
830 SpvOpCommitReadPipe = 280,
831 SpvOpCommitWritePipe = 281,
832 SpvOpIsValidReserveId = 282,
833 SpvOpGetNumPipePackets = 283,
834 SpvOpGetMaxPipePackets = 284,
835 SpvOpGroupReserveReadPipePackets = 285,
836 SpvOpGroupReserveWritePipePackets = 286,
837 SpvOpGroupCommitReadPipe = 287,
838 SpvOpGroupCommitWritePipe = 288,
839 SpvOpEnqueueMarker = 291,
840 SpvOpEnqueueKernel = 292,
841 SpvOpGetKernelNDrangeSubGroupCount = 293,
842 SpvOpGetKernelNDrangeMaxSubGroupSize = 294,
843 SpvOpGetKernelWorkGroupSize = 295,
844 SpvOpGetKernelPreferredWorkGroupSizeMultiple = 296,
845 SpvOpRetainEvent = 297,
846 SpvOpReleaseEvent = 298,
847 SpvOpCreateUserEvent = 299,
848 SpvOpIsValidEvent = 300,
849 SpvOpSetUserEventStatus = 301,
850 SpvOpCaptureEventProfilingInfo = 302,
851 SpvOpGetDefaultQueue = 303,
852 SpvOpBuildNDRange = 304,
853 SpvOpImageSparseSampleImplicitLod = 305,
854 SpvOpImageSparseSampleExplicitLod = 306,
855 SpvOpImageSparseSampleDrefImplicitLod = 307,
856 SpvOpImageSparseSampleDrefExplicitLod = 308,
857 SpvOpImageSparseSampleProjImplicitLod = 309,
858 SpvOpImageSparseSampleProjExplicitLod = 310,
859 SpvOpImageSparseSampleProjDrefImplicitLod = 311,
860 SpvOpImageSparseSampleProjDrefExplicitLod = 312,
861 SpvOpImageSparseFetch = 313,
862 SpvOpImageSparseGather = 314,
863 SpvOpImageSparseDrefGather = 315,
864 SpvOpImageSparseTexelsResident = 316,
866 SpvOpAtomicFlagTestAndSet = 318,
867 SpvOpAtomicFlagClear = 319,
868 SpvOpImageSparseRead = 320,
871 #endif // #ifndef spirv_H