spirv.hpp 103 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171
  1. // Copyright (c) 2014-2020 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, C#, D
  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. // - C# will use enum classes in the Specification class located in the "Spv" namespace,
  35. // e.g.: Spv.Specification.SourceLanguage.GLSL
  36. // - D will have tokens under the "spv" module, e.g: spv.SourceLanguage.GLSL
  37. //
  38. // Some tokens act like mask values, which can be OR'd together,
  39. // while others are mutually exclusive. The mask-like ones have
  40. // "Mask" in their name, and a parallel enum that has the shift
  41. // amount (1 << x) for each corresponding enumerant.
  42. #ifndef spirv_HPP
  43. #define spirv_HPP
  44. namespace spv {
  45. typedef unsigned int Id;
  46. #define SPV_VERSION 0x10500
  47. #define SPV_REVISION 3
  48. static const unsigned int MagicNumber = 0x07230203;
  49. static const unsigned int Version = 0x00010500;
  50. static const unsigned int Revision = 3;
  51. static const unsigned int OpCodeMask = 0xffff;
  52. static const unsigned int WordCountShift = 16;
  53. enum SourceLanguage {
  54. SourceLanguageUnknown = 0,
  55. SourceLanguageESSL = 1,
  56. SourceLanguageGLSL = 2,
  57. SourceLanguageOpenCL_C = 3,
  58. SourceLanguageOpenCL_CPP = 4,
  59. SourceLanguageHLSL = 5,
  60. SourceLanguageMax = 0x7fffffff,
  61. };
  62. enum ExecutionModel {
  63. ExecutionModelVertex = 0,
  64. ExecutionModelTessellationControl = 1,
  65. ExecutionModelTessellationEvaluation = 2,
  66. ExecutionModelGeometry = 3,
  67. ExecutionModelFragment = 4,
  68. ExecutionModelGLCompute = 5,
  69. ExecutionModelKernel = 6,
  70. ExecutionModelTaskNV = 5267,
  71. ExecutionModelMeshNV = 5268,
  72. ExecutionModelRayGenerationKHR = 5313,
  73. ExecutionModelRayGenerationNV = 5313,
  74. ExecutionModelIntersectionKHR = 5314,
  75. ExecutionModelIntersectionNV = 5314,
  76. ExecutionModelAnyHitKHR = 5315,
  77. ExecutionModelAnyHitNV = 5315,
  78. ExecutionModelClosestHitKHR = 5316,
  79. ExecutionModelClosestHitNV = 5316,
  80. ExecutionModelMissKHR = 5317,
  81. ExecutionModelMissNV = 5317,
  82. ExecutionModelCallableKHR = 5318,
  83. ExecutionModelCallableNV = 5318,
  84. ExecutionModelMax = 0x7fffffff,
  85. };
  86. enum AddressingModel {
  87. AddressingModelLogical = 0,
  88. AddressingModelPhysical32 = 1,
  89. AddressingModelPhysical64 = 2,
  90. AddressingModelPhysicalStorageBuffer64 = 5348,
  91. AddressingModelPhysicalStorageBuffer64EXT = 5348,
  92. AddressingModelMax = 0x7fffffff,
  93. };
  94. enum MemoryModel {
  95. MemoryModelSimple = 0,
  96. MemoryModelGLSL450 = 1,
  97. MemoryModelOpenCL = 2,
  98. MemoryModelVulkan = 3,
  99. MemoryModelVulkanKHR = 3,
  100. MemoryModelMax = 0x7fffffff,
  101. };
  102. enum ExecutionMode {
  103. ExecutionModeInvocations = 0,
  104. ExecutionModeSpacingEqual = 1,
  105. ExecutionModeSpacingFractionalEven = 2,
  106. ExecutionModeSpacingFractionalOdd = 3,
  107. ExecutionModeVertexOrderCw = 4,
  108. ExecutionModeVertexOrderCcw = 5,
  109. ExecutionModePixelCenterInteger = 6,
  110. ExecutionModeOriginUpperLeft = 7,
  111. ExecutionModeOriginLowerLeft = 8,
  112. ExecutionModeEarlyFragmentTests = 9,
  113. ExecutionModePointMode = 10,
  114. ExecutionModeXfb = 11,
  115. ExecutionModeDepthReplacing = 12,
  116. ExecutionModeDepthGreater = 14,
  117. ExecutionModeDepthLess = 15,
  118. ExecutionModeDepthUnchanged = 16,
  119. ExecutionModeLocalSize = 17,
  120. ExecutionModeLocalSizeHint = 18,
  121. ExecutionModeInputPoints = 19,
  122. ExecutionModeInputLines = 20,
  123. ExecutionModeInputLinesAdjacency = 21,
  124. ExecutionModeTriangles = 22,
  125. ExecutionModeInputTrianglesAdjacency = 23,
  126. ExecutionModeQuads = 24,
  127. ExecutionModeIsolines = 25,
  128. ExecutionModeOutputVertices = 26,
  129. ExecutionModeOutputPoints = 27,
  130. ExecutionModeOutputLineStrip = 28,
  131. ExecutionModeOutputTriangleStrip = 29,
  132. ExecutionModeVecTypeHint = 30,
  133. ExecutionModeContractionOff = 31,
  134. ExecutionModeInitializer = 33,
  135. ExecutionModeFinalizer = 34,
  136. ExecutionModeSubgroupSize = 35,
  137. ExecutionModeSubgroupsPerWorkgroup = 36,
  138. ExecutionModeSubgroupsPerWorkgroupId = 37,
  139. ExecutionModeLocalSizeId = 38,
  140. ExecutionModeLocalSizeHintId = 39,
  141. ExecutionModePostDepthCoverage = 4446,
  142. ExecutionModeDenormPreserve = 4459,
  143. ExecutionModeDenormFlushToZero = 4460,
  144. ExecutionModeSignedZeroInfNanPreserve = 4461,
  145. ExecutionModeRoundingModeRTE = 4462,
  146. ExecutionModeRoundingModeRTZ = 4463,
  147. ExecutionModeStencilRefReplacingEXT = 5027,
  148. ExecutionModeOutputLinesNV = 5269,
  149. ExecutionModeOutputPrimitivesNV = 5270,
  150. ExecutionModeDerivativeGroupQuadsNV = 5289,
  151. ExecutionModeDerivativeGroupLinearNV = 5290,
  152. ExecutionModeOutputTrianglesNV = 5298,
  153. ExecutionModePixelInterlockOrderedEXT = 5366,
  154. ExecutionModePixelInterlockUnorderedEXT = 5367,
  155. ExecutionModeSampleInterlockOrderedEXT = 5368,
  156. ExecutionModeSampleInterlockUnorderedEXT = 5369,
  157. ExecutionModeShadingRateInterlockOrderedEXT = 5370,
  158. ExecutionModeShadingRateInterlockUnorderedEXT = 5371,
  159. ExecutionModeMaxWorkgroupSizeINTEL = 5893,
  160. ExecutionModeMaxWorkDimINTEL = 5894,
  161. ExecutionModeNoGlobalOffsetINTEL = 5895,
  162. ExecutionModeNumSIMDWorkitemsINTEL = 5896,
  163. ExecutionModeMax = 0x7fffffff,
  164. };
  165. enum StorageClass {
  166. StorageClassUniformConstant = 0,
  167. StorageClassInput = 1,
  168. StorageClassUniform = 2,
  169. StorageClassOutput = 3,
  170. StorageClassWorkgroup = 4,
  171. StorageClassCrossWorkgroup = 5,
  172. StorageClassPrivate = 6,
  173. StorageClassFunction = 7,
  174. StorageClassGeneric = 8,
  175. StorageClassPushConstant = 9,
  176. StorageClassAtomicCounter = 10,
  177. StorageClassImage = 11,
  178. StorageClassStorageBuffer = 12,
  179. StorageClassCallableDataKHR = 5328,
  180. StorageClassCallableDataNV = 5328,
  181. StorageClassIncomingCallableDataKHR = 5329,
  182. StorageClassIncomingCallableDataNV = 5329,
  183. StorageClassRayPayloadKHR = 5338,
  184. StorageClassRayPayloadNV = 5338,
  185. StorageClassHitAttributeKHR = 5339,
  186. StorageClassHitAttributeNV = 5339,
  187. StorageClassIncomingRayPayloadKHR = 5342,
  188. StorageClassIncomingRayPayloadNV = 5342,
  189. StorageClassShaderRecordBufferKHR = 5343,
  190. StorageClassShaderRecordBufferNV = 5343,
  191. StorageClassPhysicalStorageBuffer = 5349,
  192. StorageClassPhysicalStorageBufferEXT = 5349,
  193. StorageClassCodeSectionINTEL = 5605,
  194. StorageClassMax = 0x7fffffff,
  195. };
  196. enum Dim {
  197. Dim1D = 0,
  198. Dim2D = 1,
  199. Dim3D = 2,
  200. DimCube = 3,
  201. DimRect = 4,
  202. DimBuffer = 5,
  203. DimSubpassData = 6,
  204. DimMax = 0x7fffffff,
  205. };
  206. enum SamplerAddressingMode {
  207. SamplerAddressingModeNone = 0,
  208. SamplerAddressingModeClampToEdge = 1,
  209. SamplerAddressingModeClamp = 2,
  210. SamplerAddressingModeRepeat = 3,
  211. SamplerAddressingModeRepeatMirrored = 4,
  212. SamplerAddressingModeMax = 0x7fffffff,
  213. };
  214. enum SamplerFilterMode {
  215. SamplerFilterModeNearest = 0,
  216. SamplerFilterModeLinear = 1,
  217. SamplerFilterModeMax = 0x7fffffff,
  218. };
  219. enum ImageFormat {
  220. ImageFormatUnknown = 0,
  221. ImageFormatRgba32f = 1,
  222. ImageFormatRgba16f = 2,
  223. ImageFormatR32f = 3,
  224. ImageFormatRgba8 = 4,
  225. ImageFormatRgba8Snorm = 5,
  226. ImageFormatRg32f = 6,
  227. ImageFormatRg16f = 7,
  228. ImageFormatR11fG11fB10f = 8,
  229. ImageFormatR16f = 9,
  230. ImageFormatRgba16 = 10,
  231. ImageFormatRgb10A2 = 11,
  232. ImageFormatRg16 = 12,
  233. ImageFormatRg8 = 13,
  234. ImageFormatR16 = 14,
  235. ImageFormatR8 = 15,
  236. ImageFormatRgba16Snorm = 16,
  237. ImageFormatRg16Snorm = 17,
  238. ImageFormatRg8Snorm = 18,
  239. ImageFormatR16Snorm = 19,
  240. ImageFormatR8Snorm = 20,
  241. ImageFormatRgba32i = 21,
  242. ImageFormatRgba16i = 22,
  243. ImageFormatRgba8i = 23,
  244. ImageFormatR32i = 24,
  245. ImageFormatRg32i = 25,
  246. ImageFormatRg16i = 26,
  247. ImageFormatRg8i = 27,
  248. ImageFormatR16i = 28,
  249. ImageFormatR8i = 29,
  250. ImageFormatRgba32ui = 30,
  251. ImageFormatRgba16ui = 31,
  252. ImageFormatRgba8ui = 32,
  253. ImageFormatR32ui = 33,
  254. ImageFormatRgb10a2ui = 34,
  255. ImageFormatRg32ui = 35,
  256. ImageFormatRg16ui = 36,
  257. ImageFormatRg8ui = 37,
  258. ImageFormatR16ui = 38,
  259. ImageFormatR8ui = 39,
  260. ImageFormatMax = 0x7fffffff,
  261. };
  262. enum ImageChannelOrder {
  263. ImageChannelOrderR = 0,
  264. ImageChannelOrderA = 1,
  265. ImageChannelOrderRG = 2,
  266. ImageChannelOrderRA = 3,
  267. ImageChannelOrderRGB = 4,
  268. ImageChannelOrderRGBA = 5,
  269. ImageChannelOrderBGRA = 6,
  270. ImageChannelOrderARGB = 7,
  271. ImageChannelOrderIntensity = 8,
  272. ImageChannelOrderLuminance = 9,
  273. ImageChannelOrderRx = 10,
  274. ImageChannelOrderRGx = 11,
  275. ImageChannelOrderRGBx = 12,
  276. ImageChannelOrderDepth = 13,
  277. ImageChannelOrderDepthStencil = 14,
  278. ImageChannelOrdersRGB = 15,
  279. ImageChannelOrdersRGBx = 16,
  280. ImageChannelOrdersRGBA = 17,
  281. ImageChannelOrdersBGRA = 18,
  282. ImageChannelOrderABGR = 19,
  283. ImageChannelOrderMax = 0x7fffffff,
  284. };
  285. enum ImageChannelDataType {
  286. ImageChannelDataTypeSnormInt8 = 0,
  287. ImageChannelDataTypeSnormInt16 = 1,
  288. ImageChannelDataTypeUnormInt8 = 2,
  289. ImageChannelDataTypeUnormInt16 = 3,
  290. ImageChannelDataTypeUnormShort565 = 4,
  291. ImageChannelDataTypeUnormShort555 = 5,
  292. ImageChannelDataTypeUnormInt101010 = 6,
  293. ImageChannelDataTypeSignedInt8 = 7,
  294. ImageChannelDataTypeSignedInt16 = 8,
  295. ImageChannelDataTypeSignedInt32 = 9,
  296. ImageChannelDataTypeUnsignedInt8 = 10,
  297. ImageChannelDataTypeUnsignedInt16 = 11,
  298. ImageChannelDataTypeUnsignedInt32 = 12,
  299. ImageChannelDataTypeHalfFloat = 13,
  300. ImageChannelDataTypeFloat = 14,
  301. ImageChannelDataTypeUnormInt24 = 15,
  302. ImageChannelDataTypeUnormInt101010_2 = 16,
  303. ImageChannelDataTypeMax = 0x7fffffff,
  304. };
  305. enum ImageOperandsShift {
  306. ImageOperandsBiasShift = 0,
  307. ImageOperandsLodShift = 1,
  308. ImageOperandsGradShift = 2,
  309. ImageOperandsConstOffsetShift = 3,
  310. ImageOperandsOffsetShift = 4,
  311. ImageOperandsConstOffsetsShift = 5,
  312. ImageOperandsSampleShift = 6,
  313. ImageOperandsMinLodShift = 7,
  314. ImageOperandsMakeTexelAvailableShift = 8,
  315. ImageOperandsMakeTexelAvailableKHRShift = 8,
  316. ImageOperandsMakeTexelVisibleShift = 9,
  317. ImageOperandsMakeTexelVisibleKHRShift = 9,
  318. ImageOperandsNonPrivateTexelShift = 10,
  319. ImageOperandsNonPrivateTexelKHRShift = 10,
  320. ImageOperandsVolatileTexelShift = 11,
  321. ImageOperandsVolatileTexelKHRShift = 11,
  322. ImageOperandsSignExtendShift = 12,
  323. ImageOperandsZeroExtendShift = 13,
  324. ImageOperandsMax = 0x7fffffff,
  325. };
  326. enum ImageOperandsMask {
  327. ImageOperandsMaskNone = 0,
  328. ImageOperandsBiasMask = 0x00000001,
  329. ImageOperandsLodMask = 0x00000002,
  330. ImageOperandsGradMask = 0x00000004,
  331. ImageOperandsConstOffsetMask = 0x00000008,
  332. ImageOperandsOffsetMask = 0x00000010,
  333. ImageOperandsConstOffsetsMask = 0x00000020,
  334. ImageOperandsSampleMask = 0x00000040,
  335. ImageOperandsMinLodMask = 0x00000080,
  336. ImageOperandsMakeTexelAvailableMask = 0x00000100,
  337. ImageOperandsMakeTexelAvailableKHRMask = 0x00000100,
  338. ImageOperandsMakeTexelVisibleMask = 0x00000200,
  339. ImageOperandsMakeTexelVisibleKHRMask = 0x00000200,
  340. ImageOperandsNonPrivateTexelMask = 0x00000400,
  341. ImageOperandsNonPrivateTexelKHRMask = 0x00000400,
  342. ImageOperandsVolatileTexelMask = 0x00000800,
  343. ImageOperandsVolatileTexelKHRMask = 0x00000800,
  344. ImageOperandsSignExtendMask = 0x00001000,
  345. ImageOperandsZeroExtendMask = 0x00002000,
  346. };
  347. enum FPFastMathModeShift {
  348. FPFastMathModeNotNaNShift = 0,
  349. FPFastMathModeNotInfShift = 1,
  350. FPFastMathModeNSZShift = 2,
  351. FPFastMathModeAllowRecipShift = 3,
  352. FPFastMathModeFastShift = 4,
  353. FPFastMathModeMax = 0x7fffffff,
  354. };
  355. enum FPFastMathModeMask {
  356. FPFastMathModeMaskNone = 0,
  357. FPFastMathModeNotNaNMask = 0x00000001,
  358. FPFastMathModeNotInfMask = 0x00000002,
  359. FPFastMathModeNSZMask = 0x00000004,
  360. FPFastMathModeAllowRecipMask = 0x00000008,
  361. FPFastMathModeFastMask = 0x00000010,
  362. };
  363. enum FPRoundingMode {
  364. FPRoundingModeRTE = 0,
  365. FPRoundingModeRTZ = 1,
  366. FPRoundingModeRTP = 2,
  367. FPRoundingModeRTN = 3,
  368. FPRoundingModeMax = 0x7fffffff,
  369. };
  370. enum LinkageType {
  371. LinkageTypeExport = 0,
  372. LinkageTypeImport = 1,
  373. LinkageTypeMax = 0x7fffffff,
  374. };
  375. enum AccessQualifier {
  376. AccessQualifierReadOnly = 0,
  377. AccessQualifierWriteOnly = 1,
  378. AccessQualifierReadWrite = 2,
  379. AccessQualifierMax = 0x7fffffff,
  380. };
  381. enum FunctionParameterAttribute {
  382. FunctionParameterAttributeZext = 0,
  383. FunctionParameterAttributeSext = 1,
  384. FunctionParameterAttributeByVal = 2,
  385. FunctionParameterAttributeSret = 3,
  386. FunctionParameterAttributeNoAlias = 4,
  387. FunctionParameterAttributeNoCapture = 5,
  388. FunctionParameterAttributeNoWrite = 6,
  389. FunctionParameterAttributeNoReadWrite = 7,
  390. FunctionParameterAttributeMax = 0x7fffffff,
  391. };
  392. enum Decoration {
  393. DecorationRelaxedPrecision = 0,
  394. DecorationSpecId = 1,
  395. DecorationBlock = 2,
  396. DecorationBufferBlock = 3,
  397. DecorationRowMajor = 4,
  398. DecorationColMajor = 5,
  399. DecorationArrayStride = 6,
  400. DecorationMatrixStride = 7,
  401. DecorationGLSLShared = 8,
  402. DecorationGLSLPacked = 9,
  403. DecorationCPacked = 10,
  404. DecorationBuiltIn = 11,
  405. DecorationNoPerspective = 13,
  406. DecorationFlat = 14,
  407. DecorationPatch = 15,
  408. DecorationCentroid = 16,
  409. DecorationSample = 17,
  410. DecorationInvariant = 18,
  411. DecorationRestrict = 19,
  412. DecorationAliased = 20,
  413. DecorationVolatile = 21,
  414. DecorationConstant = 22,
  415. DecorationCoherent = 23,
  416. DecorationNonWritable = 24,
  417. DecorationNonReadable = 25,
  418. DecorationUniform = 26,
  419. DecorationUniformId = 27,
  420. DecorationSaturatedConversion = 28,
  421. DecorationStream = 29,
  422. DecorationLocation = 30,
  423. DecorationComponent = 31,
  424. DecorationIndex = 32,
  425. DecorationBinding = 33,
  426. DecorationDescriptorSet = 34,
  427. DecorationOffset = 35,
  428. DecorationXfbBuffer = 36,
  429. DecorationXfbStride = 37,
  430. DecorationFuncParamAttr = 38,
  431. DecorationFPRoundingMode = 39,
  432. DecorationFPFastMathMode = 40,
  433. DecorationLinkageAttributes = 41,
  434. DecorationNoContraction = 42,
  435. DecorationInputAttachmentIndex = 43,
  436. DecorationAlignment = 44,
  437. DecorationMaxByteOffset = 45,
  438. DecorationAlignmentId = 46,
  439. DecorationMaxByteOffsetId = 47,
  440. DecorationNoSignedWrap = 4469,
  441. DecorationNoUnsignedWrap = 4470,
  442. DecorationExplicitInterpAMD = 4999,
  443. DecorationOverrideCoverageNV = 5248,
  444. DecorationPassthroughNV = 5250,
  445. DecorationViewportRelativeNV = 5252,
  446. DecorationSecondaryViewportRelativeNV = 5256,
  447. DecorationPerPrimitiveNV = 5271,
  448. DecorationPerViewNV = 5272,
  449. DecorationPerTaskNV = 5273,
  450. DecorationPerVertexNV = 5285,
  451. DecorationNonUniform = 5300,
  452. DecorationNonUniformEXT = 5300,
  453. DecorationRestrictPointer = 5355,
  454. DecorationRestrictPointerEXT = 5355,
  455. DecorationAliasedPointer = 5356,
  456. DecorationAliasedPointerEXT = 5356,
  457. DecorationReferencedIndirectlyINTEL = 5602,
  458. DecorationCounterBuffer = 5634,
  459. DecorationHlslCounterBufferGOOGLE = 5634,
  460. DecorationHlslSemanticGOOGLE = 5635,
  461. DecorationUserSemantic = 5635,
  462. DecorationUserTypeGOOGLE = 5636,
  463. DecorationRegisterINTEL = 5825,
  464. DecorationMemoryINTEL = 5826,
  465. DecorationNumbanksINTEL = 5827,
  466. DecorationBankwidthINTEL = 5828,
  467. DecorationMaxPrivateCopiesINTEL = 5829,
  468. DecorationSinglepumpINTEL = 5830,
  469. DecorationDoublepumpINTEL = 5831,
  470. DecorationMaxReplicatesINTEL = 5832,
  471. DecorationSimpleDualPortINTEL = 5833,
  472. DecorationMergeINTEL = 5834,
  473. DecorationBankBitsINTEL = 5835,
  474. DecorationForcePow2DepthINTEL = 5836,
  475. DecorationMax = 0x7fffffff,
  476. };
  477. enum BuiltIn {
  478. BuiltInPosition = 0,
  479. BuiltInPointSize = 1,
  480. BuiltInClipDistance = 3,
  481. BuiltInCullDistance = 4,
  482. BuiltInVertexId = 5,
  483. BuiltInInstanceId = 6,
  484. BuiltInPrimitiveId = 7,
  485. BuiltInInvocationId = 8,
  486. BuiltInLayer = 9,
  487. BuiltInViewportIndex = 10,
  488. BuiltInTessLevelOuter = 11,
  489. BuiltInTessLevelInner = 12,
  490. BuiltInTessCoord = 13,
  491. BuiltInPatchVertices = 14,
  492. BuiltInFragCoord = 15,
  493. BuiltInPointCoord = 16,
  494. BuiltInFrontFacing = 17,
  495. BuiltInSampleId = 18,
  496. BuiltInSamplePosition = 19,
  497. BuiltInSampleMask = 20,
  498. BuiltInFragDepth = 22,
  499. BuiltInHelperInvocation = 23,
  500. BuiltInNumWorkgroups = 24,
  501. BuiltInWorkgroupSize = 25,
  502. BuiltInWorkgroupId = 26,
  503. BuiltInLocalInvocationId = 27,
  504. BuiltInGlobalInvocationId = 28,
  505. BuiltInLocalInvocationIndex = 29,
  506. BuiltInWorkDim = 30,
  507. BuiltInGlobalSize = 31,
  508. BuiltInEnqueuedWorkgroupSize = 32,
  509. BuiltInGlobalOffset = 33,
  510. BuiltInGlobalLinearId = 34,
  511. BuiltInSubgroupSize = 36,
  512. BuiltInSubgroupMaxSize = 37,
  513. BuiltInNumSubgroups = 38,
  514. BuiltInNumEnqueuedSubgroups = 39,
  515. BuiltInSubgroupId = 40,
  516. BuiltInSubgroupLocalInvocationId = 41,
  517. BuiltInVertexIndex = 42,
  518. BuiltInInstanceIndex = 43,
  519. BuiltInSubgroupEqMask = 4416,
  520. BuiltInSubgroupEqMaskKHR = 4416,
  521. BuiltInSubgroupGeMask = 4417,
  522. BuiltInSubgroupGeMaskKHR = 4417,
  523. BuiltInSubgroupGtMask = 4418,
  524. BuiltInSubgroupGtMaskKHR = 4418,
  525. BuiltInSubgroupLeMask = 4419,
  526. BuiltInSubgroupLeMaskKHR = 4419,
  527. BuiltInSubgroupLtMask = 4420,
  528. BuiltInSubgroupLtMaskKHR = 4420,
  529. BuiltInBaseVertex = 4424,
  530. BuiltInBaseInstance = 4425,
  531. BuiltInDrawIndex = 4426,
  532. BuiltInDeviceIndex = 4438,
  533. BuiltInViewIndex = 4440,
  534. BuiltInBaryCoordNoPerspAMD = 4992,
  535. BuiltInBaryCoordNoPerspCentroidAMD = 4993,
  536. BuiltInBaryCoordNoPerspSampleAMD = 4994,
  537. BuiltInBaryCoordSmoothAMD = 4995,
  538. BuiltInBaryCoordSmoothCentroidAMD = 4996,
  539. BuiltInBaryCoordSmoothSampleAMD = 4997,
  540. BuiltInBaryCoordPullModelAMD = 4998,
  541. BuiltInFragStencilRefEXT = 5014,
  542. BuiltInViewportMaskNV = 5253,
  543. BuiltInSecondaryPositionNV = 5257,
  544. BuiltInSecondaryViewportMaskNV = 5258,
  545. BuiltInPositionPerViewNV = 5261,
  546. BuiltInViewportMaskPerViewNV = 5262,
  547. BuiltInFullyCoveredEXT = 5264,
  548. BuiltInTaskCountNV = 5274,
  549. BuiltInPrimitiveCountNV = 5275,
  550. BuiltInPrimitiveIndicesNV = 5276,
  551. BuiltInClipDistancePerViewNV = 5277,
  552. BuiltInCullDistancePerViewNV = 5278,
  553. BuiltInLayerPerViewNV = 5279,
  554. BuiltInMeshViewCountNV = 5280,
  555. BuiltInMeshViewIndicesNV = 5281,
  556. BuiltInBaryCoordNV = 5286,
  557. BuiltInBaryCoordNoPerspNV = 5287,
  558. BuiltInFragSizeEXT = 5292,
  559. BuiltInFragmentSizeNV = 5292,
  560. BuiltInFragInvocationCountEXT = 5293,
  561. BuiltInInvocationsPerPixelNV = 5293,
  562. BuiltInLaunchIdKHR = 5319,
  563. BuiltInLaunchIdNV = 5319,
  564. BuiltInLaunchSizeKHR = 5320,
  565. BuiltInLaunchSizeNV = 5320,
  566. BuiltInWorldRayOriginKHR = 5321,
  567. BuiltInWorldRayOriginNV = 5321,
  568. BuiltInWorldRayDirectionKHR = 5322,
  569. BuiltInWorldRayDirectionNV = 5322,
  570. BuiltInObjectRayOriginKHR = 5323,
  571. BuiltInObjectRayOriginNV = 5323,
  572. BuiltInObjectRayDirectionKHR = 5324,
  573. BuiltInObjectRayDirectionNV = 5324,
  574. BuiltInRayTminKHR = 5325,
  575. BuiltInRayTminNV = 5325,
  576. BuiltInRayTmaxKHR = 5326,
  577. BuiltInRayTmaxNV = 5326,
  578. BuiltInInstanceCustomIndexKHR = 5327,
  579. BuiltInInstanceCustomIndexNV = 5327,
  580. BuiltInObjectToWorldKHR = 5330,
  581. BuiltInObjectToWorldNV = 5330,
  582. BuiltInWorldToObjectKHR = 5331,
  583. BuiltInWorldToObjectNV = 5331,
  584. BuiltInHitTKHR = 5332,
  585. BuiltInHitTNV = 5332,
  586. BuiltInHitKindKHR = 5333,
  587. BuiltInHitKindNV = 5333,
  588. BuiltInIncomingRayFlagsKHR = 5351,
  589. BuiltInIncomingRayFlagsNV = 5351,
  590. BuiltInRayGeometryIndexKHR = 5352,
  591. BuiltInWarpsPerSMNV = 5374,
  592. BuiltInSMCountNV = 5375,
  593. BuiltInWarpIDNV = 5376,
  594. BuiltInSMIDNV = 5377,
  595. BuiltInMax = 0x7fffffff,
  596. };
  597. enum SelectionControlShift {
  598. SelectionControlFlattenShift = 0,
  599. SelectionControlDontFlattenShift = 1,
  600. SelectionControlMax = 0x7fffffff,
  601. };
  602. enum SelectionControlMask {
  603. SelectionControlMaskNone = 0,
  604. SelectionControlFlattenMask = 0x00000001,
  605. SelectionControlDontFlattenMask = 0x00000002,
  606. };
  607. enum LoopControlShift {
  608. LoopControlUnrollShift = 0,
  609. LoopControlDontUnrollShift = 1,
  610. LoopControlDependencyInfiniteShift = 2,
  611. LoopControlDependencyLengthShift = 3,
  612. LoopControlMinIterationsShift = 4,
  613. LoopControlMaxIterationsShift = 5,
  614. LoopControlIterationMultipleShift = 6,
  615. LoopControlPeelCountShift = 7,
  616. LoopControlPartialCountShift = 8,
  617. LoopControlInitiationIntervalINTELShift = 16,
  618. LoopControlMaxConcurrencyINTELShift = 17,
  619. LoopControlDependencyArrayINTELShift = 18,
  620. LoopControlPipelineEnableINTELShift = 19,
  621. LoopControlLoopCoalesceINTELShift = 20,
  622. LoopControlMaxInterleavingINTELShift = 21,
  623. LoopControlSpeculatedIterationsINTELShift = 22,
  624. LoopControlMax = 0x7fffffff,
  625. };
  626. enum LoopControlMask {
  627. LoopControlMaskNone = 0,
  628. LoopControlUnrollMask = 0x00000001,
  629. LoopControlDontUnrollMask = 0x00000002,
  630. LoopControlDependencyInfiniteMask = 0x00000004,
  631. LoopControlDependencyLengthMask = 0x00000008,
  632. LoopControlMinIterationsMask = 0x00000010,
  633. LoopControlMaxIterationsMask = 0x00000020,
  634. LoopControlIterationMultipleMask = 0x00000040,
  635. LoopControlPeelCountMask = 0x00000080,
  636. LoopControlPartialCountMask = 0x00000100,
  637. LoopControlInitiationIntervalINTELMask = 0x00010000,
  638. LoopControlMaxConcurrencyINTELMask = 0x00020000,
  639. LoopControlDependencyArrayINTELMask = 0x00040000,
  640. LoopControlPipelineEnableINTELMask = 0x00080000,
  641. LoopControlLoopCoalesceINTELMask = 0x00100000,
  642. LoopControlMaxInterleavingINTELMask = 0x00200000,
  643. LoopControlSpeculatedIterationsINTELMask = 0x00400000,
  644. };
  645. enum FunctionControlShift {
  646. FunctionControlInlineShift = 0,
  647. FunctionControlDontInlineShift = 1,
  648. FunctionControlPureShift = 2,
  649. FunctionControlConstShift = 3,
  650. FunctionControlMax = 0x7fffffff,
  651. };
  652. enum FunctionControlMask {
  653. FunctionControlMaskNone = 0,
  654. FunctionControlInlineMask = 0x00000001,
  655. FunctionControlDontInlineMask = 0x00000002,
  656. FunctionControlPureMask = 0x00000004,
  657. FunctionControlConstMask = 0x00000008,
  658. };
  659. enum MemorySemanticsShift {
  660. MemorySemanticsAcquireShift = 1,
  661. MemorySemanticsReleaseShift = 2,
  662. MemorySemanticsAcquireReleaseShift = 3,
  663. MemorySemanticsSequentiallyConsistentShift = 4,
  664. MemorySemanticsUniformMemoryShift = 6,
  665. MemorySemanticsSubgroupMemoryShift = 7,
  666. MemorySemanticsWorkgroupMemoryShift = 8,
  667. MemorySemanticsCrossWorkgroupMemoryShift = 9,
  668. MemorySemanticsAtomicCounterMemoryShift = 10,
  669. MemorySemanticsImageMemoryShift = 11,
  670. MemorySemanticsOutputMemoryShift = 12,
  671. MemorySemanticsOutputMemoryKHRShift = 12,
  672. MemorySemanticsMakeAvailableShift = 13,
  673. MemorySemanticsMakeAvailableKHRShift = 13,
  674. MemorySemanticsMakeVisibleShift = 14,
  675. MemorySemanticsMakeVisibleKHRShift = 14,
  676. MemorySemanticsVolatileShift = 15,
  677. MemorySemanticsMax = 0x7fffffff,
  678. };
  679. enum MemorySemanticsMask {
  680. MemorySemanticsMaskNone = 0,
  681. MemorySemanticsAcquireMask = 0x00000002,
  682. MemorySemanticsReleaseMask = 0x00000004,
  683. MemorySemanticsAcquireReleaseMask = 0x00000008,
  684. MemorySemanticsSequentiallyConsistentMask = 0x00000010,
  685. MemorySemanticsUniformMemoryMask = 0x00000040,
  686. MemorySemanticsSubgroupMemoryMask = 0x00000080,
  687. MemorySemanticsWorkgroupMemoryMask = 0x00000100,
  688. MemorySemanticsCrossWorkgroupMemoryMask = 0x00000200,
  689. MemorySemanticsAtomicCounterMemoryMask = 0x00000400,
  690. MemorySemanticsImageMemoryMask = 0x00000800,
  691. MemorySemanticsOutputMemoryMask = 0x00001000,
  692. MemorySemanticsOutputMemoryKHRMask = 0x00001000,
  693. MemorySemanticsMakeAvailableMask = 0x00002000,
  694. MemorySemanticsMakeAvailableKHRMask = 0x00002000,
  695. MemorySemanticsMakeVisibleMask = 0x00004000,
  696. MemorySemanticsMakeVisibleKHRMask = 0x00004000,
  697. MemorySemanticsVolatileMask = 0x00008000,
  698. };
  699. enum MemoryAccessShift {
  700. MemoryAccessVolatileShift = 0,
  701. MemoryAccessAlignedShift = 1,
  702. MemoryAccessNontemporalShift = 2,
  703. MemoryAccessMakePointerAvailableShift = 3,
  704. MemoryAccessMakePointerAvailableKHRShift = 3,
  705. MemoryAccessMakePointerVisibleShift = 4,
  706. MemoryAccessMakePointerVisibleKHRShift = 4,
  707. MemoryAccessNonPrivatePointerShift = 5,
  708. MemoryAccessNonPrivatePointerKHRShift = 5,
  709. MemoryAccessMax = 0x7fffffff,
  710. };
  711. enum MemoryAccessMask {
  712. MemoryAccessMaskNone = 0,
  713. MemoryAccessVolatileMask = 0x00000001,
  714. MemoryAccessAlignedMask = 0x00000002,
  715. MemoryAccessNontemporalMask = 0x00000004,
  716. MemoryAccessMakePointerAvailableMask = 0x00000008,
  717. MemoryAccessMakePointerAvailableKHRMask = 0x00000008,
  718. MemoryAccessMakePointerVisibleMask = 0x00000010,
  719. MemoryAccessMakePointerVisibleKHRMask = 0x00000010,
  720. MemoryAccessNonPrivatePointerMask = 0x00000020,
  721. MemoryAccessNonPrivatePointerKHRMask = 0x00000020,
  722. };
  723. enum Scope {
  724. ScopeCrossDevice = 0,
  725. ScopeDevice = 1,
  726. ScopeWorkgroup = 2,
  727. ScopeSubgroup = 3,
  728. ScopeInvocation = 4,
  729. ScopeQueueFamily = 5,
  730. ScopeQueueFamilyKHR = 5,
  731. ScopeShaderCallKHR = 6,
  732. ScopeMax = 0x7fffffff,
  733. };
  734. enum GroupOperation {
  735. GroupOperationReduce = 0,
  736. GroupOperationInclusiveScan = 1,
  737. GroupOperationExclusiveScan = 2,
  738. GroupOperationClusteredReduce = 3,
  739. GroupOperationPartitionedReduceNV = 6,
  740. GroupOperationPartitionedInclusiveScanNV = 7,
  741. GroupOperationPartitionedExclusiveScanNV = 8,
  742. GroupOperationMax = 0x7fffffff,
  743. };
  744. enum KernelEnqueueFlags {
  745. KernelEnqueueFlagsNoWait = 0,
  746. KernelEnqueueFlagsWaitKernel = 1,
  747. KernelEnqueueFlagsWaitWorkGroup = 2,
  748. KernelEnqueueFlagsMax = 0x7fffffff,
  749. };
  750. enum KernelProfilingInfoShift {
  751. KernelProfilingInfoCmdExecTimeShift = 0,
  752. KernelProfilingInfoMax = 0x7fffffff,
  753. };
  754. enum KernelProfilingInfoMask {
  755. KernelProfilingInfoMaskNone = 0,
  756. KernelProfilingInfoCmdExecTimeMask = 0x00000001,
  757. };
  758. enum Capability {
  759. CapabilityMatrix = 0,
  760. CapabilityShader = 1,
  761. CapabilityGeometry = 2,
  762. CapabilityTessellation = 3,
  763. CapabilityAddresses = 4,
  764. CapabilityLinkage = 5,
  765. CapabilityKernel = 6,
  766. CapabilityVector16 = 7,
  767. CapabilityFloat16Buffer = 8,
  768. CapabilityFloat16 = 9,
  769. CapabilityFloat64 = 10,
  770. CapabilityInt64 = 11,
  771. CapabilityInt64Atomics = 12,
  772. CapabilityImageBasic = 13,
  773. CapabilityImageReadWrite = 14,
  774. CapabilityImageMipmap = 15,
  775. CapabilityPipes = 17,
  776. CapabilityGroups = 18,
  777. CapabilityDeviceEnqueue = 19,
  778. CapabilityLiteralSampler = 20,
  779. CapabilityAtomicStorage = 21,
  780. CapabilityInt16 = 22,
  781. CapabilityTessellationPointSize = 23,
  782. CapabilityGeometryPointSize = 24,
  783. CapabilityImageGatherExtended = 25,
  784. CapabilityStorageImageMultisample = 27,
  785. CapabilityUniformBufferArrayDynamicIndexing = 28,
  786. CapabilitySampledImageArrayDynamicIndexing = 29,
  787. CapabilityStorageBufferArrayDynamicIndexing = 30,
  788. CapabilityStorageImageArrayDynamicIndexing = 31,
  789. CapabilityClipDistance = 32,
  790. CapabilityCullDistance = 33,
  791. CapabilityImageCubeArray = 34,
  792. CapabilitySampleRateShading = 35,
  793. CapabilityImageRect = 36,
  794. CapabilitySampledRect = 37,
  795. CapabilityGenericPointer = 38,
  796. CapabilityInt8 = 39,
  797. CapabilityInputAttachment = 40,
  798. CapabilitySparseResidency = 41,
  799. CapabilityMinLod = 42,
  800. CapabilitySampled1D = 43,
  801. CapabilityImage1D = 44,
  802. CapabilitySampledCubeArray = 45,
  803. CapabilitySampledBuffer = 46,
  804. CapabilityImageBuffer = 47,
  805. CapabilityImageMSArray = 48,
  806. CapabilityStorageImageExtendedFormats = 49,
  807. CapabilityImageQuery = 50,
  808. CapabilityDerivativeControl = 51,
  809. CapabilityInterpolationFunction = 52,
  810. CapabilityTransformFeedback = 53,
  811. CapabilityGeometryStreams = 54,
  812. CapabilityStorageImageReadWithoutFormat = 55,
  813. CapabilityStorageImageWriteWithoutFormat = 56,
  814. CapabilityMultiViewport = 57,
  815. CapabilitySubgroupDispatch = 58,
  816. CapabilityNamedBarrier = 59,
  817. CapabilityPipeStorage = 60,
  818. CapabilityGroupNonUniform = 61,
  819. CapabilityGroupNonUniformVote = 62,
  820. CapabilityGroupNonUniformArithmetic = 63,
  821. CapabilityGroupNonUniformBallot = 64,
  822. CapabilityGroupNonUniformShuffle = 65,
  823. CapabilityGroupNonUniformShuffleRelative = 66,
  824. CapabilityGroupNonUniformClustered = 67,
  825. CapabilityGroupNonUniformQuad = 68,
  826. CapabilityShaderLayer = 69,
  827. CapabilityShaderViewportIndex = 70,
  828. CapabilitySubgroupBallotKHR = 4423,
  829. CapabilityDrawParameters = 4427,
  830. CapabilitySubgroupVoteKHR = 4431,
  831. CapabilityStorageBuffer16BitAccess = 4433,
  832. CapabilityStorageUniformBufferBlock16 = 4433,
  833. CapabilityStorageUniform16 = 4434,
  834. CapabilityUniformAndStorageBuffer16BitAccess = 4434,
  835. CapabilityStoragePushConstant16 = 4435,
  836. CapabilityStorageInputOutput16 = 4436,
  837. CapabilityDeviceGroup = 4437,
  838. CapabilityMultiView = 4439,
  839. CapabilityVariablePointersStorageBuffer = 4441,
  840. CapabilityVariablePointers = 4442,
  841. CapabilityAtomicStorageOps = 4445,
  842. CapabilitySampleMaskPostDepthCoverage = 4447,
  843. CapabilityStorageBuffer8BitAccess = 4448,
  844. CapabilityUniformAndStorageBuffer8BitAccess = 4449,
  845. CapabilityStoragePushConstant8 = 4450,
  846. CapabilityDenormPreserve = 4464,
  847. CapabilityDenormFlushToZero = 4465,
  848. CapabilitySignedZeroInfNanPreserve = 4466,
  849. CapabilityRoundingModeRTE = 4467,
  850. CapabilityRoundingModeRTZ = 4468,
  851. CapabilityRayQueryProvisionalKHR = 4471,
  852. CapabilityRayTraversalPrimitiveCullingProvisionalKHR = 4478,
  853. CapabilityFloat16ImageAMD = 5008,
  854. CapabilityImageGatherBiasLodAMD = 5009,
  855. CapabilityFragmentMaskAMD = 5010,
  856. CapabilityStencilExportEXT = 5013,
  857. CapabilityImageReadWriteLodAMD = 5015,
  858. CapabilityShaderClockKHR = 5055,
  859. CapabilitySampleMaskOverrideCoverageNV = 5249,
  860. CapabilityGeometryShaderPassthroughNV = 5251,
  861. CapabilityShaderViewportIndexLayerEXT = 5254,
  862. CapabilityShaderViewportIndexLayerNV = 5254,
  863. CapabilityShaderViewportMaskNV = 5255,
  864. CapabilityShaderStereoViewNV = 5259,
  865. CapabilityPerViewAttributesNV = 5260,
  866. CapabilityFragmentFullyCoveredEXT = 5265,
  867. CapabilityMeshShadingNV = 5266,
  868. CapabilityImageFootprintNV = 5282,
  869. CapabilityFragmentBarycentricNV = 5284,
  870. CapabilityComputeDerivativeGroupQuadsNV = 5288,
  871. CapabilityFragmentDensityEXT = 5291,
  872. CapabilityShadingRateNV = 5291,
  873. CapabilityGroupNonUniformPartitionedNV = 5297,
  874. CapabilityShaderNonUniform = 5301,
  875. CapabilityShaderNonUniformEXT = 5301,
  876. CapabilityRuntimeDescriptorArray = 5302,
  877. CapabilityRuntimeDescriptorArrayEXT = 5302,
  878. CapabilityInputAttachmentArrayDynamicIndexing = 5303,
  879. CapabilityInputAttachmentArrayDynamicIndexingEXT = 5303,
  880. CapabilityUniformTexelBufferArrayDynamicIndexing = 5304,
  881. CapabilityUniformTexelBufferArrayDynamicIndexingEXT = 5304,
  882. CapabilityStorageTexelBufferArrayDynamicIndexing = 5305,
  883. CapabilityStorageTexelBufferArrayDynamicIndexingEXT = 5305,
  884. CapabilityUniformBufferArrayNonUniformIndexing = 5306,
  885. CapabilityUniformBufferArrayNonUniformIndexingEXT = 5306,
  886. CapabilitySampledImageArrayNonUniformIndexing = 5307,
  887. CapabilitySampledImageArrayNonUniformIndexingEXT = 5307,
  888. CapabilityStorageBufferArrayNonUniformIndexing = 5308,
  889. CapabilityStorageBufferArrayNonUniformIndexingEXT = 5308,
  890. CapabilityStorageImageArrayNonUniformIndexing = 5309,
  891. CapabilityStorageImageArrayNonUniformIndexingEXT = 5309,
  892. CapabilityInputAttachmentArrayNonUniformIndexing = 5310,
  893. CapabilityInputAttachmentArrayNonUniformIndexingEXT = 5310,
  894. CapabilityUniformTexelBufferArrayNonUniformIndexing = 5311,
  895. CapabilityUniformTexelBufferArrayNonUniformIndexingEXT = 5311,
  896. CapabilityStorageTexelBufferArrayNonUniformIndexing = 5312,
  897. CapabilityStorageTexelBufferArrayNonUniformIndexingEXT = 5312,
  898. CapabilityRayTracingNV = 5340,
  899. CapabilityVulkanMemoryModel = 5345,
  900. CapabilityVulkanMemoryModelKHR = 5345,
  901. CapabilityVulkanMemoryModelDeviceScope = 5346,
  902. CapabilityVulkanMemoryModelDeviceScopeKHR = 5346,
  903. CapabilityPhysicalStorageBufferAddresses = 5347,
  904. CapabilityPhysicalStorageBufferAddressesEXT = 5347,
  905. CapabilityComputeDerivativeGroupLinearNV = 5350,
  906. CapabilityRayTracingProvisionalKHR = 5353,
  907. CapabilityCooperativeMatrixNV = 5357,
  908. CapabilityFragmentShaderSampleInterlockEXT = 5363,
  909. CapabilityFragmentShaderShadingRateInterlockEXT = 5372,
  910. CapabilityShaderSMBuiltinsNV = 5373,
  911. CapabilityFragmentShaderPixelInterlockEXT = 5378,
  912. CapabilityDemoteToHelperInvocationEXT = 5379,
  913. CapabilitySubgroupShuffleINTEL = 5568,
  914. CapabilitySubgroupBufferBlockIOINTEL = 5569,
  915. CapabilitySubgroupImageBlockIOINTEL = 5570,
  916. CapabilitySubgroupImageMediaBlockIOINTEL = 5579,
  917. CapabilityIntegerFunctions2INTEL = 5584,
  918. CapabilityFunctionPointersINTEL = 5603,
  919. CapabilityIndirectReferencesINTEL = 5604,
  920. CapabilitySubgroupAvcMotionEstimationINTEL = 5696,
  921. CapabilitySubgroupAvcMotionEstimationIntraINTEL = 5697,
  922. CapabilitySubgroupAvcMotionEstimationChromaINTEL = 5698,
  923. CapabilityFPGAMemoryAttributesINTEL = 5824,
  924. CapabilityUnstructuredLoopControlsINTEL = 5886,
  925. CapabilityFPGALoopControlsINTEL = 5888,
  926. CapabilityKernelAttributesINTEL = 5892,
  927. CapabilityFPGAKernelAttributesINTEL = 5897,
  928. CapabilityBlockingPipesINTEL = 5945,
  929. CapabilityFPGARegINTEL = 5948,
  930. CapabilityAtomicFloat32AddEXT = 6033,
  931. CapabilityAtomicFloat64AddEXT = 6034,
  932. CapabilityMax = 0x7fffffff,
  933. };
  934. enum RayFlagsShift {
  935. RayFlagsOpaqueKHRShift = 0,
  936. RayFlagsNoOpaqueKHRShift = 1,
  937. RayFlagsTerminateOnFirstHitKHRShift = 2,
  938. RayFlagsSkipClosestHitShaderKHRShift = 3,
  939. RayFlagsCullBackFacingTrianglesKHRShift = 4,
  940. RayFlagsCullFrontFacingTrianglesKHRShift = 5,
  941. RayFlagsCullOpaqueKHRShift = 6,
  942. RayFlagsCullNoOpaqueKHRShift = 7,
  943. RayFlagsSkipTrianglesKHRShift = 8,
  944. RayFlagsSkipAABBsKHRShift = 9,
  945. RayFlagsMax = 0x7fffffff,
  946. };
  947. enum RayFlagsMask {
  948. RayFlagsMaskNone = 0,
  949. RayFlagsOpaqueKHRMask = 0x00000001,
  950. RayFlagsNoOpaqueKHRMask = 0x00000002,
  951. RayFlagsTerminateOnFirstHitKHRMask = 0x00000004,
  952. RayFlagsSkipClosestHitShaderKHRMask = 0x00000008,
  953. RayFlagsCullBackFacingTrianglesKHRMask = 0x00000010,
  954. RayFlagsCullFrontFacingTrianglesKHRMask = 0x00000020,
  955. RayFlagsCullOpaqueKHRMask = 0x00000040,
  956. RayFlagsCullNoOpaqueKHRMask = 0x00000080,
  957. RayFlagsSkipTrianglesKHRMask = 0x00000100,
  958. RayFlagsSkipAABBsKHRMask = 0x00000200,
  959. };
  960. enum RayQueryIntersection {
  961. RayQueryIntersectionRayQueryCandidateIntersectionKHR = 0,
  962. RayQueryIntersectionRayQueryCommittedIntersectionKHR = 1,
  963. RayQueryIntersectionMax = 0x7fffffff,
  964. };
  965. enum RayQueryCommittedIntersectionType {
  966. RayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionNoneKHR = 0,
  967. RayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionTriangleKHR = 1,
  968. RayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionGeneratedKHR = 2,
  969. RayQueryCommittedIntersectionTypeMax = 0x7fffffff,
  970. };
  971. enum RayQueryCandidateIntersectionType {
  972. RayQueryCandidateIntersectionTypeRayQueryCandidateIntersectionTriangleKHR = 0,
  973. RayQueryCandidateIntersectionTypeRayQueryCandidateIntersectionAABBKHR = 1,
  974. RayQueryCandidateIntersectionTypeMax = 0x7fffffff,
  975. };
  976. enum Op {
  977. OpNop = 0,
  978. OpUndef = 1,
  979. OpSourceContinued = 2,
  980. OpSource = 3,
  981. OpSourceExtension = 4,
  982. OpName = 5,
  983. OpMemberName = 6,
  984. OpString = 7,
  985. OpLine = 8,
  986. OpExtension = 10,
  987. OpExtInstImport = 11,
  988. OpExtInst = 12,
  989. OpMemoryModel = 14,
  990. OpEntryPoint = 15,
  991. OpExecutionMode = 16,
  992. OpCapability = 17,
  993. OpTypeVoid = 19,
  994. OpTypeBool = 20,
  995. OpTypeInt = 21,
  996. OpTypeFloat = 22,
  997. OpTypeVector = 23,
  998. OpTypeMatrix = 24,
  999. OpTypeImage = 25,
  1000. OpTypeSampler = 26,
  1001. OpTypeSampledImage = 27,
  1002. OpTypeArray = 28,
  1003. OpTypeRuntimeArray = 29,
  1004. OpTypeStruct = 30,
  1005. OpTypeOpaque = 31,
  1006. OpTypePointer = 32,
  1007. OpTypeFunction = 33,
  1008. OpTypeEvent = 34,
  1009. OpTypeDeviceEvent = 35,
  1010. OpTypeReserveId = 36,
  1011. OpTypeQueue = 37,
  1012. OpTypePipe = 38,
  1013. OpTypeForwardPointer = 39,
  1014. OpConstantTrue = 41,
  1015. OpConstantFalse = 42,
  1016. OpConstant = 43,
  1017. OpConstantComposite = 44,
  1018. OpConstantSampler = 45,
  1019. OpConstantNull = 46,
  1020. OpSpecConstantTrue = 48,
  1021. OpSpecConstantFalse = 49,
  1022. OpSpecConstant = 50,
  1023. OpSpecConstantComposite = 51,
  1024. OpSpecConstantOp = 52,
  1025. OpFunction = 54,
  1026. OpFunctionParameter = 55,
  1027. OpFunctionEnd = 56,
  1028. OpFunctionCall = 57,
  1029. OpVariable = 59,
  1030. OpImageTexelPointer = 60,
  1031. OpLoad = 61,
  1032. OpStore = 62,
  1033. OpCopyMemory = 63,
  1034. OpCopyMemorySized = 64,
  1035. OpAccessChain = 65,
  1036. OpInBoundsAccessChain = 66,
  1037. OpPtrAccessChain = 67,
  1038. OpArrayLength = 68,
  1039. OpGenericPtrMemSemantics = 69,
  1040. OpInBoundsPtrAccessChain = 70,
  1041. OpDecorate = 71,
  1042. OpMemberDecorate = 72,
  1043. OpDecorationGroup = 73,
  1044. OpGroupDecorate = 74,
  1045. OpGroupMemberDecorate = 75,
  1046. OpVectorExtractDynamic = 77,
  1047. OpVectorInsertDynamic = 78,
  1048. OpVectorShuffle = 79,
  1049. OpCompositeConstruct = 80,
  1050. OpCompositeExtract = 81,
  1051. OpCompositeInsert = 82,
  1052. OpCopyObject = 83,
  1053. OpTranspose = 84,
  1054. OpSampledImage = 86,
  1055. OpImageSampleImplicitLod = 87,
  1056. OpImageSampleExplicitLod = 88,
  1057. OpImageSampleDrefImplicitLod = 89,
  1058. OpImageSampleDrefExplicitLod = 90,
  1059. OpImageSampleProjImplicitLod = 91,
  1060. OpImageSampleProjExplicitLod = 92,
  1061. OpImageSampleProjDrefImplicitLod = 93,
  1062. OpImageSampleProjDrefExplicitLod = 94,
  1063. OpImageFetch = 95,
  1064. OpImageGather = 96,
  1065. OpImageDrefGather = 97,
  1066. OpImageRead = 98,
  1067. OpImageWrite = 99,
  1068. OpImage = 100,
  1069. OpImageQueryFormat = 101,
  1070. OpImageQueryOrder = 102,
  1071. OpImageQuerySizeLod = 103,
  1072. OpImageQuerySize = 104,
  1073. OpImageQueryLod = 105,
  1074. OpImageQueryLevels = 106,
  1075. OpImageQuerySamples = 107,
  1076. OpConvertFToU = 109,
  1077. OpConvertFToS = 110,
  1078. OpConvertSToF = 111,
  1079. OpConvertUToF = 112,
  1080. OpUConvert = 113,
  1081. OpSConvert = 114,
  1082. OpFConvert = 115,
  1083. OpQuantizeToF16 = 116,
  1084. OpConvertPtrToU = 117,
  1085. OpSatConvertSToU = 118,
  1086. OpSatConvertUToS = 119,
  1087. OpConvertUToPtr = 120,
  1088. OpPtrCastToGeneric = 121,
  1089. OpGenericCastToPtr = 122,
  1090. OpGenericCastToPtrExplicit = 123,
  1091. OpBitcast = 124,
  1092. OpSNegate = 126,
  1093. OpFNegate = 127,
  1094. OpIAdd = 128,
  1095. OpFAdd = 129,
  1096. OpISub = 130,
  1097. OpFSub = 131,
  1098. OpIMul = 132,
  1099. OpFMul = 133,
  1100. OpUDiv = 134,
  1101. OpSDiv = 135,
  1102. OpFDiv = 136,
  1103. OpUMod = 137,
  1104. OpSRem = 138,
  1105. OpSMod = 139,
  1106. OpFRem = 140,
  1107. OpFMod = 141,
  1108. OpVectorTimesScalar = 142,
  1109. OpMatrixTimesScalar = 143,
  1110. OpVectorTimesMatrix = 144,
  1111. OpMatrixTimesVector = 145,
  1112. OpMatrixTimesMatrix = 146,
  1113. OpOuterProduct = 147,
  1114. OpDot = 148,
  1115. OpIAddCarry = 149,
  1116. OpISubBorrow = 150,
  1117. OpUMulExtended = 151,
  1118. OpSMulExtended = 152,
  1119. OpAny = 154,
  1120. OpAll = 155,
  1121. OpIsNan = 156,
  1122. OpIsInf = 157,
  1123. OpIsFinite = 158,
  1124. OpIsNormal = 159,
  1125. OpSignBitSet = 160,
  1126. OpLessOrGreater = 161,
  1127. OpOrdered = 162,
  1128. OpUnordered = 163,
  1129. OpLogicalEqual = 164,
  1130. OpLogicalNotEqual = 165,
  1131. OpLogicalOr = 166,
  1132. OpLogicalAnd = 167,
  1133. OpLogicalNot = 168,
  1134. OpSelect = 169,
  1135. OpIEqual = 170,
  1136. OpINotEqual = 171,
  1137. OpUGreaterThan = 172,
  1138. OpSGreaterThan = 173,
  1139. OpUGreaterThanEqual = 174,
  1140. OpSGreaterThanEqual = 175,
  1141. OpULessThan = 176,
  1142. OpSLessThan = 177,
  1143. OpULessThanEqual = 178,
  1144. OpSLessThanEqual = 179,
  1145. OpFOrdEqual = 180,
  1146. OpFUnordEqual = 181,
  1147. OpFOrdNotEqual = 182,
  1148. OpFUnordNotEqual = 183,
  1149. OpFOrdLessThan = 184,
  1150. OpFUnordLessThan = 185,
  1151. OpFOrdGreaterThan = 186,
  1152. OpFUnordGreaterThan = 187,
  1153. OpFOrdLessThanEqual = 188,
  1154. OpFUnordLessThanEqual = 189,
  1155. OpFOrdGreaterThanEqual = 190,
  1156. OpFUnordGreaterThanEqual = 191,
  1157. OpShiftRightLogical = 194,
  1158. OpShiftRightArithmetic = 195,
  1159. OpShiftLeftLogical = 196,
  1160. OpBitwiseOr = 197,
  1161. OpBitwiseXor = 198,
  1162. OpBitwiseAnd = 199,
  1163. OpNot = 200,
  1164. OpBitFieldInsert = 201,
  1165. OpBitFieldSExtract = 202,
  1166. OpBitFieldUExtract = 203,
  1167. OpBitReverse = 204,
  1168. OpBitCount = 205,
  1169. OpDPdx = 207,
  1170. OpDPdy = 208,
  1171. OpFwidth = 209,
  1172. OpDPdxFine = 210,
  1173. OpDPdyFine = 211,
  1174. OpFwidthFine = 212,
  1175. OpDPdxCoarse = 213,
  1176. OpDPdyCoarse = 214,
  1177. OpFwidthCoarse = 215,
  1178. OpEmitVertex = 218,
  1179. OpEndPrimitive = 219,
  1180. OpEmitStreamVertex = 220,
  1181. OpEndStreamPrimitive = 221,
  1182. OpControlBarrier = 224,
  1183. OpMemoryBarrier = 225,
  1184. OpAtomicLoad = 227,
  1185. OpAtomicStore = 228,
  1186. OpAtomicExchange = 229,
  1187. OpAtomicCompareExchange = 230,
  1188. OpAtomicCompareExchangeWeak = 231,
  1189. OpAtomicIIncrement = 232,
  1190. OpAtomicIDecrement = 233,
  1191. OpAtomicIAdd = 234,
  1192. OpAtomicISub = 235,
  1193. OpAtomicSMin = 236,
  1194. OpAtomicUMin = 237,
  1195. OpAtomicSMax = 238,
  1196. OpAtomicUMax = 239,
  1197. OpAtomicAnd = 240,
  1198. OpAtomicOr = 241,
  1199. OpAtomicXor = 242,
  1200. OpPhi = 245,
  1201. OpLoopMerge = 246,
  1202. OpSelectionMerge = 247,
  1203. OpLabel = 248,
  1204. OpBranch = 249,
  1205. OpBranchConditional = 250,
  1206. OpSwitch = 251,
  1207. OpKill = 252,
  1208. OpReturn = 253,
  1209. OpReturnValue = 254,
  1210. OpUnreachable = 255,
  1211. OpLifetimeStart = 256,
  1212. OpLifetimeStop = 257,
  1213. OpGroupAsyncCopy = 259,
  1214. OpGroupWaitEvents = 260,
  1215. OpGroupAll = 261,
  1216. OpGroupAny = 262,
  1217. OpGroupBroadcast = 263,
  1218. OpGroupIAdd = 264,
  1219. OpGroupFAdd = 265,
  1220. OpGroupFMin = 266,
  1221. OpGroupUMin = 267,
  1222. OpGroupSMin = 268,
  1223. OpGroupFMax = 269,
  1224. OpGroupUMax = 270,
  1225. OpGroupSMax = 271,
  1226. OpReadPipe = 274,
  1227. OpWritePipe = 275,
  1228. OpReservedReadPipe = 276,
  1229. OpReservedWritePipe = 277,
  1230. OpReserveReadPipePackets = 278,
  1231. OpReserveWritePipePackets = 279,
  1232. OpCommitReadPipe = 280,
  1233. OpCommitWritePipe = 281,
  1234. OpIsValidReserveId = 282,
  1235. OpGetNumPipePackets = 283,
  1236. OpGetMaxPipePackets = 284,
  1237. OpGroupReserveReadPipePackets = 285,
  1238. OpGroupReserveWritePipePackets = 286,
  1239. OpGroupCommitReadPipe = 287,
  1240. OpGroupCommitWritePipe = 288,
  1241. OpEnqueueMarker = 291,
  1242. OpEnqueueKernel = 292,
  1243. OpGetKernelNDrangeSubGroupCount = 293,
  1244. OpGetKernelNDrangeMaxSubGroupSize = 294,
  1245. OpGetKernelWorkGroupSize = 295,
  1246. OpGetKernelPreferredWorkGroupSizeMultiple = 296,
  1247. OpRetainEvent = 297,
  1248. OpReleaseEvent = 298,
  1249. OpCreateUserEvent = 299,
  1250. OpIsValidEvent = 300,
  1251. OpSetUserEventStatus = 301,
  1252. OpCaptureEventProfilingInfo = 302,
  1253. OpGetDefaultQueue = 303,
  1254. OpBuildNDRange = 304,
  1255. OpImageSparseSampleImplicitLod = 305,
  1256. OpImageSparseSampleExplicitLod = 306,
  1257. OpImageSparseSampleDrefImplicitLod = 307,
  1258. OpImageSparseSampleDrefExplicitLod = 308,
  1259. OpImageSparseSampleProjImplicitLod = 309,
  1260. OpImageSparseSampleProjExplicitLod = 310,
  1261. OpImageSparseSampleProjDrefImplicitLod = 311,
  1262. OpImageSparseSampleProjDrefExplicitLod = 312,
  1263. OpImageSparseFetch = 313,
  1264. OpImageSparseGather = 314,
  1265. OpImageSparseDrefGather = 315,
  1266. OpImageSparseTexelsResident = 316,
  1267. OpNoLine = 317,
  1268. OpAtomicFlagTestAndSet = 318,
  1269. OpAtomicFlagClear = 319,
  1270. OpImageSparseRead = 320,
  1271. OpSizeOf = 321,
  1272. OpTypePipeStorage = 322,
  1273. OpConstantPipeStorage = 323,
  1274. OpCreatePipeFromPipeStorage = 324,
  1275. OpGetKernelLocalSizeForSubgroupCount = 325,
  1276. OpGetKernelMaxNumSubgroups = 326,
  1277. OpTypeNamedBarrier = 327,
  1278. OpNamedBarrierInitialize = 328,
  1279. OpMemoryNamedBarrier = 329,
  1280. OpModuleProcessed = 330,
  1281. OpExecutionModeId = 331,
  1282. OpDecorateId = 332,
  1283. OpGroupNonUniformElect = 333,
  1284. OpGroupNonUniformAll = 334,
  1285. OpGroupNonUniformAny = 335,
  1286. OpGroupNonUniformAllEqual = 336,
  1287. OpGroupNonUniformBroadcast = 337,
  1288. OpGroupNonUniformBroadcastFirst = 338,
  1289. OpGroupNonUniformBallot = 339,
  1290. OpGroupNonUniformInverseBallot = 340,
  1291. OpGroupNonUniformBallotBitExtract = 341,
  1292. OpGroupNonUniformBallotBitCount = 342,
  1293. OpGroupNonUniformBallotFindLSB = 343,
  1294. OpGroupNonUniformBallotFindMSB = 344,
  1295. OpGroupNonUniformShuffle = 345,
  1296. OpGroupNonUniformShuffleXor = 346,
  1297. OpGroupNonUniformShuffleUp = 347,
  1298. OpGroupNonUniformShuffleDown = 348,
  1299. OpGroupNonUniformIAdd = 349,
  1300. OpGroupNonUniformFAdd = 350,
  1301. OpGroupNonUniformIMul = 351,
  1302. OpGroupNonUniformFMul = 352,
  1303. OpGroupNonUniformSMin = 353,
  1304. OpGroupNonUniformUMin = 354,
  1305. OpGroupNonUniformFMin = 355,
  1306. OpGroupNonUniformSMax = 356,
  1307. OpGroupNonUniformUMax = 357,
  1308. OpGroupNonUniformFMax = 358,
  1309. OpGroupNonUniformBitwiseAnd = 359,
  1310. OpGroupNonUniformBitwiseOr = 360,
  1311. OpGroupNonUniformBitwiseXor = 361,
  1312. OpGroupNonUniformLogicalAnd = 362,
  1313. OpGroupNonUniformLogicalOr = 363,
  1314. OpGroupNonUniformLogicalXor = 364,
  1315. OpGroupNonUniformQuadBroadcast = 365,
  1316. OpGroupNonUniformQuadSwap = 366,
  1317. OpCopyLogical = 400,
  1318. OpPtrEqual = 401,
  1319. OpPtrNotEqual = 402,
  1320. OpPtrDiff = 403,
  1321. OpSubgroupBallotKHR = 4421,
  1322. OpSubgroupFirstInvocationKHR = 4422,
  1323. OpSubgroupAllKHR = 4428,
  1324. OpSubgroupAnyKHR = 4429,
  1325. OpSubgroupAllEqualKHR = 4430,
  1326. OpSubgroupReadInvocationKHR = 4432,
  1327. OpTypeRayQueryProvisionalKHR = 4472,
  1328. OpRayQueryInitializeKHR = 4473,
  1329. OpRayQueryTerminateKHR = 4474,
  1330. OpRayQueryGenerateIntersectionKHR = 4475,
  1331. OpRayQueryConfirmIntersectionKHR = 4476,
  1332. OpRayQueryProceedKHR = 4477,
  1333. OpRayQueryGetIntersectionTypeKHR = 4479,
  1334. OpGroupIAddNonUniformAMD = 5000,
  1335. OpGroupFAddNonUniformAMD = 5001,
  1336. OpGroupFMinNonUniformAMD = 5002,
  1337. OpGroupUMinNonUniformAMD = 5003,
  1338. OpGroupSMinNonUniformAMD = 5004,
  1339. OpGroupFMaxNonUniformAMD = 5005,
  1340. OpGroupUMaxNonUniformAMD = 5006,
  1341. OpGroupSMaxNonUniformAMD = 5007,
  1342. OpFragmentMaskFetchAMD = 5011,
  1343. OpFragmentFetchAMD = 5012,
  1344. OpReadClockKHR = 5056,
  1345. OpImageSampleFootprintNV = 5283,
  1346. OpGroupNonUniformPartitionNV = 5296,
  1347. OpWritePackedPrimitiveIndices4x8NV = 5299,
  1348. OpReportIntersectionKHR = 5334,
  1349. OpReportIntersectionNV = 5334,
  1350. OpIgnoreIntersectionKHR = 5335,
  1351. OpIgnoreIntersectionNV = 5335,
  1352. OpTerminateRayKHR = 5336,
  1353. OpTerminateRayNV = 5336,
  1354. OpTraceNV = 5337,
  1355. OpTraceRayKHR = 5337,
  1356. OpTypeAccelerationStructureKHR = 5341,
  1357. OpTypeAccelerationStructureNV = 5341,
  1358. OpExecuteCallableKHR = 5344,
  1359. OpExecuteCallableNV = 5344,
  1360. OpTypeCooperativeMatrixNV = 5358,
  1361. OpCooperativeMatrixLoadNV = 5359,
  1362. OpCooperativeMatrixStoreNV = 5360,
  1363. OpCooperativeMatrixMulAddNV = 5361,
  1364. OpCooperativeMatrixLengthNV = 5362,
  1365. OpBeginInvocationInterlockEXT = 5364,
  1366. OpEndInvocationInterlockEXT = 5365,
  1367. OpDemoteToHelperInvocationEXT = 5380,
  1368. OpIsHelperInvocationEXT = 5381,
  1369. OpSubgroupShuffleINTEL = 5571,
  1370. OpSubgroupShuffleDownINTEL = 5572,
  1371. OpSubgroupShuffleUpINTEL = 5573,
  1372. OpSubgroupShuffleXorINTEL = 5574,
  1373. OpSubgroupBlockReadINTEL = 5575,
  1374. OpSubgroupBlockWriteINTEL = 5576,
  1375. OpSubgroupImageBlockReadINTEL = 5577,
  1376. OpSubgroupImageBlockWriteINTEL = 5578,
  1377. OpSubgroupImageMediaBlockReadINTEL = 5580,
  1378. OpSubgroupImageMediaBlockWriteINTEL = 5581,
  1379. OpUCountLeadingZerosINTEL = 5585,
  1380. OpUCountTrailingZerosINTEL = 5586,
  1381. OpAbsISubINTEL = 5587,
  1382. OpAbsUSubINTEL = 5588,
  1383. OpIAddSatINTEL = 5589,
  1384. OpUAddSatINTEL = 5590,
  1385. OpIAverageINTEL = 5591,
  1386. OpUAverageINTEL = 5592,
  1387. OpIAverageRoundedINTEL = 5593,
  1388. OpUAverageRoundedINTEL = 5594,
  1389. OpISubSatINTEL = 5595,
  1390. OpUSubSatINTEL = 5596,
  1391. OpIMul32x16INTEL = 5597,
  1392. OpUMul32x16INTEL = 5598,
  1393. OpFunctionPointerINTEL = 5600,
  1394. OpFunctionPointerCallINTEL = 5601,
  1395. OpDecorateString = 5632,
  1396. OpDecorateStringGOOGLE = 5632,
  1397. OpMemberDecorateString = 5633,
  1398. OpMemberDecorateStringGOOGLE = 5633,
  1399. OpVmeImageINTEL = 5699,
  1400. OpTypeVmeImageINTEL = 5700,
  1401. OpTypeAvcImePayloadINTEL = 5701,
  1402. OpTypeAvcRefPayloadINTEL = 5702,
  1403. OpTypeAvcSicPayloadINTEL = 5703,
  1404. OpTypeAvcMcePayloadINTEL = 5704,
  1405. OpTypeAvcMceResultINTEL = 5705,
  1406. OpTypeAvcImeResultINTEL = 5706,
  1407. OpTypeAvcImeResultSingleReferenceStreamoutINTEL = 5707,
  1408. OpTypeAvcImeResultDualReferenceStreamoutINTEL = 5708,
  1409. OpTypeAvcImeSingleReferenceStreaminINTEL = 5709,
  1410. OpTypeAvcImeDualReferenceStreaminINTEL = 5710,
  1411. OpTypeAvcRefResultINTEL = 5711,
  1412. OpTypeAvcSicResultINTEL = 5712,
  1413. OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL = 5713,
  1414. OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL = 5714,
  1415. OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL = 5715,
  1416. OpSubgroupAvcMceSetInterShapePenaltyINTEL = 5716,
  1417. OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL = 5717,
  1418. OpSubgroupAvcMceSetInterDirectionPenaltyINTEL = 5718,
  1419. OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL = 5719,
  1420. OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL = 5720,
  1421. OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL = 5721,
  1422. OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL = 5722,
  1423. OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL = 5723,
  1424. OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL = 5724,
  1425. OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL = 5725,
  1426. OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL = 5726,
  1427. OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL = 5727,
  1428. OpSubgroupAvcMceSetAcOnlyHaarINTEL = 5728,
  1429. OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL = 5729,
  1430. OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL = 5730,
  1431. OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL = 5731,
  1432. OpSubgroupAvcMceConvertToImePayloadINTEL = 5732,
  1433. OpSubgroupAvcMceConvertToImeResultINTEL = 5733,
  1434. OpSubgroupAvcMceConvertToRefPayloadINTEL = 5734,
  1435. OpSubgroupAvcMceConvertToRefResultINTEL = 5735,
  1436. OpSubgroupAvcMceConvertToSicPayloadINTEL = 5736,
  1437. OpSubgroupAvcMceConvertToSicResultINTEL = 5737,
  1438. OpSubgroupAvcMceGetMotionVectorsINTEL = 5738,
  1439. OpSubgroupAvcMceGetInterDistortionsINTEL = 5739,
  1440. OpSubgroupAvcMceGetBestInterDistortionsINTEL = 5740,
  1441. OpSubgroupAvcMceGetInterMajorShapeINTEL = 5741,
  1442. OpSubgroupAvcMceGetInterMinorShapeINTEL = 5742,
  1443. OpSubgroupAvcMceGetInterDirectionsINTEL = 5743,
  1444. OpSubgroupAvcMceGetInterMotionVectorCountINTEL = 5744,
  1445. OpSubgroupAvcMceGetInterReferenceIdsINTEL = 5745,
  1446. OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL = 5746,
  1447. OpSubgroupAvcImeInitializeINTEL = 5747,
  1448. OpSubgroupAvcImeSetSingleReferenceINTEL = 5748,
  1449. OpSubgroupAvcImeSetDualReferenceINTEL = 5749,
  1450. OpSubgroupAvcImeRefWindowSizeINTEL = 5750,
  1451. OpSubgroupAvcImeAdjustRefOffsetINTEL = 5751,
  1452. OpSubgroupAvcImeConvertToMcePayloadINTEL = 5752,
  1453. OpSubgroupAvcImeSetMaxMotionVectorCountINTEL = 5753,
  1454. OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL = 5754,
  1455. OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL = 5755,
  1456. OpSubgroupAvcImeSetWeightedSadINTEL = 5756,
  1457. OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL = 5757,
  1458. OpSubgroupAvcImeEvaluateWithDualReferenceINTEL = 5758,
  1459. OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL = 5759,
  1460. OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL = 5760,
  1461. OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL = 5761,
  1462. OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL = 5762,
  1463. OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL = 5763,
  1464. OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL = 5764,
  1465. OpSubgroupAvcImeConvertToMceResultINTEL = 5765,
  1466. OpSubgroupAvcImeGetSingleReferenceStreaminINTEL = 5766,
  1467. OpSubgroupAvcImeGetDualReferenceStreaminINTEL = 5767,
  1468. OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL = 5768,
  1469. OpSubgroupAvcImeStripDualReferenceStreamoutINTEL = 5769,
  1470. OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL = 5770,
  1471. OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL = 5771,
  1472. OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL = 5772,
  1473. OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL = 5773,
  1474. OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL = 5774,
  1475. OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL = 5775,
  1476. OpSubgroupAvcImeGetBorderReachedINTEL = 5776,
  1477. OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL = 5777,
  1478. OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL = 5778,
  1479. OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL = 5779,
  1480. OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL = 5780,
  1481. OpSubgroupAvcFmeInitializeINTEL = 5781,
  1482. OpSubgroupAvcBmeInitializeINTEL = 5782,
  1483. OpSubgroupAvcRefConvertToMcePayloadINTEL = 5783,
  1484. OpSubgroupAvcRefSetBidirectionalMixDisableINTEL = 5784,
  1485. OpSubgroupAvcRefSetBilinearFilterEnableINTEL = 5785,
  1486. OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL = 5786,
  1487. OpSubgroupAvcRefEvaluateWithDualReferenceINTEL = 5787,
  1488. OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL = 5788,
  1489. OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL = 5789,
  1490. OpSubgroupAvcRefConvertToMceResultINTEL = 5790,
  1491. OpSubgroupAvcSicInitializeINTEL = 5791,
  1492. OpSubgroupAvcSicConfigureSkcINTEL = 5792,
  1493. OpSubgroupAvcSicConfigureIpeLumaINTEL = 5793,
  1494. OpSubgroupAvcSicConfigureIpeLumaChromaINTEL = 5794,
  1495. OpSubgroupAvcSicGetMotionVectorMaskINTEL = 5795,
  1496. OpSubgroupAvcSicConvertToMcePayloadINTEL = 5796,
  1497. OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL = 5797,
  1498. OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL = 5798,
  1499. OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL = 5799,
  1500. OpSubgroupAvcSicSetBilinearFilterEnableINTEL = 5800,
  1501. OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL = 5801,
  1502. OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL = 5802,
  1503. OpSubgroupAvcSicEvaluateIpeINTEL = 5803,
  1504. OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL = 5804,
  1505. OpSubgroupAvcSicEvaluateWithDualReferenceINTEL = 5805,
  1506. OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL = 5806,
  1507. OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL = 5807,
  1508. OpSubgroupAvcSicConvertToMceResultINTEL = 5808,
  1509. OpSubgroupAvcSicGetIpeLumaShapeINTEL = 5809,
  1510. OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL = 5810,
  1511. OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL = 5811,
  1512. OpSubgroupAvcSicGetPackedIpeLumaModesINTEL = 5812,
  1513. OpSubgroupAvcSicGetIpeChromaModeINTEL = 5813,
  1514. OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL = 5814,
  1515. OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL = 5815,
  1516. OpSubgroupAvcSicGetInterRawSadsINTEL = 5816,
  1517. OpLoopControlINTEL = 5887,
  1518. OpReadPipeBlockingINTEL = 5946,
  1519. OpWritePipeBlockingINTEL = 5947,
  1520. OpFPGARegINTEL = 5949,
  1521. OpRayQueryGetRayTMinKHR = 6016,
  1522. OpRayQueryGetRayFlagsKHR = 6017,
  1523. OpRayQueryGetIntersectionTKHR = 6018,
  1524. OpRayQueryGetIntersectionInstanceCustomIndexKHR = 6019,
  1525. OpRayQueryGetIntersectionInstanceIdKHR = 6020,
  1526. OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR = 6021,
  1527. OpRayQueryGetIntersectionGeometryIndexKHR = 6022,
  1528. OpRayQueryGetIntersectionPrimitiveIndexKHR = 6023,
  1529. OpRayQueryGetIntersectionBarycentricsKHR = 6024,
  1530. OpRayQueryGetIntersectionFrontFaceKHR = 6025,
  1531. OpRayQueryGetIntersectionCandidateAABBOpaqueKHR = 6026,
  1532. OpRayQueryGetIntersectionObjectRayDirectionKHR = 6027,
  1533. OpRayQueryGetIntersectionObjectRayOriginKHR = 6028,
  1534. OpRayQueryGetWorldRayDirectionKHR = 6029,
  1535. OpRayQueryGetWorldRayOriginKHR = 6030,
  1536. OpRayQueryGetIntersectionObjectToWorldKHR = 6031,
  1537. OpRayQueryGetIntersectionWorldToObjectKHR = 6032,
  1538. OpAtomicFAddEXT = 6035,
  1539. OpMax = 0x7fffffff,
  1540. };
  1541. #ifdef SPV_ENABLE_UTILITY_CODE
  1542. inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
  1543. *hasResult = *hasResultType = false;
  1544. switch (opcode) {
  1545. default: /* unknown opcode */ break;
  1546. case OpNop: *hasResult = false; *hasResultType = false; break;
  1547. case OpUndef: *hasResult = true; *hasResultType = true; break;
  1548. case OpSourceContinued: *hasResult = false; *hasResultType = false; break;
  1549. case OpSource: *hasResult = false; *hasResultType = false; break;
  1550. case OpSourceExtension: *hasResult = false; *hasResultType = false; break;
  1551. case OpName: *hasResult = false; *hasResultType = false; break;
  1552. case OpMemberName: *hasResult = false; *hasResultType = false; break;
  1553. case OpString: *hasResult = true; *hasResultType = false; break;
  1554. case OpLine: *hasResult = false; *hasResultType = false; break;
  1555. case OpExtension: *hasResult = false; *hasResultType = false; break;
  1556. case OpExtInstImport: *hasResult = true; *hasResultType = false; break;
  1557. case OpExtInst: *hasResult = true; *hasResultType = true; break;
  1558. case OpMemoryModel: *hasResult = false; *hasResultType = false; break;
  1559. case OpEntryPoint: *hasResult = false; *hasResultType = false; break;
  1560. case OpExecutionMode: *hasResult = false; *hasResultType = false; break;
  1561. case OpCapability: *hasResult = false; *hasResultType = false; break;
  1562. case OpTypeVoid: *hasResult = true; *hasResultType = false; break;
  1563. case OpTypeBool: *hasResult = true; *hasResultType = false; break;
  1564. case OpTypeInt: *hasResult = true; *hasResultType = false; break;
  1565. case OpTypeFloat: *hasResult = true; *hasResultType = false; break;
  1566. case OpTypeVector: *hasResult = true; *hasResultType = false; break;
  1567. case OpTypeMatrix: *hasResult = true; *hasResultType = false; break;
  1568. case OpTypeImage: *hasResult = true; *hasResultType = false; break;
  1569. case OpTypeSampler: *hasResult = true; *hasResultType = false; break;
  1570. case OpTypeSampledImage: *hasResult = true; *hasResultType = false; break;
  1571. case OpTypeArray: *hasResult = true; *hasResultType = false; break;
  1572. case OpTypeRuntimeArray: *hasResult = true; *hasResultType = false; break;
  1573. case OpTypeStruct: *hasResult = true; *hasResultType = false; break;
  1574. case OpTypeOpaque: *hasResult = true; *hasResultType = false; break;
  1575. case OpTypePointer: *hasResult = true; *hasResultType = false; break;
  1576. case OpTypeFunction: *hasResult = true; *hasResultType = false; break;
  1577. case OpTypeEvent: *hasResult = true; *hasResultType = false; break;
  1578. case OpTypeDeviceEvent: *hasResult = true; *hasResultType = false; break;
  1579. case OpTypeReserveId: *hasResult = true; *hasResultType = false; break;
  1580. case OpTypeQueue: *hasResult = true; *hasResultType = false; break;
  1581. case OpTypePipe: *hasResult = true; *hasResultType = false; break;
  1582. case OpTypeForwardPointer: *hasResult = false; *hasResultType = false; break;
  1583. case OpConstantTrue: *hasResult = true; *hasResultType = true; break;
  1584. case OpConstantFalse: *hasResult = true; *hasResultType = true; break;
  1585. case OpConstant: *hasResult = true; *hasResultType = true; break;
  1586. case OpConstantComposite: *hasResult = true; *hasResultType = true; break;
  1587. case OpConstantSampler: *hasResult = true; *hasResultType = true; break;
  1588. case OpConstantNull: *hasResult = true; *hasResultType = true; break;
  1589. case OpSpecConstantTrue: *hasResult = true; *hasResultType = true; break;
  1590. case OpSpecConstantFalse: *hasResult = true; *hasResultType = true; break;
  1591. case OpSpecConstant: *hasResult = true; *hasResultType = true; break;
  1592. case OpSpecConstantComposite: *hasResult = true; *hasResultType = true; break;
  1593. case OpSpecConstantOp: *hasResult = true; *hasResultType = true; break;
  1594. case OpFunction: *hasResult = true; *hasResultType = true; break;
  1595. case OpFunctionParameter: *hasResult = true; *hasResultType = true; break;
  1596. case OpFunctionEnd: *hasResult = false; *hasResultType = false; break;
  1597. case OpFunctionCall: *hasResult = true; *hasResultType = true; break;
  1598. case OpVariable: *hasResult = true; *hasResultType = true; break;
  1599. case OpImageTexelPointer: *hasResult = true; *hasResultType = true; break;
  1600. case OpLoad: *hasResult = true; *hasResultType = true; break;
  1601. case OpStore: *hasResult = false; *hasResultType = false; break;
  1602. case OpCopyMemory: *hasResult = false; *hasResultType = false; break;
  1603. case OpCopyMemorySized: *hasResult = false; *hasResultType = false; break;
  1604. case OpAccessChain: *hasResult = true; *hasResultType = true; break;
  1605. case OpInBoundsAccessChain: *hasResult = true; *hasResultType = true; break;
  1606. case OpPtrAccessChain: *hasResult = true; *hasResultType = true; break;
  1607. case OpArrayLength: *hasResult = true; *hasResultType = true; break;
  1608. case OpGenericPtrMemSemantics: *hasResult = true; *hasResultType = true; break;
  1609. case OpInBoundsPtrAccessChain: *hasResult = true; *hasResultType = true; break;
  1610. case OpDecorate: *hasResult = false; *hasResultType = false; break;
  1611. case OpMemberDecorate: *hasResult = false; *hasResultType = false; break;
  1612. case OpDecorationGroup: *hasResult = true; *hasResultType = false; break;
  1613. case OpGroupDecorate: *hasResult = false; *hasResultType = false; break;
  1614. case OpGroupMemberDecorate: *hasResult = false; *hasResultType = false; break;
  1615. case OpVectorExtractDynamic: *hasResult = true; *hasResultType = true; break;
  1616. case OpVectorInsertDynamic: *hasResult = true; *hasResultType = true; break;
  1617. case OpVectorShuffle: *hasResult = true; *hasResultType = true; break;
  1618. case OpCompositeConstruct: *hasResult = true; *hasResultType = true; break;
  1619. case OpCompositeExtract: *hasResult = true; *hasResultType = true; break;
  1620. case OpCompositeInsert: *hasResult = true; *hasResultType = true; break;
  1621. case OpCopyObject: *hasResult = true; *hasResultType = true; break;
  1622. case OpTranspose: *hasResult = true; *hasResultType = true; break;
  1623. case OpSampledImage: *hasResult = true; *hasResultType = true; break;
  1624. case OpImageSampleImplicitLod: *hasResult = true; *hasResultType = true; break;
  1625. case OpImageSampleExplicitLod: *hasResult = true; *hasResultType = true; break;
  1626. case OpImageSampleDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
  1627. case OpImageSampleDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
  1628. case OpImageSampleProjImplicitLod: *hasResult = true; *hasResultType = true; break;
  1629. case OpImageSampleProjExplicitLod: *hasResult = true; *hasResultType = true; break;
  1630. case OpImageSampleProjDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
  1631. case OpImageSampleProjDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
  1632. case OpImageFetch: *hasResult = true; *hasResultType = true; break;
  1633. case OpImageGather: *hasResult = true; *hasResultType = true; break;
  1634. case OpImageDrefGather: *hasResult = true; *hasResultType = true; break;
  1635. case OpImageRead: *hasResult = true; *hasResultType = true; break;
  1636. case OpImageWrite: *hasResult = false; *hasResultType = false; break;
  1637. case OpImage: *hasResult = true; *hasResultType = true; break;
  1638. case OpImageQueryFormat: *hasResult = true; *hasResultType = true; break;
  1639. case OpImageQueryOrder: *hasResult = true; *hasResultType = true; break;
  1640. case OpImageQuerySizeLod: *hasResult = true; *hasResultType = true; break;
  1641. case OpImageQuerySize: *hasResult = true; *hasResultType = true; break;
  1642. case OpImageQueryLod: *hasResult = true; *hasResultType = true; break;
  1643. case OpImageQueryLevels: *hasResult = true; *hasResultType = true; break;
  1644. case OpImageQuerySamples: *hasResult = true; *hasResultType = true; break;
  1645. case OpConvertFToU: *hasResult = true; *hasResultType = true; break;
  1646. case OpConvertFToS: *hasResult = true; *hasResultType = true; break;
  1647. case OpConvertSToF: *hasResult = true; *hasResultType = true; break;
  1648. case OpConvertUToF: *hasResult = true; *hasResultType = true; break;
  1649. case OpUConvert: *hasResult = true; *hasResultType = true; break;
  1650. case OpSConvert: *hasResult = true; *hasResultType = true; break;
  1651. case OpFConvert: *hasResult = true; *hasResultType = true; break;
  1652. case OpQuantizeToF16: *hasResult = true; *hasResultType = true; break;
  1653. case OpConvertPtrToU: *hasResult = true; *hasResultType = true; break;
  1654. case OpSatConvertSToU: *hasResult = true; *hasResultType = true; break;
  1655. case OpSatConvertUToS: *hasResult = true; *hasResultType = true; break;
  1656. case OpConvertUToPtr: *hasResult = true; *hasResultType = true; break;
  1657. case OpPtrCastToGeneric: *hasResult = true; *hasResultType = true; break;
  1658. case OpGenericCastToPtr: *hasResult = true; *hasResultType = true; break;
  1659. case OpGenericCastToPtrExplicit: *hasResult = true; *hasResultType = true; break;
  1660. case OpBitcast: *hasResult = true; *hasResultType = true; break;
  1661. case OpSNegate: *hasResult = true; *hasResultType = true; break;
  1662. case OpFNegate: *hasResult = true; *hasResultType = true; break;
  1663. case OpIAdd: *hasResult = true; *hasResultType = true; break;
  1664. case OpFAdd: *hasResult = true; *hasResultType = true; break;
  1665. case OpISub: *hasResult = true; *hasResultType = true; break;
  1666. case OpFSub: *hasResult = true; *hasResultType = true; break;
  1667. case OpIMul: *hasResult = true; *hasResultType = true; break;
  1668. case OpFMul: *hasResult = true; *hasResultType = true; break;
  1669. case OpUDiv: *hasResult = true; *hasResultType = true; break;
  1670. case OpSDiv: *hasResult = true; *hasResultType = true; break;
  1671. case OpFDiv: *hasResult = true; *hasResultType = true; break;
  1672. case OpUMod: *hasResult = true; *hasResultType = true; break;
  1673. case OpSRem: *hasResult = true; *hasResultType = true; break;
  1674. case OpSMod: *hasResult = true; *hasResultType = true; break;
  1675. case OpFRem: *hasResult = true; *hasResultType = true; break;
  1676. case OpFMod: *hasResult = true; *hasResultType = true; break;
  1677. case OpVectorTimesScalar: *hasResult = true; *hasResultType = true; break;
  1678. case OpMatrixTimesScalar: *hasResult = true; *hasResultType = true; break;
  1679. case OpVectorTimesMatrix: *hasResult = true; *hasResultType = true; break;
  1680. case OpMatrixTimesVector: *hasResult = true; *hasResultType = true; break;
  1681. case OpMatrixTimesMatrix: *hasResult = true; *hasResultType = true; break;
  1682. case OpOuterProduct: *hasResult = true; *hasResultType = true; break;
  1683. case OpDot: *hasResult = true; *hasResultType = true; break;
  1684. case OpIAddCarry: *hasResult = true; *hasResultType = true; break;
  1685. case OpISubBorrow: *hasResult = true; *hasResultType = true; break;
  1686. case OpUMulExtended: *hasResult = true; *hasResultType = true; break;
  1687. case OpSMulExtended: *hasResult = true; *hasResultType = true; break;
  1688. case OpAny: *hasResult = true; *hasResultType = true; break;
  1689. case OpAll: *hasResult = true; *hasResultType = true; break;
  1690. case OpIsNan: *hasResult = true; *hasResultType = true; break;
  1691. case OpIsInf: *hasResult = true; *hasResultType = true; break;
  1692. case OpIsFinite: *hasResult = true; *hasResultType = true; break;
  1693. case OpIsNormal: *hasResult = true; *hasResultType = true; break;
  1694. case OpSignBitSet: *hasResult = true; *hasResultType = true; break;
  1695. case OpLessOrGreater: *hasResult = true; *hasResultType = true; break;
  1696. case OpOrdered: *hasResult = true; *hasResultType = true; break;
  1697. case OpUnordered: *hasResult = true; *hasResultType = true; break;
  1698. case OpLogicalEqual: *hasResult = true; *hasResultType = true; break;
  1699. case OpLogicalNotEqual: *hasResult = true; *hasResultType = true; break;
  1700. case OpLogicalOr: *hasResult = true; *hasResultType = true; break;
  1701. case OpLogicalAnd: *hasResult = true; *hasResultType = true; break;
  1702. case OpLogicalNot: *hasResult = true; *hasResultType = true; break;
  1703. case OpSelect: *hasResult = true; *hasResultType = true; break;
  1704. case OpIEqual: *hasResult = true; *hasResultType = true; break;
  1705. case OpINotEqual: *hasResult = true; *hasResultType = true; break;
  1706. case OpUGreaterThan: *hasResult = true; *hasResultType = true; break;
  1707. case OpSGreaterThan: *hasResult = true; *hasResultType = true; break;
  1708. case OpUGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
  1709. case OpSGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
  1710. case OpULessThan: *hasResult = true; *hasResultType = true; break;
  1711. case OpSLessThan: *hasResult = true; *hasResultType = true; break;
  1712. case OpULessThanEqual: *hasResult = true; *hasResultType = true; break;
  1713. case OpSLessThanEqual: *hasResult = true; *hasResultType = true; break;
  1714. case OpFOrdEqual: *hasResult = true; *hasResultType = true; break;
  1715. case OpFUnordEqual: *hasResult = true; *hasResultType = true; break;
  1716. case OpFOrdNotEqual: *hasResult = true; *hasResultType = true; break;
  1717. case OpFUnordNotEqual: *hasResult = true; *hasResultType = true; break;
  1718. case OpFOrdLessThan: *hasResult = true; *hasResultType = true; break;
  1719. case OpFUnordLessThan: *hasResult = true; *hasResultType = true; break;
  1720. case OpFOrdGreaterThan: *hasResult = true; *hasResultType = true; break;
  1721. case OpFUnordGreaterThan: *hasResult = true; *hasResultType = true; break;
  1722. case OpFOrdLessThanEqual: *hasResult = true; *hasResultType = true; break;
  1723. case OpFUnordLessThanEqual: *hasResult = true; *hasResultType = true; break;
  1724. case OpFOrdGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
  1725. case OpFUnordGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
  1726. case OpShiftRightLogical: *hasResult = true; *hasResultType = true; break;
  1727. case OpShiftRightArithmetic: *hasResult = true; *hasResultType = true; break;
  1728. case OpShiftLeftLogical: *hasResult = true; *hasResultType = true; break;
  1729. case OpBitwiseOr: *hasResult = true; *hasResultType = true; break;
  1730. case OpBitwiseXor: *hasResult = true; *hasResultType = true; break;
  1731. case OpBitwiseAnd: *hasResult = true; *hasResultType = true; break;
  1732. case OpNot: *hasResult = true; *hasResultType = true; break;
  1733. case OpBitFieldInsert: *hasResult = true; *hasResultType = true; break;
  1734. case OpBitFieldSExtract: *hasResult = true; *hasResultType = true; break;
  1735. case OpBitFieldUExtract: *hasResult = true; *hasResultType = true; break;
  1736. case OpBitReverse: *hasResult = true; *hasResultType = true; break;
  1737. case OpBitCount: *hasResult = true; *hasResultType = true; break;
  1738. case OpDPdx: *hasResult = true; *hasResultType = true; break;
  1739. case OpDPdy: *hasResult = true; *hasResultType = true; break;
  1740. case OpFwidth: *hasResult = true; *hasResultType = true; break;
  1741. case OpDPdxFine: *hasResult = true; *hasResultType = true; break;
  1742. case OpDPdyFine: *hasResult = true; *hasResultType = true; break;
  1743. case OpFwidthFine: *hasResult = true; *hasResultType = true; break;
  1744. case OpDPdxCoarse: *hasResult = true; *hasResultType = true; break;
  1745. case OpDPdyCoarse: *hasResult = true; *hasResultType = true; break;
  1746. case OpFwidthCoarse: *hasResult = true; *hasResultType = true; break;
  1747. case OpEmitVertex: *hasResult = false; *hasResultType = false; break;
  1748. case OpEndPrimitive: *hasResult = false; *hasResultType = false; break;
  1749. case OpEmitStreamVertex: *hasResult = false; *hasResultType = false; break;
  1750. case OpEndStreamPrimitive: *hasResult = false; *hasResultType = false; break;
  1751. case OpControlBarrier: *hasResult = false; *hasResultType = false; break;
  1752. case OpMemoryBarrier: *hasResult = false; *hasResultType = false; break;
  1753. case OpAtomicLoad: *hasResult = true; *hasResultType = true; break;
  1754. case OpAtomicStore: *hasResult = false; *hasResultType = false; break;
  1755. case OpAtomicExchange: *hasResult = true; *hasResultType = true; break;
  1756. case OpAtomicCompareExchange: *hasResult = true; *hasResultType = true; break;
  1757. case OpAtomicCompareExchangeWeak: *hasResult = true; *hasResultType = true; break;
  1758. case OpAtomicIIncrement: *hasResult = true; *hasResultType = true; break;
  1759. case OpAtomicIDecrement: *hasResult = true; *hasResultType = true; break;
  1760. case OpAtomicIAdd: *hasResult = true; *hasResultType = true; break;
  1761. case OpAtomicISub: *hasResult = true; *hasResultType = true; break;
  1762. case OpAtomicSMin: *hasResult = true; *hasResultType = true; break;
  1763. case OpAtomicUMin: *hasResult = true; *hasResultType = true; break;
  1764. case OpAtomicSMax: *hasResult = true; *hasResultType = true; break;
  1765. case OpAtomicUMax: *hasResult = true; *hasResultType = true; break;
  1766. case OpAtomicAnd: *hasResult = true; *hasResultType = true; break;
  1767. case OpAtomicOr: *hasResult = true; *hasResultType = true; break;
  1768. case OpAtomicXor: *hasResult = true; *hasResultType = true; break;
  1769. case OpPhi: *hasResult = true; *hasResultType = true; break;
  1770. case OpLoopMerge: *hasResult = false; *hasResultType = false; break;
  1771. case OpSelectionMerge: *hasResult = false; *hasResultType = false; break;
  1772. case OpLabel: *hasResult = true; *hasResultType = false; break;
  1773. case OpBranch: *hasResult = false; *hasResultType = false; break;
  1774. case OpBranchConditional: *hasResult = false; *hasResultType = false; break;
  1775. case OpSwitch: *hasResult = false; *hasResultType = false; break;
  1776. case OpKill: *hasResult = false; *hasResultType = false; break;
  1777. case OpReturn: *hasResult = false; *hasResultType = false; break;
  1778. case OpReturnValue: *hasResult = false; *hasResultType = false; break;
  1779. case OpUnreachable: *hasResult = false; *hasResultType = false; break;
  1780. case OpLifetimeStart: *hasResult = false; *hasResultType = false; break;
  1781. case OpLifetimeStop: *hasResult = false; *hasResultType = false; break;
  1782. case OpGroupAsyncCopy: *hasResult = true; *hasResultType = true; break;
  1783. case OpGroupWaitEvents: *hasResult = false; *hasResultType = false; break;
  1784. case OpGroupAll: *hasResult = true; *hasResultType = true; break;
  1785. case OpGroupAny: *hasResult = true; *hasResultType = true; break;
  1786. case OpGroupBroadcast: *hasResult = true; *hasResultType = true; break;
  1787. case OpGroupIAdd: *hasResult = true; *hasResultType = true; break;
  1788. case OpGroupFAdd: *hasResult = true; *hasResultType = true; break;
  1789. case OpGroupFMin: *hasResult = true; *hasResultType = true; break;
  1790. case OpGroupUMin: *hasResult = true; *hasResultType = true; break;
  1791. case OpGroupSMin: *hasResult = true; *hasResultType = true; break;
  1792. case OpGroupFMax: *hasResult = true; *hasResultType = true; break;
  1793. case OpGroupUMax: *hasResult = true; *hasResultType = true; break;
  1794. case OpGroupSMax: *hasResult = true; *hasResultType = true; break;
  1795. case OpReadPipe: *hasResult = true; *hasResultType = true; break;
  1796. case OpWritePipe: *hasResult = true; *hasResultType = true; break;
  1797. case OpReservedReadPipe: *hasResult = true; *hasResultType = true; break;
  1798. case OpReservedWritePipe: *hasResult = true; *hasResultType = true; break;
  1799. case OpReserveReadPipePackets: *hasResult = true; *hasResultType = true; break;
  1800. case OpReserveWritePipePackets: *hasResult = true; *hasResultType = true; break;
  1801. case OpCommitReadPipe: *hasResult = false; *hasResultType = false; break;
  1802. case OpCommitWritePipe: *hasResult = false; *hasResultType = false; break;
  1803. case OpIsValidReserveId: *hasResult = true; *hasResultType = true; break;
  1804. case OpGetNumPipePackets: *hasResult = true; *hasResultType = true; break;
  1805. case OpGetMaxPipePackets: *hasResult = true; *hasResultType = true; break;
  1806. case OpGroupReserveReadPipePackets: *hasResult = true; *hasResultType = true; break;
  1807. case OpGroupReserveWritePipePackets: *hasResult = true; *hasResultType = true; break;
  1808. case OpGroupCommitReadPipe: *hasResult = false; *hasResultType = false; break;
  1809. case OpGroupCommitWritePipe: *hasResult = false; *hasResultType = false; break;
  1810. case OpEnqueueMarker: *hasResult = true; *hasResultType = true; break;
  1811. case OpEnqueueKernel: *hasResult = true; *hasResultType = true; break;
  1812. case OpGetKernelNDrangeSubGroupCount: *hasResult = true; *hasResultType = true; break;
  1813. case OpGetKernelNDrangeMaxSubGroupSize: *hasResult = true; *hasResultType = true; break;
  1814. case OpGetKernelWorkGroupSize: *hasResult = true; *hasResultType = true; break;
  1815. case OpGetKernelPreferredWorkGroupSizeMultiple: *hasResult = true; *hasResultType = true; break;
  1816. case OpRetainEvent: *hasResult = false; *hasResultType = false; break;
  1817. case OpReleaseEvent: *hasResult = false; *hasResultType = false; break;
  1818. case OpCreateUserEvent: *hasResult = true; *hasResultType = true; break;
  1819. case OpIsValidEvent: *hasResult = true; *hasResultType = true; break;
  1820. case OpSetUserEventStatus: *hasResult = false; *hasResultType = false; break;
  1821. case OpCaptureEventProfilingInfo: *hasResult = false; *hasResultType = false; break;
  1822. case OpGetDefaultQueue: *hasResult = true; *hasResultType = true; break;
  1823. case OpBuildNDRange: *hasResult = true; *hasResultType = true; break;
  1824. case OpImageSparseSampleImplicitLod: *hasResult = true; *hasResultType = true; break;
  1825. case OpImageSparseSampleExplicitLod: *hasResult = true; *hasResultType = true; break;
  1826. case OpImageSparseSampleDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
  1827. case OpImageSparseSampleDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
  1828. case OpImageSparseSampleProjImplicitLod: *hasResult = true; *hasResultType = true; break;
  1829. case OpImageSparseSampleProjExplicitLod: *hasResult = true; *hasResultType = true; break;
  1830. case OpImageSparseSampleProjDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
  1831. case OpImageSparseSampleProjDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
  1832. case OpImageSparseFetch: *hasResult = true; *hasResultType = true; break;
  1833. case OpImageSparseGather: *hasResult = true; *hasResultType = true; break;
  1834. case OpImageSparseDrefGather: *hasResult = true; *hasResultType = true; break;
  1835. case OpImageSparseTexelsResident: *hasResult = true; *hasResultType = true; break;
  1836. case OpNoLine: *hasResult = false; *hasResultType = false; break;
  1837. case OpAtomicFlagTestAndSet: *hasResult = true; *hasResultType = true; break;
  1838. case OpAtomicFlagClear: *hasResult = false; *hasResultType = false; break;
  1839. case OpImageSparseRead: *hasResult = true; *hasResultType = true; break;
  1840. case OpSizeOf: *hasResult = true; *hasResultType = true; break;
  1841. case OpTypePipeStorage: *hasResult = true; *hasResultType = false; break;
  1842. case OpConstantPipeStorage: *hasResult = true; *hasResultType = true; break;
  1843. case OpCreatePipeFromPipeStorage: *hasResult = true; *hasResultType = true; break;
  1844. case OpGetKernelLocalSizeForSubgroupCount: *hasResult = true; *hasResultType = true; break;
  1845. case OpGetKernelMaxNumSubgroups: *hasResult = true; *hasResultType = true; break;
  1846. case OpTypeNamedBarrier: *hasResult = true; *hasResultType = false; break;
  1847. case OpNamedBarrierInitialize: *hasResult = true; *hasResultType = true; break;
  1848. case OpMemoryNamedBarrier: *hasResult = false; *hasResultType = false; break;
  1849. case OpModuleProcessed: *hasResult = false; *hasResultType = false; break;
  1850. case OpExecutionModeId: *hasResult = false; *hasResultType = false; break;
  1851. case OpDecorateId: *hasResult = false; *hasResultType = false; break;
  1852. case OpGroupNonUniformElect: *hasResult = true; *hasResultType = true; break;
  1853. case OpGroupNonUniformAll: *hasResult = true; *hasResultType = true; break;
  1854. case OpGroupNonUniformAny: *hasResult = true; *hasResultType = true; break;
  1855. case OpGroupNonUniformAllEqual: *hasResult = true; *hasResultType = true; break;
  1856. case OpGroupNonUniformBroadcast: *hasResult = true; *hasResultType = true; break;
  1857. case OpGroupNonUniformBroadcastFirst: *hasResult = true; *hasResultType = true; break;
  1858. case OpGroupNonUniformBallot: *hasResult = true; *hasResultType = true; break;
  1859. case OpGroupNonUniformInverseBallot: *hasResult = true; *hasResultType = true; break;
  1860. case OpGroupNonUniformBallotBitExtract: *hasResult = true; *hasResultType = true; break;
  1861. case OpGroupNonUniformBallotBitCount: *hasResult = true; *hasResultType = true; break;
  1862. case OpGroupNonUniformBallotFindLSB: *hasResult = true; *hasResultType = true; break;
  1863. case OpGroupNonUniformBallotFindMSB: *hasResult = true; *hasResultType = true; break;
  1864. case OpGroupNonUniformShuffle: *hasResult = true; *hasResultType = true; break;
  1865. case OpGroupNonUniformShuffleXor: *hasResult = true; *hasResultType = true; break;
  1866. case OpGroupNonUniformShuffleUp: *hasResult = true; *hasResultType = true; break;
  1867. case OpGroupNonUniformShuffleDown: *hasResult = true; *hasResultType = true; break;
  1868. case OpGroupNonUniformIAdd: *hasResult = true; *hasResultType = true; break;
  1869. case OpGroupNonUniformFAdd: *hasResult = true; *hasResultType = true; break;
  1870. case OpGroupNonUniformIMul: *hasResult = true; *hasResultType = true; break;
  1871. case OpGroupNonUniformFMul: *hasResult = true; *hasResultType = true; break;
  1872. case OpGroupNonUniformSMin: *hasResult = true; *hasResultType = true; break;
  1873. case OpGroupNonUniformUMin: *hasResult = true; *hasResultType = true; break;
  1874. case OpGroupNonUniformFMin: *hasResult = true; *hasResultType = true; break;
  1875. case OpGroupNonUniformSMax: *hasResult = true; *hasResultType = true; break;
  1876. case OpGroupNonUniformUMax: *hasResult = true; *hasResultType = true; break;
  1877. case OpGroupNonUniformFMax: *hasResult = true; *hasResultType = true; break;
  1878. case OpGroupNonUniformBitwiseAnd: *hasResult = true; *hasResultType = true; break;
  1879. case OpGroupNonUniformBitwiseOr: *hasResult = true; *hasResultType = true; break;
  1880. case OpGroupNonUniformBitwiseXor: *hasResult = true; *hasResultType = true; break;
  1881. case OpGroupNonUniformLogicalAnd: *hasResult = true; *hasResultType = true; break;
  1882. case OpGroupNonUniformLogicalOr: *hasResult = true; *hasResultType = true; break;
  1883. case OpGroupNonUniformLogicalXor: *hasResult = true; *hasResultType = true; break;
  1884. case OpGroupNonUniformQuadBroadcast: *hasResult = true; *hasResultType = true; break;
  1885. case OpGroupNonUniformQuadSwap: *hasResult = true; *hasResultType = true; break;
  1886. case OpCopyLogical: *hasResult = true; *hasResultType = true; break;
  1887. case OpPtrEqual: *hasResult = true; *hasResultType = true; break;
  1888. case OpPtrNotEqual: *hasResult = true; *hasResultType = true; break;
  1889. case OpPtrDiff: *hasResult = true; *hasResultType = true; break;
  1890. case OpSubgroupBallotKHR: *hasResult = true; *hasResultType = true; break;
  1891. case OpSubgroupFirstInvocationKHR: *hasResult = true; *hasResultType = true; break;
  1892. case OpSubgroupAllKHR: *hasResult = true; *hasResultType = true; break;
  1893. case OpSubgroupAnyKHR: *hasResult = true; *hasResultType = true; break;
  1894. case OpSubgroupAllEqualKHR: *hasResult = true; *hasResultType = true; break;
  1895. case OpSubgroupReadInvocationKHR: *hasResult = true; *hasResultType = true; break;
  1896. case OpTypeRayQueryProvisionalKHR: *hasResult = true; *hasResultType = false; break;
  1897. case OpRayQueryInitializeKHR: *hasResult = false; *hasResultType = false; break;
  1898. case OpRayQueryTerminateKHR: *hasResult = false; *hasResultType = false; break;
  1899. case OpRayQueryGenerateIntersectionKHR: *hasResult = false; *hasResultType = false; break;
  1900. case OpRayQueryConfirmIntersectionKHR: *hasResult = false; *hasResultType = false; break;
  1901. case OpRayQueryProceedKHR: *hasResult = true; *hasResultType = true; break;
  1902. case OpRayQueryGetIntersectionTypeKHR: *hasResult = true; *hasResultType = true; break;
  1903. case OpGroupIAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
  1904. case OpGroupFAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
  1905. case OpGroupFMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
  1906. case OpGroupUMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
  1907. case OpGroupSMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
  1908. case OpGroupFMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break;
  1909. case OpGroupUMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break;
  1910. case OpGroupSMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break;
  1911. case OpFragmentMaskFetchAMD: *hasResult = true; *hasResultType = true; break;
  1912. case OpFragmentFetchAMD: *hasResult = true; *hasResultType = true; break;
  1913. case OpReadClockKHR: *hasResult = true; *hasResultType = true; break;
  1914. case OpImageSampleFootprintNV: *hasResult = true; *hasResultType = true; break;
  1915. case OpGroupNonUniformPartitionNV: *hasResult = true; *hasResultType = true; break;
  1916. case OpWritePackedPrimitiveIndices4x8NV: *hasResult = false; *hasResultType = false; break;
  1917. case OpReportIntersectionNV: *hasResult = true; *hasResultType = true; break;
  1918. case OpIgnoreIntersectionNV: *hasResult = false; *hasResultType = false; break;
  1919. case OpTerminateRayNV: *hasResult = false; *hasResultType = false; break;
  1920. case OpTraceNV: *hasResult = false; *hasResultType = false; break;
  1921. case OpTypeAccelerationStructureNV: *hasResult = true; *hasResultType = false; break;
  1922. case OpExecuteCallableNV: *hasResult = false; *hasResultType = false; break;
  1923. case OpTypeCooperativeMatrixNV: *hasResult = true; *hasResultType = false; break;
  1924. case OpCooperativeMatrixLoadNV: *hasResult = true; *hasResultType = true; break;
  1925. case OpCooperativeMatrixStoreNV: *hasResult = false; *hasResultType = false; break;
  1926. case OpCooperativeMatrixMulAddNV: *hasResult = true; *hasResultType = true; break;
  1927. case OpCooperativeMatrixLengthNV: *hasResult = true; *hasResultType = true; break;
  1928. case OpBeginInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break;
  1929. case OpEndInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break;
  1930. case OpDemoteToHelperInvocationEXT: *hasResult = false; *hasResultType = false; break;
  1931. case OpIsHelperInvocationEXT: *hasResult = true; *hasResultType = true; break;
  1932. case OpSubgroupShuffleINTEL: *hasResult = true; *hasResultType = true; break;
  1933. case OpSubgroupShuffleDownINTEL: *hasResult = true; *hasResultType = true; break;
  1934. case OpSubgroupShuffleUpINTEL: *hasResult = true; *hasResultType = true; break;
  1935. case OpSubgroupShuffleXorINTEL: *hasResult = true; *hasResultType = true; break;
  1936. case OpSubgroupBlockReadINTEL: *hasResult = true; *hasResultType = true; break;
  1937. case OpSubgroupBlockWriteINTEL: *hasResult = false; *hasResultType = false; break;
  1938. case OpSubgroupImageBlockReadINTEL: *hasResult = true; *hasResultType = true; break;
  1939. case OpSubgroupImageBlockWriteINTEL: *hasResult = false; *hasResultType = false; break;
  1940. case OpSubgroupImageMediaBlockReadINTEL: *hasResult = true; *hasResultType = true; break;
  1941. case OpSubgroupImageMediaBlockWriteINTEL: *hasResult = false; *hasResultType = false; break;
  1942. case OpUCountLeadingZerosINTEL: *hasResult = true; *hasResultType = true; break;
  1943. case OpUCountTrailingZerosINTEL: *hasResult = true; *hasResultType = true; break;
  1944. case OpAbsISubINTEL: *hasResult = true; *hasResultType = true; break;
  1945. case OpAbsUSubINTEL: *hasResult = true; *hasResultType = true; break;
  1946. case OpIAddSatINTEL: *hasResult = true; *hasResultType = true; break;
  1947. case OpUAddSatINTEL: *hasResult = true; *hasResultType = true; break;
  1948. case OpIAverageINTEL: *hasResult = true; *hasResultType = true; break;
  1949. case OpUAverageINTEL: *hasResult = true; *hasResultType = true; break;
  1950. case OpIAverageRoundedINTEL: *hasResult = true; *hasResultType = true; break;
  1951. case OpUAverageRoundedINTEL: *hasResult = true; *hasResultType = true; break;
  1952. case OpISubSatINTEL: *hasResult = true; *hasResultType = true; break;
  1953. case OpUSubSatINTEL: *hasResult = true; *hasResultType = true; break;
  1954. case OpIMul32x16INTEL: *hasResult = true; *hasResultType = true; break;
  1955. case OpUMul32x16INTEL: *hasResult = true; *hasResultType = true; break;
  1956. case OpFunctionPointerINTEL: *hasResult = true; *hasResultType = true; break;
  1957. case OpFunctionPointerCallINTEL: *hasResult = true; *hasResultType = true; break;
  1958. case OpDecorateString: *hasResult = false; *hasResultType = false; break;
  1959. case OpMemberDecorateString: *hasResult = false; *hasResultType = false; break;
  1960. case OpVmeImageINTEL: *hasResult = true; *hasResultType = true; break;
  1961. case OpTypeVmeImageINTEL: *hasResult = true; *hasResultType = false; break;
  1962. case OpTypeAvcImePayloadINTEL: *hasResult = true; *hasResultType = false; break;
  1963. case OpTypeAvcRefPayloadINTEL: *hasResult = true; *hasResultType = false; break;
  1964. case OpTypeAvcSicPayloadINTEL: *hasResult = true; *hasResultType = false; break;
  1965. case OpTypeAvcMcePayloadINTEL: *hasResult = true; *hasResultType = false; break;
  1966. case OpTypeAvcMceResultINTEL: *hasResult = true; *hasResultType = false; break;
  1967. case OpTypeAvcImeResultINTEL: *hasResult = true; *hasResultType = false; break;
  1968. case OpTypeAvcImeResultSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = false; break;
  1969. case OpTypeAvcImeResultDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = false; break;
  1970. case OpTypeAvcImeSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = false; break;
  1971. case OpTypeAvcImeDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = false; break;
  1972. case OpTypeAvcRefResultINTEL: *hasResult = true; *hasResultType = false; break;
  1973. case OpTypeAvcSicResultINTEL: *hasResult = true; *hasResultType = false; break;
  1974. case OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
  1975. case OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
  1976. case OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
  1977. case OpSubgroupAvcMceSetInterShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
  1978. case OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL: *hasResult = true; *hasResultType = true; break;
  1979. case OpSubgroupAvcMceSetInterDirectionPenaltyINTEL: *hasResult = true; *hasResultType = true; break;
  1980. case OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
  1981. case OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL: *hasResult = true; *hasResultType = true; break;
  1982. case OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break;
  1983. case OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break;
  1984. case OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break;
  1985. case OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL: *hasResult = true; *hasResultType = true; break;
  1986. case OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
  1987. case OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL: *hasResult = true; *hasResultType = true; break;
  1988. case OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
  1989. case OpSubgroupAvcMceSetAcOnlyHaarINTEL: *hasResult = true; *hasResultType = true; break;
  1990. case OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL: *hasResult = true; *hasResultType = true; break;
  1991. case OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL: *hasResult = true; *hasResultType = true; break;
  1992. case OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL: *hasResult = true; *hasResultType = true; break;
  1993. case OpSubgroupAvcMceConvertToImePayloadINTEL: *hasResult = true; *hasResultType = true; break;
  1994. case OpSubgroupAvcMceConvertToImeResultINTEL: *hasResult = true; *hasResultType = true; break;
  1995. case OpSubgroupAvcMceConvertToRefPayloadINTEL: *hasResult = true; *hasResultType = true; break;
  1996. case OpSubgroupAvcMceConvertToRefResultINTEL: *hasResult = true; *hasResultType = true; break;
  1997. case OpSubgroupAvcMceConvertToSicPayloadINTEL: *hasResult = true; *hasResultType = true; break;
  1998. case OpSubgroupAvcMceConvertToSicResultINTEL: *hasResult = true; *hasResultType = true; break;
  1999. case OpSubgroupAvcMceGetMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break;
  2000. case OpSubgroupAvcMceGetInterDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
  2001. case OpSubgroupAvcMceGetBestInterDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
  2002. case OpSubgroupAvcMceGetInterMajorShapeINTEL: *hasResult = true; *hasResultType = true; break;
  2003. case OpSubgroupAvcMceGetInterMinorShapeINTEL: *hasResult = true; *hasResultType = true; break;
  2004. case OpSubgroupAvcMceGetInterDirectionsINTEL: *hasResult = true; *hasResultType = true; break;
  2005. case OpSubgroupAvcMceGetInterMotionVectorCountINTEL: *hasResult = true; *hasResultType = true; break;
  2006. case OpSubgroupAvcMceGetInterReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break;
  2007. case OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL: *hasResult = true; *hasResultType = true; break;
  2008. case OpSubgroupAvcImeInitializeINTEL: *hasResult = true; *hasResultType = true; break;
  2009. case OpSubgroupAvcImeSetSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
  2010. case OpSubgroupAvcImeSetDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
  2011. case OpSubgroupAvcImeRefWindowSizeINTEL: *hasResult = true; *hasResultType = true; break;
  2012. case OpSubgroupAvcImeAdjustRefOffsetINTEL: *hasResult = true; *hasResultType = true; break;
  2013. case OpSubgroupAvcImeConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break;
  2014. case OpSubgroupAvcImeSetMaxMotionVectorCountINTEL: *hasResult = true; *hasResultType = true; break;
  2015. case OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL: *hasResult = true; *hasResultType = true; break;
  2016. case OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL: *hasResult = true; *hasResultType = true; break;
  2017. case OpSubgroupAvcImeSetWeightedSadINTEL: *hasResult = true; *hasResultType = true; break;
  2018. case OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
  2019. case OpSubgroupAvcImeEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
  2020. case OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
  2021. case OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
  2022. case OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
  2023. case OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
  2024. case OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL: *hasResult = true; *hasResultType = true; break;
  2025. case OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL: *hasResult = true; *hasResultType = true; break;
  2026. case OpSubgroupAvcImeConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break;
  2027. case OpSubgroupAvcImeGetSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
  2028. case OpSubgroupAvcImeGetDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
  2029. case OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
  2030. case OpSubgroupAvcImeStripDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
  2031. case OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break;
  2032. case OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
  2033. case OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break;
  2034. case OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break;
  2035. case OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
  2036. case OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break;
  2037. case OpSubgroupAvcImeGetBorderReachedINTEL: *hasResult = true; *hasResultType = true; break;
  2038. case OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL: *hasResult = true; *hasResultType = true; break;
  2039. case OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL: *hasResult = true; *hasResultType = true; break;
  2040. case OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL: *hasResult = true; *hasResultType = true; break;
  2041. case OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL: *hasResult = true; *hasResultType = true; break;
  2042. case OpSubgroupAvcFmeInitializeINTEL: *hasResult = true; *hasResultType = true; break;
  2043. case OpSubgroupAvcBmeInitializeINTEL: *hasResult = true; *hasResultType = true; break;
  2044. case OpSubgroupAvcRefConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break;
  2045. case OpSubgroupAvcRefSetBidirectionalMixDisableINTEL: *hasResult = true; *hasResultType = true; break;
  2046. case OpSubgroupAvcRefSetBilinearFilterEnableINTEL: *hasResult = true; *hasResultType = true; break;
  2047. case OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
  2048. case OpSubgroupAvcRefEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
  2049. case OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL: *hasResult = true; *hasResultType = true; break;
  2050. case OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL: *hasResult = true; *hasResultType = true; break;
  2051. case OpSubgroupAvcRefConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break;
  2052. case OpSubgroupAvcSicInitializeINTEL: *hasResult = true; *hasResultType = true; break;
  2053. case OpSubgroupAvcSicConfigureSkcINTEL: *hasResult = true; *hasResultType = true; break;
  2054. case OpSubgroupAvcSicConfigureIpeLumaINTEL: *hasResult = true; *hasResultType = true; break;
  2055. case OpSubgroupAvcSicConfigureIpeLumaChromaINTEL: *hasResult = true; *hasResultType = true; break;
  2056. case OpSubgroupAvcSicGetMotionVectorMaskINTEL: *hasResult = true; *hasResultType = true; break;
  2057. case OpSubgroupAvcSicConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break;
  2058. case OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
  2059. case OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL: *hasResult = true; *hasResultType = true; break;
  2060. case OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL: *hasResult = true; *hasResultType = true; break;
  2061. case OpSubgroupAvcSicSetBilinearFilterEnableINTEL: *hasResult = true; *hasResultType = true; break;
  2062. case OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL: *hasResult = true; *hasResultType = true; break;
  2063. case OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL: *hasResult = true; *hasResultType = true; break;
  2064. case OpSubgroupAvcSicEvaluateIpeINTEL: *hasResult = true; *hasResultType = true; break;
  2065. case OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
  2066. case OpSubgroupAvcSicEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
  2067. case OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL: *hasResult = true; *hasResultType = true; break;
  2068. case OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL: *hasResult = true; *hasResultType = true; break;
  2069. case OpSubgroupAvcSicConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break;
  2070. case OpSubgroupAvcSicGetIpeLumaShapeINTEL: *hasResult = true; *hasResultType = true; break;
  2071. case OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL: *hasResult = true; *hasResultType = true; break;
  2072. case OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL: *hasResult = true; *hasResultType = true; break;
  2073. case OpSubgroupAvcSicGetPackedIpeLumaModesINTEL: *hasResult = true; *hasResultType = true; break;
  2074. case OpSubgroupAvcSicGetIpeChromaModeINTEL: *hasResult = true; *hasResultType = true; break;
  2075. case OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL: *hasResult = true; *hasResultType = true; break;
  2076. case OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL: *hasResult = true; *hasResultType = true; break;
  2077. case OpSubgroupAvcSicGetInterRawSadsINTEL: *hasResult = true; *hasResultType = true; break;
  2078. case OpLoopControlINTEL: *hasResult = false; *hasResultType = false; break;
  2079. case OpReadPipeBlockingINTEL: *hasResult = true; *hasResultType = true; break;
  2080. case OpWritePipeBlockingINTEL: *hasResult = true; *hasResultType = true; break;
  2081. case OpFPGARegINTEL: *hasResult = true; *hasResultType = true; break;
  2082. case OpRayQueryGetRayTMinKHR: *hasResult = true; *hasResultType = true; break;
  2083. case OpRayQueryGetRayFlagsKHR: *hasResult = true; *hasResultType = true; break;
  2084. case OpRayQueryGetIntersectionTKHR: *hasResult = true; *hasResultType = true; break;
  2085. case OpRayQueryGetIntersectionInstanceCustomIndexKHR: *hasResult = true; *hasResultType = true; break;
  2086. case OpRayQueryGetIntersectionInstanceIdKHR: *hasResult = true; *hasResultType = true; break;
  2087. case OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR: *hasResult = true; *hasResultType = true; break;
  2088. case OpRayQueryGetIntersectionGeometryIndexKHR: *hasResult = true; *hasResultType = true; break;
  2089. case OpRayQueryGetIntersectionPrimitiveIndexKHR: *hasResult = true; *hasResultType = true; break;
  2090. case OpRayQueryGetIntersectionBarycentricsKHR: *hasResult = true; *hasResultType = true; break;
  2091. case OpRayQueryGetIntersectionFrontFaceKHR: *hasResult = true; *hasResultType = true; break;
  2092. case OpRayQueryGetIntersectionCandidateAABBOpaqueKHR: *hasResult = true; *hasResultType = true; break;
  2093. case OpRayQueryGetIntersectionObjectRayDirectionKHR: *hasResult = true; *hasResultType = true; break;
  2094. case OpRayQueryGetIntersectionObjectRayOriginKHR: *hasResult = true; *hasResultType = true; break;
  2095. case OpRayQueryGetWorldRayDirectionKHR: *hasResult = true; *hasResultType = true; break;
  2096. case OpRayQueryGetWorldRayOriginKHR: *hasResult = true; *hasResultType = true; break;
  2097. case OpRayQueryGetIntersectionObjectToWorldKHR: *hasResult = true; *hasResultType = true; break;
  2098. case OpRayQueryGetIntersectionWorldToObjectKHR: *hasResult = true; *hasResultType = true; break;
  2099. case OpAtomicFAddEXT: *hasResult = true; *hasResultType = true; break;
  2100. }
  2101. }
  2102. #endif /* SPV_ENABLE_UTILITY_CODE */
  2103. // Overload operator| for mask bit combining
  2104. inline ImageOperandsMask operator|(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) | unsigned(b)); }
  2105. inline FPFastMathModeMask operator|(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) | unsigned(b)); }
  2106. inline SelectionControlMask operator|(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) | unsigned(b)); }
  2107. inline LoopControlMask operator|(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) | unsigned(b)); }
  2108. inline FunctionControlMask operator|(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) | unsigned(b)); }
  2109. inline MemorySemanticsMask operator|(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) | unsigned(b)); }
  2110. inline MemoryAccessMask operator|(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) | unsigned(b)); }
  2111. inline KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) | unsigned(b)); }
  2112. inline RayFlagsMask operator|(RayFlagsMask a, RayFlagsMask b) { return RayFlagsMask(unsigned(a) | unsigned(b)); }
  2113. } // end namespace spv
  2114. #endif // #ifndef spirv_HPP