spirv: bump headers to SPIRV 1.1
[mesa.git] / src / compiler / spirv / spirv.h
1 /*
2 ** Copyright (c) 2014-2016 The Khronos Group Inc.
3 **
4 ** Permission is hereby granted, free of charge, to any person obtaining a copy
5 ** of this software and/or associated documentation files (the "Materials"),
6 ** to deal in the Materials without restriction, including without limitation
7 ** the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 ** and/or sell copies of the Materials, and to permit persons to whom the
9 ** Materials are furnished to do so, subject to the following conditions:
10 **
11 ** The above copyright notice and this permission notice shall be included in
12 ** all copies or substantial portions of the Materials.
13 **
14 ** MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
15 ** STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
16 ** HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/
17 **
18 ** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19 ** OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 ** FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
21 ** THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22 ** LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
23 ** FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
24 ** IN THE MATERIALS.
25 */
26
27 /*
28 ** This header is automatically generated by the same tool that creates
29 ** the Binary Section of the SPIR-V specification.
30 */
31
32 /*
33 ** Enumeration tokens for SPIR-V, in various styles:
34 ** C, C++, C++11, JSON, Lua, Python
35 **
36 ** - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
37 ** - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
38 ** - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL
39 ** - Lua will use tables, e.g.: spv.SourceLanguage.GLSL
40 ** - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']
41 **
42 ** Some tokens act like mask values, which can be OR'd together,
43 ** while others are mutually exclusive. The mask-like ones have
44 ** "Mask" in their name, and a parallel enum that has the shift
45 ** amount (1 << x) for each corresponding enumerant.
46 */
47
48 #ifndef spirv_H
49 #define spirv_H
50
51 typedef unsigned int SpvId;
52
53 #define SPV_VERSION 0x10100
54 #define SPV_REVISION 4
55
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;
61
62 typedef enum SpvSourceLanguage_ {
63 SpvSourceLanguageUnknown = 0,
64 SpvSourceLanguageESSL = 1,
65 SpvSourceLanguageGLSL = 2,
66 SpvSourceLanguageOpenCL_C = 3,
67 SpvSourceLanguageOpenCL_CPP = 4,
68 SpvSourceLanguageMax = 0x7fffffff,
69 } SpvSourceLanguage;
70
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,
80 } SpvExecutionModel;
81
82 typedef enum SpvAddressingModel_ {
83 SpvAddressingModelLogical = 0,
84 SpvAddressingModelPhysical32 = 1,
85 SpvAddressingModelPhysical64 = 2,
86 SpvAddressingModelMax = 0x7fffffff,
87 } SpvAddressingModel;
88
89 typedef enum SpvMemoryModel_ {
90 SpvMemoryModelSimple = 0,
91 SpvMemoryModelGLSL450 = 1,
92 SpvMemoryModelOpenCL = 2,
93 SpvMemoryModelMax = 0x7fffffff,
94 } SpvMemoryModel;
95
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,
133 } SpvExecutionMode;
134
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,
149 } SpvStorageClass;
150
151 typedef enum SpvDim_ {
152 SpvDim1D = 0,
153 SpvDim2D = 1,
154 SpvDim3D = 2,
155 SpvDimCube = 3,
156 SpvDimRect = 4,
157 SpvDimBuffer = 5,
158 SpvDimSubpassData = 6,
159 SpvDimMax = 0x7fffffff,
160 } SpvDim;
161
162 typedef enum SpvSamplerAddressingMode_ {
163 SpvSamplerAddressingModeNone = 0,
164 SpvSamplerAddressingModeClampToEdge = 1,
165 SpvSamplerAddressingModeClamp = 2,
166 SpvSamplerAddressingModeRepeat = 3,
167 SpvSamplerAddressingModeRepeatMirrored = 4,
168 SpvSamplerAddressingModeMax = 0x7fffffff,
169 } SpvSamplerAddressingMode;
170
171 typedef enum SpvSamplerFilterMode_ {
172 SpvSamplerFilterModeNearest = 0,
173 SpvSamplerFilterModeLinear = 1,
174 SpvSamplerFilterModeMax = 0x7fffffff,
175 } SpvSamplerFilterMode;
176
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,
219 } SpvImageFormat;
220
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;
244
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;
265
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;
277
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;
289
290 typedef enum SpvFPFastMathModeShift_ {
291 SpvFPFastMathModeNotNaNShift = 0,
292 SpvFPFastMathModeNotInfShift = 1,
293 SpvFPFastMathModeNSZShift = 2,
294 SpvFPFastMathModeAllowRecipShift = 3,
295 SpvFPFastMathModeFastShift = 4,
296 SpvFPFastMathModeMax = 0x7fffffff,
297 } SpvFPFastMathModeShift;
298
299 typedef enum SpvFPFastMathModeMask_ {
300 SpvFPFastMathModeMaskNone = 0,
301 SpvFPFastMathModeNotNaNMask = 0x00000001,
302 SpvFPFastMathModeNotInfMask = 0x00000002,
303 SpvFPFastMathModeNSZMask = 0x00000004,
304 SpvFPFastMathModeAllowRecipMask = 0x00000008,
305 SpvFPFastMathModeFastMask = 0x00000010,
306 } SpvFPFastMathModeMask;
307
308 typedef enum SpvFPRoundingMode_ {
309 SpvFPRoundingModeRTE = 0,
310 SpvFPRoundingModeRTZ = 1,
311 SpvFPRoundingModeRTP = 2,
312 SpvFPRoundingModeRTN = 3,
313 SpvFPRoundingModeMax = 0x7fffffff,
314 } SpvFPRoundingMode;
315
316 typedef enum SpvLinkageType_ {
317 SpvLinkageTypeExport = 0,
318 SpvLinkageTypeImport = 1,
319 SpvLinkageTypeMax = 0x7fffffff,
320 } SpvLinkageType;
321
322 typedef enum SpvAccessQualifier_ {
323 SpvAccessQualifierReadOnly = 0,
324 SpvAccessQualifierWriteOnly = 1,
325 SpvAccessQualifierReadWrite = 2,
326 SpvAccessQualifierMax = 0x7fffffff,
327 } SpvAccessQualifier;
328
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;
340
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,
387 } SpvDecoration;
388
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,
398 SpvBuiltInLayer = 9,
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,
440 } SpvBuiltIn;
441
442 typedef enum SpvSelectionControlShift_ {
443 SpvSelectionControlFlattenShift = 0,
444 SpvSelectionControlDontFlattenShift = 1,
445 SpvSelectionControlMax = 0x7fffffff,
446 } SpvSelectionControlShift;
447
448 typedef enum SpvSelectionControlMask_ {
449 SpvSelectionControlMaskNone = 0,
450 SpvSelectionControlFlattenMask = 0x00000001,
451 SpvSelectionControlDontFlattenMask = 0x00000002,
452 } SpvSelectionControlMask;
453
454 typedef enum SpvLoopControlShift_ {
455 SpvLoopControlUnrollShift = 0,
456 SpvLoopControlDontUnrollShift = 1,
457 SpvLoopControlDependencyInfiniteShift = 2,
458 SpvLoopControlDependencyLengthShift = 3,
459 SpvLoopControlMax = 0x7fffffff,
460 } SpvLoopControlShift;
461
462 typedef enum SpvLoopControlMask_ {
463 SpvLoopControlMaskNone = 0,
464 SpvLoopControlUnrollMask = 0x00000001,
465 SpvLoopControlDontUnrollMask = 0x00000002,
466 SpvLoopControlDependencyInfiniteMask = 0x00000004,
467 SpvLoopControlDependencyLengthMask = 0x00000008,
468 } SpvLoopControlMask;
469
470 typedef enum SpvFunctionControlShift_ {
471 SpvFunctionControlInlineShift = 0,
472 SpvFunctionControlDontInlineShift = 1,
473 SpvFunctionControlPureShift = 2,
474 SpvFunctionControlConstShift = 3,
475 SpvFunctionControlMax = 0x7fffffff,
476 } SpvFunctionControlShift;
477
478 typedef enum SpvFunctionControlMask_ {
479 SpvFunctionControlMaskNone = 0,
480 SpvFunctionControlInlineMask = 0x00000001,
481 SpvFunctionControlDontInlineMask = 0x00000002,
482 SpvFunctionControlPureMask = 0x00000004,
483 SpvFunctionControlConstMask = 0x00000008,
484 } SpvFunctionControlMask;
485
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;
499
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;
513
514 typedef enum SpvMemoryAccessShift_ {
515 SpvMemoryAccessVolatileShift = 0,
516 SpvMemoryAccessAlignedShift = 1,
517 SpvMemoryAccessNontemporalShift = 2,
518 SpvMemoryAccessMax = 0x7fffffff,
519 } SpvMemoryAccessShift;
520
521 typedef enum SpvMemoryAccessMask_ {
522 SpvMemoryAccessMaskNone = 0,
523 SpvMemoryAccessVolatileMask = 0x00000001,
524 SpvMemoryAccessAlignedMask = 0x00000002,
525 SpvMemoryAccessNontemporalMask = 0x00000004,
526 } SpvMemoryAccessMask;
527
528 typedef enum SpvScope_ {
529 SpvScopeCrossDevice = 0,
530 SpvScopeDevice = 1,
531 SpvScopeWorkgroup = 2,
532 SpvScopeSubgroup = 3,
533 SpvScopeInvocation = 4,
534 SpvScopeMax = 0x7fffffff,
535 } SpvScope;
536
537 typedef enum SpvGroupOperation_ {
538 SpvGroupOperationReduce = 0,
539 SpvGroupOperationInclusiveScan = 1,
540 SpvGroupOperationExclusiveScan = 2,
541 SpvGroupOperationMax = 0x7fffffff,
542 } SpvGroupOperation;
543
544 typedef enum SpvKernelEnqueueFlags_ {
545 SpvKernelEnqueueFlagsNoWait = 0,
546 SpvKernelEnqueueFlagsWaitKernel = 1,
547 SpvKernelEnqueueFlagsWaitWorkGroup = 2,
548 SpvKernelEnqueueFlagsMax = 0x7fffffff,
549 } SpvKernelEnqueueFlags;
550
551 typedef enum SpvKernelProfilingInfoShift_ {
552 SpvKernelProfilingInfoCmdExecTimeShift = 0,
553 SpvKernelProfilingInfoMax = 0x7fffffff,
554 } SpvKernelProfilingInfoShift;
555
556 typedef enum SpvKernelProfilingInfoMask_ {
557 SpvKernelProfilingInfoMaskNone = 0,
558 SpvKernelProfilingInfoCmdExecTimeMask = 0x00000001,
559 } SpvKernelProfilingInfoMask;
560
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,
624 } SpvCapability;
625
626 typedef enum SpvOp_ {
627 SpvOpNop = 0,
628 SpvOpUndef = 1,
629 SpvOpSourceContinued = 2,
630 SpvOpSource = 3,
631 SpvOpSourceExtension = 4,
632 SpvOpName = 5,
633 SpvOpMemberName = 6,
634 SpvOpString = 7,
635 SpvOpLine = 8,
636 SpvOpExtension = 10,
637 SpvOpExtInstImport = 11,
638 SpvOpExtInst = 12,
639 SpvOpMemoryModel = 14,
640 SpvOpEntryPoint = 15,
641 SpvOpExecutionMode = 16,
642 SpvOpCapability = 17,
643 SpvOpTypeVoid = 19,
644 SpvOpTypeBool = 20,
645 SpvOpTypeInt = 21,
646 SpvOpTypeFloat = 22,
647 SpvOpTypeVector = 23,
648 SpvOpTypeMatrix = 24,
649 SpvOpTypeImage = 25,
650 SpvOpTypeSampler = 26,
651 SpvOpTypeSampledImage = 27,
652 SpvOpTypeArray = 28,
653 SpvOpTypeRuntimeArray = 29,
654 SpvOpTypeStruct = 30,
655 SpvOpTypeOpaque = 31,
656 SpvOpTypePointer = 32,
657 SpvOpTypeFunction = 33,
658 SpvOpTypeEvent = 34,
659 SpvOpTypeDeviceEvent = 35,
660 SpvOpTypeReserveId = 36,
661 SpvOpTypeQueue = 37,
662 SpvOpTypePipe = 38,
663 SpvOpTypeForwardPointer = 39,
664 SpvOpConstantTrue = 41,
665 SpvOpConstantFalse = 42,
666 SpvOpConstant = 43,
667 SpvOpConstantComposite = 44,
668 SpvOpConstantSampler = 45,
669 SpvOpConstantNull = 46,
670 SpvOpSpecConstantTrue = 48,
671 SpvOpSpecConstantFalse = 49,
672 SpvOpSpecConstant = 50,
673 SpvOpSpecConstantComposite = 51,
674 SpvOpSpecConstantOp = 52,
675 SpvOpFunction = 54,
676 SpvOpFunctionParameter = 55,
677 SpvOpFunctionEnd = 56,
678 SpvOpFunctionCall = 57,
679 SpvOpVariable = 59,
680 SpvOpImageTexelPointer = 60,
681 SpvOpLoad = 61,
682 SpvOpStore = 62,
683 SpvOpCopyMemory = 63,
684 SpvOpCopyMemorySized = 64,
685 SpvOpAccessChain = 65,
686 SpvOpInBoundsAccessChain = 66,
687 SpvOpPtrAccessChain = 67,
688 SpvOpArrayLength = 68,
689 SpvOpGenericPtrMemSemantics = 69,
690 SpvOpInBoundsPtrAccessChain = 70,
691 SpvOpDecorate = 71,
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,
703 SpvOpTranspose = 84,
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,
716 SpvOpImageRead = 98,
717 SpvOpImageWrite = 99,
718 SpvOpImage = 100,
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,
730 SpvOpUConvert = 113,
731 SpvOpSConvert = 114,
732 SpvOpFConvert = 115,
733 SpvOpQuantizeToF16 = 116,
734 SpvOpConvertPtrToU = 117,
735 SpvOpSatConvertSToU = 118,
736 SpvOpSatConvertUToS = 119,
737 SpvOpConvertUToPtr = 120,
738 SpvOpPtrCastToGeneric = 121,
739 SpvOpGenericCastToPtr = 122,
740 SpvOpGenericCastToPtrExplicit = 123,
741 SpvOpBitcast = 124,
742 SpvOpSNegate = 126,
743 SpvOpFNegate = 127,
744 SpvOpIAdd = 128,
745 SpvOpFAdd = 129,
746 SpvOpISub = 130,
747 SpvOpFSub = 131,
748 SpvOpIMul = 132,
749 SpvOpFMul = 133,
750 SpvOpUDiv = 134,
751 SpvOpSDiv = 135,
752 SpvOpFDiv = 136,
753 SpvOpUMod = 137,
754 SpvOpSRem = 138,
755 SpvOpSMod = 139,
756 SpvOpFRem = 140,
757 SpvOpFMod = 141,
758 SpvOpVectorTimesScalar = 142,
759 SpvOpMatrixTimesScalar = 143,
760 SpvOpVectorTimesMatrix = 144,
761 SpvOpMatrixTimesVector = 145,
762 SpvOpMatrixTimesMatrix = 146,
763 SpvOpOuterProduct = 147,
764 SpvOpDot = 148,
765 SpvOpIAddCarry = 149,
766 SpvOpISubBorrow = 150,
767 SpvOpUMulExtended = 151,
768 SpvOpSMulExtended = 152,
769 SpvOpAny = 154,
770 SpvOpAll = 155,
771 SpvOpIsNan = 156,
772 SpvOpIsInf = 157,
773 SpvOpIsFinite = 158,
774 SpvOpIsNormal = 159,
775 SpvOpSignBitSet = 160,
776 SpvOpLessOrGreater = 161,
777 SpvOpOrdered = 162,
778 SpvOpUnordered = 163,
779 SpvOpLogicalEqual = 164,
780 SpvOpLogicalNotEqual = 165,
781 SpvOpLogicalOr = 166,
782 SpvOpLogicalAnd = 167,
783 SpvOpLogicalNot = 168,
784 SpvOpSelect = 169,
785 SpvOpIEqual = 170,
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,
813 SpvOpNot = 200,
814 SpvOpBitFieldInsert = 201,
815 SpvOpBitFieldSExtract = 202,
816 SpvOpBitFieldUExtract = 203,
817 SpvOpBitReverse = 204,
818 SpvOpBitCount = 205,
819 SpvOpDPdx = 207,
820 SpvOpDPdy = 208,
821 SpvOpFwidth = 209,
822 SpvOpDPdxFine = 210,
823 SpvOpDPdyFine = 211,
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,
848 SpvOpAtomicOr = 241,
849 SpvOpAtomicXor = 242,
850 SpvOpPhi = 245,
851 SpvOpLoopMerge = 246,
852 SpvOpSelectionMerge = 247,
853 SpvOpLabel = 248,
854 SpvOpBranch = 249,
855 SpvOpBranchConditional = 250,
856 SpvOpSwitch = 251,
857 SpvOpKill = 252,
858 SpvOpReturn = 253,
859 SpvOpReturnValue = 254,
860 SpvOpUnreachable = 255,
861 SpvOpLifetimeStart = 256,
862 SpvOpLifetimeStop = 257,
863 SpvOpGroupAsyncCopy = 259,
864 SpvOpGroupWaitEvents = 260,
865 SpvOpGroupAll = 261,
866 SpvOpGroupAny = 262,
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,
876 SpvOpReadPipe = 274,
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,
917 SpvOpNoLine = 317,
918 SpvOpAtomicFlagTestAndSet = 318,
919 SpvOpAtomicFlagClear = 319,
920 SpvOpImageSparseRead = 320,
921 SpvOpSizeOf = 321,
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,
934 } SpvOp;
935
936 #endif // #ifndef spirv_H
937