2 // Copyright (C) 2014-2015 LunarG, Inc.
4 // All rights reserved.
6 // Redistribution and use in source and binary forms, with or without
7 // modification, are permitted provided that the following conditions
10 // Redistributions of source code must retain the above copyright
11 // notice, this list of conditions and the following disclaimer.
13 // Redistributions in binary form must reproduce the above
14 // copyright notice, this list of conditions and the following
15 // disclaimer in the documentation and/or other materials provided
16 // with the distribution.
18 // Neither the name of 3Dlabs Inc. Ltd. nor the names of its
19 // contributors may be used to endorse or promote products derived
20 // from this software without specific prior written permission.
22 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
25 // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
26 // COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
27 // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
28 // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
29 // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
30 // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
32 // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
33 // POSSIBILITY OF SUCH DAMAGE.
36 // 1) Programmatically fill in instruction/operand information.
37 // This can be used for disassembly, printing documentation, etc.
39 // 2) Print documentation from this parameterization.
50 // Include C-based headers that don't have a namespace
51 #include "GLSL.ext.KHR.h"
52 #include "GLSL.ext.EXT.h"
54 #include "GLSL.ext.AMD.h"
57 #include "GLSL.ext.NV.h"
65 // Whole set of functions that translate enumerants to their text strings for
66 // the specification (or their sanitized versions for auto-generating the
69 // Also, for masks the ceilings are declared next to these, to help keep them in sync.
71 // - one more than the maximum value an enumerant takes on, for non-mask enumerants
72 // (for non-sparse enums, this is the number of enumerants)
73 // - the number of bits consumed by the set of masks
74 // (for non-sparse mask enums, this is the number of enumerants)
77 const char* SourceString(int source)
80 case 0: return "Unknown";
81 case 1: return "ESSL";
82 case 2: return "GLSL";
83 case 3: return "OpenCL_C";
84 case 4: return "OpenCL_CPP";
85 case 5: return "HLSL";
87 default: return "Bad";
91 const char* ExecutionModelString(int model)
94 case 0: return "Vertex";
95 case 1: return "TessellationControl";
96 case 2: return "TessellationEvaluation";
97 case 3: return "Geometry";
98 case 4: return "Fragment";
99 case 5: return "GLCompute";
100 case 6: return "Kernel";
102 default: return "Bad";
106 const char* AddressingString(int addr)
109 case 0: return "Logical";
110 case 1: return "Physical32";
111 case 2: return "Physical64";
113 default: return "Bad";
117 const char* MemoryString(int mem)
120 case MemoryModelSimple: return "Simple";
121 case MemoryModelGLSL450: return "GLSL450";
122 case MemoryModelOpenCL: return "OpenCL";
123 case MemoryModelVulkanKHR: return "VulkanKHR";
125 default: return "Bad";
129 const int ExecutionModeCeiling = 33;
131 const char* ExecutionModeString(int mode)
134 case 0: return "Invocations";
135 case 1: return "SpacingEqual";
136 case 2: return "SpacingFractionalEven";
137 case 3: return "SpacingFractionalOdd";
138 case 4: return "VertexOrderCw";
139 case 5: return "VertexOrderCcw";
140 case 6: return "PixelCenterInteger";
141 case 7: return "OriginUpperLeft";
142 case 8: return "OriginLowerLeft";
143 case 9: return "EarlyFragmentTests";
144 case 10: return "PointMode";
145 case 11: return "Xfb";
146 case 12: return "DepthReplacing";
147 case 13: return "Bad";
148 case 14: return "DepthGreater";
149 case 15: return "DepthLess";
150 case 16: return "DepthUnchanged";
151 case 17: return "LocalSize";
152 case 18: return "LocalSizeHint";
153 case 19: return "InputPoints";
154 case 20: return "InputLines";
155 case 21: return "InputLinesAdjacency";
156 case 22: return "Triangles";
157 case 23: return "InputTrianglesAdjacency";
158 case 24: return "Quads";
159 case 25: return "Isolines";
160 case 26: return "OutputVertices";
161 case 27: return "OutputPoints";
162 case 28: return "OutputLineStrip";
163 case 29: return "OutputTriangleStrip";
164 case 30: return "VecTypeHint";
165 case 31: return "ContractionOff";
166 case 32: return "Bad";
168 case 4446: return "PostDepthCoverage";
171 case ExecutionModeDerivativeGroupQuadsNV: return "DerivativeGroupQuadsNV";
172 case ExecutionModeDerivativeGroupLinearNV: return "DerivativeGroupLinearNV";
175 case ExecutionModeCeiling:
176 default: return "Bad";
180 const char* StorageClassString(int StorageClass)
182 switch (StorageClass) {
183 case 0: return "UniformConstant";
184 case 1: return "Input";
185 case 2: return "Uniform";
186 case 3: return "Output";
187 case 4: return "Workgroup";
188 case 5: return "CrossWorkgroup";
189 case 6: return "Private";
190 case 7: return "Function";
191 case 8: return "Generic";
192 case 9: return "PushConstant";
193 case 10: return "AtomicCounter";
194 case 11: return "Image";
195 case 12: return "StorageBuffer";
197 default: return "Bad";
201 const int DecorationCeiling = 45;
203 const char* DecorationString(int decoration)
205 switch (decoration) {
206 case 0: return "RelaxedPrecision";
207 case 1: return "SpecId";
208 case 2: return "Block";
209 case 3: return "BufferBlock";
210 case 4: return "RowMajor";
211 case 5: return "ColMajor";
212 case 6: return "ArrayStride";
213 case 7: return "MatrixStride";
214 case 8: return "GLSLShared";
215 case 9: return "GLSLPacked";
216 case 10: return "CPacked";
217 case 11: return "BuiltIn";
218 case 12: return "Bad";
219 case 13: return "NoPerspective";
220 case 14: return "Flat";
221 case 15: return "Patch";
222 case 16: return "Centroid";
223 case 17: return "Sample";
224 case 18: return "Invariant";
225 case 19: return "Restrict";
226 case 20: return "Aliased";
227 case 21: return "Volatile";
228 case 22: return "Constant";
229 case 23: return "Coherent";
230 case 24: return "NonWritable";
231 case 25: return "NonReadable";
232 case 26: return "Uniform";
233 case 27: return "Bad";
234 case 28: return "SaturatedConversion";
235 case 29: return "Stream";
236 case 30: return "Location";
237 case 31: return "Component";
238 case 32: return "Index";
239 case 33: return "Binding";
240 case 34: return "DescriptorSet";
241 case 35: return "Offset";
242 case 36: return "XfbBuffer";
243 case 37: return "XfbStride";
244 case 38: return "FuncParamAttr";
245 case 39: return "FP Rounding Mode";
246 case 40: return "FP Fast Math Mode";
247 case 41: return "Linkage Attributes";
248 case 42: return "NoContraction";
249 case 43: return "InputAttachmentIndex";
250 case 44: return "Alignment";
252 case DecorationCeiling:
253 default: return "Bad";
255 #ifdef AMD_EXTENSIONS
256 case DecorationExplicitInterpAMD: return "ExplicitInterpAMD";
259 case DecorationOverrideCoverageNV: return "OverrideCoverageNV";
260 case DecorationPassthroughNV: return "PassthroughNV";
261 case DecorationViewportRelativeNV: return "ViewportRelativeNV";
262 case DecorationSecondaryViewportRelativeNV: return "SecondaryViewportRelativeNV";
263 case DecorationPerVertexNV: return "PerVertexNV";
266 case DecorationNonUniformEXT: return "DecorationNonUniformEXT";
267 case DecorationHlslCounterBufferGOOGLE: return "DecorationHlslCounterBufferGOOGLE";
268 case DecorationHlslSemanticGOOGLE: return "DecorationHlslSemanticGOOGLE";
272 const char* BuiltInString(int builtIn)
275 case 0: return "Position";
276 case 1: return "PointSize";
277 case 2: return "Bad";
278 case 3: return "ClipDistance";
279 case 4: return "CullDistance";
280 case 5: return "VertexId";
281 case 6: return "InstanceId";
282 case 7: return "PrimitiveId";
283 case 8: return "InvocationId";
284 case 9: return "Layer";
285 case 10: return "ViewportIndex";
286 case 11: return "TessLevelOuter";
287 case 12: return "TessLevelInner";
288 case 13: return "TessCoord";
289 case 14: return "PatchVertices";
290 case 15: return "FragCoord";
291 case 16: return "PointCoord";
292 case 17: return "FrontFacing";
293 case 18: return "SampleId";
294 case 19: return "SamplePosition";
295 case 20: return "SampleMask";
296 case 21: return "Bad";
297 case 22: return "FragDepth";
298 case 23: return "HelperInvocation";
299 case 24: return "NumWorkgroups";
300 case 25: return "WorkgroupSize";
301 case 26: return "WorkgroupId";
302 case 27: return "LocalInvocationId";
303 case 28: return "GlobalInvocationId";
304 case 29: return "LocalInvocationIndex";
305 case 30: return "WorkDim";
306 case 31: return "GlobalSize";
307 case 32: return "EnqueuedWorkgroupSize";
308 case 33: return "GlobalOffset";
309 case 34: return "GlobalLinearId";
310 case 35: return "Bad";
311 case 36: return "SubgroupSize";
312 case 37: return "SubgroupMaxSize";
313 case 38: return "NumSubgroups";
314 case 39: return "NumEnqueuedSubgroups";
315 case 40: return "SubgroupId";
316 case 41: return "SubgroupLocalInvocationId";
317 case 42: return "VertexIndex"; // TBD: put next to VertexId?
318 case 43: return "InstanceIndex"; // TBD: put next to InstanceId?
320 case 4416: return "SubgroupEqMaskKHR";
321 case 4417: return "SubgroupGeMaskKHR";
322 case 4418: return "SubgroupGtMaskKHR";
323 case 4419: return "SubgroupLeMaskKHR";
324 case 4420: return "SubgroupLtMaskKHR";
325 case 4438: return "DeviceIndex";
326 case 4440: return "ViewIndex";
327 case 4424: return "BaseVertex";
328 case 4425: return "BaseInstance";
329 case 4426: return "DrawIndex";
330 case 5014: return "FragStencilRefEXT";
332 #ifdef AMD_EXTENSIONS
333 case 4992: return "BaryCoordNoPerspAMD";
334 case 4993: return "BaryCoordNoPerspCentroidAMD";
335 case 4994: return "BaryCoordNoPerspSampleAMD";
336 case 4995: return "BaryCoordSmoothAMD";
337 case 4996: return "BaryCoordSmoothCentroidAMD";
338 case 4997: return "BaryCoordSmoothSampleAMD";
339 case 4998: return "BaryCoordPullModelAMD";
343 case 5253: return "ViewportMaskNV";
344 case 5257: return "SecondaryPositionNV";
345 case 5258: return "SecondaryViewportMaskNV";
346 case 5261: return "PositionPerViewNV";
347 case 5262: return "ViewportMaskPerViewNV";
348 case BuiltInBaryCoordNV: return "BaryCoordNV";
349 case BuiltInBaryCoordNoPerspNV: return "BaryCoordNoPerspNV";
352 case 5264: return "FullyCoveredEXT";
354 default: return "Bad";
358 const char* DimensionString(int dim)
364 case 3: return "Cube";
365 case 4: return "Rect";
366 case 5: return "Buffer";
367 case 6: return "SubpassData";
369 default: return "Bad";
373 const char* SamplerAddressingModeString(int mode)
376 case 0: return "None";
377 case 1: return "ClampToEdge";
378 case 2: return "Clamp";
379 case 3: return "Repeat";
380 case 4: return "RepeatMirrored";
382 default: return "Bad";
386 const char* SamplerFilterModeString(int mode)
389 case 0: return "Nearest";
390 case 1: return "Linear";
392 default: return "Bad";
396 const char* ImageFormatString(int format)
399 case 0: return "Unknown";
402 case 1: return "Rgba32f";
403 case 2: return "Rgba16f";
404 case 3: return "R32f";
405 case 4: return "Rgba8";
406 case 5: return "Rgba8Snorm";
409 case 6: return "Rg32f";
410 case 7: return "Rg16f";
411 case 8: return "R11fG11fB10f";
412 case 9: return "R16f";
413 case 10: return "Rgba16";
414 case 11: return "Rgb10A2";
415 case 12: return "Rg16";
416 case 13: return "Rg8";
417 case 14: return "R16";
418 case 15: return "R8";
419 case 16: return "Rgba16Snorm";
420 case 17: return "Rg16Snorm";
421 case 18: return "Rg8Snorm";
422 case 19: return "R16Snorm";
423 case 20: return "R8Snorm";
426 case 21: return "Rgba32i";
427 case 22: return "Rgba16i";
428 case 23: return "Rgba8i";
429 case 24: return "R32i";
432 case 25: return "Rg32i";
433 case 26: return "Rg16i";
434 case 27: return "Rg8i";
435 case 28: return "R16i";
436 case 29: return "R8i";
439 case 30: return "Rgba32ui";
440 case 31: return "Rgba16ui";
441 case 32: return "Rgba8ui";
442 case 33: return "R32ui";
445 case 34: return "Rgb10a2ui";
446 case 35: return "Rg32ui";
447 case 36: return "Rg16ui";
448 case 37: return "Rg8ui";
449 case 38: return "R16ui";
450 case 39: return "R8ui";
457 const char* ImageChannelOrderString(int format)
464 case 4: return "RGB";
465 case 5: return "RGBA";
466 case 6: return "BGRA";
467 case 7: return "ARGB";
468 case 8: return "Intensity";
469 case 9: return "Luminance";
470 case 10: return "Rx";
471 case 11: return "RGx";
472 case 12: return "RGBx";
473 case 13: return "Depth";
474 case 14: return "DepthStencil";
475 case 15: return "sRGB";
476 case 16: return "sRGBx";
477 case 17: return "sRGBA";
478 case 18: return "sBGRA";
485 const char* ImageChannelDataTypeString(int type)
489 case 0: return "SnormInt8";
490 case 1: return "SnormInt16";
491 case 2: return "UnormInt8";
492 case 3: return "UnormInt16";
493 case 4: return "UnormShort565";
494 case 5: return "UnormShort555";
495 case 6: return "UnormInt101010";
496 case 7: return "SignedInt8";
497 case 8: return "SignedInt16";
498 case 9: return "SignedInt32";
499 case 10: return "UnsignedInt8";
500 case 11: return "UnsignedInt16";
501 case 12: return "UnsignedInt32";
502 case 13: return "HalfFloat";
503 case 14: return "Float";
504 case 15: return "UnormInt24";
505 case 16: return "UnormInt101010_2";
512 const int ImageOperandsCeiling = 12;
514 const char* ImageOperandsString(int format)
517 case ImageOperandsBiasShift: return "Bias";
518 case ImageOperandsLodShift: return "Lod";
519 case ImageOperandsGradShift: return "Grad";
520 case ImageOperandsConstOffsetShift: return "ConstOffset";
521 case ImageOperandsOffsetShift: return "Offset";
522 case ImageOperandsConstOffsetsShift: return "ConstOffsets";
523 case ImageOperandsSampleShift: return "Sample";
524 case ImageOperandsMinLodShift: return "MinLod";
525 case ImageOperandsMakeTexelAvailableKHRShift: return "MakeTexelAvailableKHR";
526 case ImageOperandsMakeTexelVisibleKHRShift: return "MakeTexelVisibleKHR";
527 case ImageOperandsNonPrivateTexelKHRShift: return "NonPrivateTexelKHR";
528 case ImageOperandsVolatileTexelKHRShift: return "VolatileTexelKHR";
530 case ImageOperandsCeiling:
536 const char* FPFastMathString(int mode)
539 case 0: return "NotNaN";
540 case 1: return "NotInf";
541 case 2: return "NSZ";
542 case 3: return "AllowRecip";
543 case 4: return "Fast";
545 default: return "Bad";
549 const char* FPRoundingModeString(int mode)
552 case 0: return "RTE";
553 case 1: return "RTZ";
554 case 2: return "RTP";
555 case 3: return "RTN";
557 default: return "Bad";
561 const char* LinkageTypeString(int type)
564 case 0: return "Export";
565 case 1: return "Import";
567 default: return "Bad";
571 const char* FuncParamAttrString(int attr)
574 case 0: return "Zext";
575 case 1: return "Sext";
576 case 2: return "ByVal";
577 case 3: return "Sret";
578 case 4: return "NoAlias";
579 case 5: return "NoCapture";
580 case 6: return "NoWrite";
581 case 7: return "NoReadWrite";
583 default: return "Bad";
587 const char* AccessQualifierString(int attr)
590 case 0: return "ReadOnly";
591 case 1: return "WriteOnly";
592 case 2: return "ReadWrite";
594 default: return "Bad";
598 const int SelectControlCeiling = 2;
600 const char* SelectControlString(int cont)
603 case 0: return "Flatten";
604 case 1: return "DontFlatten";
606 case SelectControlCeiling:
607 default: return "Bad";
611 const int LoopControlCeiling = 4;
613 const char* LoopControlString(int cont)
616 case 0: return "Unroll";
617 case 1: return "DontUnroll";
618 case 2: return "DependencyInfinite";
619 case 3: return "DependencyLength";
621 case LoopControlCeiling:
622 default: return "Bad";
626 const int FunctionControlCeiling = 4;
628 const char* FunctionControlString(int cont)
631 case 0: return "Inline";
632 case 1: return "DontInline";
633 case 2: return "Pure";
634 case 3: return "Const";
636 case FunctionControlCeiling:
637 default: return "Bad";
641 const char* MemorySemanticsString(int mem)
643 // Note: No bits set (None) means "Relaxed"
645 case 0: return "Bad"; // Note: this is a placeholder for 'Consume'
646 case 1: return "Acquire";
647 case 2: return "Release";
648 case 3: return "AcquireRelease";
649 case 4: return "SequentiallyConsistent";
650 case 5: return "Bad"; // Note: reserved for future expansion
651 case 6: return "UniformMemory";
652 case 7: return "SubgroupMemory";
653 case 8: return "WorkgroupMemory";
654 case 9: return "CrossWorkgroupMemory";
655 case 10: return "AtomicCounterMemory";
656 case 11: return "ImageMemory";
658 default: return "Bad";
662 const int MemoryAccessCeiling = 6;
664 const char* MemoryAccessString(int mem)
667 case MemoryAccessVolatileShift: return "Volatile";
668 case MemoryAccessAlignedShift: return "Aligned";
669 case MemoryAccessNontemporalShift: return "Nontemporal";
670 case MemoryAccessMakePointerAvailableKHRShift: return "MakePointerAvailableKHR";
671 case MemoryAccessMakePointerVisibleKHRShift: return "MakePointerVisibleKHR";
672 case MemoryAccessNonPrivatePointerKHRShift: return "NonPrivatePointerKHR";
674 default: return "Bad";
678 const char* ScopeString(int mem)
681 case 0: return "CrossDevice";
682 case 1: return "Device";
683 case 2: return "Workgroup";
684 case 3: return "Subgroup";
685 case 4: return "Invocation";
687 default: return "Bad";
691 const char* GroupOperationString(int gop)
696 case GroupOperationReduce: return "Reduce";
697 case GroupOperationInclusiveScan: return "InclusiveScan";
698 case GroupOperationExclusiveScan: return "ExclusiveScan";
699 case GroupOperationClusteredReduce: return "ClusteredReduce";
701 case GroupOperationPartitionedReduceNV: return "PartitionedReduceNV";
702 case GroupOperationPartitionedInclusiveScanNV: return "PartitionedInclusiveScanNV";
703 case GroupOperationPartitionedExclusiveScanNV: return "PartitionedExclusiveScanNV";
706 default: return "Bad";
710 const char* KernelEnqueueFlagsString(int flag)
714 case 0: return "NoWait";
715 case 1: return "WaitKernel";
716 case 2: return "WaitWorkGroup";
718 default: return "Bad";
722 const char* KernelProfilingInfoString(int info)
726 case 0: return "CmdExecTime";
728 default: return "Bad";
732 const char* CapabilityString(int info)
736 case 0: return "Matrix";
737 case 1: return "Shader";
738 case 2: return "Geometry";
739 case 3: return "Tessellation";
740 case 4: return "Addresses";
741 case 5: return "Linkage";
742 case 6: return "Kernel";
743 case 7: return "Vector16";
744 case 8: return "Float16Buffer";
745 case 9: return "Float16";
746 case 10: return "Float64";
747 case 11: return "Int64";
748 case 12: return "Int64Atomics";
749 case 13: return "ImageBasic";
750 case 14: return "ImageReadWrite";
751 case 15: return "ImageMipmap";
752 case 16: return "Bad";
753 case 17: return "Pipes";
754 case 18: return "Groups";
755 case 19: return "DeviceEnqueue";
756 case 20: return "LiteralSampler";
757 case 21: return "AtomicStorage";
758 case 22: return "Int16";
759 case 23: return "TessellationPointSize";
760 case 24: return "GeometryPointSize";
761 case 25: return "ImageGatherExtended";
762 case 26: return "Bad";
763 case 27: return "StorageImageMultisample";
764 case 28: return "UniformBufferArrayDynamicIndexing";
765 case 29: return "SampledImageArrayDynamicIndexing";
766 case 30: return "StorageBufferArrayDynamicIndexing";
767 case 31: return "StorageImageArrayDynamicIndexing";
768 case 32: return "ClipDistance";
769 case 33: return "CullDistance";
770 case 34: return "ImageCubeArray";
771 case 35: return "SampleRateShading";
772 case 36: return "ImageRect";
773 case 37: return "SampledRect";
774 case 38: return "GenericPointer";
775 case 39: return "Int8";
776 case 40: return "InputAttachment";
777 case 41: return "SparseResidency";
778 case 42: return "MinLod";
779 case 43: return "Sampled1D";
780 case 44: return "Image1D";
781 case 45: return "SampledCubeArray";
782 case 46: return "SampledBuffer";
783 case 47: return "ImageBuffer";
784 case 48: return "ImageMSArray";
785 case 49: return "StorageImageExtendedFormats";
786 case 50: return "ImageQuery";
787 case 51: return "DerivativeControl";
788 case 52: return "InterpolationFunction";
789 case 53: return "TransformFeedback";
790 case 54: return "GeometryStreams";
791 case 55: return "StorageImageReadWithoutFormat";
792 case 56: return "StorageImageWriteWithoutFormat";
793 case 57: return "MultiViewport";
794 case 61: return "GroupNonUniform";
795 case 62: return "GroupNonUniformVote";
796 case 63: return "GroupNonUniformArithmetic";
797 case 64: return "GroupNonUniformBallot";
798 case 65: return "GroupNonUniformShuffle";
799 case 66: return "GroupNonUniformShuffleRelative";
800 case 67: return "GroupNonUniformClustered";
801 case 68: return "GroupNonUniformQuad";
803 case CapabilitySubgroupBallotKHR: return "SubgroupBallotKHR";
804 case CapabilityDrawParameters: return "DrawParameters";
805 case CapabilitySubgroupVoteKHR: return "SubgroupVoteKHR";
807 case CapabilityStorageUniformBufferBlock16: return "StorageUniformBufferBlock16";
808 case CapabilityStorageUniform16: return "StorageUniform16";
809 case CapabilityStoragePushConstant16: return "StoragePushConstant16";
810 case CapabilityStorageInputOutput16: return "StorageInputOutput16";
812 case CapabilityStorageBuffer8BitAccess: return "CapabilityStorageBuffer8BitAccess";
813 case CapabilityUniformAndStorageBuffer8BitAccess: return "CapabilityUniformAndStorageBuffer8BitAccess";
814 case CapabilityStoragePushConstant8: return "CapabilityStoragePushConstant8";
816 case CapabilityDeviceGroup: return "DeviceGroup";
817 case CapabilityMultiView: return "MultiView";
819 case CapabilityStencilExportEXT: return "StencilExportEXT";
821 #ifdef AMD_EXTENSIONS
822 case CapabilityFloat16ImageAMD: return "Float16ImageAMD";
823 case CapabilityImageGatherBiasLodAMD: return "ImageGatherBiasLodAMD";
824 case CapabilityFragmentMaskAMD: return "FragmentMaskAMD";
825 case CapabilityImageReadWriteLodAMD: return "ImageReadWriteLodAMD";
828 case CapabilityAtomicStorageOps: return "AtomicStorageOps";
830 case CapabilitySampleMaskPostDepthCoverage: return "SampleMaskPostDepthCoverage";
832 case CapabilityGeometryShaderPassthroughNV: return "GeometryShaderPassthroughNV";
833 case CapabilityShaderViewportIndexLayerNV: return "ShaderViewportIndexLayerNV";
834 case CapabilityShaderViewportMaskNV: return "ShaderViewportMaskNV";
835 case CapabilityShaderStereoViewNV: return "ShaderStereoViewNV";
836 case CapabilityPerViewAttributesNV: return "PerViewAttributesNV";
837 case CapabilityGroupNonUniformPartitionedNV: return "GroupNonUniformPartitionedNV";
838 case CapabilityComputeDerivativeGroupQuadsNV: return "ComputeDerivativeGroupQuadsNV";
839 case CapabilityComputeDerivativeGroupLinearNV: return "ComputeDerivativeGroupLinearNV";
840 case CapabilityFragmentBarycentricNV: return "FragmentBarycentricNV";
843 case CapabilityFragmentFullyCoveredEXT: return "FragmentFullyCoveredEXT";
845 case CapabilityShaderNonUniformEXT: return "CapabilityShaderNonUniformEXT";
846 case CapabilityRuntimeDescriptorArrayEXT: return "CapabilityRuntimeDescriptorArrayEXT";
847 case CapabilityInputAttachmentArrayDynamicIndexingEXT: return "CapabilityInputAttachmentArrayDynamicIndexingEXT";
848 case CapabilityUniformTexelBufferArrayDynamicIndexingEXT: return "CapabilityUniformTexelBufferArrayDynamicIndexingEXT";
849 case CapabilityStorageTexelBufferArrayDynamicIndexingEXT: return "CapabilityStorageTexelBufferArrayDynamicIndexingEXT";
850 case CapabilityUniformBufferArrayNonUniformIndexingEXT: return "CapabilityUniformBufferArrayNonUniformIndexingEXT";
851 case CapabilitySampledImageArrayNonUniformIndexingEXT: return "CapabilitySampledImageArrayNonUniformIndexingEXT";
852 case CapabilityStorageBufferArrayNonUniformIndexingEXT: return "CapabilityStorageBufferArrayNonUniformIndexingEXT";
853 case CapabilityStorageImageArrayNonUniformIndexingEXT: return "CapabilityStorageImageArrayNonUniformIndexingEXT";
854 case CapabilityInputAttachmentArrayNonUniformIndexingEXT: return "CapabilityInputAttachmentArrayNonUniformIndexingEXT";
855 case CapabilityUniformTexelBufferArrayNonUniformIndexingEXT: return "CapabilityUniformTexelBufferArrayNonUniformIndexingEXT";
856 case CapabilityStorageTexelBufferArrayNonUniformIndexingEXT: return "CapabilityStorageTexelBufferArrayNonUniformIndexingEXT";
858 case CapabilityVulkanMemoryModelKHR: return "CapabilityVulkanMemoryModelKHR";
859 case CapabilityVulkanMemoryModelDeviceScopeKHR: return "CapabilityVulkanMemoryModelDeviceScopeKHR";
861 default: return "Bad";
865 const char* OpcodeString(int op)
868 case 0: return "OpNop";
869 case 1: return "OpUndef";
870 case 2: return "OpSourceContinued";
871 case 3: return "OpSource";
872 case 4: return "OpSourceExtension";
873 case 5: return "OpName";
874 case 6: return "OpMemberName";
875 case 7: return "OpString";
876 case 8: return "OpLine";
877 case 9: return "Bad";
878 case 10: return "OpExtension";
879 case 11: return "OpExtInstImport";
880 case 12: return "OpExtInst";
881 case 13: return "Bad";
882 case 14: return "OpMemoryModel";
883 case 15: return "OpEntryPoint";
884 case 16: return "OpExecutionMode";
885 case 17: return "OpCapability";
886 case 18: return "Bad";
887 case 19: return "OpTypeVoid";
888 case 20: return "OpTypeBool";
889 case 21: return "OpTypeInt";
890 case 22: return "OpTypeFloat";
891 case 23: return "OpTypeVector";
892 case 24: return "OpTypeMatrix";
893 case 25: return "OpTypeImage";
894 case 26: return "OpTypeSampler";
895 case 27: return "OpTypeSampledImage";
896 case 28: return "OpTypeArray";
897 case 29: return "OpTypeRuntimeArray";
898 case 30: return "OpTypeStruct";
899 case 31: return "OpTypeOpaque";
900 case 32: return "OpTypePointer";
901 case 33: return "OpTypeFunction";
902 case 34: return "OpTypeEvent";
903 case 35: return "OpTypeDeviceEvent";
904 case 36: return "OpTypeReserveId";
905 case 37: return "OpTypeQueue";
906 case 38: return "OpTypePipe";
907 case 39: return "OpTypeForwardPointer";
908 case 40: return "Bad";
909 case 41: return "OpConstantTrue";
910 case 42: return "OpConstantFalse";
911 case 43: return "OpConstant";
912 case 44: return "OpConstantComposite";
913 case 45: return "OpConstantSampler";
914 case 46: return "OpConstantNull";
915 case 47: return "Bad";
916 case 48: return "OpSpecConstantTrue";
917 case 49: return "OpSpecConstantFalse";
918 case 50: return "OpSpecConstant";
919 case 51: return "OpSpecConstantComposite";
920 case 52: return "OpSpecConstantOp";
921 case 53: return "Bad";
922 case 54: return "OpFunction";
923 case 55: return "OpFunctionParameter";
924 case 56: return "OpFunctionEnd";
925 case 57: return "OpFunctionCall";
926 case 58: return "Bad";
927 case 59: return "OpVariable";
928 case 60: return "OpImageTexelPointer";
929 case 61: return "OpLoad";
930 case 62: return "OpStore";
931 case 63: return "OpCopyMemory";
932 case 64: return "OpCopyMemorySized";
933 case 65: return "OpAccessChain";
934 case 66: return "OpInBoundsAccessChain";
935 case 67: return "OpPtrAccessChain";
936 case 68: return "OpArrayLength";
937 case 69: return "OpGenericPtrMemSemantics";
938 case 70: return "OpInBoundsPtrAccessChain";
939 case 71: return "OpDecorate";
940 case 72: return "OpMemberDecorate";
941 case 73: return "OpDecorationGroup";
942 case 74: return "OpGroupDecorate";
943 case 75: return "OpGroupMemberDecorate";
944 case 76: return "Bad";
945 case 77: return "OpVectorExtractDynamic";
946 case 78: return "OpVectorInsertDynamic";
947 case 79: return "OpVectorShuffle";
948 case 80: return "OpCompositeConstruct";
949 case 81: return "OpCompositeExtract";
950 case 82: return "OpCompositeInsert";
951 case 83: return "OpCopyObject";
952 case 84: return "OpTranspose";
953 case 85: return "Bad";
954 case 86: return "OpSampledImage";
955 case 87: return "OpImageSampleImplicitLod";
956 case 88: return "OpImageSampleExplicitLod";
957 case 89: return "OpImageSampleDrefImplicitLod";
958 case 90: return "OpImageSampleDrefExplicitLod";
959 case 91: return "OpImageSampleProjImplicitLod";
960 case 92: return "OpImageSampleProjExplicitLod";
961 case 93: return "OpImageSampleProjDrefImplicitLod";
962 case 94: return "OpImageSampleProjDrefExplicitLod";
963 case 95: return "OpImageFetch";
964 case 96: return "OpImageGather";
965 case 97: return "OpImageDrefGather";
966 case 98: return "OpImageRead";
967 case 99: return "OpImageWrite";
968 case 100: return "OpImage";
969 case 101: return "OpImageQueryFormat";
970 case 102: return "OpImageQueryOrder";
971 case 103: return "OpImageQuerySizeLod";
972 case 104: return "OpImageQuerySize";
973 case 105: return "OpImageQueryLod";
974 case 106: return "OpImageQueryLevels";
975 case 107: return "OpImageQuerySamples";
976 case 108: return "Bad";
977 case 109: return "OpConvertFToU";
978 case 110: return "OpConvertFToS";
979 case 111: return "OpConvertSToF";
980 case 112: return "OpConvertUToF";
981 case 113: return "OpUConvert";
982 case 114: return "OpSConvert";
983 case 115: return "OpFConvert";
984 case 116: return "OpQuantizeToF16";
985 case 117: return "OpConvertPtrToU";
986 case 118: return "OpSatConvertSToU";
987 case 119: return "OpSatConvertUToS";
988 case 120: return "OpConvertUToPtr";
989 case 121: return "OpPtrCastToGeneric";
990 case 122: return "OpGenericCastToPtr";
991 case 123: return "OpGenericCastToPtrExplicit";
992 case 124: return "OpBitcast";
993 case 125: return "Bad";
994 case 126: return "OpSNegate";
995 case 127: return "OpFNegate";
996 case 128: return "OpIAdd";
997 case 129: return "OpFAdd";
998 case 130: return "OpISub";
999 case 131: return "OpFSub";
1000 case 132: return "OpIMul";
1001 case 133: return "OpFMul";
1002 case 134: return "OpUDiv";
1003 case 135: return "OpSDiv";
1004 case 136: return "OpFDiv";
1005 case 137: return "OpUMod";
1006 case 138: return "OpSRem";
1007 case 139: return "OpSMod";
1008 case 140: return "OpFRem";
1009 case 141: return "OpFMod";
1010 case 142: return "OpVectorTimesScalar";
1011 case 143: return "OpMatrixTimesScalar";
1012 case 144: return "OpVectorTimesMatrix";
1013 case 145: return "OpMatrixTimesVector";
1014 case 146: return "OpMatrixTimesMatrix";
1015 case 147: return "OpOuterProduct";
1016 case 148: return "OpDot";
1017 case 149: return "OpIAddCarry";
1018 case 150: return "OpISubBorrow";
1019 case 151: return "OpUMulExtended";
1020 case 152: return "OpSMulExtended";
1021 case 153: return "Bad";
1022 case 154: return "OpAny";
1023 case 155: return "OpAll";
1024 case 156: return "OpIsNan";
1025 case 157: return "OpIsInf";
1026 case 158: return "OpIsFinite";
1027 case 159: return "OpIsNormal";
1028 case 160: return "OpSignBitSet";
1029 case 161: return "OpLessOrGreater";
1030 case 162: return "OpOrdered";
1031 case 163: return "OpUnordered";
1032 case 164: return "OpLogicalEqual";
1033 case 165: return "OpLogicalNotEqual";
1034 case 166: return "OpLogicalOr";
1035 case 167: return "OpLogicalAnd";
1036 case 168: return "OpLogicalNot";
1037 case 169: return "OpSelect";
1038 case 170: return "OpIEqual";
1039 case 171: return "OpINotEqual";
1040 case 172: return "OpUGreaterThan";
1041 case 173: return "OpSGreaterThan";
1042 case 174: return "OpUGreaterThanEqual";
1043 case 175: return "OpSGreaterThanEqual";
1044 case 176: return "OpULessThan";
1045 case 177: return "OpSLessThan";
1046 case 178: return "OpULessThanEqual";
1047 case 179: return "OpSLessThanEqual";
1048 case 180: return "OpFOrdEqual";
1049 case 181: return "OpFUnordEqual";
1050 case 182: return "OpFOrdNotEqual";
1051 case 183: return "OpFUnordNotEqual";
1052 case 184: return "OpFOrdLessThan";
1053 case 185: return "OpFUnordLessThan";
1054 case 186: return "OpFOrdGreaterThan";
1055 case 187: return "OpFUnordGreaterThan";
1056 case 188: return "OpFOrdLessThanEqual";
1057 case 189: return "OpFUnordLessThanEqual";
1058 case 190: return "OpFOrdGreaterThanEqual";
1059 case 191: return "OpFUnordGreaterThanEqual";
1060 case 192: return "Bad";
1061 case 193: return "Bad";
1062 case 194: return "OpShiftRightLogical";
1063 case 195: return "OpShiftRightArithmetic";
1064 case 196: return "OpShiftLeftLogical";
1065 case 197: return "OpBitwiseOr";
1066 case 198: return "OpBitwiseXor";
1067 case 199: return "OpBitwiseAnd";
1068 case 200: return "OpNot";
1069 case 201: return "OpBitFieldInsert";
1070 case 202: return "OpBitFieldSExtract";
1071 case 203: return "OpBitFieldUExtract";
1072 case 204: return "OpBitReverse";
1073 case 205: return "OpBitCount";
1074 case 206: return "Bad";
1075 case 207: return "OpDPdx";
1076 case 208: return "OpDPdy";
1077 case 209: return "OpFwidth";
1078 case 210: return "OpDPdxFine";
1079 case 211: return "OpDPdyFine";
1080 case 212: return "OpFwidthFine";
1081 case 213: return "OpDPdxCoarse";
1082 case 214: return "OpDPdyCoarse";
1083 case 215: return "OpFwidthCoarse";
1084 case 216: return "Bad";
1085 case 217: return "Bad";
1086 case 218: return "OpEmitVertex";
1087 case 219: return "OpEndPrimitive";
1088 case 220: return "OpEmitStreamVertex";
1089 case 221: return "OpEndStreamPrimitive";
1090 case 222: return "Bad";
1091 case 223: return "Bad";
1092 case 224: return "OpControlBarrier";
1093 case 225: return "OpMemoryBarrier";
1094 case 226: return "Bad";
1095 case 227: return "OpAtomicLoad";
1096 case 228: return "OpAtomicStore";
1097 case 229: return "OpAtomicExchange";
1098 case 230: return "OpAtomicCompareExchange";
1099 case 231: return "OpAtomicCompareExchangeWeak";
1100 case 232: return "OpAtomicIIncrement";
1101 case 233: return "OpAtomicIDecrement";
1102 case 234: return "OpAtomicIAdd";
1103 case 235: return "OpAtomicISub";
1104 case 236: return "OpAtomicSMin";
1105 case 237: return "OpAtomicUMin";
1106 case 238: return "OpAtomicSMax";
1107 case 239: return "OpAtomicUMax";
1108 case 240: return "OpAtomicAnd";
1109 case 241: return "OpAtomicOr";
1110 case 242: return "OpAtomicXor";
1111 case 243: return "Bad";
1112 case 244: return "Bad";
1113 case 245: return "OpPhi";
1114 case 246: return "OpLoopMerge";
1115 case 247: return "OpSelectionMerge";
1116 case 248: return "OpLabel";
1117 case 249: return "OpBranch";
1118 case 250: return "OpBranchConditional";
1119 case 251: return "OpSwitch";
1120 case 252: return "OpKill";
1121 case 253: return "OpReturn";
1122 case 254: return "OpReturnValue";
1123 case 255: return "OpUnreachable";
1124 case 256: return "OpLifetimeStart";
1125 case 257: return "OpLifetimeStop";
1126 case 258: return "Bad";
1127 case 259: return "OpGroupAsyncCopy";
1128 case 260: return "OpGroupWaitEvents";
1129 case 261: return "OpGroupAll";
1130 case 262: return "OpGroupAny";
1131 case 263: return "OpGroupBroadcast";
1132 case 264: return "OpGroupIAdd";
1133 case 265: return "OpGroupFAdd";
1134 case 266: return "OpGroupFMin";
1135 case 267: return "OpGroupUMin";
1136 case 268: return "OpGroupSMin";
1137 case 269: return "OpGroupFMax";
1138 case 270: return "OpGroupUMax";
1139 case 271: return "OpGroupSMax";
1140 case 272: return "Bad";
1141 case 273: return "Bad";
1142 case 274: return "OpReadPipe";
1143 case 275: return "OpWritePipe";
1144 case 276: return "OpReservedReadPipe";
1145 case 277: return "OpReservedWritePipe";
1146 case 278: return "OpReserveReadPipePackets";
1147 case 279: return "OpReserveWritePipePackets";
1148 case 280: return "OpCommitReadPipe";
1149 case 281: return "OpCommitWritePipe";
1150 case 282: return "OpIsValidReserveId";
1151 case 283: return "OpGetNumPipePackets";
1152 case 284: return "OpGetMaxPipePackets";
1153 case 285: return "OpGroupReserveReadPipePackets";
1154 case 286: return "OpGroupReserveWritePipePackets";
1155 case 287: return "OpGroupCommitReadPipe";
1156 case 288: return "OpGroupCommitWritePipe";
1157 case 289: return "Bad";
1158 case 290: return "Bad";
1159 case 291: return "OpEnqueueMarker";
1160 case 292: return "OpEnqueueKernel";
1161 case 293: return "OpGetKernelNDrangeSubGroupCount";
1162 case 294: return "OpGetKernelNDrangeMaxSubGroupSize";
1163 case 295: return "OpGetKernelWorkGroupSize";
1164 case 296: return "OpGetKernelPreferredWorkGroupSizeMultiple";
1165 case 297: return "OpRetainEvent";
1166 case 298: return "OpReleaseEvent";
1167 case 299: return "OpCreateUserEvent";
1168 case 300: return "OpIsValidEvent";
1169 case 301: return "OpSetUserEventStatus";
1170 case 302: return "OpCaptureEventProfilingInfo";
1171 case 303: return "OpGetDefaultQueue";
1172 case 304: return "OpBuildNDRange";
1173 case 305: return "OpImageSparseSampleImplicitLod";
1174 case 306: return "OpImageSparseSampleExplicitLod";
1175 case 307: return "OpImageSparseSampleDrefImplicitLod";
1176 case 308: return "OpImageSparseSampleDrefExplicitLod";
1177 case 309: return "OpImageSparseSampleProjImplicitLod";
1178 case 310: return "OpImageSparseSampleProjExplicitLod";
1179 case 311: return "OpImageSparseSampleProjDrefImplicitLod";
1180 case 312: return "OpImageSparseSampleProjDrefExplicitLod";
1181 case 313: return "OpImageSparseFetch";
1182 case 314: return "OpImageSparseGather";
1183 case 315: return "OpImageSparseDrefGather";
1184 case 316: return "OpImageSparseTexelsResident";
1185 case 317: return "OpNoLine";
1186 case 318: return "OpAtomicFlagTestAndSet";
1187 case 319: return "OpAtomicFlagClear";
1188 case 320: return "OpImageSparseRead";
1190 case OpModuleProcessed: return "OpModuleProcessed";
1191 case OpDecorateId: return "OpDecorateId";
1193 case 333: return "OpGroupNonUniformElect";
1194 case 334: return "OpGroupNonUniformAll";
1195 case 335: return "OpGroupNonUniformAny";
1196 case 336: return "OpGroupNonUniformAllEqual";
1197 case 337: return "OpGroupNonUniformBroadcast";
1198 case 338: return "OpGroupNonUniformBroadcastFirst";
1199 case 339: return "OpGroupNonUniformBallot";
1200 case 340: return "OpGroupNonUniformInverseBallot";
1201 case 341: return "OpGroupNonUniformBallotBitExtract";
1202 case 342: return "OpGroupNonUniformBallotBitCount";
1203 case 343: return "OpGroupNonUniformBallotFindLSB";
1204 case 344: return "OpGroupNonUniformBallotFindMSB";
1205 case 345: return "OpGroupNonUniformShuffle";
1206 case 346: return "OpGroupNonUniformShuffleXor";
1207 case 347: return "OpGroupNonUniformShuffleUp";
1208 case 348: return "OpGroupNonUniformShuffleDown";
1209 case 349: return "OpGroupNonUniformIAdd";
1210 case 350: return "OpGroupNonUniformFAdd";
1211 case 351: return "OpGroupNonUniformIMul";
1212 case 352: return "OpGroupNonUniformFMul";
1213 case 353: return "OpGroupNonUniformSMin";
1214 case 354: return "OpGroupNonUniformUMin";
1215 case 355: return "OpGroupNonUniformFMin";
1216 case 356: return "OpGroupNonUniformSMax";
1217 case 357: return "OpGroupNonUniformUMax";
1218 case 358: return "OpGroupNonUniformFMax";
1219 case 359: return "OpGroupNonUniformBitwiseAnd";
1220 case 360: return "OpGroupNonUniformBitwiseOr";
1221 case 361: return "OpGroupNonUniformBitwiseXor";
1222 case 362: return "OpGroupNonUniformLogicalAnd";
1223 case 363: return "OpGroupNonUniformLogicalOr";
1224 case 364: return "OpGroupNonUniformLogicalXor";
1225 case 365: return "OpGroupNonUniformQuadBroadcast";
1226 case 366: return "OpGroupNonUniformQuadSwap";
1228 case 4421: return "OpSubgroupBallotKHR";
1229 case 4422: return "OpSubgroupFirstInvocationKHR";
1230 case 4428: return "OpSubgroupAllKHR";
1231 case 4429: return "OpSubgroupAnyKHR";
1232 case 4430: return "OpSubgroupAllEqualKHR";
1233 case 4432: return "OpSubgroupReadInvocationKHR";
1235 #ifdef AMD_EXTENSIONS
1236 case 5000: return "OpGroupIAddNonUniformAMD";
1237 case 5001: return "OpGroupFAddNonUniformAMD";
1238 case 5002: return "OpGroupFMinNonUniformAMD";
1239 case 5003: return "OpGroupUMinNonUniformAMD";
1240 case 5004: return "OpGroupSMinNonUniformAMD";
1241 case 5005: return "OpGroupFMaxNonUniformAMD";
1242 case 5006: return "OpGroupUMaxNonUniformAMD";
1243 case 5007: return "OpGroupSMaxNonUniformAMD";
1245 case 5011: return "OpFragmentMaskFetchAMD";
1246 case 5012: return "OpFragmentFetchAMD";
1249 case OpDecorateStringGOOGLE: return "OpDecorateStringGOOGLE";
1250 case OpMemberDecorateStringGOOGLE: return "OpMemberDecorateStringGOOGLE";
1252 #ifdef NV_EXTENSIONS
1253 case OpGroupNonUniformPartitionNV: return "OpGroupNonUniformPartitionNV";
1260 // The set of objects that hold all the instruction/operand
1261 // parameterization information.
1262 InstructionParameters InstructionDesc[OpCodeMask + 1];
1263 OperandParameters ExecutionModeOperands[ExecutionModeCeiling];
1264 OperandParameters DecorationOperands[DecorationCeiling];
1266 EnumDefinition OperandClassParams[OperandCount];
1267 EnumParameters ExecutionModeParams[ExecutionModeCeiling];
1268 EnumParameters ImageOperandsParams[ImageOperandsCeiling];
1269 EnumParameters DecorationParams[DecorationCeiling];
1270 EnumParameters LoopControlParams[FunctionControlCeiling];
1271 EnumParameters SelectionControlParams[SelectControlCeiling];
1272 EnumParameters FunctionControlParams[FunctionControlCeiling];
1273 EnumParameters MemoryAccessParams[MemoryAccessCeiling];
1275 // Set up all the parameterizing descriptions of the opcodes, operands, etc.
1278 // only do this once.
1279 static bool initialized = false;
1284 // Exceptions to having a result <id> and a resulting type <id>.
1285 // (Everything is initialized to have both).
1287 InstructionDesc[OpNop].setResultAndType(false, false);
1288 InstructionDesc[OpSource].setResultAndType(false, false);
1289 InstructionDesc[OpSourceContinued].setResultAndType(false, false);
1290 InstructionDesc[OpSourceExtension].setResultAndType(false, false);
1291 InstructionDesc[OpExtension].setResultAndType(false, false);
1292 InstructionDesc[OpExtInstImport].setResultAndType(true, false);
1293 InstructionDesc[OpCapability].setResultAndType(false, false);
1294 InstructionDesc[OpMemoryModel].setResultAndType(false, false);
1295 InstructionDesc[OpEntryPoint].setResultAndType(false, false);
1296 InstructionDesc[OpExecutionMode].setResultAndType(false, false);
1297 InstructionDesc[OpTypeVoid].setResultAndType(true, false);
1298 InstructionDesc[OpTypeBool].setResultAndType(true, false);
1299 InstructionDesc[OpTypeInt].setResultAndType(true, false);
1300 InstructionDesc[OpTypeFloat].setResultAndType(true, false);
1301 InstructionDesc[OpTypeVector].setResultAndType(true, false);
1302 InstructionDesc[OpTypeMatrix].setResultAndType(true, false);
1303 InstructionDesc[OpTypeImage].setResultAndType(true, false);
1304 InstructionDesc[OpTypeSampler].setResultAndType(true, false);
1305 InstructionDesc[OpTypeSampledImage].setResultAndType(true, false);
1306 InstructionDesc[OpTypeArray].setResultAndType(true, false);
1307 InstructionDesc[OpTypeRuntimeArray].setResultAndType(true, false);
1308 InstructionDesc[OpTypeStruct].setResultAndType(true, false);
1309 InstructionDesc[OpTypeOpaque].setResultAndType(true, false);
1310 InstructionDesc[OpTypePointer].setResultAndType(true, false);
1311 InstructionDesc[OpTypeForwardPointer].setResultAndType(false, false);
1312 InstructionDesc[OpTypeFunction].setResultAndType(true, false);
1313 InstructionDesc[OpTypeEvent].setResultAndType(true, false);
1314 InstructionDesc[OpTypeDeviceEvent].setResultAndType(true, false);
1315 InstructionDesc[OpTypeReserveId].setResultAndType(true, false);
1316 InstructionDesc[OpTypeQueue].setResultAndType(true, false);
1317 InstructionDesc[OpTypePipe].setResultAndType(true, false);
1318 InstructionDesc[OpFunctionEnd].setResultAndType(false, false);
1319 InstructionDesc[OpStore].setResultAndType(false, false);
1320 InstructionDesc[OpImageWrite].setResultAndType(false, false);
1321 InstructionDesc[OpDecorationGroup].setResultAndType(true, false);
1322 InstructionDesc[OpDecorate].setResultAndType(false, false);
1323 InstructionDesc[OpDecorateId].setResultAndType(false, false);
1324 InstructionDesc[OpDecorateStringGOOGLE].setResultAndType(false, false);
1325 InstructionDesc[OpMemberDecorate].setResultAndType(false, false);
1326 InstructionDesc[OpMemberDecorateStringGOOGLE].setResultAndType(false, false);
1327 InstructionDesc[OpGroupDecorate].setResultAndType(false, false);
1328 InstructionDesc[OpGroupMemberDecorate].setResultAndType(false, false);
1329 InstructionDesc[OpName].setResultAndType(false, false);
1330 InstructionDesc[OpMemberName].setResultAndType(false, false);
1331 InstructionDesc[OpString].setResultAndType(true, false);
1332 InstructionDesc[OpLine].setResultAndType(false, false);
1333 InstructionDesc[OpNoLine].setResultAndType(false, false);
1334 InstructionDesc[OpCopyMemory].setResultAndType(false, false);
1335 InstructionDesc[OpCopyMemorySized].setResultAndType(false, false);
1336 InstructionDesc[OpEmitVertex].setResultAndType(false, false);
1337 InstructionDesc[OpEndPrimitive].setResultAndType(false, false);
1338 InstructionDesc[OpEmitStreamVertex].setResultAndType(false, false);
1339 InstructionDesc[OpEndStreamPrimitive].setResultAndType(false, false);
1340 InstructionDesc[OpControlBarrier].setResultAndType(false, false);
1341 InstructionDesc[OpMemoryBarrier].setResultAndType(false, false);
1342 InstructionDesc[OpAtomicStore].setResultAndType(false, false);
1343 InstructionDesc[OpLoopMerge].setResultAndType(false, false);
1344 InstructionDesc[OpSelectionMerge].setResultAndType(false, false);
1345 InstructionDesc[OpLabel].setResultAndType(true, false);
1346 InstructionDesc[OpBranch].setResultAndType(false, false);
1347 InstructionDesc[OpBranchConditional].setResultAndType(false, false);
1348 InstructionDesc[OpSwitch].setResultAndType(false, false);
1349 InstructionDesc[OpKill].setResultAndType(false, false);
1350 InstructionDesc[OpReturn].setResultAndType(false, false);
1351 InstructionDesc[OpReturnValue].setResultAndType(false, false);
1352 InstructionDesc[OpUnreachable].setResultAndType(false, false);
1353 InstructionDesc[OpLifetimeStart].setResultAndType(false, false);
1354 InstructionDesc[OpLifetimeStop].setResultAndType(false, false);
1355 InstructionDesc[OpCommitReadPipe].setResultAndType(false, false);
1356 InstructionDesc[OpCommitWritePipe].setResultAndType(false, false);
1357 InstructionDesc[OpGroupCommitWritePipe].setResultAndType(false, false);
1358 InstructionDesc[OpGroupCommitReadPipe].setResultAndType(false, false);
1359 InstructionDesc[OpCaptureEventProfilingInfo].setResultAndType(false, false);
1360 InstructionDesc[OpSetUserEventStatus].setResultAndType(false, false);
1361 InstructionDesc[OpRetainEvent].setResultAndType(false, false);
1362 InstructionDesc[OpReleaseEvent].setResultAndType(false, false);
1363 InstructionDesc[OpGroupWaitEvents].setResultAndType(false, false);
1364 InstructionDesc[OpAtomicFlagClear].setResultAndType(false, false);
1365 InstructionDesc[OpModuleProcessed].setResultAndType(false, false);
1367 // Specific additional context-dependent operands
1369 ExecutionModeOperands[ExecutionModeInvocations].push(OperandLiteralNumber, "'Number of <<Invocation,invocations>>'");
1371 ExecutionModeOperands[ExecutionModeLocalSize].push(OperandLiteralNumber, "'x size'");
1372 ExecutionModeOperands[ExecutionModeLocalSize].push(OperandLiteralNumber, "'y size'");
1373 ExecutionModeOperands[ExecutionModeLocalSize].push(OperandLiteralNumber, "'z size'");
1375 ExecutionModeOperands[ExecutionModeLocalSizeHint].push(OperandLiteralNumber, "'x size'");
1376 ExecutionModeOperands[ExecutionModeLocalSizeHint].push(OperandLiteralNumber, "'y size'");
1377 ExecutionModeOperands[ExecutionModeLocalSizeHint].push(OperandLiteralNumber, "'z size'");
1379 ExecutionModeOperands[ExecutionModeOutputVertices].push(OperandLiteralNumber, "'Vertex count'");
1380 ExecutionModeOperands[ExecutionModeVecTypeHint].push(OperandLiteralNumber, "'Vector type'");
1382 DecorationOperands[DecorationStream].push(OperandLiteralNumber, "'Stream Number'");
1383 DecorationOperands[DecorationLocation].push(OperandLiteralNumber, "'Location'");
1384 DecorationOperands[DecorationComponent].push(OperandLiteralNumber, "'Component'");
1385 DecorationOperands[DecorationIndex].push(OperandLiteralNumber, "'Index'");
1386 DecorationOperands[DecorationBinding].push(OperandLiteralNumber, "'Binding Point'");
1387 DecorationOperands[DecorationDescriptorSet].push(OperandLiteralNumber, "'Descriptor Set'");
1388 DecorationOperands[DecorationOffset].push(OperandLiteralNumber, "'Byte Offset'");
1389 DecorationOperands[DecorationXfbBuffer].push(OperandLiteralNumber, "'XFB Buffer Number'");
1390 DecorationOperands[DecorationXfbStride].push(OperandLiteralNumber, "'XFB Stride'");
1391 DecorationOperands[DecorationArrayStride].push(OperandLiteralNumber, "'Array Stride'");
1392 DecorationOperands[DecorationMatrixStride].push(OperandLiteralNumber, "'Matrix Stride'");
1393 DecorationOperands[DecorationBuiltIn].push(OperandLiteralNumber, "See <<BuiltIn,*BuiltIn*>>");
1394 DecorationOperands[DecorationFPRoundingMode].push(OperandFPRoundingMode, "'Floating-Point Rounding Mode'");
1395 DecorationOperands[DecorationFPFastMathMode].push(OperandFPFastMath, "'Fast-Math Mode'");
1396 DecorationOperands[DecorationLinkageAttributes].push(OperandLiteralString, "'Name'");
1397 DecorationOperands[DecorationLinkageAttributes].push(OperandLinkageType, "'Linkage Type'");
1398 DecorationOperands[DecorationFuncParamAttr].push(OperandFuncParamAttr, "'Function Parameter Attribute'");
1399 DecorationOperands[DecorationSpecId].push(OperandLiteralNumber, "'Specialization Constant ID'");
1400 DecorationOperands[DecorationInputAttachmentIndex].push(OperandLiteralNumber, "'Attachment Index'");
1401 DecorationOperands[DecorationAlignment].push(OperandLiteralNumber, "'Alignment'");
1403 OperandClassParams[OperandSource].set(0, SourceString, 0);
1404 OperandClassParams[OperandExecutionModel].set(0, ExecutionModelString, nullptr);
1405 OperandClassParams[OperandAddressing].set(0, AddressingString, nullptr);
1406 OperandClassParams[OperandMemory].set(0, MemoryString, nullptr);
1407 OperandClassParams[OperandExecutionMode].set(ExecutionModeCeiling, ExecutionModeString, ExecutionModeParams);
1408 OperandClassParams[OperandExecutionMode].setOperands(ExecutionModeOperands);
1409 OperandClassParams[OperandStorage].set(0, StorageClassString, nullptr);
1410 OperandClassParams[OperandDimensionality].set(0, DimensionString, nullptr);
1411 OperandClassParams[OperandSamplerAddressingMode].set(0, SamplerAddressingModeString, nullptr);
1412 OperandClassParams[OperandSamplerFilterMode].set(0, SamplerFilterModeString, nullptr);
1413 OperandClassParams[OperandSamplerImageFormat].set(0, ImageFormatString, nullptr);
1414 OperandClassParams[OperandImageChannelOrder].set(0, ImageChannelOrderString, nullptr);
1415 OperandClassParams[OperandImageChannelDataType].set(0, ImageChannelDataTypeString, nullptr);
1416 OperandClassParams[OperandImageOperands].set(ImageOperandsCeiling, ImageOperandsString, ImageOperandsParams, true);
1417 OperandClassParams[OperandFPFastMath].set(0, FPFastMathString, nullptr, true);
1418 OperandClassParams[OperandFPRoundingMode].set(0, FPRoundingModeString, nullptr);
1419 OperandClassParams[OperandLinkageType].set(0, LinkageTypeString, nullptr);
1420 OperandClassParams[OperandFuncParamAttr].set(0, FuncParamAttrString, nullptr);
1421 OperandClassParams[OperandAccessQualifier].set(0, AccessQualifierString, nullptr);
1422 OperandClassParams[OperandDecoration].set(DecorationCeiling, DecorationString, DecorationParams);
1423 OperandClassParams[OperandDecoration].setOperands(DecorationOperands);
1424 OperandClassParams[OperandBuiltIn].set(0, BuiltInString, nullptr);
1425 OperandClassParams[OperandSelect].set(SelectControlCeiling, SelectControlString, SelectionControlParams, true);
1426 OperandClassParams[OperandLoop].set(LoopControlCeiling, LoopControlString, LoopControlParams, true);
1427 OperandClassParams[OperandFunction].set(FunctionControlCeiling, FunctionControlString, FunctionControlParams, true);
1428 OperandClassParams[OperandMemorySemantics].set(0, MemorySemanticsString, nullptr, true);
1429 OperandClassParams[OperandMemoryAccess].set(MemoryAccessCeiling, MemoryAccessString, MemoryAccessParams, true);
1430 OperandClassParams[OperandScope].set(0, ScopeString, nullptr);
1431 OperandClassParams[OperandGroupOperation].set(0, GroupOperationString, nullptr);
1432 OperandClassParams[OperandKernelEnqueueFlags].set(0, KernelEnqueueFlagsString, nullptr);
1433 OperandClassParams[OperandKernelProfilingInfo].set(0, KernelProfilingInfoString, nullptr, true);
1434 OperandClassParams[OperandCapability].set(0, CapabilityString, nullptr);
1435 OperandClassParams[OperandOpcode].set(OpCodeMask + 1, OpcodeString, 0);
1437 // set name of operator, an initial set of <id> style operands, and the description
1439 InstructionDesc[OpSource].operands.push(OperandSource, "");
1440 InstructionDesc[OpSource].operands.push(OperandLiteralNumber, "'Version'");
1441 InstructionDesc[OpSource].operands.push(OperandId, "'File'", true);
1442 InstructionDesc[OpSource].operands.push(OperandLiteralString, "'Source'", true);
1444 InstructionDesc[OpSourceContinued].operands.push(OperandLiteralString, "'Continued Source'");
1446 InstructionDesc[OpSourceExtension].operands.push(OperandLiteralString, "'Extension'");
1448 InstructionDesc[OpName].operands.push(OperandId, "'Target'");
1449 InstructionDesc[OpName].operands.push(OperandLiteralString, "'Name'");
1451 InstructionDesc[OpMemberName].operands.push(OperandId, "'Type'");
1452 InstructionDesc[OpMemberName].operands.push(OperandLiteralNumber, "'Member'");
1453 InstructionDesc[OpMemberName].operands.push(OperandLiteralString, "'Name'");
1455 InstructionDesc[OpString].operands.push(OperandLiteralString, "'String'");
1457 InstructionDesc[OpLine].operands.push(OperandId, "'File'");
1458 InstructionDesc[OpLine].operands.push(OperandLiteralNumber, "'Line'");
1459 InstructionDesc[OpLine].operands.push(OperandLiteralNumber, "'Column'");
1461 InstructionDesc[OpExtension].operands.push(OperandLiteralString, "'Name'");
1463 InstructionDesc[OpExtInstImport].operands.push(OperandLiteralString, "'Name'");
1465 InstructionDesc[OpCapability].operands.push(OperandCapability, "'Capability'");
1467 InstructionDesc[OpMemoryModel].operands.push(OperandAddressing, "");
1468 InstructionDesc[OpMemoryModel].operands.push(OperandMemory, "");
1470 InstructionDesc[OpEntryPoint].operands.push(OperandExecutionModel, "");
1471 InstructionDesc[OpEntryPoint].operands.push(OperandId, "'Entry Point'");
1472 InstructionDesc[OpEntryPoint].operands.push(OperandLiteralString, "'Name'");
1473 InstructionDesc[OpEntryPoint].operands.push(OperandVariableIds, "'Interface'");
1475 InstructionDesc[OpExecutionMode].operands.push(OperandId, "'Entry Point'");
1476 InstructionDesc[OpExecutionMode].operands.push(OperandExecutionMode, "'Mode'");
1477 InstructionDesc[OpExecutionMode].operands.push(OperandOptionalLiteral, "See <<Execution_Mode,Execution Mode>>");
1479 InstructionDesc[OpTypeInt].operands.push(OperandLiteralNumber, "'Width'");
1480 InstructionDesc[OpTypeInt].operands.push(OperandLiteralNumber, "'Signedness'");
1482 InstructionDesc[OpTypeFloat].operands.push(OperandLiteralNumber, "'Width'");
1484 InstructionDesc[OpTypeVector].operands.push(OperandId, "'Component Type'");
1485 InstructionDesc[OpTypeVector].operands.push(OperandLiteralNumber, "'Component Count'");
1487 InstructionDesc[OpTypeMatrix].operands.push(OperandId, "'Column Type'");
1488 InstructionDesc[OpTypeMatrix].operands.push(OperandLiteralNumber, "'Column Count'");
1490 InstructionDesc[OpTypeImage].operands.push(OperandId, "'Sampled Type'");
1491 InstructionDesc[OpTypeImage].operands.push(OperandDimensionality, "");
1492 InstructionDesc[OpTypeImage].operands.push(OperandLiteralNumber, "'Depth'");
1493 InstructionDesc[OpTypeImage].operands.push(OperandLiteralNumber, "'Arrayed'");
1494 InstructionDesc[OpTypeImage].operands.push(OperandLiteralNumber, "'MS'");
1495 InstructionDesc[OpTypeImage].operands.push(OperandLiteralNumber, "'Sampled'");
1496 InstructionDesc[OpTypeImage].operands.push(OperandSamplerImageFormat, "");
1497 InstructionDesc[OpTypeImage].operands.push(OperandAccessQualifier, "", true);
1499 InstructionDesc[OpTypeSampledImage].operands.push(OperandId, "'Image Type'");
1501 InstructionDesc[OpTypeArray].operands.push(OperandId, "'Element Type'");
1502 InstructionDesc[OpTypeArray].operands.push(OperandId, "'Length'");
1504 InstructionDesc[OpTypeRuntimeArray].operands.push(OperandId, "'Element Type'");
1506 InstructionDesc[OpTypeStruct].operands.push(OperandVariableIds, "'Member 0 type', +\n'member 1 type', +\n...");
1508 InstructionDesc[OpTypeOpaque].operands.push(OperandLiteralString, "The name of the opaque type.");
1510 InstructionDesc[OpTypePointer].operands.push(OperandStorage, "");
1511 InstructionDesc[OpTypePointer].operands.push(OperandId, "'Type'");
1513 InstructionDesc[OpTypeForwardPointer].operands.push(OperandId, "'Pointer Type'");
1514 InstructionDesc[OpTypeForwardPointer].operands.push(OperandStorage, "");
1516 InstructionDesc[OpTypePipe].operands.push(OperandAccessQualifier, "'Qualifier'");
1518 InstructionDesc[OpTypeFunction].operands.push(OperandId, "'Return Type'");
1519 InstructionDesc[OpTypeFunction].operands.push(OperandVariableIds, "'Parameter 0 Type', +\n'Parameter 1 Type', +\n...");
1521 InstructionDesc[OpConstant].operands.push(OperandVariableLiterals, "'Value'");
1523 InstructionDesc[OpConstantComposite].operands.push(OperandVariableIds, "'Constituents'");
1525 InstructionDesc[OpConstantSampler].operands.push(OperandSamplerAddressingMode, "");
1526 InstructionDesc[OpConstantSampler].operands.push(OperandLiteralNumber, "'Param'");
1527 InstructionDesc[OpConstantSampler].operands.push(OperandSamplerFilterMode, "");
1529 InstructionDesc[OpSpecConstant].operands.push(OperandVariableLiterals, "'Value'");
1531 InstructionDesc[OpSpecConstantComposite].operands.push(OperandVariableIds, "'Constituents'");
1533 InstructionDesc[OpSpecConstantOp].operands.push(OperandLiteralNumber, "'Opcode'");
1534 InstructionDesc[OpSpecConstantOp].operands.push(OperandVariableIds, "'Operands'");
1536 InstructionDesc[OpVariable].operands.push(OperandStorage, "");
1537 InstructionDesc[OpVariable].operands.push(OperandId, "'Initializer'", true);
1539 InstructionDesc[OpFunction].operands.push(OperandFunction, "");
1540 InstructionDesc[OpFunction].operands.push(OperandId, "'Function Type'");
1542 InstructionDesc[OpFunctionCall].operands.push(OperandId, "'Function'");
1543 InstructionDesc[OpFunctionCall].operands.push(OperandVariableIds, "'Argument 0', +\n'Argument 1', +\n...");
1545 InstructionDesc[OpExtInst].operands.push(OperandId, "'Set'");
1546 InstructionDesc[OpExtInst].operands.push(OperandLiteralNumber, "'Instruction'");
1547 InstructionDesc[OpExtInst].operands.push(OperandVariableIds, "'Operand 1', +\n'Operand 2', +\n...");
1549 InstructionDesc[OpLoad].operands.push(OperandId, "'Pointer'");
1550 InstructionDesc[OpLoad].operands.push(OperandMemoryAccess, "", true);
1551 InstructionDesc[OpLoad].operands.push(OperandLiteralNumber, "", true);
1552 InstructionDesc[OpLoad].operands.push(OperandId, "", true);
1554 InstructionDesc[OpStore].operands.push(OperandId, "'Pointer'");
1555 InstructionDesc[OpStore].operands.push(OperandId, "'Object'");
1556 InstructionDesc[OpStore].operands.push(OperandMemoryAccess, "", true);
1557 InstructionDesc[OpStore].operands.push(OperandLiteralNumber, "", true);
1558 InstructionDesc[OpStore].operands.push(OperandId, "", true);
1560 InstructionDesc[OpPhi].operands.push(OperandVariableIds, "'Variable, Parent, ...'");
1562 InstructionDesc[OpDecorate].operands.push(OperandId, "'Target'");
1563 InstructionDesc[OpDecorate].operands.push(OperandDecoration, "");
1564 InstructionDesc[OpDecorate].operands.push(OperandVariableLiterals, "See <<Decoration,'Decoration'>>.");
1566 InstructionDesc[OpDecorateId].operands.push(OperandId, "'Target'");
1567 InstructionDesc[OpDecorateId].operands.push(OperandDecoration, "");
1568 InstructionDesc[OpDecorateId].operands.push(OperandVariableIds, "See <<Decoration,'Decoration'>>.");
1570 InstructionDesc[OpDecorateStringGOOGLE].operands.push(OperandId, "'Target'");
1571 InstructionDesc[OpDecorateStringGOOGLE].operands.push(OperandDecoration, "");
1572 InstructionDesc[OpDecorateStringGOOGLE].operands.push(OperandLiteralString, "'Literal String'");
1574 InstructionDesc[OpMemberDecorate].operands.push(OperandId, "'Structure Type'");
1575 InstructionDesc[OpMemberDecorate].operands.push(OperandLiteralNumber, "'Member'");
1576 InstructionDesc[OpMemberDecorate].operands.push(OperandDecoration, "");
1577 InstructionDesc[OpMemberDecorate].operands.push(OperandVariableLiterals, "See <<Decoration,'Decoration'>>.");
1579 InstructionDesc[OpMemberDecorateStringGOOGLE].operands.push(OperandId, "'Structure Type'");
1580 InstructionDesc[OpMemberDecorateStringGOOGLE].operands.push(OperandLiteralNumber, "'Member'");
1581 InstructionDesc[OpMemberDecorateStringGOOGLE].operands.push(OperandDecoration, "");
1582 InstructionDesc[OpMemberDecorateStringGOOGLE].operands.push(OperandLiteralString, "'Literal String'");
1584 InstructionDesc[OpGroupDecorate].operands.push(OperandId, "'Decoration Group'");
1585 InstructionDesc[OpGroupDecorate].operands.push(OperandVariableIds, "'Targets'");
1587 InstructionDesc[OpGroupMemberDecorate].operands.push(OperandId, "'Decoration Group'");
1588 InstructionDesc[OpGroupMemberDecorate].operands.push(OperandVariableIdLiteral, "'Targets'");
1590 InstructionDesc[OpVectorExtractDynamic].operands.push(OperandId, "'Vector'");
1591 InstructionDesc[OpVectorExtractDynamic].operands.push(OperandId, "'Index'");
1593 InstructionDesc[OpVectorInsertDynamic].operands.push(OperandId, "'Vector'");
1594 InstructionDesc[OpVectorInsertDynamic].operands.push(OperandId, "'Component'");
1595 InstructionDesc[OpVectorInsertDynamic].operands.push(OperandId, "'Index'");
1597 InstructionDesc[OpVectorShuffle].operands.push(OperandId, "'Vector 1'");
1598 InstructionDesc[OpVectorShuffle].operands.push(OperandId, "'Vector 2'");
1599 InstructionDesc[OpVectorShuffle].operands.push(OperandVariableLiterals, "'Components'");
1601 InstructionDesc[OpCompositeConstruct].operands.push(OperandVariableIds, "'Constituents'");
1603 InstructionDesc[OpCompositeExtract].operands.push(OperandId, "'Composite'");
1604 InstructionDesc[OpCompositeExtract].operands.push(OperandVariableLiterals, "'Indexes'");
1606 InstructionDesc[OpCompositeInsert].operands.push(OperandId, "'Object'");
1607 InstructionDesc[OpCompositeInsert].operands.push(OperandId, "'Composite'");
1608 InstructionDesc[OpCompositeInsert].operands.push(OperandVariableLiterals, "'Indexes'");
1610 InstructionDesc[OpCopyObject].operands.push(OperandId, "'Operand'");
1612 InstructionDesc[OpCopyMemory].operands.push(OperandId, "'Target'");
1613 InstructionDesc[OpCopyMemory].operands.push(OperandId, "'Source'");
1614 InstructionDesc[OpCopyMemory].operands.push(OperandMemoryAccess, "", true);
1616 InstructionDesc[OpCopyMemorySized].operands.push(OperandId, "'Target'");
1617 InstructionDesc[OpCopyMemorySized].operands.push(OperandId, "'Source'");
1618 InstructionDesc[OpCopyMemorySized].operands.push(OperandId, "'Size'");
1619 InstructionDesc[OpCopyMemorySized].operands.push(OperandMemoryAccess, "", true);
1621 InstructionDesc[OpSampledImage].operands.push(OperandId, "'Image'");
1622 InstructionDesc[OpSampledImage].operands.push(OperandId, "'Sampler'");
1624 InstructionDesc[OpImage].operands.push(OperandId, "'Sampled Image'");
1626 InstructionDesc[OpImageRead].operands.push(OperandId, "'Image'");
1627 InstructionDesc[OpImageRead].operands.push(OperandId, "'Coordinate'");
1628 InstructionDesc[OpImageRead].operands.push(OperandImageOperands, "", true);
1629 InstructionDesc[OpImageRead].operands.push(OperandVariableIds, "", true);
1631 InstructionDesc[OpImageWrite].operands.push(OperandId, "'Image'");
1632 InstructionDesc[OpImageWrite].operands.push(OperandId, "'Coordinate'");
1633 InstructionDesc[OpImageWrite].operands.push(OperandId, "'Texel'");
1634 InstructionDesc[OpImageWrite].operands.push(OperandImageOperands, "", true);
1635 InstructionDesc[OpImageWrite].operands.push(OperandVariableIds, "", true);
1637 InstructionDesc[OpImageSampleImplicitLod].operands.push(OperandId, "'Sampled Image'");
1638 InstructionDesc[OpImageSampleImplicitLod].operands.push(OperandId, "'Coordinate'");
1639 InstructionDesc[OpImageSampleImplicitLod].operands.push(OperandImageOperands, "", true);
1640 InstructionDesc[OpImageSampleImplicitLod].operands.push(OperandVariableIds, "", true);
1642 InstructionDesc[OpImageSampleExplicitLod].operands.push(OperandId, "'Sampled Image'");
1643 InstructionDesc[OpImageSampleExplicitLod].operands.push(OperandId, "'Coordinate'");
1644 InstructionDesc[OpImageSampleExplicitLod].operands.push(OperandImageOperands, "", true);
1645 InstructionDesc[OpImageSampleExplicitLod].operands.push(OperandVariableIds, "", true);
1647 InstructionDesc[OpImageSampleDrefImplicitLod].operands.push(OperandId, "'Sampled Image'");
1648 InstructionDesc[OpImageSampleDrefImplicitLod].operands.push(OperandId, "'Coordinate'");
1649 InstructionDesc[OpImageSampleDrefImplicitLod].operands.push(OperandId, "'D~ref~'");
1650 InstructionDesc[OpImageSampleDrefImplicitLod].operands.push(OperandImageOperands, "", true);
1651 InstructionDesc[OpImageSampleDrefImplicitLod].operands.push(OperandVariableIds, "", true);
1653 InstructionDesc[OpImageSampleDrefExplicitLod].operands.push(OperandId, "'Sampled Image'");
1654 InstructionDesc[OpImageSampleDrefExplicitLod].operands.push(OperandId, "'Coordinate'");
1655 InstructionDesc[OpImageSampleDrefExplicitLod].operands.push(OperandId, "'D~ref~'");
1656 InstructionDesc[OpImageSampleDrefExplicitLod].operands.push(OperandImageOperands, "", true);
1657 InstructionDesc[OpImageSampleDrefExplicitLod].operands.push(OperandVariableIds, "", true);
1659 InstructionDesc[OpImageSampleProjImplicitLod].operands.push(OperandId, "'Sampled Image'");
1660 InstructionDesc[OpImageSampleProjImplicitLod].operands.push(OperandId, "'Coordinate'");
1661 InstructionDesc[OpImageSampleProjImplicitLod].operands.push(OperandImageOperands, "", true);
1662 InstructionDesc[OpImageSampleProjImplicitLod].operands.push(OperandVariableIds, "", true);
1664 InstructionDesc[OpImageSampleProjExplicitLod].operands.push(OperandId, "'Sampled Image'");
1665 InstructionDesc[OpImageSampleProjExplicitLod].operands.push(OperandId, "'Coordinate'");
1666 InstructionDesc[OpImageSampleProjExplicitLod].operands.push(OperandImageOperands, "", true);
1667 InstructionDesc[OpImageSampleProjExplicitLod].operands.push(OperandVariableIds, "", true);
1669 InstructionDesc[OpImageSampleProjDrefImplicitLod].operands.push(OperandId, "'Sampled Image'");
1670 InstructionDesc[OpImageSampleProjDrefImplicitLod].operands.push(OperandId, "'Coordinate'");
1671 InstructionDesc[OpImageSampleProjDrefImplicitLod].operands.push(OperandId, "'D~ref~'");
1672 InstructionDesc[OpImageSampleProjDrefImplicitLod].operands.push(OperandImageOperands, "", true);
1673 InstructionDesc[OpImageSampleProjDrefImplicitLod].operands.push(OperandVariableIds, "", true);
1675 InstructionDesc[OpImageSampleProjDrefExplicitLod].operands.push(OperandId, "'Sampled Image'");
1676 InstructionDesc[OpImageSampleProjDrefExplicitLod].operands.push(OperandId, "'Coordinate'");
1677 InstructionDesc[OpImageSampleProjDrefExplicitLod].operands.push(OperandId, "'D~ref~'");
1678 InstructionDesc[OpImageSampleProjDrefExplicitLod].operands.push(OperandImageOperands, "", true);
1679 InstructionDesc[OpImageSampleProjDrefExplicitLod].operands.push(OperandVariableIds, "", true);
1681 InstructionDesc[OpImageFetch].operands.push(OperandId, "'Image'");
1682 InstructionDesc[OpImageFetch].operands.push(OperandId, "'Coordinate'");
1683 InstructionDesc[OpImageFetch].operands.push(OperandImageOperands, "", true);
1684 InstructionDesc[OpImageFetch].operands.push(OperandVariableIds, "", true);
1686 InstructionDesc[OpImageGather].operands.push(OperandId, "'Sampled Image'");
1687 InstructionDesc[OpImageGather].operands.push(OperandId, "'Coordinate'");
1688 InstructionDesc[OpImageGather].operands.push(OperandId, "'Component'");
1689 InstructionDesc[OpImageGather].operands.push(OperandImageOperands, "", true);
1690 InstructionDesc[OpImageGather].operands.push(OperandVariableIds, "", true);
1692 InstructionDesc[OpImageDrefGather].operands.push(OperandId, "'Sampled Image'");
1693 InstructionDesc[OpImageDrefGather].operands.push(OperandId, "'Coordinate'");
1694 InstructionDesc[OpImageDrefGather].operands.push(OperandId, "'D~ref~'");
1695 InstructionDesc[OpImageDrefGather].operands.push(OperandImageOperands, "", true);
1696 InstructionDesc[OpImageDrefGather].operands.push(OperandVariableIds, "", true);
1698 InstructionDesc[OpImageSparseSampleImplicitLod].operands.push(OperandId, "'Sampled Image'");
1699 InstructionDesc[OpImageSparseSampleImplicitLod].operands.push(OperandId, "'Coordinate'");
1700 InstructionDesc[OpImageSparseSampleImplicitLod].operands.push(OperandImageOperands, "", true);
1701 InstructionDesc[OpImageSparseSampleImplicitLod].operands.push(OperandVariableIds, "", true);
1703 InstructionDesc[OpImageSparseSampleExplicitLod].operands.push(OperandId, "'Sampled Image'");
1704 InstructionDesc[OpImageSparseSampleExplicitLod].operands.push(OperandId, "'Coordinate'");
1705 InstructionDesc[OpImageSparseSampleExplicitLod].operands.push(OperandImageOperands, "", true);
1706 InstructionDesc[OpImageSparseSampleExplicitLod].operands.push(OperandVariableIds, "", true);
1708 InstructionDesc[OpImageSparseSampleDrefImplicitLod].operands.push(OperandId, "'Sampled Image'");
1709 InstructionDesc[OpImageSparseSampleDrefImplicitLod].operands.push(OperandId, "'Coordinate'");
1710 InstructionDesc[OpImageSparseSampleDrefImplicitLod].operands.push(OperandId, "'D~ref~'");
1711 InstructionDesc[OpImageSparseSampleDrefImplicitLod].operands.push(OperandImageOperands, "", true);
1712 InstructionDesc[OpImageSparseSampleDrefImplicitLod].operands.push(OperandVariableIds, "", true);
1714 InstructionDesc[OpImageSparseSampleDrefExplicitLod].operands.push(OperandId, "'Sampled Image'");
1715 InstructionDesc[OpImageSparseSampleDrefExplicitLod].operands.push(OperandId, "'Coordinate'");
1716 InstructionDesc[OpImageSparseSampleDrefExplicitLod].operands.push(OperandId, "'D~ref~'");
1717 InstructionDesc[OpImageSparseSampleDrefExplicitLod].operands.push(OperandImageOperands, "", true);
1718 InstructionDesc[OpImageSparseSampleDrefExplicitLod].operands.push(OperandVariableIds, "", true);
1720 InstructionDesc[OpImageSparseSampleProjImplicitLod].operands.push(OperandId, "'Sampled Image'");
1721 InstructionDesc[OpImageSparseSampleProjImplicitLod].operands.push(OperandId, "'Coordinate'");
1722 InstructionDesc[OpImageSparseSampleProjImplicitLod].operands.push(OperandImageOperands, "", true);
1723 InstructionDesc[OpImageSparseSampleProjImplicitLod].operands.push(OperandVariableIds, "", true);
1725 InstructionDesc[OpImageSparseSampleProjExplicitLod].operands.push(OperandId, "'Sampled Image'");
1726 InstructionDesc[OpImageSparseSampleProjExplicitLod].operands.push(OperandId, "'Coordinate'");
1727 InstructionDesc[OpImageSparseSampleProjExplicitLod].operands.push(OperandImageOperands, "", true);
1728 InstructionDesc[OpImageSparseSampleProjExplicitLod].operands.push(OperandVariableIds, "", true);
1730 InstructionDesc[OpImageSparseSampleProjDrefImplicitLod].operands.push(OperandId, "'Sampled Image'");
1731 InstructionDesc[OpImageSparseSampleProjDrefImplicitLod].operands.push(OperandId, "'Coordinate'");
1732 InstructionDesc[OpImageSparseSampleProjDrefImplicitLod].operands.push(OperandId, "'D~ref~'");
1733 InstructionDesc[OpImageSparseSampleProjDrefImplicitLod].operands.push(OperandImageOperands, "", true);
1734 InstructionDesc[OpImageSparseSampleProjDrefImplicitLod].operands.push(OperandVariableIds, "", true);
1736 InstructionDesc[OpImageSparseSampleProjDrefExplicitLod].operands.push(OperandId, "'Sampled Image'");
1737 InstructionDesc[OpImageSparseSampleProjDrefExplicitLod].operands.push(OperandId, "'Coordinate'");
1738 InstructionDesc[OpImageSparseSampleProjDrefExplicitLod].operands.push(OperandId, "'D~ref~'");
1739 InstructionDesc[OpImageSparseSampleProjDrefExplicitLod].operands.push(OperandImageOperands, "", true);
1740 InstructionDesc[OpImageSparseSampleProjDrefExplicitLod].operands.push(OperandVariableIds, "", true);
1742 InstructionDesc[OpImageSparseFetch].operands.push(OperandId, "'Image'");
1743 InstructionDesc[OpImageSparseFetch].operands.push(OperandId, "'Coordinate'");
1744 InstructionDesc[OpImageSparseFetch].operands.push(OperandImageOperands, "", true);
1745 InstructionDesc[OpImageSparseFetch].operands.push(OperandVariableIds, "", true);
1747 InstructionDesc[OpImageSparseGather].operands.push(OperandId, "'Sampled Image'");
1748 InstructionDesc[OpImageSparseGather].operands.push(OperandId, "'Coordinate'");
1749 InstructionDesc[OpImageSparseGather].operands.push(OperandId, "'Component'");
1750 InstructionDesc[OpImageSparseGather].operands.push(OperandImageOperands, "", true);
1751 InstructionDesc[OpImageSparseGather].operands.push(OperandVariableIds, "", true);
1753 InstructionDesc[OpImageSparseDrefGather].operands.push(OperandId, "'Sampled Image'");
1754 InstructionDesc[OpImageSparseDrefGather].operands.push(OperandId, "'Coordinate'");
1755 InstructionDesc[OpImageSparseDrefGather].operands.push(OperandId, "'D~ref~'");
1756 InstructionDesc[OpImageSparseDrefGather].operands.push(OperandImageOperands, "", true);
1757 InstructionDesc[OpImageSparseDrefGather].operands.push(OperandVariableIds, "", true);
1759 InstructionDesc[OpImageSparseRead].operands.push(OperandId, "'Image'");
1760 InstructionDesc[OpImageSparseRead].operands.push(OperandId, "'Coordinate'");
1761 InstructionDesc[OpImageSparseRead].operands.push(OperandImageOperands, "", true);
1762 InstructionDesc[OpImageSparseRead].operands.push(OperandVariableIds, "", true);
1764 InstructionDesc[OpImageSparseTexelsResident].operands.push(OperandId, "'Resident Code'");
1766 InstructionDesc[OpImageQuerySizeLod].operands.push(OperandId, "'Image'");
1767 InstructionDesc[OpImageQuerySizeLod].operands.push(OperandId, "'Level of Detail'");
1769 InstructionDesc[OpImageQuerySize].operands.push(OperandId, "'Image'");
1771 InstructionDesc[OpImageQueryLod].operands.push(OperandId, "'Image'");
1772 InstructionDesc[OpImageQueryLod].operands.push(OperandId, "'Coordinate'");
1774 InstructionDesc[OpImageQueryLevels].operands.push(OperandId, "'Image'");
1776 InstructionDesc[OpImageQuerySamples].operands.push(OperandId, "'Image'");
1778 InstructionDesc[OpImageQueryFormat].operands.push(OperandId, "'Image'");
1780 InstructionDesc[OpImageQueryOrder].operands.push(OperandId, "'Image'");
1782 InstructionDesc[OpAccessChain].operands.push(OperandId, "'Base'");
1783 InstructionDesc[OpAccessChain].operands.push(OperandVariableIds, "'Indexes'");
1785 InstructionDesc[OpInBoundsAccessChain].operands.push(OperandId, "'Base'");
1786 InstructionDesc[OpInBoundsAccessChain].operands.push(OperandVariableIds, "'Indexes'");
1788 InstructionDesc[OpPtrAccessChain].operands.push(OperandId, "'Base'");
1789 InstructionDesc[OpPtrAccessChain].operands.push(OperandId, "'Element'");
1790 InstructionDesc[OpPtrAccessChain].operands.push(OperandVariableIds, "'Indexes'");
1792 InstructionDesc[OpInBoundsPtrAccessChain].operands.push(OperandId, "'Base'");
1793 InstructionDesc[OpInBoundsPtrAccessChain].operands.push(OperandId, "'Element'");
1794 InstructionDesc[OpInBoundsPtrAccessChain].operands.push(OperandVariableIds, "'Indexes'");
1796 InstructionDesc[OpSNegate].operands.push(OperandId, "'Operand'");
1798 InstructionDesc[OpFNegate].operands.push(OperandId, "'Operand'");
1800 InstructionDesc[OpNot].operands.push(OperandId, "'Operand'");
1802 InstructionDesc[OpAny].operands.push(OperandId, "'Vector'");
1804 InstructionDesc[OpAll].operands.push(OperandId, "'Vector'");
1806 InstructionDesc[OpConvertFToU].operands.push(OperandId, "'Float Value'");
1808 InstructionDesc[OpConvertFToS].operands.push(OperandId, "'Float Value'");
1810 InstructionDesc[OpConvertSToF].operands.push(OperandId, "'Signed Value'");
1812 InstructionDesc[OpConvertUToF].operands.push(OperandId, "'Unsigned Value'");
1814 InstructionDesc[OpUConvert].operands.push(OperandId, "'Unsigned Value'");
1816 InstructionDesc[OpSConvert].operands.push(OperandId, "'Signed Value'");
1818 InstructionDesc[OpFConvert].operands.push(OperandId, "'Float Value'");
1820 InstructionDesc[OpSatConvertSToU].operands.push(OperandId, "'Signed Value'");
1822 InstructionDesc[OpSatConvertUToS].operands.push(OperandId, "'Unsigned Value'");
1824 InstructionDesc[OpConvertPtrToU].operands.push(OperandId, "'Pointer'");
1826 InstructionDesc[OpConvertUToPtr].operands.push(OperandId, "'Integer Value'");
1828 InstructionDesc[OpPtrCastToGeneric].operands.push(OperandId, "'Pointer'");
1830 InstructionDesc[OpGenericCastToPtr].operands.push(OperandId, "'Pointer'");
1832 InstructionDesc[OpGenericCastToPtrExplicit].operands.push(OperandId, "'Pointer'");
1833 InstructionDesc[OpGenericCastToPtrExplicit].operands.push(OperandStorage, "'Storage'");
1835 InstructionDesc[OpGenericPtrMemSemantics].operands.push(OperandId, "'Pointer'");
1837 InstructionDesc[OpBitcast].operands.push(OperandId, "'Operand'");
1839 InstructionDesc[OpQuantizeToF16].operands.push(OperandId, "'Value'");
1841 InstructionDesc[OpTranspose].operands.push(OperandId, "'Matrix'");
1843 InstructionDesc[OpIsNan].operands.push(OperandId, "'x'");
1845 InstructionDesc[OpIsInf].operands.push(OperandId, "'x'");
1847 InstructionDesc[OpIsFinite].operands.push(OperandId, "'x'");
1849 InstructionDesc[OpIsNormal].operands.push(OperandId, "'x'");
1851 InstructionDesc[OpSignBitSet].operands.push(OperandId, "'x'");
1853 InstructionDesc[OpLessOrGreater].operands.push(OperandId, "'x'");
1854 InstructionDesc[OpLessOrGreater].operands.push(OperandId, "'y'");
1856 InstructionDesc[OpOrdered].operands.push(OperandId, "'x'");
1857 InstructionDesc[OpOrdered].operands.push(OperandId, "'y'");
1859 InstructionDesc[OpUnordered].operands.push(OperandId, "'x'");
1860 InstructionDesc[OpUnordered].operands.push(OperandId, "'y'");
1862 InstructionDesc[OpArrayLength].operands.push(OperandId, "'Structure'");
1863 InstructionDesc[OpArrayLength].operands.push(OperandLiteralNumber, "'Array member'");
1865 InstructionDesc[OpIAdd].operands.push(OperandId, "'Operand 1'");
1866 InstructionDesc[OpIAdd].operands.push(OperandId, "'Operand 2'");
1868 InstructionDesc[OpFAdd].operands.push(OperandId, "'Operand 1'");
1869 InstructionDesc[OpFAdd].operands.push(OperandId, "'Operand 2'");
1871 InstructionDesc[OpISub].operands.push(OperandId, "'Operand 1'");
1872 InstructionDesc[OpISub].operands.push(OperandId, "'Operand 2'");
1874 InstructionDesc[OpFSub].operands.push(OperandId, "'Operand 1'");
1875 InstructionDesc[OpFSub].operands.push(OperandId, "'Operand 2'");
1877 InstructionDesc[OpIMul].operands.push(OperandId, "'Operand 1'");
1878 InstructionDesc[OpIMul].operands.push(OperandId, "'Operand 2'");
1880 InstructionDesc[OpFMul].operands.push(OperandId, "'Operand 1'");
1881 InstructionDesc[OpFMul].operands.push(OperandId, "'Operand 2'");
1883 InstructionDesc[OpUDiv].operands.push(OperandId, "'Operand 1'");
1884 InstructionDesc[OpUDiv].operands.push(OperandId, "'Operand 2'");
1886 InstructionDesc[OpSDiv].operands.push(OperandId, "'Operand 1'");
1887 InstructionDesc[OpSDiv].operands.push(OperandId, "'Operand 2'");
1889 InstructionDesc[OpFDiv].operands.push(OperandId, "'Operand 1'");
1890 InstructionDesc[OpFDiv].operands.push(OperandId, "'Operand 2'");
1892 InstructionDesc[OpUMod].operands.push(OperandId, "'Operand 1'");
1893 InstructionDesc[OpUMod].operands.push(OperandId, "'Operand 2'");
1895 InstructionDesc[OpSRem].operands.push(OperandId, "'Operand 1'");
1896 InstructionDesc[OpSRem].operands.push(OperandId, "'Operand 2'");
1898 InstructionDesc[OpSMod].operands.push(OperandId, "'Operand 1'");
1899 InstructionDesc[OpSMod].operands.push(OperandId, "'Operand 2'");
1901 InstructionDesc[OpFRem].operands.push(OperandId, "'Operand 1'");
1902 InstructionDesc[OpFRem].operands.push(OperandId, "'Operand 2'");
1904 InstructionDesc[OpFMod].operands.push(OperandId, "'Operand 1'");
1905 InstructionDesc[OpFMod].operands.push(OperandId, "'Operand 2'");
1907 InstructionDesc[OpVectorTimesScalar].operands.push(OperandId, "'Vector'");
1908 InstructionDesc[OpVectorTimesScalar].operands.push(OperandId, "'Scalar'");
1910 InstructionDesc[OpMatrixTimesScalar].operands.push(OperandId, "'Matrix'");
1911 InstructionDesc[OpMatrixTimesScalar].operands.push(OperandId, "'Scalar'");
1913 InstructionDesc[OpVectorTimesMatrix].operands.push(OperandId, "'Vector'");
1914 InstructionDesc[OpVectorTimesMatrix].operands.push(OperandId, "'Matrix'");
1916 InstructionDesc[OpMatrixTimesVector].operands.push(OperandId, "'Matrix'");
1917 InstructionDesc[OpMatrixTimesVector].operands.push(OperandId, "'Vector'");
1919 InstructionDesc[OpMatrixTimesMatrix].operands.push(OperandId, "'LeftMatrix'");
1920 InstructionDesc[OpMatrixTimesMatrix].operands.push(OperandId, "'RightMatrix'");
1922 InstructionDesc[OpOuterProduct].operands.push(OperandId, "'Vector 1'");
1923 InstructionDesc[OpOuterProduct].operands.push(OperandId, "'Vector 2'");
1925 InstructionDesc[OpDot].operands.push(OperandId, "'Vector 1'");
1926 InstructionDesc[OpDot].operands.push(OperandId, "'Vector 2'");
1928 InstructionDesc[OpIAddCarry].operands.push(OperandId, "'Operand 1'");
1929 InstructionDesc[OpIAddCarry].operands.push(OperandId, "'Operand 2'");
1931 InstructionDesc[OpISubBorrow].operands.push(OperandId, "'Operand 1'");
1932 InstructionDesc[OpISubBorrow].operands.push(OperandId, "'Operand 2'");
1934 InstructionDesc[OpUMulExtended].operands.push(OperandId, "'Operand 1'");
1935 InstructionDesc[OpUMulExtended].operands.push(OperandId, "'Operand 2'");
1937 InstructionDesc[OpSMulExtended].operands.push(OperandId, "'Operand 1'");
1938 InstructionDesc[OpSMulExtended].operands.push(OperandId, "'Operand 2'");
1940 InstructionDesc[OpShiftRightLogical].operands.push(OperandId, "'Base'");
1941 InstructionDesc[OpShiftRightLogical].operands.push(OperandId, "'Shift'");
1943 InstructionDesc[OpShiftRightArithmetic].operands.push(OperandId, "'Base'");
1944 InstructionDesc[OpShiftRightArithmetic].operands.push(OperandId, "'Shift'");
1946 InstructionDesc[OpShiftLeftLogical].operands.push(OperandId, "'Base'");
1947 InstructionDesc[OpShiftLeftLogical].operands.push(OperandId, "'Shift'");
1949 InstructionDesc[OpLogicalOr].operands.push(OperandId, "'Operand 1'");
1950 InstructionDesc[OpLogicalOr].operands.push(OperandId, "'Operand 2'");
1952 InstructionDesc[OpLogicalAnd].operands.push(OperandId, "'Operand 1'");
1953 InstructionDesc[OpLogicalAnd].operands.push(OperandId, "'Operand 2'");
1955 InstructionDesc[OpLogicalEqual].operands.push(OperandId, "'Operand 1'");
1956 InstructionDesc[OpLogicalEqual].operands.push(OperandId, "'Operand 2'");
1958 InstructionDesc[OpLogicalNotEqual].operands.push(OperandId, "'Operand 1'");
1959 InstructionDesc[OpLogicalNotEqual].operands.push(OperandId, "'Operand 2'");
1961 InstructionDesc[OpLogicalNot].operands.push(OperandId, "'Operand'");
1963 InstructionDesc[OpBitwiseOr].operands.push(OperandId, "'Operand 1'");
1964 InstructionDesc[OpBitwiseOr].operands.push(OperandId, "'Operand 2'");
1966 InstructionDesc[OpBitwiseXor].operands.push(OperandId, "'Operand 1'");
1967 InstructionDesc[OpBitwiseXor].operands.push(OperandId, "'Operand 2'");
1969 InstructionDesc[OpBitwiseAnd].operands.push(OperandId, "'Operand 1'");
1970 InstructionDesc[OpBitwiseAnd].operands.push(OperandId, "'Operand 2'");
1972 InstructionDesc[OpBitFieldInsert].operands.push(OperandId, "'Base'");
1973 InstructionDesc[OpBitFieldInsert].operands.push(OperandId, "'Insert'");
1974 InstructionDesc[OpBitFieldInsert].operands.push(OperandId, "'Offset'");
1975 InstructionDesc[OpBitFieldInsert].operands.push(OperandId, "'Count'");
1977 InstructionDesc[OpBitFieldSExtract].operands.push(OperandId, "'Base'");
1978 InstructionDesc[OpBitFieldSExtract].operands.push(OperandId, "'Offset'");
1979 InstructionDesc[OpBitFieldSExtract].operands.push(OperandId, "'Count'");
1981 InstructionDesc[OpBitFieldUExtract].operands.push(OperandId, "'Base'");
1982 InstructionDesc[OpBitFieldUExtract].operands.push(OperandId, "'Offset'");
1983 InstructionDesc[OpBitFieldUExtract].operands.push(OperandId, "'Count'");
1985 InstructionDesc[OpBitReverse].operands.push(OperandId, "'Base'");
1987 InstructionDesc[OpBitCount].operands.push(OperandId, "'Base'");
1989 InstructionDesc[OpSelect].operands.push(OperandId, "'Condition'");
1990 InstructionDesc[OpSelect].operands.push(OperandId, "'Object 1'");
1991 InstructionDesc[OpSelect].operands.push(OperandId, "'Object 2'");
1993 InstructionDesc[OpIEqual].operands.push(OperandId, "'Operand 1'");
1994 InstructionDesc[OpIEqual].operands.push(OperandId, "'Operand 2'");
1996 InstructionDesc[OpFOrdEqual].operands.push(OperandId, "'Operand 1'");
1997 InstructionDesc[OpFOrdEqual].operands.push(OperandId, "'Operand 2'");
1999 InstructionDesc[OpFUnordEqual].operands.push(OperandId, "'Operand 1'");
2000 InstructionDesc[OpFUnordEqual].operands.push(OperandId, "'Operand 2'");
2002 InstructionDesc[OpINotEqual].operands.push(OperandId, "'Operand 1'");
2003 InstructionDesc[OpINotEqual].operands.push(OperandId, "'Operand 2'");
2005 InstructionDesc[OpFOrdNotEqual].operands.push(OperandId, "'Operand 1'");
2006 InstructionDesc[OpFOrdNotEqual].operands.push(OperandId, "'Operand 2'");
2008 InstructionDesc[OpFUnordNotEqual].operands.push(OperandId, "'Operand 1'");
2009 InstructionDesc[OpFUnordNotEqual].operands.push(OperandId, "'Operand 2'");
2011 InstructionDesc[OpULessThan].operands.push(OperandId, "'Operand 1'");
2012 InstructionDesc[OpULessThan].operands.push(OperandId, "'Operand 2'");
2014 InstructionDesc[OpSLessThan].operands.push(OperandId, "'Operand 1'");
2015 InstructionDesc[OpSLessThan].operands.push(OperandId, "'Operand 2'");
2017 InstructionDesc[OpFOrdLessThan].operands.push(OperandId, "'Operand 1'");
2018 InstructionDesc[OpFOrdLessThan].operands.push(OperandId, "'Operand 2'");
2020 InstructionDesc[OpFUnordLessThan].operands.push(OperandId, "'Operand 1'");
2021 InstructionDesc[OpFUnordLessThan].operands.push(OperandId, "'Operand 2'");
2023 InstructionDesc[OpUGreaterThan].operands.push(OperandId, "'Operand 1'");
2024 InstructionDesc[OpUGreaterThan].operands.push(OperandId, "'Operand 2'");
2026 InstructionDesc[OpSGreaterThan].operands.push(OperandId, "'Operand 1'");
2027 InstructionDesc[OpSGreaterThan].operands.push(OperandId, "'Operand 2'");
2029 InstructionDesc[OpFOrdGreaterThan].operands.push(OperandId, "'Operand 1'");
2030 InstructionDesc[OpFOrdGreaterThan].operands.push(OperandId, "'Operand 2'");
2032 InstructionDesc[OpFUnordGreaterThan].operands.push(OperandId, "'Operand 1'");
2033 InstructionDesc[OpFUnordGreaterThan].operands.push(OperandId, "'Operand 2'");
2035 InstructionDesc[OpULessThanEqual].operands.push(OperandId, "'Operand 1'");
2036 InstructionDesc[OpULessThanEqual].operands.push(OperandId, "'Operand 2'");
2038 InstructionDesc[OpSLessThanEqual].operands.push(OperandId, "'Operand 1'");
2039 InstructionDesc[OpSLessThanEqual].operands.push(OperandId, "'Operand 2'");
2041 InstructionDesc[OpFOrdLessThanEqual].operands.push(OperandId, "'Operand 1'");
2042 InstructionDesc[OpFOrdLessThanEqual].operands.push(OperandId, "'Operand 2'");
2044 InstructionDesc[OpFUnordLessThanEqual].operands.push(OperandId, "'Operand 1'");
2045 InstructionDesc[OpFUnordLessThanEqual].operands.push(OperandId, "'Operand 2'");
2047 InstructionDesc[OpUGreaterThanEqual].operands.push(OperandId, "'Operand 1'");
2048 InstructionDesc[OpUGreaterThanEqual].operands.push(OperandId, "'Operand 2'");
2050 InstructionDesc[OpSGreaterThanEqual].operands.push(OperandId, "'Operand 1'");
2051 InstructionDesc[OpSGreaterThanEqual].operands.push(OperandId, "'Operand 2'");
2053 InstructionDesc[OpFOrdGreaterThanEqual].operands.push(OperandId, "'Operand 1'");
2054 InstructionDesc[OpFOrdGreaterThanEqual].operands.push(OperandId, "'Operand 2'");
2056 InstructionDesc[OpFUnordGreaterThanEqual].operands.push(OperandId, "'Operand 1'");
2057 InstructionDesc[OpFUnordGreaterThanEqual].operands.push(OperandId, "'Operand 2'");
2059 InstructionDesc[OpDPdx].operands.push(OperandId, "'P'");
2061 InstructionDesc[OpDPdy].operands.push(OperandId, "'P'");
2063 InstructionDesc[OpFwidth].operands.push(OperandId, "'P'");
2065 InstructionDesc[OpDPdxFine].operands.push(OperandId, "'P'");
2067 InstructionDesc[OpDPdyFine].operands.push(OperandId, "'P'");
2069 InstructionDesc[OpFwidthFine].operands.push(OperandId, "'P'");
2071 InstructionDesc[OpDPdxCoarse].operands.push(OperandId, "'P'");
2073 InstructionDesc[OpDPdyCoarse].operands.push(OperandId, "'P'");
2075 InstructionDesc[OpFwidthCoarse].operands.push(OperandId, "'P'");
2077 InstructionDesc[OpEmitStreamVertex].operands.push(OperandId, "'Stream'");
2079 InstructionDesc[OpEndStreamPrimitive].operands.push(OperandId, "'Stream'");
2081 InstructionDesc[OpControlBarrier].operands.push(OperandScope, "'Execution'");
2082 InstructionDesc[OpControlBarrier].operands.push(OperandScope, "'Memory'");
2083 InstructionDesc[OpControlBarrier].operands.push(OperandMemorySemantics, "'Semantics'");
2085 InstructionDesc[OpMemoryBarrier].operands.push(OperandScope, "'Memory'");
2086 InstructionDesc[OpMemoryBarrier].operands.push(OperandMemorySemantics, "'Semantics'");
2088 InstructionDesc[OpImageTexelPointer].operands.push(OperandId, "'Image'");
2089 InstructionDesc[OpImageTexelPointer].operands.push(OperandId, "'Coordinate'");
2090 InstructionDesc[OpImageTexelPointer].operands.push(OperandId, "'Sample'");
2092 InstructionDesc[OpAtomicLoad].operands.push(OperandId, "'Pointer'");
2093 InstructionDesc[OpAtomicLoad].operands.push(OperandScope, "'Scope'");
2094 InstructionDesc[OpAtomicLoad].operands.push(OperandMemorySemantics, "'Semantics'");
2096 InstructionDesc[OpAtomicStore].operands.push(OperandId, "'Pointer'");
2097 InstructionDesc[OpAtomicStore].operands.push(OperandScope, "'Scope'");
2098 InstructionDesc[OpAtomicStore].operands.push(OperandMemorySemantics, "'Semantics'");
2099 InstructionDesc[OpAtomicStore].operands.push(OperandId, "'Value'");
2101 InstructionDesc[OpAtomicExchange].operands.push(OperandId, "'Pointer'");
2102 InstructionDesc[OpAtomicExchange].operands.push(OperandScope, "'Scope'");
2103 InstructionDesc[OpAtomicExchange].operands.push(OperandMemorySemantics, "'Semantics'");
2104 InstructionDesc[OpAtomicExchange].operands.push(OperandId, "'Value'");
2106 InstructionDesc[OpAtomicCompareExchange].operands.push(OperandId, "'Pointer'");
2107 InstructionDesc[OpAtomicCompareExchange].operands.push(OperandScope, "'Scope'");
2108 InstructionDesc[OpAtomicCompareExchange].operands.push(OperandMemorySemantics, "'Equal'");
2109 InstructionDesc[OpAtomicCompareExchange].operands.push(OperandMemorySemantics, "'Unequal'");
2110 InstructionDesc[OpAtomicCompareExchange].operands.push(OperandId, "'Value'");
2111 InstructionDesc[OpAtomicCompareExchange].operands.push(OperandId, "'Comparator'");
2113 InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandId, "'Pointer'");
2114 InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandScope, "'Scope'");
2115 InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandMemorySemantics, "'Equal'");
2116 InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandMemorySemantics, "'Unequal'");
2117 InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandId, "'Value'");
2118 InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandId, "'Comparator'");
2120 InstructionDesc[OpAtomicIIncrement].operands.push(OperandId, "'Pointer'");
2121 InstructionDesc[OpAtomicIIncrement].operands.push(OperandScope, "'Scope'");
2122 InstructionDesc[OpAtomicIIncrement].operands.push(OperandMemorySemantics, "'Semantics'");
2124 InstructionDesc[OpAtomicIDecrement].operands.push(OperandId, "'Pointer'");
2125 InstructionDesc[OpAtomicIDecrement].operands.push(OperandScope, "'Scope'");
2126 InstructionDesc[OpAtomicIDecrement].operands.push(OperandMemorySemantics, "'Semantics'");
2128 InstructionDesc[OpAtomicIAdd].operands.push(OperandId, "'Pointer'");
2129 InstructionDesc[OpAtomicIAdd].operands.push(OperandScope, "'Scope'");
2130 InstructionDesc[OpAtomicIAdd].operands.push(OperandMemorySemantics, "'Semantics'");
2131 InstructionDesc[OpAtomicIAdd].operands.push(OperandId, "'Value'");
2133 InstructionDesc[OpAtomicISub].operands.push(OperandId, "'Pointer'");
2134 InstructionDesc[OpAtomicISub].operands.push(OperandScope, "'Scope'");
2135 InstructionDesc[OpAtomicISub].operands.push(OperandMemorySemantics, "'Semantics'");
2136 InstructionDesc[OpAtomicISub].operands.push(OperandId, "'Value'");
2138 InstructionDesc[OpAtomicUMin].operands.push(OperandId, "'Pointer'");
2139 InstructionDesc[OpAtomicUMin].operands.push(OperandScope, "'Scope'");
2140 InstructionDesc[OpAtomicUMin].operands.push(OperandMemorySemantics, "'Semantics'");
2141 InstructionDesc[OpAtomicUMin].operands.push(OperandId, "'Value'");
2143 InstructionDesc[OpAtomicUMax].operands.push(OperandId, "'Pointer'");
2144 InstructionDesc[OpAtomicUMax].operands.push(OperandScope, "'Scope'");
2145 InstructionDesc[OpAtomicUMax].operands.push(OperandMemorySemantics, "'Semantics'");
2146 InstructionDesc[OpAtomicUMax].operands.push(OperandId, "'Value'");
2148 InstructionDesc[OpAtomicSMin].operands.push(OperandId, "'Pointer'");
2149 InstructionDesc[OpAtomicSMin].operands.push(OperandScope, "'Scope'");
2150 InstructionDesc[OpAtomicSMin].operands.push(OperandMemorySemantics, "'Semantics'");
2151 InstructionDesc[OpAtomicSMin].operands.push(OperandId, "'Value'");
2153 InstructionDesc[OpAtomicSMax].operands.push(OperandId, "'Pointer'");
2154 InstructionDesc[OpAtomicSMax].operands.push(OperandScope, "'Scope'");
2155 InstructionDesc[OpAtomicSMax].operands.push(OperandMemorySemantics, "'Semantics'");
2156 InstructionDesc[OpAtomicSMax].operands.push(OperandId, "'Value'");
2158 InstructionDesc[OpAtomicAnd].operands.push(OperandId, "'Pointer'");
2159 InstructionDesc[OpAtomicAnd].operands.push(OperandScope, "'Scope'");
2160 InstructionDesc[OpAtomicAnd].operands.push(OperandMemorySemantics, "'Semantics'");
2161 InstructionDesc[OpAtomicAnd].operands.push(OperandId, "'Value'");
2163 InstructionDesc[OpAtomicOr].operands.push(OperandId, "'Pointer'");
2164 InstructionDesc[OpAtomicOr].operands.push(OperandScope, "'Scope'");
2165 InstructionDesc[OpAtomicOr].operands.push(OperandMemorySemantics, "'Semantics'");
2166 InstructionDesc[OpAtomicOr].operands.push(OperandId, "'Value'");
2168 InstructionDesc[OpAtomicXor].operands.push(OperandId, "'Pointer'");
2169 InstructionDesc[OpAtomicXor].operands.push(OperandScope, "'Scope'");
2170 InstructionDesc[OpAtomicXor].operands.push(OperandMemorySemantics, "'Semantics'");
2171 InstructionDesc[OpAtomicXor].operands.push(OperandId, "'Value'");
2173 InstructionDesc[OpAtomicFlagTestAndSet].operands.push(OperandId, "'Pointer'");
2174 InstructionDesc[OpAtomicFlagTestAndSet].operands.push(OperandScope, "'Scope'");
2175 InstructionDesc[OpAtomicFlagTestAndSet].operands.push(OperandMemorySemantics, "'Semantics'");
2177 InstructionDesc[OpAtomicFlagClear].operands.push(OperandId, "'Pointer'");
2178 InstructionDesc[OpAtomicFlagClear].operands.push(OperandScope, "'Scope'");
2179 InstructionDesc[OpAtomicFlagClear].operands.push(OperandMemorySemantics, "'Semantics'");
2181 InstructionDesc[OpLoopMerge].operands.push(OperandId, "'Merge Block'");
2182 InstructionDesc[OpLoopMerge].operands.push(OperandId, "'Continue Target'");
2183 InstructionDesc[OpLoopMerge].operands.push(OperandLoop, "");
2184 InstructionDesc[OpLoopMerge].operands.push(OperandOptionalLiteral, "");
2186 InstructionDesc[OpSelectionMerge].operands.push(OperandId, "'Merge Block'");
2187 InstructionDesc[OpSelectionMerge].operands.push(OperandSelect, "");
2189 InstructionDesc[OpBranch].operands.push(OperandId, "'Target Label'");
2191 InstructionDesc[OpBranchConditional].operands.push(OperandId, "'Condition'");
2192 InstructionDesc[OpBranchConditional].operands.push(OperandId, "'True Label'");
2193 InstructionDesc[OpBranchConditional].operands.push(OperandId, "'False Label'");
2194 InstructionDesc[OpBranchConditional].operands.push(OperandVariableLiterals, "'Branch weights'");
2196 InstructionDesc[OpSwitch].operands.push(OperandId, "'Selector'");
2197 InstructionDesc[OpSwitch].operands.push(OperandId, "'Default'");
2198 InstructionDesc[OpSwitch].operands.push(OperandVariableLiteralId, "'Target'");
2201 InstructionDesc[OpReturnValue].operands.push(OperandId, "'Value'");
2203 InstructionDesc[OpLifetimeStart].operands.push(OperandId, "'Pointer'");
2204 InstructionDesc[OpLifetimeStart].operands.push(OperandLiteralNumber, "'Size'");
2206 InstructionDesc[OpLifetimeStop].operands.push(OperandId, "'Pointer'");
2207 InstructionDesc[OpLifetimeStop].operands.push(OperandLiteralNumber, "'Size'");
2209 InstructionDesc[OpGroupAsyncCopy].operands.push(OperandScope, "'Execution'");
2210 InstructionDesc[OpGroupAsyncCopy].operands.push(OperandId, "'Destination'");
2211 InstructionDesc[OpGroupAsyncCopy].operands.push(OperandId, "'Source'");
2212 InstructionDesc[OpGroupAsyncCopy].operands.push(OperandId, "'Num Elements'");
2213 InstructionDesc[OpGroupAsyncCopy].operands.push(OperandId, "'Stride'");
2214 InstructionDesc[OpGroupAsyncCopy].operands.push(OperandId, "'Event'");
2216 InstructionDesc[OpGroupWaitEvents].operands.push(OperandScope, "'Execution'");
2217 InstructionDesc[OpGroupWaitEvents].operands.push(OperandId, "'Num Events'");
2218 InstructionDesc[OpGroupWaitEvents].operands.push(OperandId, "'Events List'");
2220 InstructionDesc[OpGroupAll].operands.push(OperandScope, "'Execution'");
2221 InstructionDesc[OpGroupAll].operands.push(OperandId, "'Predicate'");
2223 InstructionDesc[OpGroupAny].operands.push(OperandScope, "'Execution'");
2224 InstructionDesc[OpGroupAny].operands.push(OperandId, "'Predicate'");
2226 InstructionDesc[OpGroupBroadcast].operands.push(OperandScope, "'Execution'");
2227 InstructionDesc[OpGroupBroadcast].operands.push(OperandId, "'Value'");
2228 InstructionDesc[OpGroupBroadcast].operands.push(OperandId, "'LocalId'");
2230 InstructionDesc[OpGroupIAdd].operands.push(OperandScope, "'Execution'");
2231 InstructionDesc[OpGroupIAdd].operands.push(OperandGroupOperation, "'Operation'");
2232 InstructionDesc[OpGroupIAdd].operands.push(OperandId, "'X'");
2234 InstructionDesc[OpGroupFAdd].operands.push(OperandScope, "'Execution'");
2235 InstructionDesc[OpGroupFAdd].operands.push(OperandGroupOperation, "'Operation'");
2236 InstructionDesc[OpGroupFAdd].operands.push(OperandId, "'X'");
2238 InstructionDesc[OpGroupUMin].operands.push(OperandScope, "'Execution'");
2239 InstructionDesc[OpGroupUMin].operands.push(OperandGroupOperation, "'Operation'");
2240 InstructionDesc[OpGroupUMin].operands.push(OperandId, "'X'");
2242 InstructionDesc[OpGroupSMin].operands.push(OperandScope, "'Execution'");
2243 InstructionDesc[OpGroupSMin].operands.push(OperandGroupOperation, "'Operation'");
2244 InstructionDesc[OpGroupSMin].operands.push(OperandId, "X");
2246 InstructionDesc[OpGroupFMin].operands.push(OperandScope, "'Execution'");
2247 InstructionDesc[OpGroupFMin].operands.push(OperandGroupOperation, "'Operation'");
2248 InstructionDesc[OpGroupFMin].operands.push(OperandId, "X");
2250 InstructionDesc[OpGroupUMax].operands.push(OperandScope, "'Execution'");
2251 InstructionDesc[OpGroupUMax].operands.push(OperandGroupOperation, "'Operation'");
2252 InstructionDesc[OpGroupUMax].operands.push(OperandId, "X");
2254 InstructionDesc[OpGroupSMax].operands.push(OperandScope, "'Execution'");
2255 InstructionDesc[OpGroupSMax].operands.push(OperandGroupOperation, "'Operation'");
2256 InstructionDesc[OpGroupSMax].operands.push(OperandId, "X");
2258 InstructionDesc[OpGroupFMax].operands.push(OperandScope, "'Execution'");
2259 InstructionDesc[OpGroupFMax].operands.push(OperandGroupOperation, "'Operation'");
2260 InstructionDesc[OpGroupFMax].operands.push(OperandId, "X");
2262 InstructionDesc[OpReadPipe].operands.push(OperandId, "'Pipe'");
2263 InstructionDesc[OpReadPipe].operands.push(OperandId, "'Pointer'");
2264 InstructionDesc[OpReadPipe].operands.push(OperandId, "'Packet Size'");
2265 InstructionDesc[OpReadPipe].operands.push(OperandId, "'Packet Alignment'");
2267 InstructionDesc[OpWritePipe].operands.push(OperandId, "'Pipe'");
2268 InstructionDesc[OpWritePipe].operands.push(OperandId, "'Pointer'");
2269 InstructionDesc[OpWritePipe].operands.push(OperandId, "'Packet Size'");
2270 InstructionDesc[OpWritePipe].operands.push(OperandId, "'Packet Alignment'");
2272 InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'Pipe'");
2273 InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'Reserve Id'");
2274 InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'Index'");
2275 InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'Pointer'");
2276 InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'Packet Size'");
2277 InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'Packet Alignment'");
2279 InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'Pipe'");
2280 InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'Reserve Id'");
2281 InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'Index'");
2282 InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'Pointer'");
2283 InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'Packet Size'");
2284 InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'Packet Alignment'");
2286 InstructionDesc[OpReserveReadPipePackets].operands.push(OperandId, "'Pipe'");
2287 InstructionDesc[OpReserveReadPipePackets].operands.push(OperandId, "'Num Packets'");
2288 InstructionDesc[OpReserveReadPipePackets].operands.push(OperandId, "'Packet Size'");
2289 InstructionDesc[OpReserveReadPipePackets].operands.push(OperandId, "'Packet Alignment'");
2291 InstructionDesc[OpReserveWritePipePackets].operands.push(OperandId, "'Pipe'");
2292 InstructionDesc[OpReserveWritePipePackets].operands.push(OperandId, "'Num Packets'");
2293 InstructionDesc[OpReserveWritePipePackets].operands.push(OperandId, "'Packet Size'");
2294 InstructionDesc[OpReserveWritePipePackets].operands.push(OperandId, "'Packet Alignment'");
2296 InstructionDesc[OpCommitReadPipe].operands.push(OperandId, "'Pipe'");
2297 InstructionDesc[OpCommitReadPipe].operands.push(OperandId, "'Reserve Id'");
2298 InstructionDesc[OpCommitReadPipe].operands.push(OperandId, "'Packet Size'");
2299 InstructionDesc[OpCommitReadPipe].operands.push(OperandId, "'Packet Alignment'");
2301 InstructionDesc[OpCommitWritePipe].operands.push(OperandId, "'Pipe'");
2302 InstructionDesc[OpCommitWritePipe].operands.push(OperandId, "'Reserve Id'");
2303 InstructionDesc[OpCommitWritePipe].operands.push(OperandId, "'Packet Size'");
2304 InstructionDesc[OpCommitWritePipe].operands.push(OperandId, "'Packet Alignment'");
2306 InstructionDesc[OpIsValidReserveId].operands.push(OperandId, "'Reserve Id'");
2308 InstructionDesc[OpGetNumPipePackets].operands.push(OperandId, "'Pipe'");
2309 InstructionDesc[OpGetNumPipePackets].operands.push(OperandId, "'Packet Size'");
2310 InstructionDesc[OpGetNumPipePackets].operands.push(OperandId, "'Packet Alignment'");
2312 InstructionDesc[OpGetMaxPipePackets].operands.push(OperandId, "'Pipe'");
2313 InstructionDesc[OpGetMaxPipePackets].operands.push(OperandId, "'Packet Size'");
2314 InstructionDesc[OpGetMaxPipePackets].operands.push(OperandId, "'Packet Alignment'");
2316 InstructionDesc[OpGroupReserveReadPipePackets].operands.push(OperandScope, "'Execution'");
2317 InstructionDesc[OpGroupReserveReadPipePackets].operands.push(OperandId, "'Pipe'");
2318 InstructionDesc[OpGroupReserveReadPipePackets].operands.push(OperandId, "'Num Packets'");
2319 InstructionDesc[OpGroupReserveReadPipePackets].operands.push(OperandId, "'Packet Size'");
2320 InstructionDesc[OpGroupReserveReadPipePackets].operands.push(OperandId, "'Packet Alignment'");
2322 InstructionDesc[OpGroupReserveWritePipePackets].operands.push(OperandScope, "'Execution'");
2323 InstructionDesc[OpGroupReserveWritePipePackets].operands.push(OperandId, "'Pipe'");
2324 InstructionDesc[OpGroupReserveWritePipePackets].operands.push(OperandId, "'Num Packets'");
2325 InstructionDesc[OpGroupReserveWritePipePackets].operands.push(OperandId, "'Packet Size'");
2326 InstructionDesc[OpGroupReserveWritePipePackets].operands.push(OperandId, "'Packet Alignment'");
2328 InstructionDesc[OpGroupCommitReadPipe].operands.push(OperandScope, "'Execution'");
2329 InstructionDesc[OpGroupCommitReadPipe].operands.push(OperandId, "'Pipe'");
2330 InstructionDesc[OpGroupCommitReadPipe].operands.push(OperandId, "'Reserve Id'");
2331 InstructionDesc[OpGroupCommitReadPipe].operands.push(OperandId, "'Packet Size'");
2332 InstructionDesc[OpGroupCommitReadPipe].operands.push(OperandId, "'Packet Alignment'");
2334 InstructionDesc[OpGroupCommitWritePipe].operands.push(OperandScope, "'Execution'");
2335 InstructionDesc[OpGroupCommitWritePipe].operands.push(OperandId, "'Pipe'");
2336 InstructionDesc[OpGroupCommitWritePipe].operands.push(OperandId, "'Reserve Id'");
2337 InstructionDesc[OpGroupCommitWritePipe].operands.push(OperandId, "'Packet Size'");
2338 InstructionDesc[OpGroupCommitWritePipe].operands.push(OperandId, "'Packet Alignment'");
2340 InstructionDesc[OpBuildNDRange].operands.push(OperandId, "'GlobalWorkSize'");
2341 InstructionDesc[OpBuildNDRange].operands.push(OperandId, "'LocalWorkSize'");
2342 InstructionDesc[OpBuildNDRange].operands.push(OperandId, "'GlobalWorkOffset'");
2344 InstructionDesc[OpCaptureEventProfilingInfo].operands.push(OperandId, "'Event'");
2345 InstructionDesc[OpCaptureEventProfilingInfo].operands.push(OperandId, "'Profiling Info'");
2346 InstructionDesc[OpCaptureEventProfilingInfo].operands.push(OperandId, "'Value'");
2348 InstructionDesc[OpSetUserEventStatus].operands.push(OperandId, "'Event'");
2349 InstructionDesc[OpSetUserEventStatus].operands.push(OperandId, "'Status'");
2351 InstructionDesc[OpIsValidEvent].operands.push(OperandId, "'Event'");
2353 InstructionDesc[OpRetainEvent].operands.push(OperandId, "'Event'");
2355 InstructionDesc[OpReleaseEvent].operands.push(OperandId, "'Event'");
2357 InstructionDesc[OpGetKernelWorkGroupSize].operands.push(OperandId, "'Invoke'");
2358 InstructionDesc[OpGetKernelWorkGroupSize].operands.push(OperandId, "'Param'");
2359 InstructionDesc[OpGetKernelWorkGroupSize].operands.push(OperandId, "'Param Size'");
2360 InstructionDesc[OpGetKernelWorkGroupSize].operands.push(OperandId, "'Param Align'");
2362 InstructionDesc[OpGetKernelPreferredWorkGroupSizeMultiple].operands.push(OperandId, "'Invoke'");
2363 InstructionDesc[OpGetKernelPreferredWorkGroupSizeMultiple].operands.push(OperandId, "'Param'");
2364 InstructionDesc[OpGetKernelPreferredWorkGroupSizeMultiple].operands.push(OperandId, "'Param Size'");
2365 InstructionDesc[OpGetKernelPreferredWorkGroupSizeMultiple].operands.push(OperandId, "'Param Align'");
2367 InstructionDesc[OpGetKernelNDrangeSubGroupCount].operands.push(OperandId, "'ND Range'");
2368 InstructionDesc[OpGetKernelNDrangeSubGroupCount].operands.push(OperandId, "'Invoke'");
2369 InstructionDesc[OpGetKernelNDrangeSubGroupCount].operands.push(OperandId, "'Param'");
2370 InstructionDesc[OpGetKernelNDrangeSubGroupCount].operands.push(OperandId, "'Param Size'");
2371 InstructionDesc[OpGetKernelNDrangeSubGroupCount].operands.push(OperandId, "'Param Align'");
2373 InstructionDesc[OpGetKernelNDrangeMaxSubGroupSize].operands.push(OperandId, "'ND Range'");
2374 InstructionDesc[OpGetKernelNDrangeMaxSubGroupSize].operands.push(OperandId, "'Invoke'");
2375 InstructionDesc[OpGetKernelNDrangeMaxSubGroupSize].operands.push(OperandId, "'Param'");
2376 InstructionDesc[OpGetKernelNDrangeMaxSubGroupSize].operands.push(OperandId, "'Param Size'");
2377 InstructionDesc[OpGetKernelNDrangeMaxSubGroupSize].operands.push(OperandId, "'Param Align'");
2379 InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Queue'");
2380 InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Flags'");
2381 InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'ND Range'");
2382 InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Num Events'");
2383 InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Wait Events'");
2384 InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Ret Event'");
2385 InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Invoke'");
2386 InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Param'");
2387 InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Param Size'");
2388 InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Param Align'");
2389 InstructionDesc[OpEnqueueKernel].operands.push(OperandVariableIds, "'Local Size'");
2391 InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'Queue'");
2392 InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'Num Events'");
2393 InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'Wait Events'");
2394 InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'Ret Event'");
2396 InstructionDesc[OpGroupNonUniformElect].operands.push(OperandScope, "'Execution'");
2398 InstructionDesc[OpGroupNonUniformAll].operands.push(OperandScope, "'Execution'");
2399 InstructionDesc[OpGroupNonUniformAll].operands.push(OperandId, "X");
2401 InstructionDesc[OpGroupNonUniformAny].operands.push(OperandScope, "'Execution'");
2402 InstructionDesc[OpGroupNonUniformAny].operands.push(OperandId, "X");
2404 InstructionDesc[OpGroupNonUniformAllEqual].operands.push(OperandScope, "'Execution'");
2405 InstructionDesc[OpGroupNonUniformAllEqual].operands.push(OperandId, "X");
2407 InstructionDesc[OpGroupNonUniformBroadcast].operands.push(OperandScope, "'Execution'");
2408 InstructionDesc[OpGroupNonUniformBroadcast].operands.push(OperandId, "X");
2409 InstructionDesc[OpGroupNonUniformBroadcast].operands.push(OperandId, "ID");
2411 InstructionDesc[OpGroupNonUniformBroadcastFirst].operands.push(OperandScope, "'Execution'");
2412 InstructionDesc[OpGroupNonUniformBroadcastFirst].operands.push(OperandId, "X");
2414 InstructionDesc[OpGroupNonUniformBallot].operands.push(OperandScope, "'Execution'");
2415 InstructionDesc[OpGroupNonUniformBallot].operands.push(OperandId, "X");
2417 InstructionDesc[OpGroupNonUniformInverseBallot].operands.push(OperandScope, "'Execution'");
2418 InstructionDesc[OpGroupNonUniformInverseBallot].operands.push(OperandId, "X");
2420 InstructionDesc[OpGroupNonUniformBallotBitExtract].operands.push(OperandScope, "'Execution'");
2421 InstructionDesc[OpGroupNonUniformBallotBitExtract].operands.push(OperandId, "X");
2422 InstructionDesc[OpGroupNonUniformBallotBitExtract].operands.push(OperandId, "Bit");
2424 InstructionDesc[OpGroupNonUniformBallotBitCount].operands.push(OperandScope, "'Execution'");
2425 InstructionDesc[OpGroupNonUniformBallotBitCount].operands.push(OperandGroupOperation, "'Operation'");
2426 InstructionDesc[OpGroupNonUniformBallotBitCount].operands.push(OperandId, "X");
2428 InstructionDesc[OpGroupNonUniformBallotFindLSB].operands.push(OperandScope, "'Execution'");
2429 InstructionDesc[OpGroupNonUniformBallotFindLSB].operands.push(OperandId, "X");
2431 InstructionDesc[OpGroupNonUniformBallotFindMSB].operands.push(OperandScope, "'Execution'");
2432 InstructionDesc[OpGroupNonUniformBallotFindMSB].operands.push(OperandId, "X");
2434 InstructionDesc[OpGroupNonUniformShuffle].operands.push(OperandScope, "'Execution'");
2435 InstructionDesc[OpGroupNonUniformShuffle].operands.push(OperandId, "X");
2436 InstructionDesc[OpGroupNonUniformShuffle].operands.push(OperandId, "'Id'");
2438 InstructionDesc[OpGroupNonUniformShuffleXor].operands.push(OperandScope, "'Execution'");
2439 InstructionDesc[OpGroupNonUniformShuffleXor].operands.push(OperandId, "X");
2440 InstructionDesc[OpGroupNonUniformShuffleXor].operands.push(OperandId, "Mask");
2442 InstructionDesc[OpGroupNonUniformShuffleUp].operands.push(OperandScope, "'Execution'");
2443 InstructionDesc[OpGroupNonUniformShuffleUp].operands.push(OperandId, "X");
2444 InstructionDesc[OpGroupNonUniformShuffleUp].operands.push(OperandId, "Offset");
2446 InstructionDesc[OpGroupNonUniformShuffleDown].operands.push(OperandScope, "'Execution'");
2447 InstructionDesc[OpGroupNonUniformShuffleDown].operands.push(OperandId, "X");
2448 InstructionDesc[OpGroupNonUniformShuffleDown].operands.push(OperandId, "Offset");
2450 InstructionDesc[OpGroupNonUniformIAdd].operands.push(OperandScope, "'Execution'");
2451 InstructionDesc[OpGroupNonUniformIAdd].operands.push(OperandGroupOperation, "'Operation'");
2452 InstructionDesc[OpGroupNonUniformIAdd].operands.push(OperandId, "X");
2453 InstructionDesc[OpGroupNonUniformIAdd].operands.push(OperandId, "'ClusterSize'", true);
2455 InstructionDesc[OpGroupNonUniformFAdd].operands.push(OperandScope, "'Execution'");
2456 InstructionDesc[OpGroupNonUniformFAdd].operands.push(OperandGroupOperation, "'Operation'");
2457 InstructionDesc[OpGroupNonUniformFAdd].operands.push(OperandId, "X");
2458 InstructionDesc[OpGroupNonUniformFAdd].operands.push(OperandId, "'ClusterSize'", true);
2460 InstructionDesc[OpGroupNonUniformIMul].operands.push(OperandScope, "'Execution'");
2461 InstructionDesc[OpGroupNonUniformIMul].operands.push(OperandGroupOperation, "'Operation'");
2462 InstructionDesc[OpGroupNonUniformIMul].operands.push(OperandId, "X");
2463 InstructionDesc[OpGroupNonUniformIMul].operands.push(OperandId, "'ClusterSize'", true);
2465 InstructionDesc[OpGroupNonUniformFMul].operands.push(OperandScope, "'Execution'");
2466 InstructionDesc[OpGroupNonUniformFMul].operands.push(OperandGroupOperation, "'Operation'");
2467 InstructionDesc[OpGroupNonUniformFMul].operands.push(OperandId, "X");
2468 InstructionDesc[OpGroupNonUniformFMul].operands.push(OperandId, "'ClusterSize'", true);
2470 InstructionDesc[OpGroupNonUniformSMin].operands.push(OperandScope, "'Execution'");
2471 InstructionDesc[OpGroupNonUniformSMin].operands.push(OperandGroupOperation, "'Operation'");
2472 InstructionDesc[OpGroupNonUniformSMin].operands.push(OperandId, "X");
2473 InstructionDesc[OpGroupNonUniformSMin].operands.push(OperandId, "'ClusterSize'", true);
2475 InstructionDesc[OpGroupNonUniformUMin].operands.push(OperandScope, "'Execution'");
2476 InstructionDesc[OpGroupNonUniformUMin].operands.push(OperandGroupOperation, "'Operation'");
2477 InstructionDesc[OpGroupNonUniformUMin].operands.push(OperandId, "X");
2478 InstructionDesc[OpGroupNonUniformUMin].operands.push(OperandId, "'ClusterSize'", true);
2480 InstructionDesc[OpGroupNonUniformFMin].operands.push(OperandScope, "'Execution'");
2481 InstructionDesc[OpGroupNonUniformFMin].operands.push(OperandGroupOperation, "'Operation'");
2482 InstructionDesc[OpGroupNonUniformFMin].operands.push(OperandId, "X");
2483 InstructionDesc[OpGroupNonUniformFMin].operands.push(OperandId, "'ClusterSize'", true);
2485 InstructionDesc[OpGroupNonUniformSMax].operands.push(OperandScope, "'Execution'");
2486 InstructionDesc[OpGroupNonUniformSMax].operands.push(OperandGroupOperation, "'Operation'");
2487 InstructionDesc[OpGroupNonUniformSMax].operands.push(OperandId, "X");
2488 InstructionDesc[OpGroupNonUniformSMax].operands.push(OperandId, "'ClusterSize'", true);
2490 InstructionDesc[OpGroupNonUniformUMax].operands.push(OperandScope, "'Execution'");
2491 InstructionDesc[OpGroupNonUniformUMax].operands.push(OperandGroupOperation, "'Operation'");
2492 InstructionDesc[OpGroupNonUniformUMax].operands.push(OperandId, "X");
2493 InstructionDesc[OpGroupNonUniformUMax].operands.push(OperandId, "'ClusterSize'", true);
2495 InstructionDesc[OpGroupNonUniformFMax].operands.push(OperandScope, "'Execution'");
2496 InstructionDesc[OpGroupNonUniformFMax].operands.push(OperandGroupOperation, "'Operation'");
2497 InstructionDesc[OpGroupNonUniformFMax].operands.push(OperandId, "X");
2498 InstructionDesc[OpGroupNonUniformFMax].operands.push(OperandId, "'ClusterSize'", true);
2500 InstructionDesc[OpGroupNonUniformBitwiseAnd].operands.push(OperandScope, "'Execution'");
2501 InstructionDesc[OpGroupNonUniformBitwiseAnd].operands.push(OperandGroupOperation, "'Operation'");
2502 InstructionDesc[OpGroupNonUniformBitwiseAnd].operands.push(OperandId, "X");
2503 InstructionDesc[OpGroupNonUniformBitwiseAnd].operands.push(OperandId, "'ClusterSize'", true);
2505 InstructionDesc[OpGroupNonUniformBitwiseOr].operands.push(OperandScope, "'Execution'");
2506 InstructionDesc[OpGroupNonUniformBitwiseOr].operands.push(OperandGroupOperation, "'Operation'");
2507 InstructionDesc[OpGroupNonUniformBitwiseOr].operands.push(OperandId, "X");
2508 InstructionDesc[OpGroupNonUniformBitwiseOr].operands.push(OperandId, "'ClusterSize'", true);
2510 InstructionDesc[OpGroupNonUniformBitwiseXor].operands.push(OperandScope, "'Execution'");
2511 InstructionDesc[OpGroupNonUniformBitwiseXor].operands.push(OperandGroupOperation, "'Operation'");
2512 InstructionDesc[OpGroupNonUniformBitwiseXor].operands.push(OperandId, "X");
2513 InstructionDesc[OpGroupNonUniformBitwiseXor].operands.push(OperandId, "'ClusterSize'", true);
2515 InstructionDesc[OpGroupNonUniformLogicalAnd].operands.push(OperandScope, "'Execution'");
2516 InstructionDesc[OpGroupNonUniformLogicalAnd].operands.push(OperandGroupOperation, "'Operation'");
2517 InstructionDesc[OpGroupNonUniformLogicalAnd].operands.push(OperandId, "X");
2518 InstructionDesc[OpGroupNonUniformLogicalAnd].operands.push(OperandId, "'ClusterSize'", true);
2520 InstructionDesc[OpGroupNonUniformLogicalOr].operands.push(OperandScope, "'Execution'");
2521 InstructionDesc[OpGroupNonUniformLogicalOr].operands.push(OperandGroupOperation, "'Operation'");
2522 InstructionDesc[OpGroupNonUniformLogicalOr].operands.push(OperandId, "X");
2523 InstructionDesc[OpGroupNonUniformLogicalOr].operands.push(OperandId, "'ClusterSize'", true);
2525 InstructionDesc[OpGroupNonUniformLogicalXor].operands.push(OperandScope, "'Execution'");
2526 InstructionDesc[OpGroupNonUniformLogicalXor].operands.push(OperandGroupOperation, "'Operation'");
2527 InstructionDesc[OpGroupNonUniformLogicalXor].operands.push(OperandId, "X");
2528 InstructionDesc[OpGroupNonUniformLogicalXor].operands.push(OperandId, "'ClusterSize'", true);
2530 InstructionDesc[OpGroupNonUniformQuadBroadcast].operands.push(OperandScope, "'Execution'");
2531 InstructionDesc[OpGroupNonUniformQuadBroadcast].operands.push(OperandId, "X");
2532 InstructionDesc[OpGroupNonUniformQuadBroadcast].operands.push(OperandId, "'Id'");
2534 InstructionDesc[OpGroupNonUniformQuadSwap].operands.push(OperandScope, "'Execution'");
2535 InstructionDesc[OpGroupNonUniformQuadSwap].operands.push(OperandId, "X");
2536 InstructionDesc[OpGroupNonUniformQuadSwap].operands.push(OperandLiteralNumber, "'Direction'");
2538 InstructionDesc[OpSubgroupBallotKHR].operands.push(OperandId, "'Predicate'");
2540 InstructionDesc[OpSubgroupFirstInvocationKHR].operands.push(OperandId, "'Value'");
2542 InstructionDesc[OpSubgroupAnyKHR].operands.push(OperandScope, "'Execution'");
2543 InstructionDesc[OpSubgroupAnyKHR].operands.push(OperandId, "'Predicate'");
2545 InstructionDesc[OpSubgroupAllKHR].operands.push(OperandScope, "'Execution'");
2546 InstructionDesc[OpSubgroupAllKHR].operands.push(OperandId, "'Predicate'");
2548 InstructionDesc[OpSubgroupAllEqualKHR].operands.push(OperandScope, "'Execution'");
2549 InstructionDesc[OpSubgroupAllEqualKHR].operands.push(OperandId, "'Predicate'");
2551 InstructionDesc[OpSubgroupReadInvocationKHR].operands.push(OperandId, "'Value'");
2552 InstructionDesc[OpSubgroupReadInvocationKHR].operands.push(OperandId, "'Index'");
2554 InstructionDesc[OpModuleProcessed].operands.push(OperandLiteralString, "'process'");
2556 #ifdef AMD_EXTENSIONS
2557 InstructionDesc[OpGroupIAddNonUniformAMD].operands.push(OperandScope, "'Execution'");
2558 InstructionDesc[OpGroupIAddNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'");
2559 InstructionDesc[OpGroupIAddNonUniformAMD].operands.push(OperandId, "'X'");
2561 InstructionDesc[OpGroupFAddNonUniformAMD].operands.push(OperandScope, "'Execution'");
2562 InstructionDesc[OpGroupFAddNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'");
2563 InstructionDesc[OpGroupFAddNonUniformAMD].operands.push(OperandId, "'X'");
2565 InstructionDesc[OpGroupUMinNonUniformAMD].operands.push(OperandScope, "'Execution'");
2566 InstructionDesc[OpGroupUMinNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'");
2567 InstructionDesc[OpGroupUMinNonUniformAMD].operands.push(OperandId, "'X'");
2569 InstructionDesc[OpGroupSMinNonUniformAMD].operands.push(OperandScope, "'Execution'");
2570 InstructionDesc[OpGroupSMinNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'");
2571 InstructionDesc[OpGroupSMinNonUniformAMD].operands.push(OperandId, "X");
2573 InstructionDesc[OpGroupFMinNonUniformAMD].operands.push(OperandScope, "'Execution'");
2574 InstructionDesc[OpGroupFMinNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'");
2575 InstructionDesc[OpGroupFMinNonUniformAMD].operands.push(OperandId, "X");
2577 InstructionDesc[OpGroupUMaxNonUniformAMD].operands.push(OperandScope, "'Execution'");
2578 InstructionDesc[OpGroupUMaxNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'");
2579 InstructionDesc[OpGroupUMaxNonUniformAMD].operands.push(OperandId, "X");
2581 InstructionDesc[OpGroupSMaxNonUniformAMD].operands.push(OperandScope, "'Execution'");
2582 InstructionDesc[OpGroupSMaxNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'");
2583 InstructionDesc[OpGroupSMaxNonUniformAMD].operands.push(OperandId, "X");
2585 InstructionDesc[OpGroupFMaxNonUniformAMD].operands.push(OperandScope, "'Execution'");
2586 InstructionDesc[OpGroupFMaxNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'");
2587 InstructionDesc[OpGroupFMaxNonUniformAMD].operands.push(OperandId, "X");
2589 InstructionDesc[OpFragmentMaskFetchAMD].operands.push(OperandId, "'Image'");
2590 InstructionDesc[OpFragmentMaskFetchAMD].operands.push(OperandId, "'Coordinate'");
2592 InstructionDesc[OpFragmentFetchAMD].operands.push(OperandId, "'Image'");
2593 InstructionDesc[OpFragmentFetchAMD].operands.push(OperandId, "'Coordinate'");
2594 InstructionDesc[OpFragmentFetchAMD].operands.push(OperandId, "'Fragment Index'");
2597 #ifdef NV_EXTENSIONS
2598 InstructionDesc[OpGroupNonUniformPartitionNV].operands.push(OperandId, "X");
2602 }; // end spv namespace