spirv.hpp 100 KB

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