spirv.hpp 34 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100
  1. // Copyright (c) 2014-2018 The Khronos Group Inc.
  2. //
  3. // Permission is hereby granted, free of charge, to any person obtaining a copy
  4. // of this software and/or associated documentation files (the "Materials"),
  5. // to deal in the Materials without restriction, including without limitation
  6. // the rights to use, copy, modify, merge, publish, distribute, sublicense,
  7. // and/or sell copies of the Materials, and to permit persons to whom the
  8. // Materials are furnished to do so, subject to the following conditions:
  9. //
  10. // The above copyright notice and this permission notice shall be included in
  11. // all copies or substantial portions of the Materials.
  12. //
  13. // MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
  14. // STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
  15. // HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/
  16. //
  17. // THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  18. // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  19. // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
  20. // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  21. // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
  22. // FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
  23. // IN THE MATERIALS.
  24. // This header is automatically generated by the same tool that creates
  25. // the Binary Section of the SPIR-V specification.
  26. // Enumeration tokens for SPIR-V, in various styles:
  27. // C, C++, C++11, JSON, Lua, Python
  28. //
  29. // - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
  30. // - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
  31. // - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL
  32. // - Lua will use tables, e.g.: spv.SourceLanguage.GLSL
  33. // - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']
  34. //
  35. // Some tokens act like mask values, which can be OR'd together,
  36. // while others are mutually exclusive. The mask-like ones have
  37. // "Mask" in their name, and a parallel enum that has the shift
  38. // amount (1 << x) for each corresponding enumerant.
  39. #ifndef spirv_HPP
  40. #define spirv_HPP
  41. namespace spv {
  42. typedef unsigned int Id;
  43. #define SPV_VERSION 0x10300
  44. #define SPV_REVISION 1
  45. static const unsigned int MagicNumber = 0x07230203;
  46. static const unsigned int Version = 0x00010300;
  47. static const unsigned int Revision = 1;
  48. static const unsigned int OpCodeMask = 0xffff;
  49. static const unsigned int WordCountShift = 16;
  50. enum SourceLanguage {
  51. SourceLanguageUnknown = 0,
  52. SourceLanguageESSL = 1,
  53. SourceLanguageGLSL = 2,
  54. SourceLanguageOpenCL_C = 3,
  55. SourceLanguageOpenCL_CPP = 4,
  56. SourceLanguageHLSL = 5,
  57. SourceLanguageMax = 0x7fffffff,
  58. };
  59. enum ExecutionModel {
  60. ExecutionModelVertex = 0,
  61. ExecutionModelTessellationControl = 1,
  62. ExecutionModelTessellationEvaluation = 2,
  63. ExecutionModelGeometry = 3,
  64. ExecutionModelFragment = 4,
  65. ExecutionModelGLCompute = 5,
  66. ExecutionModelKernel = 6,
  67. ExecutionModelMax = 0x7fffffff,
  68. };
  69. enum AddressingModel {
  70. AddressingModelLogical = 0,
  71. AddressingModelPhysical32 = 1,
  72. AddressingModelPhysical64 = 2,
  73. AddressingModelMax = 0x7fffffff,
  74. };
  75. enum MemoryModel {
  76. MemoryModelSimple = 0,
  77. MemoryModelGLSL450 = 1,
  78. MemoryModelOpenCL = 2,
  79. MemoryModelMax = 0x7fffffff,
  80. };
  81. enum ExecutionMode {
  82. ExecutionModeInvocations = 0,
  83. ExecutionModeSpacingEqual = 1,
  84. ExecutionModeSpacingFractionalEven = 2,
  85. ExecutionModeSpacingFractionalOdd = 3,
  86. ExecutionModeVertexOrderCw = 4,
  87. ExecutionModeVertexOrderCcw = 5,
  88. ExecutionModePixelCenterInteger = 6,
  89. ExecutionModeOriginUpperLeft = 7,
  90. ExecutionModeOriginLowerLeft = 8,
  91. ExecutionModeEarlyFragmentTests = 9,
  92. ExecutionModePointMode = 10,
  93. ExecutionModeXfb = 11,
  94. ExecutionModeDepthReplacing = 12,
  95. ExecutionModeDepthGreater = 14,
  96. ExecutionModeDepthLess = 15,
  97. ExecutionModeDepthUnchanged = 16,
  98. ExecutionModeLocalSize = 17,
  99. ExecutionModeLocalSizeHint = 18,
  100. ExecutionModeInputPoints = 19,
  101. ExecutionModeInputLines = 20,
  102. ExecutionModeInputLinesAdjacency = 21,
  103. ExecutionModeTriangles = 22,
  104. ExecutionModeInputTrianglesAdjacency = 23,
  105. ExecutionModeQuads = 24,
  106. ExecutionModeIsolines = 25,
  107. ExecutionModeOutputVertices = 26,
  108. ExecutionModeOutputPoints = 27,
  109. ExecutionModeOutputLineStrip = 28,
  110. ExecutionModeOutputTriangleStrip = 29,
  111. ExecutionModeVecTypeHint = 30,
  112. ExecutionModeContractionOff = 31,
  113. ExecutionModeInitializer = 33,
  114. ExecutionModeFinalizer = 34,
  115. ExecutionModeSubgroupSize = 35,
  116. ExecutionModeSubgroupsPerWorkgroup = 36,
  117. ExecutionModeSubgroupsPerWorkgroupId = 37,
  118. ExecutionModeLocalSizeId = 38,
  119. ExecutionModeLocalSizeHintId = 39,
  120. ExecutionModePostDepthCoverage = 4446,
  121. ExecutionModeStencilRefReplacingEXT = 5027,
  122. ExecutionModeMax = 0x7fffffff,
  123. };
  124. enum StorageClass {
  125. StorageClassUniformConstant = 0,
  126. StorageClassInput = 1,
  127. StorageClassUniform = 2,
  128. StorageClassOutput = 3,
  129. StorageClassWorkgroup = 4,
  130. StorageClassCrossWorkgroup = 5,
  131. StorageClassPrivate = 6,
  132. StorageClassFunction = 7,
  133. StorageClassGeneric = 8,
  134. StorageClassPushConstant = 9,
  135. StorageClassAtomicCounter = 10,
  136. StorageClassImage = 11,
  137. StorageClassStorageBuffer = 12,
  138. StorageClassMax = 0x7fffffff,
  139. };
  140. enum Dim {
  141. Dim1D = 0,
  142. Dim2D = 1,
  143. Dim3D = 2,
  144. DimCube = 3,
  145. DimRect = 4,
  146. DimBuffer = 5,
  147. DimSubpassData = 6,
  148. DimMax = 0x7fffffff,
  149. };
  150. enum SamplerAddressingMode {
  151. SamplerAddressingModeNone = 0,
  152. SamplerAddressingModeClampToEdge = 1,
  153. SamplerAddressingModeClamp = 2,
  154. SamplerAddressingModeRepeat = 3,
  155. SamplerAddressingModeRepeatMirrored = 4,
  156. SamplerAddressingModeMax = 0x7fffffff,
  157. };
  158. enum SamplerFilterMode {
  159. SamplerFilterModeNearest = 0,
  160. SamplerFilterModeLinear = 1,
  161. SamplerFilterModeMax = 0x7fffffff,
  162. };
  163. enum ImageFormat {
  164. ImageFormatUnknown = 0,
  165. ImageFormatRgba32f = 1,
  166. ImageFormatRgba16f = 2,
  167. ImageFormatR32f = 3,
  168. ImageFormatRgba8 = 4,
  169. ImageFormatRgba8Snorm = 5,
  170. ImageFormatRg32f = 6,
  171. ImageFormatRg16f = 7,
  172. ImageFormatR11fG11fB10f = 8,
  173. ImageFormatR16f = 9,
  174. ImageFormatRgba16 = 10,
  175. ImageFormatRgb10A2 = 11,
  176. ImageFormatRg16 = 12,
  177. ImageFormatRg8 = 13,
  178. ImageFormatR16 = 14,
  179. ImageFormatR8 = 15,
  180. ImageFormatRgba16Snorm = 16,
  181. ImageFormatRg16Snorm = 17,
  182. ImageFormatRg8Snorm = 18,
  183. ImageFormatR16Snorm = 19,
  184. ImageFormatR8Snorm = 20,
  185. ImageFormatRgba32i = 21,
  186. ImageFormatRgba16i = 22,
  187. ImageFormatRgba8i = 23,
  188. ImageFormatR32i = 24,
  189. ImageFormatRg32i = 25,
  190. ImageFormatRg16i = 26,
  191. ImageFormatRg8i = 27,
  192. ImageFormatR16i = 28,
  193. ImageFormatR8i = 29,
  194. ImageFormatRgba32ui = 30,
  195. ImageFormatRgba16ui = 31,
  196. ImageFormatRgba8ui = 32,
  197. ImageFormatR32ui = 33,
  198. ImageFormatRgb10a2ui = 34,
  199. ImageFormatRg32ui = 35,
  200. ImageFormatRg16ui = 36,
  201. ImageFormatRg8ui = 37,
  202. ImageFormatR16ui = 38,
  203. ImageFormatR8ui = 39,
  204. ImageFormatMax = 0x7fffffff,
  205. };
  206. enum ImageChannelOrder {
  207. ImageChannelOrderR = 0,
  208. ImageChannelOrderA = 1,
  209. ImageChannelOrderRG = 2,
  210. ImageChannelOrderRA = 3,
  211. ImageChannelOrderRGB = 4,
  212. ImageChannelOrderRGBA = 5,
  213. ImageChannelOrderBGRA = 6,
  214. ImageChannelOrderARGB = 7,
  215. ImageChannelOrderIntensity = 8,
  216. ImageChannelOrderLuminance = 9,
  217. ImageChannelOrderRx = 10,
  218. ImageChannelOrderRGx = 11,
  219. ImageChannelOrderRGBx = 12,
  220. ImageChannelOrderDepth = 13,
  221. ImageChannelOrderDepthStencil = 14,
  222. ImageChannelOrdersRGB = 15,
  223. ImageChannelOrdersRGBx = 16,
  224. ImageChannelOrdersRGBA = 17,
  225. ImageChannelOrdersBGRA = 18,
  226. ImageChannelOrderABGR = 19,
  227. ImageChannelOrderMax = 0x7fffffff,
  228. };
  229. enum ImageChannelDataType {
  230. ImageChannelDataTypeSnormInt8 = 0,
  231. ImageChannelDataTypeSnormInt16 = 1,
  232. ImageChannelDataTypeUnormInt8 = 2,
  233. ImageChannelDataTypeUnormInt16 = 3,
  234. ImageChannelDataTypeUnormShort565 = 4,
  235. ImageChannelDataTypeUnormShort555 = 5,
  236. ImageChannelDataTypeUnormInt101010 = 6,
  237. ImageChannelDataTypeSignedInt8 = 7,
  238. ImageChannelDataTypeSignedInt16 = 8,
  239. ImageChannelDataTypeSignedInt32 = 9,
  240. ImageChannelDataTypeUnsignedInt8 = 10,
  241. ImageChannelDataTypeUnsignedInt16 = 11,
  242. ImageChannelDataTypeUnsignedInt32 = 12,
  243. ImageChannelDataTypeHalfFloat = 13,
  244. ImageChannelDataTypeFloat = 14,
  245. ImageChannelDataTypeUnormInt24 = 15,
  246. ImageChannelDataTypeUnormInt101010_2 = 16,
  247. ImageChannelDataTypeMax = 0x7fffffff,
  248. };
  249. enum ImageOperandsShift {
  250. ImageOperandsBiasShift = 0,
  251. ImageOperandsLodShift = 1,
  252. ImageOperandsGradShift = 2,
  253. ImageOperandsConstOffsetShift = 3,
  254. ImageOperandsOffsetShift = 4,
  255. ImageOperandsConstOffsetsShift = 5,
  256. ImageOperandsSampleShift = 6,
  257. ImageOperandsMinLodShift = 7,
  258. ImageOperandsMax = 0x7fffffff,
  259. };
  260. enum ImageOperandsMask {
  261. ImageOperandsMaskNone = 0,
  262. ImageOperandsBiasMask = 0x00000001,
  263. ImageOperandsLodMask = 0x00000002,
  264. ImageOperandsGradMask = 0x00000004,
  265. ImageOperandsConstOffsetMask = 0x00000008,
  266. ImageOperandsOffsetMask = 0x00000010,
  267. ImageOperandsConstOffsetsMask = 0x00000020,
  268. ImageOperandsSampleMask = 0x00000040,
  269. ImageOperandsMinLodMask = 0x00000080,
  270. };
  271. enum FPFastMathModeShift {
  272. FPFastMathModeNotNaNShift = 0,
  273. FPFastMathModeNotInfShift = 1,
  274. FPFastMathModeNSZShift = 2,
  275. FPFastMathModeAllowRecipShift = 3,
  276. FPFastMathModeFastShift = 4,
  277. FPFastMathModeMax = 0x7fffffff,
  278. };
  279. enum FPFastMathModeMask {
  280. FPFastMathModeMaskNone = 0,
  281. FPFastMathModeNotNaNMask = 0x00000001,
  282. FPFastMathModeNotInfMask = 0x00000002,
  283. FPFastMathModeNSZMask = 0x00000004,
  284. FPFastMathModeAllowRecipMask = 0x00000008,
  285. FPFastMathModeFastMask = 0x00000010,
  286. };
  287. enum FPRoundingMode {
  288. FPRoundingModeRTE = 0,
  289. FPRoundingModeRTZ = 1,
  290. FPRoundingModeRTP = 2,
  291. FPRoundingModeRTN = 3,
  292. FPRoundingModeMax = 0x7fffffff,
  293. };
  294. enum LinkageType {
  295. LinkageTypeExport = 0,
  296. LinkageTypeImport = 1,
  297. LinkageTypeMax = 0x7fffffff,
  298. };
  299. enum AccessQualifier {
  300. AccessQualifierReadOnly = 0,
  301. AccessQualifierWriteOnly = 1,
  302. AccessQualifierReadWrite = 2,
  303. AccessQualifierMax = 0x7fffffff,
  304. };
  305. enum FunctionParameterAttribute {
  306. FunctionParameterAttributeZext = 0,
  307. FunctionParameterAttributeSext = 1,
  308. FunctionParameterAttributeByVal = 2,
  309. FunctionParameterAttributeSret = 3,
  310. FunctionParameterAttributeNoAlias = 4,
  311. FunctionParameterAttributeNoCapture = 5,
  312. FunctionParameterAttributeNoWrite = 6,
  313. FunctionParameterAttributeNoReadWrite = 7,
  314. FunctionParameterAttributeMax = 0x7fffffff,
  315. };
  316. enum Decoration {
  317. DecorationRelaxedPrecision = 0,
  318. DecorationSpecId = 1,
  319. DecorationBlock = 2,
  320. DecorationBufferBlock = 3,
  321. DecorationRowMajor = 4,
  322. DecorationColMajor = 5,
  323. DecorationArrayStride = 6,
  324. DecorationMatrixStride = 7,
  325. DecorationGLSLShared = 8,
  326. DecorationGLSLPacked = 9,
  327. DecorationCPacked = 10,
  328. DecorationBuiltIn = 11,
  329. DecorationNoPerspective = 13,
  330. DecorationFlat = 14,
  331. DecorationPatch = 15,
  332. DecorationCentroid = 16,
  333. DecorationSample = 17,
  334. DecorationInvariant = 18,
  335. DecorationRestrict = 19,
  336. DecorationAliased = 20,
  337. DecorationVolatile = 21,
  338. DecorationConstant = 22,
  339. DecorationCoherent = 23,
  340. DecorationNonWritable = 24,
  341. DecorationNonReadable = 25,
  342. DecorationUniform = 26,
  343. DecorationSaturatedConversion = 28,
  344. DecorationStream = 29,
  345. DecorationLocation = 30,
  346. DecorationComponent = 31,
  347. DecorationIndex = 32,
  348. DecorationBinding = 33,
  349. DecorationDescriptorSet = 34,
  350. DecorationOffset = 35,
  351. DecorationXfbBuffer = 36,
  352. DecorationXfbStride = 37,
  353. DecorationFuncParamAttr = 38,
  354. DecorationFPRoundingMode = 39,
  355. DecorationFPFastMathMode = 40,
  356. DecorationLinkageAttributes = 41,
  357. DecorationNoContraction = 42,
  358. DecorationInputAttachmentIndex = 43,
  359. DecorationAlignment = 44,
  360. DecorationMaxByteOffset = 45,
  361. DecorationAlignmentId = 46,
  362. DecorationMaxByteOffsetId = 47,
  363. DecorationExplicitInterpAMD = 4999,
  364. DecorationOverrideCoverageNV = 5248,
  365. DecorationPassthroughNV = 5250,
  366. DecorationViewportRelativeNV = 5252,
  367. DecorationSecondaryViewportRelativeNV = 5256,
  368. DecorationNonUniformEXT = 5300,
  369. DecorationHlslCounterBufferGOOGLE = 5634,
  370. DecorationHlslSemanticGOOGLE = 5635,
  371. DecorationMax = 0x7fffffff,
  372. };
  373. enum BuiltIn {
  374. BuiltInPosition = 0,
  375. BuiltInPointSize = 1,
  376. BuiltInClipDistance = 3,
  377. BuiltInCullDistance = 4,
  378. BuiltInVertexId = 5,
  379. BuiltInInstanceId = 6,
  380. BuiltInPrimitiveId = 7,
  381. BuiltInInvocationId = 8,
  382. BuiltInLayer = 9,
  383. BuiltInViewportIndex = 10,
  384. BuiltInTessLevelOuter = 11,
  385. BuiltInTessLevelInner = 12,
  386. BuiltInTessCoord = 13,
  387. BuiltInPatchVertices = 14,
  388. BuiltInFragCoord = 15,
  389. BuiltInPointCoord = 16,
  390. BuiltInFrontFacing = 17,
  391. BuiltInSampleId = 18,
  392. BuiltInSamplePosition = 19,
  393. BuiltInSampleMask = 20,
  394. BuiltInFragDepth = 22,
  395. BuiltInHelperInvocation = 23,
  396. BuiltInNumWorkgroups = 24,
  397. BuiltInWorkgroupSize = 25,
  398. BuiltInWorkgroupId = 26,
  399. BuiltInLocalInvocationId = 27,
  400. BuiltInGlobalInvocationId = 28,
  401. BuiltInLocalInvocationIndex = 29,
  402. BuiltInWorkDim = 30,
  403. BuiltInGlobalSize = 31,
  404. BuiltInEnqueuedWorkgroupSize = 32,
  405. BuiltInGlobalOffset = 33,
  406. BuiltInGlobalLinearId = 34,
  407. BuiltInSubgroupSize = 36,
  408. BuiltInSubgroupMaxSize = 37,
  409. BuiltInNumSubgroups = 38,
  410. BuiltInNumEnqueuedSubgroups = 39,
  411. BuiltInSubgroupId = 40,
  412. BuiltInSubgroupLocalInvocationId = 41,
  413. BuiltInVertexIndex = 42,
  414. BuiltInInstanceIndex = 43,
  415. BuiltInSubgroupEqMask = 4416,
  416. BuiltInSubgroupEqMaskKHR = 4416,
  417. BuiltInSubgroupGeMask = 4417,
  418. BuiltInSubgroupGeMaskKHR = 4417,
  419. BuiltInSubgroupGtMask = 4418,
  420. BuiltInSubgroupGtMaskKHR = 4418,
  421. BuiltInSubgroupLeMask = 4419,
  422. BuiltInSubgroupLeMaskKHR = 4419,
  423. BuiltInSubgroupLtMask = 4420,
  424. BuiltInSubgroupLtMaskKHR = 4420,
  425. BuiltInBaseVertex = 4424,
  426. BuiltInBaseInstance = 4425,
  427. BuiltInDrawIndex = 4426,
  428. BuiltInDeviceIndex = 4438,
  429. BuiltInViewIndex = 4440,
  430. BuiltInBaryCoordNoPerspAMD = 4992,
  431. BuiltInBaryCoordNoPerspCentroidAMD = 4993,
  432. BuiltInBaryCoordNoPerspSampleAMD = 4994,
  433. BuiltInBaryCoordSmoothAMD = 4995,
  434. BuiltInBaryCoordSmoothCentroidAMD = 4996,
  435. BuiltInBaryCoordSmoothSampleAMD = 4997,
  436. BuiltInBaryCoordPullModelAMD = 4998,
  437. BuiltInFragStencilRefEXT = 5014,
  438. BuiltInViewportMaskNV = 5253,
  439. BuiltInSecondaryPositionNV = 5257,
  440. BuiltInSecondaryViewportMaskNV = 5258,
  441. BuiltInPositionPerViewNV = 5261,
  442. BuiltInViewportMaskPerViewNV = 5262,
  443. BuiltInFullyCoveredEXT = 5264,
  444. BuiltInMax = 0x7fffffff,
  445. };
  446. enum SelectionControlShift {
  447. SelectionControlFlattenShift = 0,
  448. SelectionControlDontFlattenShift = 1,
  449. SelectionControlMax = 0x7fffffff,
  450. };
  451. enum SelectionControlMask {
  452. SelectionControlMaskNone = 0,
  453. SelectionControlFlattenMask = 0x00000001,
  454. SelectionControlDontFlattenMask = 0x00000002,
  455. };
  456. enum LoopControlShift {
  457. LoopControlUnrollShift = 0,
  458. LoopControlDontUnrollShift = 1,
  459. LoopControlDependencyInfiniteShift = 2,
  460. LoopControlDependencyLengthShift = 3,
  461. LoopControlMax = 0x7fffffff,
  462. };
  463. enum LoopControlMask {
  464. LoopControlMaskNone = 0,
  465. LoopControlUnrollMask = 0x00000001,
  466. LoopControlDontUnrollMask = 0x00000002,
  467. LoopControlDependencyInfiniteMask = 0x00000004,
  468. LoopControlDependencyLengthMask = 0x00000008,
  469. };
  470. enum FunctionControlShift {
  471. FunctionControlInlineShift = 0,
  472. FunctionControlDontInlineShift = 1,
  473. FunctionControlPureShift = 2,
  474. FunctionControlConstShift = 3,
  475. FunctionControlMax = 0x7fffffff,
  476. };
  477. enum FunctionControlMask {
  478. FunctionControlMaskNone = 0,
  479. FunctionControlInlineMask = 0x00000001,
  480. FunctionControlDontInlineMask = 0x00000002,
  481. FunctionControlPureMask = 0x00000004,
  482. FunctionControlConstMask = 0x00000008,
  483. };
  484. enum MemorySemanticsShift {
  485. MemorySemanticsAcquireShift = 1,
  486. MemorySemanticsReleaseShift = 2,
  487. MemorySemanticsAcquireReleaseShift = 3,
  488. MemorySemanticsSequentiallyConsistentShift = 4,
  489. MemorySemanticsUniformMemoryShift = 6,
  490. MemorySemanticsSubgroupMemoryShift = 7,
  491. MemorySemanticsWorkgroupMemoryShift = 8,
  492. MemorySemanticsCrossWorkgroupMemoryShift = 9,
  493. MemorySemanticsAtomicCounterMemoryShift = 10,
  494. MemorySemanticsImageMemoryShift = 11,
  495. MemorySemanticsMax = 0x7fffffff,
  496. };
  497. enum MemorySemanticsMask {
  498. MemorySemanticsMaskNone = 0,
  499. MemorySemanticsAcquireMask = 0x00000002,
  500. MemorySemanticsReleaseMask = 0x00000004,
  501. MemorySemanticsAcquireReleaseMask = 0x00000008,
  502. MemorySemanticsSequentiallyConsistentMask = 0x00000010,
  503. MemorySemanticsUniformMemoryMask = 0x00000040,
  504. MemorySemanticsSubgroupMemoryMask = 0x00000080,
  505. MemorySemanticsWorkgroupMemoryMask = 0x00000100,
  506. MemorySemanticsCrossWorkgroupMemoryMask = 0x00000200,
  507. MemorySemanticsAtomicCounterMemoryMask = 0x00000400,
  508. MemorySemanticsImageMemoryMask = 0x00000800,
  509. };
  510. enum MemoryAccessShift {
  511. MemoryAccessVolatileShift = 0,
  512. MemoryAccessAlignedShift = 1,
  513. MemoryAccessNontemporalShift = 2,
  514. MemoryAccessMax = 0x7fffffff,
  515. };
  516. enum MemoryAccessMask {
  517. MemoryAccessMaskNone = 0,
  518. MemoryAccessVolatileMask = 0x00000001,
  519. MemoryAccessAlignedMask = 0x00000002,
  520. MemoryAccessNontemporalMask = 0x00000004,
  521. };
  522. enum Scope {
  523. ScopeCrossDevice = 0,
  524. ScopeDevice = 1,
  525. ScopeWorkgroup = 2,
  526. ScopeSubgroup = 3,
  527. ScopeInvocation = 4,
  528. ScopeMax = 0x7fffffff,
  529. };
  530. enum GroupOperation {
  531. GroupOperationReduce = 0,
  532. GroupOperationInclusiveScan = 1,
  533. GroupOperationExclusiveScan = 2,
  534. GroupOperationClusteredReduce = 3,
  535. GroupOperationPartitionedReduceNV = 6,
  536. GroupOperationPartitionedInclusiveScanNV = 7,
  537. GroupOperationPartitionedExclusiveScanNV = 8,
  538. GroupOperationMax = 0x7fffffff,
  539. };
  540. enum KernelEnqueueFlags {
  541. KernelEnqueueFlagsNoWait = 0,
  542. KernelEnqueueFlagsWaitKernel = 1,
  543. KernelEnqueueFlagsWaitWorkGroup = 2,
  544. KernelEnqueueFlagsMax = 0x7fffffff,
  545. };
  546. enum KernelProfilingInfoShift {
  547. KernelProfilingInfoCmdExecTimeShift = 0,
  548. KernelProfilingInfoMax = 0x7fffffff,
  549. };
  550. enum KernelProfilingInfoMask {
  551. KernelProfilingInfoMaskNone = 0,
  552. KernelProfilingInfoCmdExecTimeMask = 0x00000001,
  553. };
  554. enum Capability {
  555. CapabilityMatrix = 0,
  556. CapabilityShader = 1,
  557. CapabilityGeometry = 2,
  558. CapabilityTessellation = 3,
  559. CapabilityAddresses = 4,
  560. CapabilityLinkage = 5,
  561. CapabilityKernel = 6,
  562. CapabilityVector16 = 7,
  563. CapabilityFloat16Buffer = 8,
  564. CapabilityFloat16 = 9,
  565. CapabilityFloat64 = 10,
  566. CapabilityInt64 = 11,
  567. CapabilityInt64Atomics = 12,
  568. CapabilityImageBasic = 13,
  569. CapabilityImageReadWrite = 14,
  570. CapabilityImageMipmap = 15,
  571. CapabilityPipes = 17,
  572. CapabilityGroups = 18,
  573. CapabilityDeviceEnqueue = 19,
  574. CapabilityLiteralSampler = 20,
  575. CapabilityAtomicStorage = 21,
  576. CapabilityInt16 = 22,
  577. CapabilityTessellationPointSize = 23,
  578. CapabilityGeometryPointSize = 24,
  579. CapabilityImageGatherExtended = 25,
  580. CapabilityStorageImageMultisample = 27,
  581. CapabilityUniformBufferArrayDynamicIndexing = 28,
  582. CapabilitySampledImageArrayDynamicIndexing = 29,
  583. CapabilityStorageBufferArrayDynamicIndexing = 30,
  584. CapabilityStorageImageArrayDynamicIndexing = 31,
  585. CapabilityClipDistance = 32,
  586. CapabilityCullDistance = 33,
  587. CapabilityImageCubeArray = 34,
  588. CapabilitySampleRateShading = 35,
  589. CapabilityImageRect = 36,
  590. CapabilitySampledRect = 37,
  591. CapabilityGenericPointer = 38,
  592. CapabilityInt8 = 39,
  593. CapabilityInputAttachment = 40,
  594. CapabilitySparseResidency = 41,
  595. CapabilityMinLod = 42,
  596. CapabilitySampled1D = 43,
  597. CapabilityImage1D = 44,
  598. CapabilitySampledCubeArray = 45,
  599. CapabilitySampledBuffer = 46,
  600. CapabilityImageBuffer = 47,
  601. CapabilityImageMSArray = 48,
  602. CapabilityStorageImageExtendedFormats = 49,
  603. CapabilityImageQuery = 50,
  604. CapabilityDerivativeControl = 51,
  605. CapabilityInterpolationFunction = 52,
  606. CapabilityTransformFeedback = 53,
  607. CapabilityGeometryStreams = 54,
  608. CapabilityStorageImageReadWithoutFormat = 55,
  609. CapabilityStorageImageWriteWithoutFormat = 56,
  610. CapabilityMultiViewport = 57,
  611. CapabilitySubgroupDispatch = 58,
  612. CapabilityNamedBarrier = 59,
  613. CapabilityPipeStorage = 60,
  614. CapabilityGroupNonUniform = 61,
  615. CapabilityGroupNonUniformVote = 62,
  616. CapabilityGroupNonUniformArithmetic = 63,
  617. CapabilityGroupNonUniformBallot = 64,
  618. CapabilityGroupNonUniformShuffle = 65,
  619. CapabilityGroupNonUniformShuffleRelative = 66,
  620. CapabilityGroupNonUniformClustered = 67,
  621. CapabilityGroupNonUniformQuad = 68,
  622. CapabilitySubgroupBallotKHR = 4423,
  623. CapabilityDrawParameters = 4427,
  624. CapabilitySubgroupVoteKHR = 4431,
  625. CapabilityStorageBuffer16BitAccess = 4433,
  626. CapabilityStorageUniformBufferBlock16 = 4433,
  627. CapabilityStorageUniform16 = 4434,
  628. CapabilityUniformAndStorageBuffer16BitAccess = 4434,
  629. CapabilityStoragePushConstant16 = 4435,
  630. CapabilityStorageInputOutput16 = 4436,
  631. CapabilityDeviceGroup = 4437,
  632. CapabilityMultiView = 4439,
  633. CapabilityVariablePointersStorageBuffer = 4441,
  634. CapabilityVariablePointers = 4442,
  635. CapabilityAtomicStorageOps = 4445,
  636. CapabilitySampleMaskPostDepthCoverage = 4447,
  637. CapabilityFloat16ImageAMD = 5008,
  638. CapabilityImageGatherBiasLodAMD = 5009,
  639. CapabilityFragmentMaskAMD = 5010,
  640. CapabilityStencilExportEXT = 5013,
  641. CapabilityImageReadWriteLodAMD = 5015,
  642. CapabilitySampleMaskOverrideCoverageNV = 5249,
  643. CapabilityGeometryShaderPassthroughNV = 5251,
  644. CapabilityShaderViewportIndexLayerEXT = 5254,
  645. CapabilityShaderViewportIndexLayerNV = 5254,
  646. CapabilityShaderViewportMaskNV = 5255,
  647. CapabilityShaderStereoViewNV = 5259,
  648. CapabilityPerViewAttributesNV = 5260,
  649. CapabilityFragmentFullyCoveredEXT = 5265,
  650. CapabilityGroupNonUniformPartitionedNV = 5297,
  651. CapabilityShaderNonUniformEXT = 5301,
  652. CapabilityRuntimeDescriptorArrayEXT = 5302,
  653. CapabilityInputAttachmentArrayDynamicIndexingEXT = 5303,
  654. CapabilityUniformTexelBufferArrayDynamicIndexingEXT = 5304,
  655. CapabilityStorageTexelBufferArrayDynamicIndexingEXT = 5305,
  656. CapabilityUniformBufferArrayNonUniformIndexingEXT = 5306,
  657. CapabilitySampledImageArrayNonUniformIndexingEXT = 5307,
  658. CapabilityStorageBufferArrayNonUniformIndexingEXT = 5308,
  659. CapabilityStorageImageArrayNonUniformIndexingEXT = 5309,
  660. CapabilityInputAttachmentArrayNonUniformIndexingEXT = 5310,
  661. CapabilityUniformTexelBufferArrayNonUniformIndexingEXT = 5311,
  662. CapabilityStorageTexelBufferArrayNonUniformIndexingEXT = 5312,
  663. CapabilitySubgroupShuffleINTEL = 5568,
  664. CapabilitySubgroupBufferBlockIOINTEL = 5569,
  665. CapabilitySubgroupImageBlockIOINTEL = 5570,
  666. CapabilityMax = 0x7fffffff,
  667. };
  668. enum Op {
  669. OpNop = 0,
  670. OpUndef = 1,
  671. OpSourceContinued = 2,
  672. OpSource = 3,
  673. OpSourceExtension = 4,
  674. OpName = 5,
  675. OpMemberName = 6,
  676. OpString = 7,
  677. OpLine = 8,
  678. OpExtension = 10,
  679. OpExtInstImport = 11,
  680. OpExtInst = 12,
  681. OpMemoryModel = 14,
  682. OpEntryPoint = 15,
  683. OpExecutionMode = 16,
  684. OpCapability = 17,
  685. OpTypeVoid = 19,
  686. OpTypeBool = 20,
  687. OpTypeInt = 21,
  688. OpTypeFloat = 22,
  689. OpTypeVector = 23,
  690. OpTypeMatrix = 24,
  691. OpTypeImage = 25,
  692. OpTypeSampler = 26,
  693. OpTypeSampledImage = 27,
  694. OpTypeArray = 28,
  695. OpTypeRuntimeArray = 29,
  696. OpTypeStruct = 30,
  697. OpTypeOpaque = 31,
  698. OpTypePointer = 32,
  699. OpTypeFunction = 33,
  700. OpTypeEvent = 34,
  701. OpTypeDeviceEvent = 35,
  702. OpTypeReserveId = 36,
  703. OpTypeQueue = 37,
  704. OpTypePipe = 38,
  705. OpTypeForwardPointer = 39,
  706. OpConstantTrue = 41,
  707. OpConstantFalse = 42,
  708. OpConstant = 43,
  709. OpConstantComposite = 44,
  710. OpConstantSampler = 45,
  711. OpConstantNull = 46,
  712. OpSpecConstantTrue = 48,
  713. OpSpecConstantFalse = 49,
  714. OpSpecConstant = 50,
  715. OpSpecConstantComposite = 51,
  716. OpSpecConstantOp = 52,
  717. OpFunction = 54,
  718. OpFunctionParameter = 55,
  719. OpFunctionEnd = 56,
  720. OpFunctionCall = 57,
  721. OpVariable = 59,
  722. OpImageTexelPointer = 60,
  723. OpLoad = 61,
  724. OpStore = 62,
  725. OpCopyMemory = 63,
  726. OpCopyMemorySized = 64,
  727. OpAccessChain = 65,
  728. OpInBoundsAccessChain = 66,
  729. OpPtrAccessChain = 67,
  730. OpArrayLength = 68,
  731. OpGenericPtrMemSemantics = 69,
  732. OpInBoundsPtrAccessChain = 70,
  733. OpDecorate = 71,
  734. OpMemberDecorate = 72,
  735. OpDecorationGroup = 73,
  736. OpGroupDecorate = 74,
  737. OpGroupMemberDecorate = 75,
  738. OpVectorExtractDynamic = 77,
  739. OpVectorInsertDynamic = 78,
  740. OpVectorShuffle = 79,
  741. OpCompositeConstruct = 80,
  742. OpCompositeExtract = 81,
  743. OpCompositeInsert = 82,
  744. OpCopyObject = 83,
  745. OpTranspose = 84,
  746. OpSampledImage = 86,
  747. OpImageSampleImplicitLod = 87,
  748. OpImageSampleExplicitLod = 88,
  749. OpImageSampleDrefImplicitLod = 89,
  750. OpImageSampleDrefExplicitLod = 90,
  751. OpImageSampleProjImplicitLod = 91,
  752. OpImageSampleProjExplicitLod = 92,
  753. OpImageSampleProjDrefImplicitLod = 93,
  754. OpImageSampleProjDrefExplicitLod = 94,
  755. OpImageFetch = 95,
  756. OpImageGather = 96,
  757. OpImageDrefGather = 97,
  758. OpImageRead = 98,
  759. OpImageWrite = 99,
  760. OpImage = 100,
  761. OpImageQueryFormat = 101,
  762. OpImageQueryOrder = 102,
  763. OpImageQuerySizeLod = 103,
  764. OpImageQuerySize = 104,
  765. OpImageQueryLod = 105,
  766. OpImageQueryLevels = 106,
  767. OpImageQuerySamples = 107,
  768. OpConvertFToU = 109,
  769. OpConvertFToS = 110,
  770. OpConvertSToF = 111,
  771. OpConvertUToF = 112,
  772. OpUConvert = 113,
  773. OpSConvert = 114,
  774. OpFConvert = 115,
  775. OpQuantizeToF16 = 116,
  776. OpConvertPtrToU = 117,
  777. OpSatConvertSToU = 118,
  778. OpSatConvertUToS = 119,
  779. OpConvertUToPtr = 120,
  780. OpPtrCastToGeneric = 121,
  781. OpGenericCastToPtr = 122,
  782. OpGenericCastToPtrExplicit = 123,
  783. OpBitcast = 124,
  784. OpSNegate = 126,
  785. OpFNegate = 127,
  786. OpIAdd = 128,
  787. OpFAdd = 129,
  788. OpISub = 130,
  789. OpFSub = 131,
  790. OpIMul = 132,
  791. OpFMul = 133,
  792. OpUDiv = 134,
  793. OpSDiv = 135,
  794. OpFDiv = 136,
  795. OpUMod = 137,
  796. OpSRem = 138,
  797. OpSMod = 139,
  798. OpFRem = 140,
  799. OpFMod = 141,
  800. OpVectorTimesScalar = 142,
  801. OpMatrixTimesScalar = 143,
  802. OpVectorTimesMatrix = 144,
  803. OpMatrixTimesVector = 145,
  804. OpMatrixTimesMatrix = 146,
  805. OpOuterProduct = 147,
  806. OpDot = 148,
  807. OpIAddCarry = 149,
  808. OpISubBorrow = 150,
  809. OpUMulExtended = 151,
  810. OpSMulExtended = 152,
  811. OpAny = 154,
  812. OpAll = 155,
  813. OpIsNan = 156,
  814. OpIsInf = 157,
  815. OpIsFinite = 158,
  816. OpIsNormal = 159,
  817. OpSignBitSet = 160,
  818. OpLessOrGreater = 161,
  819. OpOrdered = 162,
  820. OpUnordered = 163,
  821. OpLogicalEqual = 164,
  822. OpLogicalNotEqual = 165,
  823. OpLogicalOr = 166,
  824. OpLogicalAnd = 167,
  825. OpLogicalNot = 168,
  826. OpSelect = 169,
  827. OpIEqual = 170,
  828. OpINotEqual = 171,
  829. OpUGreaterThan = 172,
  830. OpSGreaterThan = 173,
  831. OpUGreaterThanEqual = 174,
  832. OpSGreaterThanEqual = 175,
  833. OpULessThan = 176,
  834. OpSLessThan = 177,
  835. OpULessThanEqual = 178,
  836. OpSLessThanEqual = 179,
  837. OpFOrdEqual = 180,
  838. OpFUnordEqual = 181,
  839. OpFOrdNotEqual = 182,
  840. OpFUnordNotEqual = 183,
  841. OpFOrdLessThan = 184,
  842. OpFUnordLessThan = 185,
  843. OpFOrdGreaterThan = 186,
  844. OpFUnordGreaterThan = 187,
  845. OpFOrdLessThanEqual = 188,
  846. OpFUnordLessThanEqual = 189,
  847. OpFOrdGreaterThanEqual = 190,
  848. OpFUnordGreaterThanEqual = 191,
  849. OpShiftRightLogical = 194,
  850. OpShiftRightArithmetic = 195,
  851. OpShiftLeftLogical = 196,
  852. OpBitwiseOr = 197,
  853. OpBitwiseXor = 198,
  854. OpBitwiseAnd = 199,
  855. OpNot = 200,
  856. OpBitFieldInsert = 201,
  857. OpBitFieldSExtract = 202,
  858. OpBitFieldUExtract = 203,
  859. OpBitReverse = 204,
  860. OpBitCount = 205,
  861. OpDPdx = 207,
  862. OpDPdy = 208,
  863. OpFwidth = 209,
  864. OpDPdxFine = 210,
  865. OpDPdyFine = 211,
  866. OpFwidthFine = 212,
  867. OpDPdxCoarse = 213,
  868. OpDPdyCoarse = 214,
  869. OpFwidthCoarse = 215,
  870. OpEmitVertex = 218,
  871. OpEndPrimitive = 219,
  872. OpEmitStreamVertex = 220,
  873. OpEndStreamPrimitive = 221,
  874. OpControlBarrier = 224,
  875. OpMemoryBarrier = 225,
  876. OpAtomicLoad = 227,
  877. OpAtomicStore = 228,
  878. OpAtomicExchange = 229,
  879. OpAtomicCompareExchange = 230,
  880. OpAtomicCompareExchangeWeak = 231,
  881. OpAtomicIIncrement = 232,
  882. OpAtomicIDecrement = 233,
  883. OpAtomicIAdd = 234,
  884. OpAtomicISub = 235,
  885. OpAtomicSMin = 236,
  886. OpAtomicUMin = 237,
  887. OpAtomicSMax = 238,
  888. OpAtomicUMax = 239,
  889. OpAtomicAnd = 240,
  890. OpAtomicOr = 241,
  891. OpAtomicXor = 242,
  892. OpPhi = 245,
  893. OpLoopMerge = 246,
  894. OpSelectionMerge = 247,
  895. OpLabel = 248,
  896. OpBranch = 249,
  897. OpBranchConditional = 250,
  898. OpSwitch = 251,
  899. OpKill = 252,
  900. OpReturn = 253,
  901. OpReturnValue = 254,
  902. OpUnreachable = 255,
  903. OpLifetimeStart = 256,
  904. OpLifetimeStop = 257,
  905. OpGroupAsyncCopy = 259,
  906. OpGroupWaitEvents = 260,
  907. OpGroupAll = 261,
  908. OpGroupAny = 262,
  909. OpGroupBroadcast = 263,
  910. OpGroupIAdd = 264,
  911. OpGroupFAdd = 265,
  912. OpGroupFMin = 266,
  913. OpGroupUMin = 267,
  914. OpGroupSMin = 268,
  915. OpGroupFMax = 269,
  916. OpGroupUMax = 270,
  917. OpGroupSMax = 271,
  918. OpReadPipe = 274,
  919. OpWritePipe = 275,
  920. OpReservedReadPipe = 276,
  921. OpReservedWritePipe = 277,
  922. OpReserveReadPipePackets = 278,
  923. OpReserveWritePipePackets = 279,
  924. OpCommitReadPipe = 280,
  925. OpCommitWritePipe = 281,
  926. OpIsValidReserveId = 282,
  927. OpGetNumPipePackets = 283,
  928. OpGetMaxPipePackets = 284,
  929. OpGroupReserveReadPipePackets = 285,
  930. OpGroupReserveWritePipePackets = 286,
  931. OpGroupCommitReadPipe = 287,
  932. OpGroupCommitWritePipe = 288,
  933. OpEnqueueMarker = 291,
  934. OpEnqueueKernel = 292,
  935. OpGetKernelNDrangeSubGroupCount = 293,
  936. OpGetKernelNDrangeMaxSubGroupSize = 294,
  937. OpGetKernelWorkGroupSize = 295,
  938. OpGetKernelPreferredWorkGroupSizeMultiple = 296,
  939. OpRetainEvent = 297,
  940. OpReleaseEvent = 298,
  941. OpCreateUserEvent = 299,
  942. OpIsValidEvent = 300,
  943. OpSetUserEventStatus = 301,
  944. OpCaptureEventProfilingInfo = 302,
  945. OpGetDefaultQueue = 303,
  946. OpBuildNDRange = 304,
  947. OpImageSparseSampleImplicitLod = 305,
  948. OpImageSparseSampleExplicitLod = 306,
  949. OpImageSparseSampleDrefImplicitLod = 307,
  950. OpImageSparseSampleDrefExplicitLod = 308,
  951. OpImageSparseSampleProjImplicitLod = 309,
  952. OpImageSparseSampleProjExplicitLod = 310,
  953. OpImageSparseSampleProjDrefImplicitLod = 311,
  954. OpImageSparseSampleProjDrefExplicitLod = 312,
  955. OpImageSparseFetch = 313,
  956. OpImageSparseGather = 314,
  957. OpImageSparseDrefGather = 315,
  958. OpImageSparseTexelsResident = 316,
  959. OpNoLine = 317,
  960. OpAtomicFlagTestAndSet = 318,
  961. OpAtomicFlagClear = 319,
  962. OpImageSparseRead = 320,
  963. OpSizeOf = 321,
  964. OpTypePipeStorage = 322,
  965. OpConstantPipeStorage = 323,
  966. OpCreatePipeFromPipeStorage = 324,
  967. OpGetKernelLocalSizeForSubgroupCount = 325,
  968. OpGetKernelMaxNumSubgroups = 326,
  969. OpTypeNamedBarrier = 327,
  970. OpNamedBarrierInitialize = 328,
  971. OpMemoryNamedBarrier = 329,
  972. OpModuleProcessed = 330,
  973. OpExecutionModeId = 331,
  974. OpDecorateId = 332,
  975. OpGroupNonUniformElect = 333,
  976. OpGroupNonUniformAll = 334,
  977. OpGroupNonUniformAny = 335,
  978. OpGroupNonUniformAllEqual = 336,
  979. OpGroupNonUniformBroadcast = 337,
  980. OpGroupNonUniformBroadcastFirst = 338,
  981. OpGroupNonUniformBallot = 339,
  982. OpGroupNonUniformInverseBallot = 340,
  983. OpGroupNonUniformBallotBitExtract = 341,
  984. OpGroupNonUniformBallotBitCount = 342,
  985. OpGroupNonUniformBallotFindLSB = 343,
  986. OpGroupNonUniformBallotFindMSB = 344,
  987. OpGroupNonUniformShuffle = 345,
  988. OpGroupNonUniformShuffleXor = 346,
  989. OpGroupNonUniformShuffleUp = 347,
  990. OpGroupNonUniformShuffleDown = 348,
  991. OpGroupNonUniformIAdd = 349,
  992. OpGroupNonUniformFAdd = 350,
  993. OpGroupNonUniformIMul = 351,
  994. OpGroupNonUniformFMul = 352,
  995. OpGroupNonUniformSMin = 353,
  996. OpGroupNonUniformUMin = 354,
  997. OpGroupNonUniformFMin = 355,
  998. OpGroupNonUniformSMax = 356,
  999. OpGroupNonUniformUMax = 357,
  1000. OpGroupNonUniformFMax = 358,
  1001. OpGroupNonUniformBitwiseAnd = 359,
  1002. OpGroupNonUniformBitwiseOr = 360,
  1003. OpGroupNonUniformBitwiseXor = 361,
  1004. OpGroupNonUniformLogicalAnd = 362,
  1005. OpGroupNonUniformLogicalOr = 363,
  1006. OpGroupNonUniformLogicalXor = 364,
  1007. OpGroupNonUniformQuadBroadcast = 365,
  1008. OpGroupNonUniformQuadSwap = 366,
  1009. OpSubgroupBallotKHR = 4421,
  1010. OpSubgroupFirstInvocationKHR = 4422,
  1011. OpSubgroupAllKHR = 4428,
  1012. OpSubgroupAnyKHR = 4429,
  1013. OpSubgroupAllEqualKHR = 4430,
  1014. OpSubgroupReadInvocationKHR = 4432,
  1015. OpGroupIAddNonUniformAMD = 5000,
  1016. OpGroupFAddNonUniformAMD = 5001,
  1017. OpGroupFMinNonUniformAMD = 5002,
  1018. OpGroupUMinNonUniformAMD = 5003,
  1019. OpGroupSMinNonUniformAMD = 5004,
  1020. OpGroupFMaxNonUniformAMD = 5005,
  1021. OpGroupUMaxNonUniformAMD = 5006,
  1022. OpGroupSMaxNonUniformAMD = 5007,
  1023. OpFragmentMaskFetchAMD = 5011,
  1024. OpFragmentFetchAMD = 5012,
  1025. OpGroupNonUniformPartitionNV = 5296,
  1026. OpSubgroupShuffleINTEL = 5571,
  1027. OpSubgroupShuffleDownINTEL = 5572,
  1028. OpSubgroupShuffleUpINTEL = 5573,
  1029. OpSubgroupShuffleXorINTEL = 5574,
  1030. OpSubgroupBlockReadINTEL = 5575,
  1031. OpSubgroupBlockWriteINTEL = 5576,
  1032. OpSubgroupImageBlockReadINTEL = 5577,
  1033. OpSubgroupImageBlockWriteINTEL = 5578,
  1034. OpDecorateStringGOOGLE = 5632,
  1035. OpMemberDecorateStringGOOGLE = 5633,
  1036. OpMax = 0x7fffffff,
  1037. };
  1038. // Overload operator| for mask bit combining
  1039. inline ImageOperandsMask operator|(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) | unsigned(b)); }
  1040. inline FPFastMathModeMask operator|(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) | unsigned(b)); }
  1041. inline SelectionControlMask operator|(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) | unsigned(b)); }
  1042. inline LoopControlMask operator|(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) | unsigned(b)); }
  1043. inline FunctionControlMask operator|(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) | unsigned(b)); }
  1044. inline MemorySemanticsMask operator|(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) | unsigned(b)); }
  1045. inline MemoryAccessMask operator|(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) | unsigned(b)); }
  1046. inline KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) | unsigned(b)); }
  1047. } // end namespace spv
  1048. #endif // #ifndef spirv_HPP