spirv.hpp 93 KB

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