//
//Copyright (C) 2014 LunarG, Inc.
//
//All rights reserved.
//
//Redistribution and use in source and binary forms, with or without
//modification, are permitted provided that the following conditions
//are met:
//
//    Redistributions of source code must retain the above copyright
//    notice, this list of conditions and the following disclaimer.
//
//    Redistributions in binary form must reproduce the above
//    copyright notice, this list of conditions and the following
//    disclaimer in the documentation and/or other materials provided
//    with the distribution.
//
//    Neither the name of 3Dlabs Inc. Ltd. nor the names of its
//    contributors may be used to endorse or promote products derived
//    from this software without specific prior written permission.
//
//THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
//"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
//LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
//FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
//COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
//INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
//BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
//LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
//CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
//LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
//ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
//POSSIBILITY OF SUCH DAMAGE.

//
// Author: John Kessenich, LunarG
//

//
// 1) Programatically fill in instruction/operand information.
//    This can be used for disassembly, printing documentation, etc.
//
// 2) Print documentation from this parameterization.
//

#include "doc.h"

#include <stdio.h>
#include <string.h>
#include <algorithm>

namespace spv {

//
// Whole set of functions that translate enumerants to their text strings for
// the specification (or their sanitized versions for auto-generating the
// spirv.h header.
//
// Also, the ceilings are declared next to these, to help keep them in sync.
// Ceilings should be
//  - one more than the maximum value an enumerant takes on, for non-mask enumerants
//    (for non-sparse enums, this is the number of enumurants)
//  - the number of bits consumed by the set of masks
//    (for non-sparse mask enums, this is the number of enumurants)
//

const int SourceLanguageCeiling = 4;

const char* SourceString(int source)
{
    switch (source) {
    case 0:  return "Unknown";
    case 1:  return "ESSL";
    case 2:  return "GLSL";
    case 3:  return "OpenCL";

    case SourceLanguageCeiling:
    default: return "Bad";
    }
}

const int ExecutionModelCeiling = 7;

const char* ExecutionModelString(int model)
{
    switch (model) {
    case 0:  return "Vertex";
    case 1:  return "TessellationControl";
    case 2:  return "TessellationEvaluation";
    case 3:  return "Geometry";
    case 4:  return "Fragment";
    case 5:  return "GLCompute";
    case 6:  return "Kernel";

    case ExecutionModelCeiling:
    default: return "Bad";
    }
}

const int AddressingModelCeiling = 3;

const char* AddressingString(int addr)
{
    switch (addr) {
    case 0:  return "Logical";
    case 1:  return "Physical32";
    case 2:  return "Physical64";

    case AddressingModelCeiling:
    default: return "Bad";
    }
}

const int MemoryModelCeiling = 5;

const char* MemoryString(int mem)
{
    switch (mem) {
    case 0:  return "Simple";
    case 1:  return "GLSL450";
    case 2:  return "OpenCL1.2";
    case 3:  return "OpenCL2.0";
    case 4:  return "OpenCL2.1";

    case MemoryModelCeiling:
    default: return "Bad";
    }
}

const int ExecutionModeCeiling = 31;

const char* ExecutionModeString(int mode)
{
    switch (mode) {
    case 0:  return "Invocations";
    case 1:  return "SpacingEqual";
    case 2:  return "SpacingFractionalEven";
    case 3:  return "SpacingFractionalOdd";
    case 4:  return "VertexOrderCw";
    case 5:  return "VertexOrderCcw";
    case 6:  return "PixelCenterInteger";
    case 7:  return "OriginUpperLeft";
    case 8:  return "EarlyFragmentTests";
    case 9:  return "PointMode";
    case 10: return "Xfb";
    case 11: return "DepthReplacing";
    case 12: return "DepthAny";
    case 13: return "DepthGreater";
    case 14: return "DepthLess";
    case 15: return "DepthUnchanged";
    case 16: return "LocalSize";
    case 17: return "LocalSizeHint";
    case 18: return "InputPoints";
    case 19: return "InputLines";
    case 20: return "InputLinesAdjacency";
    case 21: return "InputTriangles";
    case 22: return "InputTrianglesAdjacency";
    case 23: return "InputQuads";
    case 24: return "InputIsolines";
    case 25: return "OutputVertices";
    case 26: return "OutputPoints";
    case 27: return "OutputLineStrip";
    case 28: return "OutputTriangleStrip";
    case 29: return "VecTypeHint";
    case 30: return "ContractionOff";

    case ExecutionModeCeiling:
    default: return "Bad";
    }
}

const int StorageClassCeiling = 11;

const char* StorageClassString(int StorageClass)
{
    switch (StorageClass) {
    case 0:  return "UniformConstant";
    case 1:  return "Input";
    case 2:  return "Uniform";
    case 3:  return "Output";
    case 4:  return "WorkgroupLocal";
    case 5:  return "WorkgroupGlobal";
    case 6:  return "PrivateGlobal";
    case 7:  return "Function";
    case 8:  return "Generic";
    case 9:  return "Private";
    case 10: return "AtomicCounter";

    case StorageClassCeiling:
    default: return "Bad";
    }
}

const int DecorationCeiling = 45;

const char* DecorationString(int decoration)
{
    switch (decoration) {
    case 0:  return "PrecisionLow";
    case 1:  return "PrecisionMedium";
    case 2:  return "PrecisionHigh";
    case 3:  return "Block";
    case 4:  return "BufferBlock";
    case 5:  return "RowMajor";
    case 6:  return "ColMajor";
    case 7:  return "GLSLShared";
    case 8:  return "GLSLStd140";
    case 9:  return "GLSLStd430";
    case 10: return "GLSLPacked";
    case 11: return "Smooth";
    case 12: return "Noperspective";
    case 13: return "Flat";
    case 14: return "Patch";
    case 15: return "Centroid";
    case 16: return "Sample";
    case 17: return "Invariant";
    case 18: return "Restrict";
    case 19: return "Aliased";
    case 20: return "Volatile";
    case 21: return "Constant";
    case 22: return "Coherent";
    case 23: return "Nonwritable";
    case 24: return "Nonreadable";
    case 25: return "Uniform";
    case 26: return "NoStaticUse";
    case 27: return "CPacked";
    case 28: return "SaturatedConversion";
    case 29: return "Stream";
    case 30: return "Location";
    case 31: return "Component";
    case 32: return "Index";
    case 33: return "Binding";
    case 34: return "DescriptorSet";
    case 35: return "Offset";
    case 36: return "Alignment";
    case 37: return "XfbBuffer";
    case 38: return "Stride";
    case 39: return "BuiltIn";
    case 40: return "FuncParamAttr";
    case 41: return "FP Rounding Mode";
    case 42: return "FP Fast Math Mode";
    case 43: return "Linkage Attributes";
    case 44: return "SpecId";

    case DecorationCeiling:
    default:  return "Bad";
    }
}

const int BuiltInCeiling = 42;

const char* BuiltInString(int builtIn)
{
    switch (builtIn) {
    case 0:  return "Position";
    case 1:  return "PointSize";
    case 2:  return "ClipVertex";
    case 3:  return "ClipDistance";
    case 4:  return "CullDistance";
    case 5:  return "VertexId";
    case 6:  return "InstanceId";
    case 7:  return "PrimitiveId";
    case 8:  return "InvocationId";
    case 9:  return "Layer";
    case 10: return "ViewportIndex";
    case 11: return "TessLevelOuter";
    case 12: return "TessLevelInner";
    case 13: return "TessCoord";
    case 14: return "PatchVertices";
    case 15: return "FragCoord";
    case 16: return "PointCoord";
    case 17: return "FrontFacing";
    case 18: return "SampleId";
    case 19: return "SamplePosition";
    case 20: return "SampleMask";
    case 21: return "FragColor";
    case 22: return "FragDepth";
    case 23: return "HelperInvocation";
    case 24: return "NumWorkgroups";
    case 25: return "WorkgroupSize";
    case 26: return "WorkgroupId";
    case 27: return "LocalInvocationId";
    case 28: return "GlobalInvocationId";
    case 29: return "LocalInvocationIndex";
    case 30: return "WorkDim";
    case 31: return "GlobalSize";
    case 32: return "EnqueuedWorkgroupSize";
    case 33: return "GlobalOffset";
    case 34: return "GlobalLinearId";
    case 35: return "WorkgroupLinearId";
    case 36: return "SubgroupSize";
    case 37: return "SubgroupMaxSize";
    case 38: return "NumSubgroups";
    case 39: return "NumEnqueuedSubgroups";
    case 40: return "SubgroupId";
    case 41: return "SubgroupLocalInvocationId";

    case BuiltInCeiling:
    default: return "Bad";
    }
}

const int DimensionCeiling = 6;

const char* DimensionString(int dim)
{
    switch (dim) {
    case 0:  return "1D";
    case 1:  return "2D";
    case 2:  return "3D";
    case 3:  return "Cube";
    case 4:  return "Rect";
    case 5:  return "Buffer";

    case DimensionCeiling:
    default: return "Bad";
    }
}

const int SamplerAddressingModeCeiling = 5;

const char* SamplerAddressingModeString(int mode)
{
    switch (mode) {
    case 0:  return "None";
    case 1:  return "ClampToEdge";
    case 2:  return "Clamp";
    case 3:  return "Repeat";
    case 4:  return "RepeatMirrored";

    case SamplerAddressingModeCeiling:
    default: return "Bad";
    }
}

const int SamplerFilterModeCeiling = 2;

const char* SamplerFilterModeString(int mode)
{
    switch (mode) {
    case 0: return "Nearest";
    case 1: return "Linear";

    case SamplerFilterModeCeiling:
    default: return "Bad";
    }
}

const int FPFastMathCeiling = 5;

const char* FPFastMathString(int mode)
{
    switch (mode) {
    case 0: return "NotNaN";
    case 1: return "NotInf";
    case 2: return "NSZ";
    case 3: return "AllowRecip";
    case 4: return "Fast";

    case FPFastMathCeiling:
    default:     return "Bad";
    }
}

const int FPRoundingModeCeiling = 4;

const char* FPRoundingModeString(int mode)
{
    switch (mode) {
    case 0:  return "RTE";
    case 1:  return "RTZ";
    case 2:  return "RTP";
    case 3:  return "RTN";

    case FPRoundingModeCeiling:
    default: return "Bad";
    }
}

const int LinkageTypeCeiling = 2;

const char* LinkageTypeString(int type)
{
    switch (type) {
    case 0:  return "Export";
    case 1:  return "Import";

    case LinkageTypeCeiling:
    default: return "Bad";
    }
}

const int FuncParamAttrCeiling = 9;

const char* FuncParamAttrString(int attr)
{
    switch (attr) {
    case 0:  return "Zext";
    case 1:  return "Sext";
    case 2:  return "ByVal";
    case 3:  return "Sret";
    case 4:  return "NoAlias";
    case 5:  return "NoCapture";
    case 6:  return "SVM";
    case 7:  return "NoWrite";
    case 8:  return "NoReadWrite";

    case FuncParamAttrCeiling:
    default: return "Bad";
    }
}

const int AccessQualifierCeiling = 3;

const char* AccessQualifierString(int attr)
{
    switch (attr) {
    case 0:  return "ReadOnly";
    case 1:  return "WriteOnly";
    case 2:  return "ReadWrite";

    case AccessQualifierCeiling:
    default: return "Bad";
    }
}

const int SelectControlCeiling = 2;

const char* SelectControlString(int cont)
{
    switch (cont) {
    case 0:  return "Flatten";
    case 1:  return "DontFlatten";

    case SelectControlCeiling:
    default:                       return "Bad";
    }
}

const int LoopControlCeiling = 2;

const char* LoopControlString(int cont)
{
    switch (cont) {
    case 0: return "Unroll";
    case 1: return "DontUnroll";

    case LoopControlCeiling:
    default:     return "Bad";
    }
}

const int FunctionControlCeiling = 4;

const char* FunctionControlString(int cont)
{
    switch (cont) {
    case 0:  return "Inline";
    case 1:  return "DontInline";
    case 2:  return "Pure";
    case 3:  return "Const";

    case FunctionControlCeiling:
    default: return "Bad";
    }
}

const int MemorySemanticsCeiling = 10;

const char* MemorySemanticsString(int mem)
{
    switch (mem) {
    case 0: return "Relaxed";
    case 1: return "SequentiallyConsistent";
    case 2: return "Acquire";
    case 3: return "Release";

    case 4: return "UniformMemory";
    case 5: return "SubgroupMemory";
    case 6: return "WorkgroupLocalMemory";
    case 7: return "WorkgroupGlobalMemory";
    case 8: return "AtomicCounterMemory";
    case 9: return "ImageMemory";

    case MemorySemanticsCeiling:
    default:     return "Bad";
    }
}

const int MemoryAccessCeiling = 2;

const char* MemoryAccessString(int mem)
{
    switch (mem) {
    case 0:  return "Volatile";
    case 1:  return "Aligned";

    case MemoryAccessCeiling:
    default: return "Bad";
    }
}

const int ExecutionScopeCeiling = 4;

const char* ExecutionScopeString(int mem)
{
    switch (mem) {
    case 0:  return "CrossDevice";
    case 1:  return "Device";
    case 2:  return "Workgroup";
    case 3:  return "Subgroup";

    case ExecutionScopeCeiling:
    default: return "Bad";
    }
}

const int GroupOperationCeiling = 3;

const char* GroupOperationString(int gop)
{

    switch (gop)
    {
    case 0:  return "Reduce";
    case 1:  return "InclusiveScan";
    case 2:  return "ExclusiveScan";

    case GroupOperationCeiling:
    default: return "Bad";
    }
}

const int KernelEnqueueFlagsCeiling = 3;

const char* KernelEnqueueFlagsString(int flag)
{
    switch (flag)
    {
    case 0:  return "NoWait";
    case 1:  return "WaitKernel";
    case 2:  return "WaitWorkGroup";

    case KernelEnqueueFlagsCeiling:
    default: return "Bad";
    }
}

const int KernelProfilingInfoCeiling = 1;

const char* KernelProfilingInfoString(int info)
{
    switch (info)
    {
    case 0:  return "CmdExecTime";

    case KernelProfilingInfoCeiling:
    default: return "Bad";
    }
}

const char* OpcodeString(int op)
{
    switch (op) {
    case 0:   return "OpNop";
    case 1:   return "OpSource";
    case 2:   return "OpSourceExtension";
    case 3:   return "OpExtension";
    case 4:   return "OpExtInstImport";
    case 5:   return "OpMemoryModel";
    case 6:   return "OpEntryPoint";
    case 7:   return "OpExecutionMode";
    case 8:   return "OpTypeVoid";
    case 9:   return "OpTypeBool";
    case 10:  return "OpTypeInt";
    case 11:  return "OpTypeFloat";
    case 12:  return "OpTypeVector";
    case 13:  return "OpTypeMatrix";
    case 14:  return "OpTypeSampler";
    case 15:  return "OpTypeFilter";
    case 16:  return "OpTypeArray";
    case 17:  return "OpTypeRuntimeArray";
    case 18:  return "OpTypeStruct";
    case 19:  return "OpTypeOpaque";
    case 20:  return "OpTypePointer";
    case 21:  return "OpTypeFunction";
    case 22:  return "OpTypeEvent";
    case 23:  return "OpTypeDeviceEvent";
    case 24:  return "OpTypeReserveId";
    case 25:  return "OpTypeQueue";
    case 26:  return "OpTypePipe";
    case 27:  return "OpConstantTrue";
    case 28:  return "OpConstantFalse";
    case 29:  return "OpConstant";
    case 30:  return "OpConstantComposite";
    case 31:  return "OpConstantSampler";
    case 32:  return "OpConstantNullPointer";
    case 33:  return "OpConstantNullObject";
    case 34:  return "OpSpecConstantTrue";
    case 35:  return "OpSpecConstantFalse";
    case 36:  return "OpSpecConstant";
    case 37:  return "OpSpecConstantComposite";
    case 38:  return "OpVariable";
    case 39:  return "OpVariableArray";
    case 40:  return "OpFunction";
    case 41:  return "OpFunctionParameter";
    case 42:  return "OpFunctionEnd";
    case 43:  return "OpFunctionCall";
    case 44:  return "OpExtInst";
    case 45:  return "OpUndef";
    case 46:  return "OpLoad";
    case 47:  return "OpStore";
    case 48:  return "OpPhi";
    case 49:  return "OpDecorationGroup";
    case 50:  return "OpDecorate";
    case 51:  return "OpMemberDecorate";
    case 52:  return "OpGroupDecorate";
    case 53:  return "OpGroupMemberDecorate";
    case 54:  return "OpName";
    case 55:  return "OpMemberName";
    case 56:  return "OpString";
    case 57:  return "OpLine";
    case 58:  return "OpVectorExtractDynamic";
    case 59:  return "OpVectorInsertDynamic";
    case 60:  return "OpVectorShuffle";
    case 61:  return "OpCompositeConstruct";
    case 62:  return "OpCompositeExtract";
    case 63:  return "OpCompositeInsert";
    case 64:  return "OpCopyObject";
    case 65:  return "OpCopyMemory";
    case 66:  return "OpCopyMemorySized";
    case 67:  return "OpSampler";
    case 68:  return "OpTextureSample";
    case 69:  return "OpTextureSampleDref";
    case 70:  return "OpTextureSampleLod";
    case 71:  return "OpTextureSampleProj";
    case 72:  return "OpTextureSampleGrad";
    case 73:  return "OpTextureSampleOffset";
    case 74:  return "OpTextureSampleProjLod";
    case 75:  return "OpTextureSampleProjGrad";
    case 76:  return "OpTextureSampleLodOffset";
    case 77:  return "OpTextureSampleProjOffset";
    case 78:  return "OpTextureSampleGradOffset";
    case 79:  return "OpTextureSampleProjLodOffset";
    case 80:  return "OpTextureSampleProjGradOffset";
    case 81:  return "OpTextureFetchTexelLod";
    case 82:  return "OpTextureFetchTexelOffset";
    case 83:  return "OpTextureFetchSample";
    case 84:  return "OpTextureFetchTexel";
    case 85:  return "OpTextureGather";
    case 86:  return "OpTextureGatherOffset";
    case 87:  return "OpTextureGatherOffsets";
    case 88:  return "OpTextureQuerySizeLod";
    case 89:  return "OpTextureQuerySize";
    case 90:  return "OpTextureQueryLod";
    case 91:  return "OpTextureQueryLevels";
    case 92:  return "OpTextureQuerySamples";
    case 93:  return "OpAccessChain";
    case 94:  return "OpInBoundsAccessChain";
    case 95:  return "OpSNegate";
    case 96:  return "OpFNegate";
    case 97:  return "OpNot";
    case 98:  return "OpAny";
    case 99:  return "OpAll";
    case 100: return "OpConvertFToU";
    case 101: return "OpConvertFToS";
    case 102: return "OpConvertSToF";
    case 103: return "OpConvertUToF";
    case 104: return "OpUConvert";
    case 105: return "OpSConvert";
    case 106: return "OpFConvert";
    case 107: return "OpConvertPtrToU";
    case 108: return "OpConvertUToPtr";
    case 109: return "OpPtrCastToGeneric";
    case 110: return "OpGenericCastToPtr";
    case 111: return "OpBitcast";
    case 112: return "OpTranspose";
    case 113: return "OpIsNan";
    case 114: return "OpIsInf";
    case 115: return "OpIsFinite";
    case 116: return "OpIsNormal";
    case 117: return "OpSignBitSet";
    case 118: return "OpLessOrGreater";
    case 119: return "OpOrdered";
    case 120: return "OpUnordered";
    case 121: return "OpArrayLength";
    case 122: return "OpIAdd";
    case 123: return "OpFAdd";
    case 124: return "OpISub";
    case 125: return "OpFSub";
    case 126: return "OpIMul";
    case 127: return "OpFMul";
    case 128: return "OpUDiv";
    case 129: return "OpSDiv";
    case 130: return "OpFDiv";
    case 131: return "OpUMod";
    case 132: return "OpSRem";
    case 133: return "OpSMod";
    case 134: return "OpFRem";
    case 135: return "OpFMod";
    case 136: return "OpVectorTimesScalar";
    case 137: return "OpMatrixTimesScalar";
    case 138: return "OpVectorTimesMatrix";
    case 139: return "OpMatrixTimesVector";
    case 140: return "OpMatrixTimesMatrix";
    case 141: return "OpOuterProduct";
    case 142: return "OpDot";
    case 143: return "OpShiftRightLogical";
    case 144: return "OpShiftRightArithmetic";
    case 145: return "OpShiftLeftLogical";
    case 146: return "OpLogicalOr";
    case 147: return "OpLogicalXor";
    case 148: return "OpLogicalAnd";
    case 149: return "OpBitwiseOr";
    case 150: return "OpBitwiseXor";
    case 151: return "OpBitwiseAnd";
    case 152: return "OpSelect";
    case 153: return "OpIEqual";
    case 154: return "OpFOrdEqual";
    case 155: return "OpFUnordEqual";
    case 156: return "OpINotEqual";
    case 157: return "OpFOrdNotEqual";
    case 158: return "OpFUnordNotEqual";
    case 159: return "OpULessThan";
    case 160: return "OpSLessThan";
    case 161: return "OpFOrdLessThan";
    case 162: return "OpFUnordLessThan";
    case 163: return "OpUGreaterThan";
    case 164: return "OpSGreaterThan";
    case 165: return "OpFOrdGreaterThan";
    case 166: return "OpFUnordGreaterThan";
    case 167: return "OpULessThanEqual";
    case 168: return "OpSLessThanEqual";
    case 169: return "OpFOrdLessThanEqual";
    case 170: return "OpFUnordLessThanEqual";
    case 171: return "OpUGreaterThanEqual";
    case 172: return "OpSGreaterThanEqual";
    case 173: return "OpFOrdGreaterThanEqual";
    case 174: return "OpFUnordGreaterThanEqual";
    case 175: return "OpDPdx";
    case 176: return "OpDPdy";
    case 177: return "OpFwidth";
    case 178: return "OpDPdxFine";
    case 179: return "OpDPdyFine";
    case 180: return "OpFwidthFine";
    case 181: return "OpDPdxCoarse";
    case 182: return "OpDPdyCoarse";
    case 183: return "OpFwidthCoarse";
    case 184: return "OpEmitVertex";
    case 185: return "OpEndPrimitive";
    case 186: return "OpEmitStreamVertex";
    case 187: return "OpEndStreamPrimitive";
    case 188: return "OpControlBarrier";
    case 189: return "OpMemoryBarrier";
    case 190: return "OpImagePointer";
    case 191: return "OpAtomicInit";
    case 192: return "OpAtomicLoad";
    case 193: return "OpAtomicStore";
    case 194: return "OpAtomicExchange";
    case 195: return "OpAtomicCompareExchange";
    case 196: return "OpAtomicCompareExchangeWeak";
    case 197: return "OpAtomicIIncrement";
    case 198: return "OpAtomicIDecrement";
    case 199: return "OpAtomicIAdd";
    case 200: return "OpAtomicISub";
    case 201: return "OpAtomicUMin";
    case 202: return "OpAtomicUMax";
    case 203: return "OpAtomicAnd";
    case 204: return "OpAtomicOr";
    case 205: return "OpAtomicXor";
    case 206: return "OpLoopMerge";
    case 207: return "OpSelectionMerge";
    case 208: return "OpLabel";
    case 209: return "OpBranch";
    case 210: return "OpBranchConditional";
    case 211: return "OpSwitch";
    case 212: return "OpKill";
    case 213: return "OpReturn";
    case 214: return "OpReturnValue";
    case 215: return "OpUnreachable";
    case 216: return "OpLifetimeStart";
    case 217: return "OpLifetimeStop";
    case 218: return "OpCompileFlag";
    case 219: return "OpAsyncGroupCopy";
    case 220: return "OpWaitGroupEvents";
    case 221: return "OpGroupAll";
    case 222: return "OpGroupAny";
    case 223: return "OpGroupBroadcast";
    case 224: return "OpGroupIAdd";
    case 225: return "OpGroupFAdd";
    case 226: return "OpGroupFMin";
    case 227: return "OpGroupUMin";
    case 228: return "OpGroupSMin";
    case 229: return "OpGroupFMax";
    case 230: return "OpGroupUMax";
    case 231: return "OpGroupSMax";
    case 232: return "OpGenericCastToPtrExplicit";
    case 233: return "OpGenericPtrMemSemantics";
    case 234: return "OpReadPipe";
    case 235: return "OpWritePipe";
    case 236: return "OpReservedReadPipe";
    case 237: return "OpReservedWritePipe";
    case 238: return "OpReserveReadPipePackets";
    case 239: return "OpReserveWritePipePackets";
    case 240: return "OpCommitReadPipe";
    case 241: return "OpCommitWritePipe";
    case 242: return "OpIsValidReserveId";
    case 243: return "OpGetNumPipePackets";
    case 244: return "OpGetMaxPipePackets";
    case 245: return "OpGroupReserveReadPipePackets";
    case 246: return "OpGroupReserveWritePipePackets";
    case 247: return "OpGroupCommitReadPipe";
    case 248: return "OpGroupCommitWritePipe";
    case 249: return "OpEnqueueMarker";
    case 250: return "OpEnqueueKernel";
    case 251: return "OpGetKernelNDrangeSubGroupCount";
    case 252: return "OpGetKernelNDrangeMaxSubGroupSize";
    case 253: return "OpGetKernelWorkGroupSize";
    case 254: return "OpGetKernelPreferredWorkGroupSizeMultiple";
    case 255: return "OpRetainEvent";
    case 256: return "OpReleaseEvent";
    case 257: return "OpCreateUserEvent";
    case 258: return "OpIsValidEvent";
    case 259: return "OpSetUserEventStatus";
    case 260: return "OpCaptureEventProfilingInfo";
    case 261: return "OpGetDefaultQueue";
    case 262: return "OpBuildNDRange";
    case 263: return "OpSatConvertSToU";
    case 264: return "OpSatConvertUToS";
    case 265: return "OpAtomicIMin";
    case 266: return "OpAtomicIMax";

    case OpcodeCeiling:
    default:
        return "Bad";
    }
}

// The set of objects that hold all the instruction/operand
// parameterization information.
InstructionParameters InstructionDesc[OpcodeCeiling];
OperandParameters ExecutionModeOperands[ExecutionModeCeiling];
OperandParameters DecorationOperands[DecorationCeiling];

EnumDefinition OperandClassParams[OperandCount];
EnumParameters ExecutionModelParams[ExecutionModelCeiling];
EnumParameters AddressingParams[AddressingModelCeiling];
EnumParameters MemoryParams[MemoryModelCeiling];
EnumParameters ExecutionModeParams[ExecutionModeCeiling];
EnumParameters StorageParams[StorageClassCeiling];
EnumParameters SamplerAddressingModeParams[SamplerAddressingModeCeiling];
EnumParameters SamplerFilterModeParams[SamplerFilterModeCeiling];
EnumParameters FPFastMathParams[FPFastMathCeiling];
EnumParameters FPRoundingModeParams[FPRoundingModeCeiling];
EnumParameters LinkageTypeParams[LinkageTypeCeiling];
EnumParameters DecorationParams[DecorationCeiling];
EnumParameters BuiltInParams[BuiltInCeiling];
EnumParameters DimensionalityParams[DimensionCeiling];
EnumParameters FuncParamAttrParams[FuncParamAttrCeiling];
EnumParameters AccessQualifierParams[AccessQualifierCeiling];
EnumParameters GroupOperationParams[GroupOperationCeiling];
EnumParameters LoopControlParams[FunctionControlCeiling];
EnumParameters SelectionControlParams[SelectControlCeiling];
EnumParameters FunctionControlParams[FunctionControlCeiling];
EnumParameters MemorySemanticsParams[MemorySemanticsCeiling];
EnumParameters MemoryAccessParams[MemoryAccessCeiling];
EnumParameters ExecutionScopeParams[ExecutionScopeCeiling];
EnumParameters KernelEnqueueFlagsParams[KernelEnqueueFlagsCeiling];
EnumParameters KernelProfilingInfoParams[KernelProfilingInfoCeiling];

// Set up all the parameterizing descriptions of the opcodes, operands, etc.
void Parameterize()
{
    static bool initialized = false;

    // only do this once.
    if (initialized)
        return;

    initialized = true;

    // Exceptions to having a result <id> and a resulting type <id>.
    // (Everything is initialized to have both).

    InstructionDesc[OpNop].setResultAndType(false, false);
    InstructionDesc[OpSource].setResultAndType(false, false);
    InstructionDesc[OpSourceExtension].setResultAndType(false, false);
    InstructionDesc[OpExtension].setResultAndType(false, false);
    InstructionDesc[OpExtInstImport].setResultAndType(true, false);
    InstructionDesc[OpMemoryModel].setResultAndType(false, false);
    InstructionDesc[OpEntryPoint].setResultAndType(false, false);
    InstructionDesc[OpExecutionMode].setResultAndType(false, false);
    InstructionDesc[OpTypeVoid].setResultAndType(true, false);
    InstructionDesc[OpTypeBool].setResultAndType(true, false);
    InstructionDesc[OpTypeInt].setResultAndType(true, false);
    InstructionDesc[OpTypeFloat].setResultAndType(true, false);
    InstructionDesc[OpTypeVector].setResultAndType(true, false);
    InstructionDesc[OpTypeMatrix].setResultAndType(true, false);
    InstructionDesc[OpTypeSampler].setResultAndType(true, false);
    InstructionDesc[OpTypeFilter].setResultAndType(true, false);
    InstructionDesc[OpTypeArray].setResultAndType(true, false);
    InstructionDesc[OpTypeRuntimeArray].setResultAndType(true, false);
    InstructionDesc[OpTypeStruct].setResultAndType(true, false);
    InstructionDesc[OpTypeOpaque].setResultAndType(true, false);
    InstructionDesc[OpTypePointer].setResultAndType(true, false);
    InstructionDesc[OpTypeFunction].setResultAndType(true, false);
    InstructionDesc[OpTypeEvent].setResultAndType(true, false);
    InstructionDesc[OpTypeDeviceEvent].setResultAndType(true, false);
    InstructionDesc[OpTypeReserveId].setResultAndType(true, false);
    InstructionDesc[OpTypeQueue].setResultAndType(true, false);
    InstructionDesc[OpTypePipe].setResultAndType(true, false);
    InstructionDesc[OpFunctionEnd].setResultAndType(false, false);
    InstructionDesc[OpStore].setResultAndType(false, false);
    InstructionDesc[OpDecorationGroup].setResultAndType(true, false);
    InstructionDesc[OpDecorate].setResultAndType(false, false);
    InstructionDesc[OpMemberDecorate].setResultAndType(false, false);
    InstructionDesc[OpGroupDecorate].setResultAndType(false, false);
    InstructionDesc[OpGroupMemberDecorate].setResultAndType(false, false);
    InstructionDesc[OpName].setResultAndType(false, false);
    InstructionDesc[OpMemberName].setResultAndType(false, false);
    InstructionDesc[OpString].setResultAndType(true, false);
    InstructionDesc[OpLine].setResultAndType(false, false);
    InstructionDesc[OpCopyMemory].setResultAndType(false, false);
    InstructionDesc[OpCopyMemorySized].setResultAndType(false, false);
    InstructionDesc[OpEmitVertex].setResultAndType(false, false);
    InstructionDesc[OpEndPrimitive].setResultAndType(false, false);
    InstructionDesc[OpEmitStreamVertex].setResultAndType(false, false);
    InstructionDesc[OpEndStreamPrimitive].setResultAndType(false, false);
    InstructionDesc[OpControlBarrier].setResultAndType(false, false);
    InstructionDesc[OpMemoryBarrier].setResultAndType(false, false);
    InstructionDesc[OpAtomicInit].setResultAndType(false, false);
    InstructionDesc[OpAtomicStore].setResultAndType(false, false);
    InstructionDesc[OpLoopMerge].setResultAndType(false, false);
    InstructionDesc[OpSelectionMerge].setResultAndType(false, false);
    InstructionDesc[OpLabel].setResultAndType(true, false);
    InstructionDesc[OpBranch].setResultAndType(false, false);
    InstructionDesc[OpBranchConditional].setResultAndType(false, false);
    InstructionDesc[OpSwitch].setResultAndType(false, false);
    InstructionDesc[OpKill].setResultAndType(false, false);
    InstructionDesc[OpReturn].setResultAndType(false, false);
    InstructionDesc[OpReturnValue].setResultAndType(false, false);
    InstructionDesc[OpUnreachable].setResultAndType(false, false);
    InstructionDesc[OpLifetimeStart].setResultAndType(false, false);
    InstructionDesc[OpLifetimeStop].setResultAndType(false, false);
    InstructionDesc[OpCompileFlag].setResultAndType(false, false);
    InstructionDesc[OpCommitReadPipe].setResultAndType(false, false);
    InstructionDesc[OpCommitWritePipe].setResultAndType(false, false);
    InstructionDesc[OpGroupCommitWritePipe].setResultAndType(false, false);
    InstructionDesc[OpGroupCommitReadPipe].setResultAndType(false, false);
    InstructionDesc[OpCaptureEventProfilingInfo].setResultAndType(false, false);
    InstructionDesc[OpSetUserEventStatus].setResultAndType(false, false);
    InstructionDesc[OpRetainEvent].setResultAndType(false, false);
    InstructionDesc[OpReleaseEvent].setResultAndType(false, false);

    // Specific additional context-dependent operands

    ExecutionModeOperands[ExecutionModeInvocations].push(OperandLiteralNumber, "Number of invocations");

    ExecutionModeOperands[ExecutionModeLocalSize].push(OperandLiteralNumber, "'x size'");
    ExecutionModeOperands[ExecutionModeLocalSize].push(OperandLiteralNumber, "'y size'");
    ExecutionModeOperands[ExecutionModeLocalSize].push(OperandLiteralNumber, "'z size'");

    ExecutionModeOperands[ExecutionModeLocalSizeHint].push(OperandLiteralNumber, "'x size'");
    ExecutionModeOperands[ExecutionModeLocalSizeHint].push(OperandLiteralNumber, "'y size'");
    ExecutionModeOperands[ExecutionModeLocalSizeHint].push(OperandLiteralNumber, "'z size'");

    ExecutionModeOperands[ExecutionModeOutputVertices].push(OperandLiteralNumber, "Vertex count");
    ExecutionModeOperands[ExecutionModeVecTypeHint].push(OperandId, "Vector type");

    DecorationOperands[DecorationStream].push(OperandLiteralNumber, "Stream number");
    DecorationOperands[DecorationLocation].push(OperandLiteralNumber, "Location");
    DecorationOperands[DecorationComponent].push(OperandLiteralNumber, "Component within a vector");
    DecorationOperands[DecorationIndex].push(OperandLiteralNumber, "Index");
    DecorationOperands[DecorationBinding].push(OperandLiteralNumber, "Binding point");
    DecorationOperands[DecorationDescriptorSet].push(OperandLiteralNumber, "Descriptor set");
    DecorationOperands[DecorationOffset].push(OperandLiteralNumber, "Byte offset");
    DecorationOperands[DecorationAlignment].push(OperandLiteralNumber, "Declared alignment");
    DecorationOperands[DecorationXfbBuffer].push(OperandLiteralNumber, "XFB Buffer number");
    DecorationOperands[DecorationStride].push(OperandLiteralNumber, "Stride");
    DecorationOperands[DecorationBuiltIn].push(OperandLiteralNumber, "See <<BuiltIn,*BuiltIn*>>");
    DecorationOperands[DecorationFPRoundingMode].push(OperandFPRoundingMode, "floating-point rounding mode");
    DecorationOperands[DecorationFPFastMathMode].push(OperandFPFastMath, "fast-math mode");
    DecorationOperands[DecorationLinkageAttributes].push(OperandLiteralString, "name");
    DecorationOperands[DecorationLinkageAttributes].push(OperandLinkageType, "linkage type");
    DecorationOperands[DecorationFuncParamAttr].push(OperandFuncParamAttr, "function parameter attribute");
    DecorationOperands[DecorationSpecId].push(OperandLiteralNumber, "Specialization Constant ID");

    OperandClassParams[OperandSource].set(SourceLanguageCeiling, SourceString, 0);
    OperandClassParams[OperandExecutionModel].set(ExecutionModelCeiling, ExecutionModelString, ExecutionModelParams);
    OperandClassParams[OperandAddressing].set(AddressingModelCeiling, AddressingString, AddressingParams);
    OperandClassParams[OperandMemory].set(MemoryModelCeiling, MemoryString, MemoryParams);
    OperandClassParams[OperandExecutionMode].set(ExecutionModeCeiling, ExecutionModeString, ExecutionModeParams);
    OperandClassParams[OperandExecutionMode].setOperands(ExecutionModeOperands);
    OperandClassParams[OperandStorage].set(StorageClassCeiling, StorageClassString, StorageParams);
    OperandClassParams[OperandDimensionality].set(DimensionCeiling, DimensionString, DimensionalityParams);
    OperandClassParams[OperandSamplerAddressingMode].set(SamplerAddressingModeCeiling, SamplerAddressingModeString, SamplerAddressingModeParams);
    OperandClassParams[OperandSamplerFilterMode].set(SamplerFilterModeCeiling, SamplerFilterModeString, SamplerFilterModeParams);
    OperandClassParams[OperandFPFastMath].set(FPFastMathCeiling, FPFastMathString, FPFastMathParams, true);
    OperandClassParams[OperandFPRoundingMode].set(FPRoundingModeCeiling, FPRoundingModeString, FPRoundingModeParams);
    OperandClassParams[OperandLinkageType].set(LinkageTypeCeiling, LinkageTypeString, LinkageTypeParams);
    OperandClassParams[OperandFuncParamAttr].set(FuncParamAttrCeiling, FuncParamAttrString, FuncParamAttrParams);
    OperandClassParams[OperandAccessQualifier].set(AccessQualifierCeiling, AccessQualifierString, AccessQualifierParams);
    OperandClassParams[OperandDecoration].set(DecorationCeiling, DecorationString, DecorationParams);
    OperandClassParams[OperandDecoration].setOperands(DecorationOperands);
    OperandClassParams[OperandBuiltIn].set(BuiltInCeiling, BuiltInString, BuiltInParams);
    OperandClassParams[OperandSelect].set(SelectControlCeiling, SelectControlString, SelectionControlParams, true);
    OperandClassParams[OperandLoop].set(LoopControlCeiling, LoopControlString, LoopControlParams, true);
    OperandClassParams[OperandFunction].set(FunctionControlCeiling, FunctionControlString, FunctionControlParams, true);
    OperandClassParams[OperandMemorySemantics].set(MemorySemanticsCeiling, MemorySemanticsString, MemorySemanticsParams, true);
    OperandClassParams[OperandMemoryAccess].set(MemoryAccessCeiling, MemoryAccessString, MemoryAccessParams, true);
    OperandClassParams[OperandExecutionScope].set(ExecutionScopeCeiling, ExecutionScopeString, ExecutionScopeParams);
    OperandClassParams[OperandGroupOperation].set(GroupOperationCeiling, GroupOperationString, GroupOperationParams);
    OperandClassParams[OperandKernelEnqueueFlags].set(KernelEnqueueFlagsCeiling, KernelEnqueueFlagsString, KernelEnqueueFlagsParams);
    OperandClassParams[OperandKernelProfilingInfo].set(KernelProfilingInfoCeiling, KernelProfilingInfoString, KernelProfilingInfoParams, true);
    OperandClassParams[OperandOpcode].set(OpcodeCeiling, OpcodeString, 0);

    AddressingParams[AddressingModelPhysical32].caps.push_back(CapAddr);
    AddressingParams[AddressingModelPhysical64].caps.push_back(CapAddr);

    MemoryParams[MemoryModelSimple].caps.push_back(CapShader);
    MemoryParams[MemoryModelGLSL450].caps.push_back(CapShader);
    MemoryParams[MemoryModelOpenCL12].caps.push_back(CapKernel);
    MemoryParams[MemoryModelOpenCL20].caps.push_back(CapKernel);
    MemoryParams[MemoryModelOpenCL21].caps.push_back(CapKernel);

    ExecutionModelParams[ExecutionModelVertex].caps.push_back(CapShader);
    ExecutionModelParams[ExecutionModelTessellationControl].caps.push_back(CapTess);
    ExecutionModelParams[ExecutionModelTessellationEvaluation].caps.push_back(CapTess);
    ExecutionModelParams[ExecutionModelGeometry].caps.push_back(CapGeom);
    ExecutionModelParams[ExecutionModelFragment].caps.push_back(CapShader);
    ExecutionModelParams[ExecutionModelGLCompute].caps.push_back(CapShader);
    ExecutionModelParams[ExecutionModelKernel].caps.push_back(CapKernel);

    // Storage capabilites
    StorageParams[StorageClassInput].caps.push_back(CapShader);
    StorageParams[StorageClassUniform].caps.push_back(CapShader);
    StorageParams[StorageClassOutput].caps.push_back(CapShader);
    StorageParams[StorageClassPrivateGlobal].caps.push_back(CapShader);
    StorageParams[StorageClassFunction].caps.push_back(CapShader);
    StorageParams[StorageClassGeneric].caps.push_back(CapKernel);
    StorageParams[StorageClassPrivate].caps.push_back(CapKernel);
    StorageParams[StorageClassAtomicCounter].caps.push_back(CapShader);

    // Sampler Filter & Addressing mode capabilities
    SamplerAddressingModeParams[SamplerAddressingModeNone].caps.push_back(CapKernel);
    SamplerAddressingModeParams[SamplerAddressingModeClampToEdge].caps.push_back(CapKernel);
    SamplerAddressingModeParams[SamplerAddressingModeClamp].caps.push_back(CapKernel);
    SamplerAddressingModeParams[SamplerAddressingModeRepeat].caps.push_back(CapKernel);
    SamplerAddressingModeParams[SamplerAddressingModeRepeatMirrored].caps.push_back(CapKernel);

    SamplerFilterModeParams[SamplerFilterModeNearest].caps.push_back(CapKernel);
    SamplerFilterModeParams[SamplerFilterModeLinear].caps.push_back(CapKernel);

    // fast math flags capabilities
    for (int i = 0; i < FPFastMathCeiling; ++i) {
        FPFastMathParams[i].caps.push_back(CapKernel);
    }

    // fp rounding mode capabilities
    for (int i = 0; i < FPRoundingModeCeiling; ++i) {
        FPRoundingModeParams[i].caps.push_back(CapKernel);
    }

    // linkage types
    for (int i = 0; i < LinkageTypeCeiling; ++i) {
        LinkageTypeParams[i].caps.push_back(CapLink);
    }

    // function argument types
    for (int i = 0; i < FuncParamAttrCeiling; ++i) {
        FuncParamAttrParams[i].caps.push_back(CapKernel);
    }

    // function argument types
    for (int i = 0; i < AccessQualifierCeiling; ++i) {
        AccessQualifierParams[i].caps.push_back(CapKernel);
    }

    ExecutionModeParams[ExecutionModeInvocations].caps.push_back(CapGeom);
    ExecutionModeParams[ExecutionModeSpacingEqual].caps.push_back(CapTess);
    ExecutionModeParams[ExecutionModeSpacingFractionalEven].caps.push_back(CapTess);
    ExecutionModeParams[ExecutionModeSpacingFractionalOdd].caps.push_back(CapTess);
    ExecutionModeParams[ExecutionModeVertexOrderCw].caps.push_back(CapTess);
    ExecutionModeParams[ExecutionModeVertexOrderCcw].caps.push_back(CapTess);
    ExecutionModeParams[ExecutionModePixelCenterInteger].caps.push_back(CapShader);
    ExecutionModeParams[ExecutionModeOriginUpperLeft].caps.push_back(CapShader);
    ExecutionModeParams[ExecutionModeEarlyFragmentTests].caps.push_back(CapShader);
    ExecutionModeParams[ExecutionModePointMode].caps.push_back(CapTess);
    ExecutionModeParams[ExecutionModeXfb].caps.push_back(CapShader);
    ExecutionModeParams[ExecutionModeDepthReplacing].caps.push_back(CapShader);
    ExecutionModeParams[ExecutionModeDepthAny].caps.push_back(CapShader);
    ExecutionModeParams[ExecutionModeDepthGreater].caps.push_back(CapShader);
    ExecutionModeParams[ExecutionModeDepthLess].caps.push_back(CapShader);
    ExecutionModeParams[ExecutionModeDepthUnchanged].caps.push_back(CapShader);
    ExecutionModeParams[ExecutionModeLocalSizeHint].caps.push_back(CapKernel);
    ExecutionModeParams[ExecutionModeInputPoints].caps.push_back(CapGeom);
    ExecutionModeParams[ExecutionModeInputLines].caps.push_back(CapGeom);
    ExecutionModeParams[ExecutionModeInputLinesAdjacency].caps.push_back(CapGeom);
    ExecutionModeParams[ExecutionModeInputTriangles].caps.push_back(CapGeom);
    ExecutionModeParams[ExecutionModeInputTriangles].caps.push_back(CapTess);
    ExecutionModeParams[ExecutionModeInputTrianglesAdjacency].caps.push_back(CapGeom);
    ExecutionModeParams[ExecutionModeInputQuads].caps.push_back(CapTess);
    ExecutionModeParams[ExecutionModeInputIsolines].caps.push_back(CapTess);
    ExecutionModeParams[ExecutionModeOutputVertices].caps.push_back(CapGeom);
    ExecutionModeParams[ExecutionModeOutputVertices].caps.push_back(CapTess);
    ExecutionModeParams[ExecutionModeOutputPoints].caps.push_back(CapGeom);
    ExecutionModeParams[ExecutionModeOutputLineStrip].caps.push_back(CapGeom);
    ExecutionModeParams[ExecutionModeOutputTriangleStrip].caps.push_back(CapGeom);
    ExecutionModeParams[ExecutionModeVecTypeHint].caps.push_back(CapKernel);
    ExecutionModeParams[ExecutionModeContractionOff].caps.push_back(CapKernel);

    DecorationParams[DecorationPrecisionLow].caps.push_back(CapShader);
    DecorationParams[DecorationPrecisionMedium].caps.push_back(CapShader);
    DecorationParams[DecorationPrecisionHigh].caps.push_back(CapShader);
    DecorationParams[DecorationBlock].caps.push_back(CapShader);
    DecorationParams[DecorationBufferBlock].caps.push_back(CapShader);
    DecorationParams[DecorationRowMajor].caps.push_back(CapMatrix);
    DecorationParams[DecorationColMajor].caps.push_back(CapMatrix);
    DecorationParams[DecorationGLSLShared].caps.push_back(CapShader);
    DecorationParams[DecorationGLSLStd140].caps.push_back(CapShader);
    DecorationParams[DecorationGLSLStd430].caps.push_back(CapShader);
    DecorationParams[DecorationGLSLPacked].caps.push_back(CapShader);
    DecorationParams[DecorationSmooth].caps.push_back(CapShader);
    DecorationParams[DecorationNoperspective].caps.push_back(CapShader);
    DecorationParams[DecorationFlat].caps.push_back(CapShader);
    DecorationParams[DecorationPatch].caps.push_back(CapTess);
    DecorationParams[DecorationCentroid].caps.push_back(CapShader);
    DecorationParams[DecorationSample].caps.push_back(CapShader);
    DecorationParams[DecorationInvariant].caps.push_back(CapShader);
    DecorationParams[DecorationConstant].caps.push_back(CapKernel);
    DecorationParams[DecorationUniform].caps.push_back(CapShader);
    DecorationParams[DecorationCPacked].caps.push_back(CapKernel);
    DecorationParams[DecorationSaturatedConversion].caps.push_back(CapKernel);
    DecorationParams[DecorationStream].caps.push_back(CapGeom);
    DecorationParams[DecorationLocation].caps.push_back(CapShader);
    DecorationParams[DecorationComponent].caps.push_back(CapShader);
    DecorationParams[DecorationIndex].caps.push_back(CapShader);
    DecorationParams[DecorationBinding].caps.push_back(CapShader);
    DecorationParams[DecorationDescriptorSet].caps.push_back(CapShader);
    DecorationParams[DecorationXfbBuffer].caps.push_back(CapShader);
    DecorationParams[DecorationStride].caps.push_back(CapShader);
    DecorationParams[DecorationBuiltIn].caps.push_back(CapShader);
    DecorationParams[DecorationFuncParamAttr].caps.push_back(CapKernel);
    DecorationParams[DecorationFPRoundingMode].caps.push_back(CapKernel);
    DecorationParams[DecorationFPFastMathMode].caps.push_back(CapKernel);
    DecorationParams[DecorationLinkageAttributes].caps.push_back(CapLink);
    DecorationParams[DecorationSpecId].caps.push_back(CapShader);

    BuiltInParams[BuiltInPosition].caps.push_back(CapShader);
    BuiltInParams[BuiltInPointSize].caps.push_back(CapShader);
    BuiltInParams[BuiltInClipVertex].caps.push_back(CapShader);
    BuiltInParams[BuiltInClipDistance].caps.push_back(CapShader);
    BuiltInParams[BuiltInCullDistance].caps.push_back(CapShader);
    BuiltInParams[BuiltInVertexId].caps.push_back(CapShader);
    BuiltInParams[BuiltInInstanceId].caps.push_back(CapShader);
    BuiltInParams[BuiltInPrimitiveId].caps.push_back(CapGeom);
    BuiltInParams[BuiltInPrimitiveId].caps.push_back(CapTess);
    BuiltInParams[BuiltInInvocationId].caps.push_back(CapGeom);
    BuiltInParams[BuiltInInvocationId].caps.push_back(CapTess);
    BuiltInParams[BuiltInLayer].caps.push_back(CapGeom);
    BuiltInParams[BuiltInViewportIndex].caps.push_back(CapGeom);
    BuiltInParams[BuiltInTessLevelOuter].caps.push_back(CapTess);
    BuiltInParams[BuiltInTessLevelInner].caps.push_back(CapTess);
    BuiltInParams[BuiltInTessCoord].caps.push_back(CapTess);
    BuiltInParams[BuiltInPatchVertices].caps.push_back(CapTess);
    BuiltInParams[BuiltInFragCoord].caps.push_back(CapShader);
    BuiltInParams[BuiltInPointCoord].caps.push_back(CapShader);
    BuiltInParams[BuiltInFrontFacing].caps.push_back(CapShader);
    BuiltInParams[BuiltInSampleId].caps.push_back(CapShader);
    BuiltInParams[BuiltInSamplePosition].caps.push_back(CapShader);
    BuiltInParams[BuiltInSampleMask].caps.push_back(CapShader);
    BuiltInParams[BuiltInFragColor].caps.push_back(CapShader);
    BuiltInParams[BuiltInFragDepth].caps.push_back(CapShader);
    BuiltInParams[BuiltInHelperInvocation].caps.push_back(CapShader);
    BuiltInParams[BuiltInLocalInvocationIndex].caps.push_back(CapShader);
    BuiltInParams[BuiltInWorkDim].caps.push_back(CapKernel);
    BuiltInParams[BuiltInGlobalSize].caps.push_back(CapKernel);
    BuiltInParams[BuiltInEnqueuedWorkgroupSize].caps.push_back(CapKernel);
    BuiltInParams[BuiltInGlobalOffset].caps.push_back(CapKernel);
    BuiltInParams[BuiltInGlobalLinearId].caps.push_back(CapKernel);
    BuiltInParams[BuiltInWorkgroupLinearId].caps.push_back(CapKernel);

    BuiltInParams[BuiltInSubgroupSize].caps.push_back(CapKernel);
    BuiltInParams[BuiltInSubgroupMaxSize].caps.push_back(CapKernel);
    BuiltInParams[BuiltInNumSubgroups].caps.push_back(CapKernel);
    BuiltInParams[BuiltInNumEnqueuedSubgroups].caps.push_back(CapKernel);
    BuiltInParams[BuiltInSubgroupId].caps.push_back(CapKernel);
    BuiltInParams[BuiltInSubgroupLocalInvocationId].caps.push_back(CapKernel);

    DimensionalityParams[DimCube].caps.push_back(CapShader);
    DimensionalityParams[DimRect].caps.push_back(CapShader);

    // Group Operations
    for (int i = 0; i < GroupOperationCeiling; ++i) {
        GroupOperationParams[i].caps.push_back(CapKernel);
    }

    // Enqueue flags
    for (int i = 0; i < KernelEnqueueFlagsCeiling; ++i) {
        KernelEnqueueFlagsParams[i].caps.push_back(CapKernel);
    }

    // Profiling info
    KernelProfilingInfoParams[0].caps.push_back(CapKernel);

    // set name of operator, an initial set of <id> style operands, and the description

    InstructionDesc[OpSource].operands.push(OperandSource, "");
    InstructionDesc[OpSource].operands.push(OperandLiteralNumber, "'Version'");

    InstructionDesc[OpSourceExtension].operands.push(OperandLiteralString, "'Extension'");

    InstructionDesc[OpName].operands.push(OperandId, "'Target'");
    InstructionDesc[OpName].operands.push(OperandLiteralString, "'Name'");

    InstructionDesc[OpMemberName].operands.push(OperandId, "'Type'");
    InstructionDesc[OpMemberName].operands.push(OperandLiteralNumber, "'Member'");
    InstructionDesc[OpMemberName].operands.push(OperandLiteralString, "'Name'");

    InstructionDesc[OpString].operands.push(OperandLiteralString, "'String'");

    InstructionDesc[OpLine].operands.push(OperandId, "'Target'");
    InstructionDesc[OpLine].operands.push(OperandId, "'File'");
    InstructionDesc[OpLine].operands.push(OperandLiteralNumber, "'Line'");
    InstructionDesc[OpLine].operands.push(OperandLiteralNumber, "'Column'");

    InstructionDesc[OpExtension].operands.push(OperandLiteralString, "'Name'");

    InstructionDesc[OpExtInstImport].operands.push(OperandLiteralString, "'Name'");

    InstructionDesc[OpMemoryModel].operands.push(OperandAddressing, "");
    InstructionDesc[OpMemoryModel].operands.push(OperandMemory, "");

    InstructionDesc[OpEntryPoint].operands.push(OperandExecutionModel, "");
    InstructionDesc[OpEntryPoint].operands.push(OperandId, "'Entry Point'");

    InstructionDesc[OpExecutionMode].operands.push(OperandId, "'Entry Point'");
    InstructionDesc[OpExecutionMode].operands.push(OperandExecutionMode, "'Mode'");
    InstructionDesc[OpExecutionMode].operands.push(OperandVariableLiterals, "See <<Execution Mode,Execution Mode>>");

    InstructionDesc[OpTypeInt].operands.push(OperandLiteralNumber, "'Width'");
    InstructionDesc[OpTypeInt].operands.push(OperandLiteralNumber, "'Signedness'");

    InstructionDesc[OpTypeFloat].operands.push(OperandLiteralNumber, "'Width'");

    InstructionDesc[OpTypeVector].operands.push(OperandId, "'Component type'");
    InstructionDesc[OpTypeVector].operands.push(OperandLiteralNumber, "'Component count'");

    InstructionDesc[OpTypeMatrix].capabilities.push_back(CapMatrix);
    InstructionDesc[OpTypeMatrix].operands.push(OperandId, "'Column type'");
    InstructionDesc[OpTypeMatrix].operands.push(OperandLiteralNumber, "'Column count'");

    InstructionDesc[OpTypeSampler].operands.push(OperandId, "'Sampled Type'");
    InstructionDesc[OpTypeSampler].operands.push(OperandDimensionality, "");
    InstructionDesc[OpTypeSampler].operands.push(OperandLiteralNumber, "'Content'");
    InstructionDesc[OpTypeSampler].operands.push(OperandLiteralNumber, "'Arrayed'");
    InstructionDesc[OpTypeSampler].operands.push(OperandLiteralNumber, "'Compare'");
    InstructionDesc[OpTypeSampler].operands.push(OperandLiteralNumber, "'MS'");
    InstructionDesc[OpTypeSampler].operands.push(OperandOptionalId, "'Qualifier'");

    InstructionDesc[OpTypeArray].operands.push(OperandId, "'Element type'");
    InstructionDesc[OpTypeArray].operands.push(OperandId, "'Length'");

    InstructionDesc[OpTypeRuntimeArray].capabilities.push_back(CapShader);
    InstructionDesc[OpTypeRuntimeArray].operands.push(OperandId, "'Element type'");

    InstructionDesc[OpTypeStruct].operands.push(OperandVariableIds, "'Member 0 type', +\n'member 1 type', +\n...");

    InstructionDesc[OpTypeOpaque].capabilities.push_back(CapKernel);
    InstructionDesc[OpTypeOpaque].operands.push(OperandLiteralString, "The name of the opaque type.");

    InstructionDesc[OpTypePointer].operands.push(OperandStorage, "");
    InstructionDesc[OpTypePointer].operands.push(OperandId, "'Type'");

    InstructionDesc[OpTypeEvent].capabilities.push_back(CapKernel);

    InstructionDesc[OpTypeDeviceEvent].capabilities.push_back(CapKernel);

    InstructionDesc[OpTypeReserveId].capabilities.push_back(CapKernel);

    InstructionDesc[OpTypeQueue].capabilities.push_back(CapKernel);

    InstructionDesc[OpTypePipe].operands.push(OperandId, "'Type'");
    InstructionDesc[OpTypePipe].operands.push(OperandAccessQualifier, "'Qualifier'");
    InstructionDesc[OpTypePipe].capabilities.push_back(CapKernel);

    InstructionDesc[OpTypeFunction].operands.push(OperandId, "'Return Type'");
    InstructionDesc[OpTypeFunction].operands.push(OperandVariableIds, "'Parameter 0 Type', +\n'Parameter 1 Type', +\n...");

    InstructionDesc[OpConstant].operands.push(OperandVariableLiterals, "'Value'");

    InstructionDesc[OpConstantComposite].operands.push(OperandVariableIds, "'Constituents'");

    InstructionDesc[OpConstantNullPointer].capabilities.push_back(CapAddr);

    InstructionDesc[OpConstantNullObject].capabilities.push_back(CapKernel);

    InstructionDesc[OpConstantSampler].capabilities.push_back(CapKernel);
    InstructionDesc[OpConstantSampler].operands.push(OperandLiteralNumber, "'Mode'");
    InstructionDesc[OpConstantSampler].operands.push(OperandLiteralNumber, "'Param'");
    InstructionDesc[OpConstantSampler].operands.push(OperandLiteralNumber, "'Filter'");

    InstructionDesc[OpSpecConstantTrue].capabilities.push_back(CapShader);

    InstructionDesc[OpSpecConstantFalse].capabilities.push_back(CapShader);

    InstructionDesc[OpSpecConstant].operands.push(OperandVariableLiterals, "'Value'");
    InstructionDesc[OpSpecConstant].capabilities.push_back(CapShader);

    InstructionDesc[OpSpecConstantComposite].operands.push(OperandVariableIds, "'Constituents'");
    InstructionDesc[OpSpecConstantComposite].capabilities.push_back(CapShader);

    InstructionDesc[OpVariable].operands.push(OperandStorage, "");
    InstructionDesc[OpVariable].operands.push(OperandOptionalId, "'Initializer'");

    InstructionDesc[OpVariableArray].operands.push(OperandStorage, "");
    InstructionDesc[OpVariableArray].operands.push(OperandId, "'N'");
    InstructionDesc[OpVariableArray].capabilities.push_back(CapAddr);

    InstructionDesc[OpFunction].operands.push(OperandFunction, "");
    InstructionDesc[OpFunction].operands.push(OperandId, "'Function Type'");

    InstructionDesc[OpFunctionCall].operands.push(OperandId, "'Function'");
    InstructionDesc[OpFunctionCall].operands.push(OperandVariableIds, "'Argument 0', +\n'Argument 1', +\n...");

    InstructionDesc[OpExtInst].operands.push(OperandId, "'Set'");
    InstructionDesc[OpExtInst].operands.push(OperandLiteralNumber, "'Instruction'");
    InstructionDesc[OpExtInst].operands.push(OperandVariableIds, "'Operand 1', +\n'Operand 2', +\n...");

    InstructionDesc[OpLoad].operands.push(OperandId, "'Pointer'");
    InstructionDesc[OpLoad].operands.push(OperandVariableLiterals, "'Memory Access'");

    InstructionDesc[OpStore].operands.push(OperandId, "'Pointer'");
    InstructionDesc[OpStore].operands.push(OperandId, "'Object'");
    InstructionDesc[OpStore].operands.push(OperandVariableLiterals, "'Memory Access'");

    InstructionDesc[OpPhi].operands.push(OperandVariableIds, "");

    InstructionDesc[OpDecorate].operands.push(OperandId, "'Target'");
    InstructionDesc[OpDecorate].operands.push(OperandDecoration, "");
    InstructionDesc[OpDecorate].operands.push(OperandVariableLiterals, "See <<Decoration,'Decoration'>>.");

    InstructionDesc[OpMemberDecorate].operands.push(OperandId, "'Structure type'");
    InstructionDesc[OpMemberDecorate].operands.push(OperandLiteralNumber, "'Member'");
    InstructionDesc[OpMemberDecorate].operands.push(OperandDecoration, "");
    InstructionDesc[OpMemberDecorate].operands.push(OperandVariableLiterals, "See <<Decoration,'Decoration'>>.");

    InstructionDesc[OpGroupDecorate].operands.push(OperandId, "'Decoration group'");
    InstructionDesc[OpGroupDecorate].operands.push(OperandVariableIds, "'Target', 'Target', ...");

    InstructionDesc[OpGroupMemberDecorate].operands.push(OperandId, "'Decoration group'");
    InstructionDesc[OpGroupMemberDecorate].operands.push(OperandVariableIds, "'Target', 'Target', ...");

    InstructionDesc[OpVectorExtractDynamic].operands.push(OperandId, "'Vector'");
    InstructionDesc[OpVectorExtractDynamic].operands.push(OperandId, "'Index'");

    InstructionDesc[OpVectorInsertDynamic].operands.push(OperandId, "'Vector'");
    InstructionDesc[OpVectorInsertDynamic].operands.push(OperandId, "'Component'");
    InstructionDesc[OpVectorInsertDynamic].operands.push(OperandId, "'Index'");

    InstructionDesc[OpVectorShuffle].operands.push(OperandId, "'Vector 1'");
    InstructionDesc[OpVectorShuffle].operands.push(OperandId, "'Vector 2'");
    InstructionDesc[OpVectorShuffle].operands.push(OperandVariableLiterals, "'Components'");

    InstructionDesc[OpCompositeConstruct].operands.push(OperandVariableIds, "'Constituents'");

    InstructionDesc[OpCompositeExtract].operands.push(OperandId, "'Composite'");
    InstructionDesc[OpCompositeExtract].operands.push(OperandVariableLiterals, "'Indexes'");

    InstructionDesc[OpCompositeInsert].operands.push(OperandId, "'Object'");
    InstructionDesc[OpCompositeInsert].operands.push(OperandId, "'Composite'");
    InstructionDesc[OpCompositeInsert].operands.push(OperandVariableLiterals, "'Indexes'");

    InstructionDesc[OpCopyObject].operands.push(OperandId, "'Operand'");

    InstructionDesc[OpCopyMemory].operands.push(OperandId, "'Target'");
    InstructionDesc[OpCopyMemory].operands.push(OperandId, "'Source'");
    InstructionDesc[OpCopyMemory].operands.push(OperandVariableLiterals, "'Memory Access'");

    InstructionDesc[OpCopyMemorySized].operands.push(OperandId, "'Target'");
    InstructionDesc[OpCopyMemorySized].operands.push(OperandId, "'Source'");
    InstructionDesc[OpCopyMemorySized].operands.push(OperandId, "'Size'");
    InstructionDesc[OpCopyMemorySized].operands.push(OperandVariableLiterals, "'Memory Access'");

    InstructionDesc[OpCopyMemorySized].capabilities.push_back(CapAddr);

    InstructionDesc[OpSampler].operands.push(OperandId, "'Sampler'");
    InstructionDesc[OpSampler].operands.push(OperandId, "'Filter'");

    InstructionDesc[OpTextureSample].operands.push(OperandId, "'Sampler'");
    InstructionDesc[OpTextureSample].operands.push(OperandId, "'Coordinate'");
    InstructionDesc[OpTextureSample].operands.push(OperandOptionalId, "['Bias']");
    InstructionDesc[OpTextureSample].capabilities.push_back(CapShader);

    InstructionDesc[OpTextureSampleDref].operands.push(OperandId, "'Sampler'");
    InstructionDesc[OpTextureSampleDref].operands.push(OperandId, "'Coordinate'");
    InstructionDesc[OpTextureSampleDref].operands.push(OperandId, "'D~ref~'");
    InstructionDesc[OpTextureSampleDref].capabilities.push_back(CapShader);

    InstructionDesc[OpTextureSampleLod].operands.push(OperandId, "'Sampler'");
    InstructionDesc[OpTextureSampleLod].operands.push(OperandId, "'Coordinate'");
    InstructionDesc[OpTextureSampleLod].operands.push(OperandId, "'Level of Detail'");
    InstructionDesc[OpTextureSampleLod].capabilities.push_back(CapShader);

    InstructionDesc[OpTextureSampleProj].operands.push(OperandId, "'Sampler'");
    InstructionDesc[OpTextureSampleProj].operands.push(OperandId, "'Coordinate'");
    InstructionDesc[OpTextureSampleProj].operands.push(OperandOptionalId, "['Bias']");
    InstructionDesc[OpTextureSampleProj].capabilities.push_back(CapShader);

    InstructionDesc[OpTextureSampleGrad].operands.push(OperandId, "'Sampler'");
    InstructionDesc[OpTextureSampleGrad].operands.push(OperandId, "'Coordinate'");
    InstructionDesc[OpTextureSampleGrad].operands.push(OperandId, "'dx'");
    InstructionDesc[OpTextureSampleGrad].operands.push(OperandId, "'dy'");
    InstructionDesc[OpTextureSampleGrad].capabilities.push_back(CapShader);

    InstructionDesc[OpTextureSampleOffset].operands.push(OperandId, "'Sampler'");
    InstructionDesc[OpTextureSampleOffset].operands.push(OperandId, "'Coordinate'");
    InstructionDesc[OpTextureSampleOffset].operands.push(OperandId, "'Offset'");
    InstructionDesc[OpTextureSampleOffset].operands.push(OperandOptionalId, "['Bias']");
    InstructionDesc[OpTextureSampleOffset].capabilities.push_back(CapShader);

    InstructionDesc[OpTextureSampleProjLod].operands.push(OperandId, "'Sampler'");
    InstructionDesc[OpTextureSampleProjLod].operands.push(OperandId, "'Coordinate'");
    InstructionDesc[OpTextureSampleProjLod].operands.push(OperandId, "'Level of Detail'");
    InstructionDesc[OpTextureSampleProjLod].capabilities.push_back(CapShader);

    InstructionDesc[OpTextureSampleProjGrad].operands.push(OperandId, "'Sampler'");
    InstructionDesc[OpTextureSampleProjGrad].operands.push(OperandId, "'Coordinate'");
    InstructionDesc[OpTextureSampleProjGrad].operands.push(OperandId, "'dx'");
    InstructionDesc[OpTextureSampleProjGrad].operands.push(OperandId, "'dy'");
    InstructionDesc[OpTextureSampleProjGrad].capabilities.push_back(CapShader);

    InstructionDesc[OpTextureSampleLodOffset].operands.push(OperandId, "'Sampler'");
    InstructionDesc[OpTextureSampleLodOffset].operands.push(OperandId, "'Coordinate'");
    InstructionDesc[OpTextureSampleLodOffset].operands.push(OperandId, "'Level of Detail'");
    InstructionDesc[OpTextureSampleLodOffset].operands.push(OperandId, "'Offset'");
    InstructionDesc[OpTextureSampleLodOffset].capabilities.push_back(CapShader);

    InstructionDesc[OpTextureSampleProjOffset].operands.push(OperandId, "'Sampler'");
    InstructionDesc[OpTextureSampleProjOffset].operands.push(OperandId, "'Coordinate'");
    InstructionDesc[OpTextureSampleProjOffset].operands.push(OperandId, "'Offset'");
    InstructionDesc[OpTextureSampleProjOffset].operands.push(OperandOptionalId, "['Bias']");
    InstructionDesc[OpTextureSampleProjOffset].capabilities.push_back(CapShader);

    InstructionDesc[OpTextureSampleGradOffset].operands.push(OperandId, "'Sampler'");
    InstructionDesc[OpTextureSampleGradOffset].operands.push(OperandId, "'Coordinate'");
    InstructionDesc[OpTextureSampleGradOffset].operands.push(OperandId, "'dx'");
    InstructionDesc[OpTextureSampleGradOffset].operands.push(OperandId, "'dy'");
    InstructionDesc[OpTextureSampleGradOffset].operands.push(OperandId, "'Offset'");
    InstructionDesc[OpTextureSampleGradOffset].capabilities.push_back(CapShader);

    InstructionDesc[OpTextureSampleProjLodOffset].operands.push(OperandId, "'Sampler'");
    InstructionDesc[OpTextureSampleProjLodOffset].operands.push(OperandId, "'Coordinate'");
    InstructionDesc[OpTextureSampleProjLodOffset].operands.push(OperandId, "'Level of Detail'");
    InstructionDesc[OpTextureSampleProjLodOffset].operands.push(OperandId, "'Offset'");
    InstructionDesc[OpTextureSampleProjLodOffset].capabilities.push_back(CapShader);

    InstructionDesc[OpTextureSampleProjGradOffset].operands.push(OperandId, "'Sampler'");
    InstructionDesc[OpTextureSampleProjGradOffset].operands.push(OperandId, "'Coordinate'");
    InstructionDesc[OpTextureSampleProjGradOffset].operands.push(OperandId, "'dx'");
    InstructionDesc[OpTextureSampleProjGradOffset].operands.push(OperandId, "'dy'");
    InstructionDesc[OpTextureSampleProjGradOffset].operands.push(OperandId, "'Offset'");
    InstructionDesc[OpTextureSampleProjGradOffset].capabilities.push_back(CapShader);

    InstructionDesc[OpTextureFetchTexelLod].operands.push(OperandId, "'Sampler'");
    InstructionDesc[OpTextureFetchTexelLod].operands.push(OperandId, "'Coordinate'");
    InstructionDesc[OpTextureFetchTexelLod].operands.push(OperandId, "'Level of Detail'");
    InstructionDesc[OpTextureFetchTexelLod].capabilities.push_back(CapShader);

    InstructionDesc[OpTextureFetchTexelOffset].operands.push(OperandId, "'Sampler'");
    InstructionDesc[OpTextureFetchTexelOffset].operands.push(OperandId, "'Coordinate'");
    InstructionDesc[OpTextureFetchTexelOffset].operands.push(OperandId, "'Offset'");
    InstructionDesc[OpTextureFetchTexelOffset].capabilities.push_back(CapShader);

    InstructionDesc[OpTextureFetchSample].operands.push(OperandId, "'Sampler'");
    InstructionDesc[OpTextureFetchSample].operands.push(OperandId, "'Coordinate'");
    InstructionDesc[OpTextureFetchSample].operands.push(OperandId, "'Sample'");
    InstructionDesc[OpTextureFetchSample].capabilities.push_back(CapShader);

    InstructionDesc[OpTextureFetchTexel].operands.push(OperandId, "'Sampler'");
    InstructionDesc[OpTextureFetchTexel].operands.push(OperandId, "'Element'");
    InstructionDesc[OpTextureFetchTexel].capabilities.push_back(CapShader);

    InstructionDesc[OpTextureGather].operands.push(OperandId, "'Sampler'");
    InstructionDesc[OpTextureGather].operands.push(OperandId, "'Coordinate'");
    InstructionDesc[OpTextureGather].operands.push(OperandId, "'Component'");
    InstructionDesc[OpTextureGather].capabilities.push_back(CapShader);

    InstructionDesc[OpTextureGatherOffset].operands.push(OperandId, "'Sampler'");
    InstructionDesc[OpTextureGatherOffset].operands.push(OperandId, "'Coordinate'");
    InstructionDesc[OpTextureGatherOffset].operands.push(OperandId, "'Component'");
    InstructionDesc[OpTextureGatherOffset].operands.push(OperandId, "'Offset'");
    InstructionDesc[OpTextureGatherOffset].capabilities.push_back(CapShader);

    InstructionDesc[OpTextureGatherOffsets].operands.push(OperandId, "'Sampler'");
    InstructionDesc[OpTextureGatherOffsets].operands.push(OperandId, "'Coordinate'");
    InstructionDesc[OpTextureGatherOffsets].operands.push(OperandId, "'Component'");
    InstructionDesc[OpTextureGatherOffsets].operands.push(OperandId, "'Offsets'");
    InstructionDesc[OpTextureGatherOffsets].capabilities.push_back(CapShader);

    InstructionDesc[OpTextureQuerySizeLod].operands.push(OperandId, "'Sampler'");
    InstructionDesc[OpTextureQuerySizeLod].operands.push(OperandId, "'Level of Detail'");
    InstructionDesc[OpTextureQuerySizeLod].capabilities.push_back(CapShader);

    InstructionDesc[OpTextureQuerySize].operands.push(OperandId, "'Sampler'");
    InstructionDesc[OpTextureQuerySize].capabilities.push_back(CapShader);

    InstructionDesc[OpTextureQueryLod].operands.push(OperandId, "'Sampler'");
    InstructionDesc[OpTextureQueryLod].operands.push(OperandId, "'Coordinate'");
    InstructionDesc[OpTextureQueryLod].capabilities.push_back(CapShader);

    InstructionDesc[OpTextureQueryLevels].operands.push(OperandId, "'Sampler'");
    InstructionDesc[OpTextureQueryLevels].capabilities.push_back(CapShader);

    InstructionDesc[OpTextureQuerySamples].operands.push(OperandId, "'Sampler'");
    InstructionDesc[OpTextureQuerySamples].capabilities.push_back(CapShader);

    InstructionDesc[OpAccessChain].operands.push(OperandId, "'Base'");
    InstructionDesc[OpAccessChain].operands.push(OperandVariableIds, "'Indexes'");

    InstructionDesc[OpInBoundsAccessChain].operands.push(OperandId, "'Base'");
    InstructionDesc[OpInBoundsAccessChain].operands.push(OperandVariableIds, "'Indexes'");

    InstructionDesc[OpSNegate].operands.push(OperandId, "'Operand'");

    InstructionDesc[OpFNegate].operands.push(OperandId, "'Operand'");

    InstructionDesc[OpNot].operands.push(OperandId, "'Operand'");

    InstructionDesc[OpAny].operands.push(OperandId, "'Vector'");

    InstructionDesc[OpAll].operands.push(OperandId, "'Vector'");

    InstructionDesc[OpConvertFToU].operands.push(OperandId, "'Float Value'");

    InstructionDesc[OpConvertFToS].operands.push(OperandId, "'Float Value'");

    InstructionDesc[OpConvertSToF].operands.push(OperandId, "'Signed Value'");

    InstructionDesc[OpConvertUToF].operands.push(OperandId, "'Unsigned value'");

    InstructionDesc[OpUConvert].operands.push(OperandId, "'Unsigned value'");

    InstructionDesc[OpSConvert].operands.push(OperandId, "'Signed Value'");

    InstructionDesc[OpFConvert].operands.push(OperandId, "'Float Value'");

    InstructionDesc[OpSatConvertSToU].operands.push(OperandId, "'Signed Value'");
    InstructionDesc[OpSatConvertSToU].capabilities.push_back(CapKernel);

    InstructionDesc[OpSatConvertUToS].operands.push(OperandId, "'Unsigned Value'");
    InstructionDesc[OpSatConvertUToS].capabilities.push_back(CapKernel);

    InstructionDesc[OpConvertPtrToU].operands.push(OperandId, "'Pointer'");
    InstructionDesc[OpConvertPtrToU].capabilities.push_back(CapAddr);

    InstructionDesc[OpConvertUToPtr].operands.push(OperandId, "'Integer value'");
    InstructionDesc[OpConvertUToPtr].capabilities.push_back(CapAddr);

    InstructionDesc[OpPtrCastToGeneric].operands.push(OperandId, "'Source pointer'");
    InstructionDesc[OpPtrCastToGeneric].capabilities.push_back(CapKernel);


    InstructionDesc[OpGenericCastToPtr].operands.push(OperandId, "'Source pointer'");
    InstructionDesc[OpGenericCastToPtr].capabilities.push_back(CapKernel);

    InstructionDesc[OpGenericCastToPtrExplicit].operands.push(OperandId, "'Source pointer'");
    InstructionDesc[OpGenericCastToPtrExplicit].operands.push(OperandStorage, "'storage'");
    InstructionDesc[OpGenericCastToPtrExplicit].capabilities.push_back(CapKernel);

    InstructionDesc[OpGenericPtrMemSemantics].operands.push(OperandId, "'ptr'");
    InstructionDesc[OpGenericPtrMemSemantics].capabilities.push_back(CapKernel);

    InstructionDesc[OpBitcast].operands.push(OperandId, "'Operand'");

    InstructionDesc[OpTranspose].capabilities.push_back(CapMatrix);
    InstructionDesc[OpTranspose].operands.push(OperandId, "'Matrix'");

    InstructionDesc[OpIsNan].operands.push(OperandId, "'x'");

    InstructionDesc[OpIsInf].operands.push(OperandId, "'x'");

    InstructionDesc[OpIsFinite].capabilities.push_back(CapKernel);
    InstructionDesc[OpIsFinite].operands.push(OperandId, "'x'");

    InstructionDesc[OpIsNormal].capabilities.push_back(CapKernel);
    InstructionDesc[OpIsNormal].operands.push(OperandId, "'x'");

    InstructionDesc[OpSignBitSet].capabilities.push_back(CapKernel);
    InstructionDesc[OpSignBitSet].operands.push(OperandId, "'x'");

    InstructionDesc[OpLessOrGreater].capabilities.push_back(CapKernel);
    InstructionDesc[OpLessOrGreater].operands.push(OperandId, "'x'");
    InstructionDesc[OpLessOrGreater].operands.push(OperandId, "'y'");

    InstructionDesc[OpOrdered].capabilities.push_back(CapKernel);
    InstructionDesc[OpOrdered].operands.push(OperandId, "'x'");
    InstructionDesc[OpOrdered].operands.push(OperandId, "'y'");

    InstructionDesc[OpUnordered].capabilities.push_back(CapKernel);
    InstructionDesc[OpUnordered].operands.push(OperandId, "'x'");
    InstructionDesc[OpUnordered].operands.push(OperandId, "'y'");

    InstructionDesc[OpArrayLength].operands.push(OperandId, "'Structure'");
    InstructionDesc[OpArrayLength].operands.push(OperandLiteralNumber, "'Array member'");
    InstructionDesc[OpArrayLength].capabilities.push_back(CapShader);

    InstructionDesc[OpIAdd].operands.push(OperandId, "'Operand 1'");
    InstructionDesc[OpIAdd].operands.push(OperandId, "'Operand 2'");

    InstructionDesc[OpFAdd].operands.push(OperandId, "'Operand 1'");
    InstructionDesc[OpFAdd].operands.push(OperandId, "'Operand 2'");

    InstructionDesc[OpISub].operands.push(OperandId, "'Operand 1'");
    InstructionDesc[OpISub].operands.push(OperandId, "'Operand 2'");

    InstructionDesc[OpFSub].operands.push(OperandId, "'Operand 1'");
    InstructionDesc[OpFSub].operands.push(OperandId, "'Operand 2'");

    InstructionDesc[OpIMul].operands.push(OperandId, "'Operand 1'");
    InstructionDesc[OpIMul].operands.push(OperandId, "'Operand 2'");

    InstructionDesc[OpFMul].operands.push(OperandId, "'Operand 1'");
    InstructionDesc[OpFMul].operands.push(OperandId, "'Operand 2'");

    InstructionDesc[OpUDiv].operands.push(OperandId, "'Operand 1'");
    InstructionDesc[OpUDiv].operands.push(OperandId, "'Operand 2'");

    InstructionDesc[OpSDiv].operands.push(OperandId, "'Operand 1'");
    InstructionDesc[OpSDiv].operands.push(OperandId, "'Operand 2'");

    InstructionDesc[OpFDiv].operands.push(OperandId, "'Operand 1'");
    InstructionDesc[OpFDiv].operands.push(OperandId, "'Operand 2'");

    InstructionDesc[OpUMod].operands.push(OperandId, "'Operand 1'");
    InstructionDesc[OpUMod].operands.push(OperandId, "'Operand 2'");

    InstructionDesc[OpSRem].operands.push(OperandId, "'Operand 1'");
    InstructionDesc[OpSRem].operands.push(OperandId, "'Operand 2'");

    InstructionDesc[OpSMod].operands.push(OperandId, "'Operand 1'");
    InstructionDesc[OpSMod].operands.push(OperandId, "'Operand 2'");

    InstructionDesc[OpFRem].operands.push(OperandId, "'Operand 1'");
    InstructionDesc[OpFRem].operands.push(OperandId, "'Operand 2'");

    InstructionDesc[OpFMod].operands.push(OperandId, "'Operand 1'");
    InstructionDesc[OpFMod].operands.push(OperandId, "'Operand 2'");

    InstructionDesc[OpVectorTimesScalar].operands.push(OperandId, "'Vector'");
    InstructionDesc[OpVectorTimesScalar].operands.push(OperandId, "'Scalar'");

    InstructionDesc[OpMatrixTimesScalar].capabilities.push_back(CapMatrix);
    InstructionDesc[OpMatrixTimesScalar].operands.push(OperandId, "'Matrix'");
    InstructionDesc[OpMatrixTimesScalar].operands.push(OperandId, "'Scalar'");

    InstructionDesc[OpVectorTimesMatrix].capabilities.push_back(CapMatrix);
    InstructionDesc[OpVectorTimesMatrix].operands.push(OperandId, "'Vector'");
    InstructionDesc[OpVectorTimesMatrix].operands.push(OperandId, "'Matrix'");

    InstructionDesc[OpMatrixTimesVector].capabilities.push_back(CapMatrix);
    InstructionDesc[OpMatrixTimesVector].operands.push(OperandId, "'Matrix'");
    InstructionDesc[OpMatrixTimesVector].operands.push(OperandId, "'Vector'");

    InstructionDesc[OpMatrixTimesMatrix].capabilities.push_back(CapMatrix);
    InstructionDesc[OpMatrixTimesMatrix].operands.push(OperandId, "'LeftMatrix'");
    InstructionDesc[OpMatrixTimesMatrix].operands.push(OperandId, "'RightMatrix'");

    InstructionDesc[OpOuterProduct].capabilities.push_back(CapMatrix);
    InstructionDesc[OpOuterProduct].operands.push(OperandId, "'Vector 1'");
    InstructionDesc[OpOuterProduct].operands.push(OperandId, "'Vector 2'");

    InstructionDesc[OpDot].operands.push(OperandId, "'Vector 1'");
    InstructionDesc[OpDot].operands.push(OperandId, "'Vector 2'");

    InstructionDesc[OpShiftRightLogical].operands.push(OperandId, "'Operand 1'");
    InstructionDesc[OpShiftRightLogical].operands.push(OperandId, "'Operand 2'");

    InstructionDesc[OpShiftRightArithmetic].operands.push(OperandId, "'Operand 1'");
    InstructionDesc[OpShiftRightArithmetic].operands.push(OperandId, "'Operand 2'");

    InstructionDesc[OpShiftLeftLogical].operands.push(OperandId, "'Operand 1'");
    InstructionDesc[OpShiftLeftLogical].operands.push(OperandId, "'Operand 2'");

    InstructionDesc[OpLogicalOr].operands.push(OperandId, "'Operand 1'");
    InstructionDesc[OpLogicalOr].operands.push(OperandId, "'Operand 2'");

    InstructionDesc[OpLogicalXor].operands.push(OperandId, "'Operand 1'");
    InstructionDesc[OpLogicalXor].operands.push(OperandId, "'Operand 2'");

    InstructionDesc[OpLogicalAnd].operands.push(OperandId, "'Operand 1'");
    InstructionDesc[OpLogicalAnd].operands.push(OperandId, "'Operand 2'");

    InstructionDesc[OpBitwiseOr].operands.push(OperandId, "'Operand 1'");
    InstructionDesc[OpBitwiseOr].operands.push(OperandId, "'Operand 2'");

    InstructionDesc[OpBitwiseXor].operands.push(OperandId, "'Operand 1'");
    InstructionDesc[OpBitwiseXor].operands.push(OperandId, "'Operand 2'");

    InstructionDesc[OpBitwiseAnd].operands.push(OperandId, "'Operand 1'");
    InstructionDesc[OpBitwiseAnd].operands.push(OperandId, "'Operand 2'");

    InstructionDesc[OpSelect].operands.push(OperandId, "'Condition'");
    InstructionDesc[OpSelect].operands.push(OperandId, "'Object 1'");
    InstructionDesc[OpSelect].operands.push(OperandId, "'Object 2'");

    InstructionDesc[OpIEqual].operands.push(OperandId, "'Operand 1'");
    InstructionDesc[OpIEqual].operands.push(OperandId, "'Operand 2'");

    InstructionDesc[OpFOrdEqual].operands.push(OperandId, "'Operand 1'");
    InstructionDesc[OpFOrdEqual].operands.push(OperandId, "'Operand 2'");

    InstructionDesc[OpFUnordEqual].operands.push(OperandId, "'Operand 1'");
    InstructionDesc[OpFUnordEqual].operands.push(OperandId, "'Operand 2'");

    InstructionDesc[OpINotEqual].operands.push(OperandId, "'Operand 1'");
    InstructionDesc[OpINotEqual].operands.push(OperandId, "'Operand 2'");

    InstructionDesc[OpFOrdNotEqual].operands.push(OperandId, "'Operand 1'");
    InstructionDesc[OpFOrdNotEqual].operands.push(OperandId, "'Operand 2'");

    InstructionDesc[OpFUnordNotEqual].operands.push(OperandId, "'Operand 1'");
    InstructionDesc[OpFUnordNotEqual].operands.push(OperandId, "'Operand 2'");

    InstructionDesc[OpULessThan].operands.push(OperandId, "'Operand 1'");
    InstructionDesc[OpULessThan].operands.push(OperandId, "'Operand 2'");

    InstructionDesc[OpSLessThan].operands.push(OperandId, "'Operand 1'");
    InstructionDesc[OpSLessThan].operands.push(OperandId, "'Operand 2'");

    InstructionDesc[OpFOrdLessThan].operands.push(OperandId, "'Operand 1'");
    InstructionDesc[OpFOrdLessThan].operands.push(OperandId, "'Operand 2'");

    InstructionDesc[OpFUnordLessThan].operands.push(OperandId, "'Operand 1'");
    InstructionDesc[OpFUnordLessThan].operands.push(OperandId, "'Operand 2'");

    InstructionDesc[OpUGreaterThan].operands.push(OperandId, "'Operand 1'");
    InstructionDesc[OpUGreaterThan].operands.push(OperandId, "'Operand 2'");

    InstructionDesc[OpSGreaterThan].operands.push(OperandId, "'Operand 1'");
    InstructionDesc[OpSGreaterThan].operands.push(OperandId, "'Operand 2'");

    InstructionDesc[OpFOrdGreaterThan].operands.push(OperandId, "'Operand 1'");
    InstructionDesc[OpFOrdGreaterThan].operands.push(OperandId, "'Operand 2'");

    InstructionDesc[OpFUnordGreaterThan].operands.push(OperandId, "'Operand 1'");
    InstructionDesc[OpFUnordGreaterThan].operands.push(OperandId, "'Operand 2'");

    InstructionDesc[OpULessThanEqual].operands.push(OperandId, "'Operand 1'");
    InstructionDesc[OpULessThanEqual].operands.push(OperandId, "'Operand 2'");

    InstructionDesc[OpSLessThanEqual].operands.push(OperandId, "'Operand 1'");
    InstructionDesc[OpSLessThanEqual].operands.push(OperandId, "'Operand 2'");

    InstructionDesc[OpFOrdLessThanEqual].operands.push(OperandId, "'Operand 1'");
    InstructionDesc[OpFOrdLessThanEqual].operands.push(OperandId, "'Operand 2'");

    InstructionDesc[OpFUnordLessThanEqual].operands.push(OperandId, "'Operand 1'");
    InstructionDesc[OpFUnordLessThanEqual].operands.push(OperandId, "'Operand 2'");

    InstructionDesc[OpUGreaterThanEqual].operands.push(OperandId, "'Operand 1'");
    InstructionDesc[OpUGreaterThanEqual].operands.push(OperandId, "'Operand 2'");

    InstructionDesc[OpSGreaterThanEqual].operands.push(OperandId, "'Operand 1'");
    InstructionDesc[OpSGreaterThanEqual].operands.push(OperandId, "'Operand 2'");

    InstructionDesc[OpFOrdGreaterThanEqual].operands.push(OperandId, "'Operand 1'");
    InstructionDesc[OpFOrdGreaterThanEqual].operands.push(OperandId, "'Operand 2'");

    InstructionDesc[OpFUnordGreaterThanEqual].operands.push(OperandId, "'Operand 1'");
    InstructionDesc[OpFUnordGreaterThanEqual].operands.push(OperandId, "'Operand 2'");

    InstructionDesc[OpDPdx].capabilities.push_back(CapShader);
    InstructionDesc[OpDPdx].operands.push(OperandId, "'P'");

    InstructionDesc[OpDPdy].capabilities.push_back(CapShader);
    InstructionDesc[OpDPdy].operands.push(OperandId, "'P'");

    InstructionDesc[OpFwidth].capabilities.push_back(CapShader);
    InstructionDesc[OpFwidth].operands.push(OperandId, "'P'");

    InstructionDesc[OpDPdxFine].capabilities.push_back(CapShader);
    InstructionDesc[OpDPdxFine].operands.push(OperandId, "'P'");

    InstructionDesc[OpDPdyFine].capabilities.push_back(CapShader);
    InstructionDesc[OpDPdyFine].operands.push(OperandId, "'P'");

    InstructionDesc[OpFwidthFine].capabilities.push_back(CapShader);
    InstructionDesc[OpFwidthFine].operands.push(OperandId, "'P'");

    InstructionDesc[OpDPdxCoarse].capabilities.push_back(CapShader);
    InstructionDesc[OpDPdxCoarse].operands.push(OperandId, "'P'");

    InstructionDesc[OpDPdyCoarse].capabilities.push_back(CapShader);
    InstructionDesc[OpDPdyCoarse].operands.push(OperandId, "'P'");

    InstructionDesc[OpFwidthCoarse].capabilities.push_back(CapShader);
    InstructionDesc[OpFwidthCoarse].operands.push(OperandId, "'P'");

    InstructionDesc[OpEmitVertex].capabilities.push_back(CapGeom);

    InstructionDesc[OpEndPrimitive].capabilities.push_back(CapGeom);

    InstructionDesc[OpEmitStreamVertex].operands.push(OperandId, "'Stream'");
    InstructionDesc[OpEmitStreamVertex].capabilities.push_back(CapGeom);

    InstructionDesc[OpEndStreamPrimitive].operands.push(OperandId, "'Stream'");
    InstructionDesc[OpEndStreamPrimitive].capabilities.push_back(CapGeom);

    InstructionDesc[OpControlBarrier].operands.push(OperandExecutionScope, "'Scope'");

    InstructionDesc[OpMemoryBarrier].operands.push(OperandExecutionScope, "'Scope'");
    InstructionDesc[OpMemoryBarrier].operands.push(OperandMemorySemantics, "'Semantics'");

    InstructionDesc[OpImagePointer].operands.push(OperandId, "'Image'");
    InstructionDesc[OpImagePointer].operands.push(OperandId, "'Coordinate'");
    InstructionDesc[OpImagePointer].operands.push(OperandId, "'Sample'");

    InstructionDesc[OpAtomicInit].operands.push(OperandId, "'Pointer'");
    InstructionDesc[OpAtomicInit].operands.push(OperandId, "'Value'");

    InstructionDesc[OpAtomicLoad].operands.push(OperandId, "'Pointer'");
    InstructionDesc[OpAtomicLoad].operands.push(OperandExecutionScope, "'Scope'");
    InstructionDesc[OpAtomicLoad].operands.push(OperandMemorySemantics, "'Semantics'");

    InstructionDesc[OpAtomicStore].operands.push(OperandId, "'Pointer'");
    InstructionDesc[OpAtomicStore].operands.push(OperandExecutionScope, "'Scope'");
    InstructionDesc[OpAtomicStore].operands.push(OperandMemorySemantics, "'Semantics'");
    InstructionDesc[OpAtomicStore].operands.push(OperandId, "'Value'");

    InstructionDesc[OpAtomicExchange].operands.push(OperandId, "'Pointer'");
    InstructionDesc[OpAtomicExchange].operands.push(OperandExecutionScope, "'Scope'");
    InstructionDesc[OpAtomicExchange].operands.push(OperandMemorySemantics, "'Semantics'");
    InstructionDesc[OpAtomicExchange].operands.push(OperandId, "'Value'");

    InstructionDesc[OpAtomicCompareExchange].operands.push(OperandId, "'Pointer'");
    InstructionDesc[OpAtomicCompareExchange].operands.push(OperandExecutionScope, "'Scope'");
    InstructionDesc[OpAtomicCompareExchange].operands.push(OperandMemorySemantics, "'Semantics'");
    InstructionDesc[OpAtomicCompareExchange].operands.push(OperandId, "'Value'");
    InstructionDesc[OpAtomicCompareExchange].operands.push(OperandId, "'Comparator'");

    InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandId, "'Pointer'");
    InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandExecutionScope, "'Scope'");
    InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandMemorySemantics, "'Semantics'");
    InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandId, "'Value'");
    InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandId, "'Comparator'");

    InstructionDesc[OpAtomicIIncrement].operands.push(OperandId, "'Pointer'");
    InstructionDesc[OpAtomicIIncrement].operands.push(OperandExecutionScope, "'Scope'");
    InstructionDesc[OpAtomicIIncrement].operands.push(OperandMemorySemantics, "'Semantics'");

    InstructionDesc[OpAtomicIDecrement].operands.push(OperandId, "'Pointer'");
    InstructionDesc[OpAtomicIDecrement].operands.push(OperandExecutionScope, "'Scope'");
    InstructionDesc[OpAtomicIDecrement].operands.push(OperandMemorySemantics, "'Semantics'");

    InstructionDesc[OpAtomicIAdd].operands.push(OperandId, "'Pointer'");
    InstructionDesc[OpAtomicIAdd].operands.push(OperandExecutionScope, "'Scope'");
    InstructionDesc[OpAtomicIAdd].operands.push(OperandMemorySemantics, "'Semantics'");
    InstructionDesc[OpAtomicIAdd].operands.push(OperandId, "'Value'");

    InstructionDesc[OpAtomicISub].operands.push(OperandId, "'Pointer'");
    InstructionDesc[OpAtomicISub].operands.push(OperandExecutionScope, "'Scope'");
    InstructionDesc[OpAtomicISub].operands.push(OperandMemorySemantics, "'Semantics'");
    InstructionDesc[OpAtomicISub].operands.push(OperandId, "'Value'");

    InstructionDesc[OpAtomicUMin].operands.push(OperandId, "'Pointer'");
    InstructionDesc[OpAtomicUMin].operands.push(OperandExecutionScope, "'Scope'");
    InstructionDesc[OpAtomicUMin].operands.push(OperandMemorySemantics, "'Semantics'");
    InstructionDesc[OpAtomicUMin].operands.push(OperandId, "'Value'");

    InstructionDesc[OpAtomicUMax].operands.push(OperandId, "'Pointer'");
    InstructionDesc[OpAtomicUMax].operands.push(OperandExecutionScope, "'Scope'");
    InstructionDesc[OpAtomicUMax].operands.push(OperandMemorySemantics, "'Semantics'");
    InstructionDesc[OpAtomicUMax].operands.push(OperandId, "'Value'");

    InstructionDesc[OpAtomicIMin].operands.push(OperandId, "'Pointer'");
    InstructionDesc[OpAtomicIMin].operands.push(OperandExecutionScope, "'Scope'");
    InstructionDesc[OpAtomicIMin].operands.push(OperandMemorySemantics, "'Semantics'");
    InstructionDesc[OpAtomicIMin].operands.push(OperandId, "'Value'");

    InstructionDesc[OpAtomicIMax].operands.push(OperandId, "'Pointer'");
    InstructionDesc[OpAtomicIMax].operands.push(OperandExecutionScope, "'Scope'");
    InstructionDesc[OpAtomicIMax].operands.push(OperandMemorySemantics, "'Semantics'");
    InstructionDesc[OpAtomicIMax].operands.push(OperandId, "'Value'");

    InstructionDesc[OpAtomicAnd].operands.push(OperandId, "'Pointer'");
    InstructionDesc[OpAtomicAnd].operands.push(OperandExecutionScope, "'Scope'");
    InstructionDesc[OpAtomicAnd].operands.push(OperandMemorySemantics, "'Semantics'");
    InstructionDesc[OpAtomicAnd].operands.push(OperandId, "'Value'");

    InstructionDesc[OpAtomicOr].operands.push(OperandId, "'Pointer'");
    InstructionDesc[OpAtomicOr].operands.push(OperandExecutionScope, "'Scope'");
    InstructionDesc[OpAtomicOr].operands.push(OperandMemorySemantics, "'Semantics'");
    InstructionDesc[OpAtomicOr].operands.push(OperandId, "'Value'");

    InstructionDesc[OpAtomicXor].operands.push(OperandId, "'Pointer'");
    InstructionDesc[OpAtomicXor].operands.push(OperandExecutionScope, "'Scope'");
    InstructionDesc[OpAtomicXor].operands.push(OperandMemorySemantics, "'Semantics'");
    InstructionDesc[OpAtomicXor].operands.push(OperandId, "'Value'");

    InstructionDesc[OpLoopMerge].operands.push(OperandId, "'Label'");
    InstructionDesc[OpLoopMerge].operands.push(OperandLoop, "");

    InstructionDesc[OpSelectionMerge].operands.push(OperandId, "'Label'");
    InstructionDesc[OpSelectionMerge].operands.push(OperandSelect, "");

    InstructionDesc[OpBranch].operands.push(OperandId, "'Target Label'");

    InstructionDesc[OpBranchConditional].operands.push(OperandId, "'Condition'");
    InstructionDesc[OpBranchConditional].operands.push(OperandId, "'True Label'");
    InstructionDesc[OpBranchConditional].operands.push(OperandId, "'False Label'");
    InstructionDesc[OpBranchConditional].operands.push(OperandVariableLiterals, "'Branch weights'");

    InstructionDesc[OpSwitch].operands.push(OperandId, "'Selector'");
    InstructionDesc[OpSwitch].operands.push(OperandId, "'Default'");
    InstructionDesc[OpSwitch].operands.push(OperandVariableLiteralId, "'Target'");

    InstructionDesc[OpKill].capabilities.push_back(CapShader);

    InstructionDesc[OpReturnValue].operands.push(OperandId, "'Value'");

    InstructionDesc[OpUnreachable].capabilities.push_back(CapKernel);

    InstructionDesc[OpLifetimeStart].operands.push(OperandId, "");
    InstructionDesc[OpLifetimeStart].operands.push(OperandLiteralNumber, "");

    InstructionDesc[OpLifetimeStop].operands.push(OperandId, "");
    InstructionDesc[OpLifetimeStop].operands.push(OperandLiteralNumber, "");

    InstructionDesc[OpCompileFlag].capabilities.push_back(CapKernel);
    InstructionDesc[OpCompileFlag].operands.push(OperandLiteralString, "'Flag'");

    InstructionDesc[OpAsyncGroupCopy].capabilities.push_back(CapKernel);
    InstructionDesc[OpAsyncGroupCopy].operands.push(OperandExecutionScope, "'Scope'");
    InstructionDesc[OpAsyncGroupCopy].operands.push(OperandId, "'Destination'");
    InstructionDesc[OpAsyncGroupCopy].operands.push(OperandId, "'Source'");
    InstructionDesc[OpAsyncGroupCopy].operands.push(OperandId, "'Num Elements'");
    InstructionDesc[OpAsyncGroupCopy].operands.push(OperandId, "'Stride'");
    InstructionDesc[OpAsyncGroupCopy].operands.push(OperandId, "'Event'");

    InstructionDesc[OpWaitGroupEvents].capabilities.push_back(CapKernel);
    InstructionDesc[OpWaitGroupEvents].operands.push(OperandExecutionScope, "'Scope'");
    InstructionDesc[OpWaitGroupEvents].operands.push(OperandId, "'Num Events'");
    InstructionDesc[OpWaitGroupEvents].operands.push(OperandId, "'Events List'");

    InstructionDesc[OpGroupAll].capabilities.push_back(CapKernel);
    InstructionDesc[OpGroupAll].operands.push(OperandExecutionScope, "'Scope'");
    InstructionDesc[OpGroupAll].operands.push(OperandId, "'Predicate'");

    InstructionDesc[OpGroupAny].capabilities.push_back(CapKernel);
    InstructionDesc[OpGroupAny].operands.push(OperandExecutionScope, "'Scope'");
    InstructionDesc[OpGroupAny].operands.push(OperandId, "'Predicate'");

    InstructionDesc[OpGroupBroadcast].capabilities.push_back(CapKernel);
    InstructionDesc[OpGroupBroadcast].operands.push(OperandExecutionScope, "'Scope'");
    InstructionDesc[OpGroupBroadcast].operands.push(OperandId, "'Value'");
    InstructionDesc[OpGroupBroadcast].operands.push(OperandId, "'LocalId'");

    InstructionDesc[OpGroupIAdd].capabilities.push_back(CapKernel);
    InstructionDesc[OpGroupIAdd].operands.push(OperandExecutionScope, "'Scope'");
    InstructionDesc[OpGroupIAdd].operands.push(OperandGroupOperation, "'Operation'");
    InstructionDesc[OpGroupIAdd].operands.push(OperandId, "'X'");

    InstructionDesc[OpGroupFAdd].capabilities.push_back(CapKernel);
    InstructionDesc[OpGroupFAdd].operands.push(OperandExecutionScope, "'Scope'");
    InstructionDesc[OpGroupFAdd].operands.push(OperandGroupOperation, "'Operation'");
    InstructionDesc[OpGroupFAdd].operands.push(OperandId, "'X'");

    InstructionDesc[OpGroupUMin].capabilities.push_back(CapKernel);
    InstructionDesc[OpGroupUMin].operands.push(OperandExecutionScope, "'Scope'");
    InstructionDesc[OpGroupUMin].operands.push(OperandGroupOperation, "'Operation'");
    InstructionDesc[OpGroupUMin].operands.push(OperandId, "'X'");

    InstructionDesc[OpGroupSMin].capabilities.push_back(CapKernel);
    InstructionDesc[OpGroupSMin].operands.push(OperandExecutionScope, "'Scope'");
    InstructionDesc[OpGroupSMin].operands.push(OperandGroupOperation, "'Operation'");
    InstructionDesc[OpGroupSMin].operands.push(OperandId, "X");

    InstructionDesc[OpGroupFMin].capabilities.push_back(CapKernel);
    InstructionDesc[OpGroupFMin].operands.push(OperandExecutionScope, "'Scope'");
    InstructionDesc[OpGroupFMin].operands.push(OperandGroupOperation, "'Operation'");
    InstructionDesc[OpGroupFMin].operands.push(OperandId, "X");

    InstructionDesc[OpGroupUMax].capabilities.push_back(CapKernel);
    InstructionDesc[OpGroupUMax].operands.push(OperandExecutionScope, "'Scope'");
    InstructionDesc[OpGroupUMax].operands.push(OperandGroupOperation, "'Operation'");
    InstructionDesc[OpGroupUMax].operands.push(OperandId, "X");

    InstructionDesc[OpGroupSMax].capabilities.push_back(CapKernel);
    InstructionDesc[OpGroupSMax].operands.push(OperandExecutionScope, "'Scope'");
    InstructionDesc[OpGroupSMax].operands.push(OperandGroupOperation, "'Operation'");
    InstructionDesc[OpGroupSMax].operands.push(OperandId, "X");

    InstructionDesc[OpGroupFMax].capabilities.push_back(CapKernel);
    InstructionDesc[OpGroupFMax].operands.push(OperandExecutionScope, "'Scope'");
    InstructionDesc[OpGroupFMax].operands.push(OperandGroupOperation, "'Operation'");
    InstructionDesc[OpGroupFMax].operands.push(OperandId, "X");

    InstructionDesc[OpReadPipe].capabilities.push_back(CapKernel);
    InstructionDesc[OpReadPipe].operands.push(OperandId, "'p'");
    InstructionDesc[OpReadPipe].operands.push(OperandId, "'ptr'");

    InstructionDesc[OpWritePipe].capabilities.push_back(CapKernel);
    InstructionDesc[OpWritePipe].operands.push(OperandId, "'p'");
    InstructionDesc[OpWritePipe].operands.push(OperandId, "'ptr'");

    InstructionDesc[OpReservedReadPipe].capabilities.push_back(CapKernel);
    InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'p'");
    InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'reserve_id'");
    InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'index'");
    InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'ptr'");

    InstructionDesc[OpReservedWritePipe].capabilities.push_back(CapKernel);
    InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'p'");
    InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'reserve_id'");
    InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'index'");
    InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'ptr'");

    InstructionDesc[OpReserveReadPipePackets].capabilities.push_back(CapKernel);
    InstructionDesc[OpReserveReadPipePackets].operands.push(OperandId, "'p'");
    InstructionDesc[OpReserveReadPipePackets].operands.push(OperandId, "'num_packets'");

    InstructionDesc[OpReserveWritePipePackets].capabilities.push_back(CapKernel);
    InstructionDesc[OpReserveWritePipePackets].operands.push(OperandId, "'p'");
    InstructionDesc[OpReserveWritePipePackets].operands.push(OperandId, "'num_packets'");

    InstructionDesc[OpCommitReadPipe].capabilities.push_back(CapKernel);
    InstructionDesc[OpCommitReadPipe].operands.push(OperandId, "'p'");
    InstructionDesc[OpCommitReadPipe].operands.push(OperandId, "'reserve_id'");

    InstructionDesc[OpCommitWritePipe].capabilities.push_back(CapKernel);
    InstructionDesc[OpCommitWritePipe].operands.push(OperandId, "'p'");
    InstructionDesc[OpCommitWritePipe].operands.push(OperandId, "'reserve_id'");

    InstructionDesc[OpIsValidReserveId].capabilities.push_back(CapKernel);
    InstructionDesc[OpIsValidReserveId].operands.push(OperandId, "'reserve_id'");

    InstructionDesc[OpGetNumPipePackets].capabilities.push_back(CapKernel);
    InstructionDesc[OpGetNumPipePackets].operands.push(OperandId, "'p'");

    InstructionDesc[OpGetMaxPipePackets].capabilities.push_back(CapKernel);
    InstructionDesc[OpGetMaxPipePackets].operands.push(OperandId, "'p'");

    InstructionDesc[OpGroupReserveReadPipePackets].capabilities.push_back(CapKernel);
    InstructionDesc[OpGroupReserveReadPipePackets].operands.push(OperandExecutionScope, "'Scope'");
    InstructionDesc[OpGroupReserveReadPipePackets].operands.push(OperandId, "'p'");
    InstructionDesc[OpGroupReserveReadPipePackets].operands.push(OperandId, "'num_packets'");

    InstructionDesc[OpGroupReserveWritePipePackets].capabilities.push_back(CapKernel);
    InstructionDesc[OpGroupReserveWritePipePackets].operands.push(OperandExecutionScope, "'Scope'");
    InstructionDesc[OpGroupReserveWritePipePackets].operands.push(OperandId, "'p'");
    InstructionDesc[OpGroupReserveWritePipePackets].operands.push(OperandId, "'num_packets'");

    InstructionDesc[OpGroupCommitReadPipe].capabilities.push_back(CapKernel);
    InstructionDesc[OpGroupCommitReadPipe].operands.push(OperandExecutionScope, "'Scope'");
    InstructionDesc[OpGroupCommitReadPipe].operands.push(OperandId, "'p'");
    InstructionDesc[OpGroupCommitReadPipe].operands.push(OperandId, "'reserve_id'");

    InstructionDesc[OpGroupCommitWritePipe].capabilities.push_back(CapKernel);
    InstructionDesc[OpGroupCommitWritePipe].operands.push(OperandExecutionScope, "'Scope'");
    InstructionDesc[OpGroupCommitWritePipe].operands.push(OperandId, "'p'");
    InstructionDesc[OpGroupCommitWritePipe].operands.push(OperandId, "'reserve_id'");

    InstructionDesc[OpBuildNDRange].capabilities.push_back(CapKernel);
    InstructionDesc[OpBuildNDRange].operands.push(OperandId, "'GlobalWorkSize'");
    InstructionDesc[OpBuildNDRange].operands.push(OperandId, "'LocalWorkSize'");
    InstructionDesc[OpBuildNDRange].operands.push(OperandId, "'GlobalWorkOffset'");

    InstructionDesc[OpGetDefaultQueue].capabilities.push_back(CapKernel);

    InstructionDesc[OpCaptureEventProfilingInfo].capabilities.push_back(CapKernel);

    InstructionDesc[OpCaptureEventProfilingInfo].operands.push(OperandId, "'event'");
    InstructionDesc[OpCaptureEventProfilingInfo].operands.push(OperandKernelProfilingInfo, "'info'");
    InstructionDesc[OpCaptureEventProfilingInfo].operands.push(OperandId, "'value'");

    InstructionDesc[OpSetUserEventStatus].capabilities.push_back(CapKernel);

    InstructionDesc[OpSetUserEventStatus].operands.push(OperandId, "'event'");
    InstructionDesc[OpSetUserEventStatus].operands.push(OperandId, "'status'");

    InstructionDesc[OpIsValidEvent].capabilities.push_back(CapKernel);
    InstructionDesc[OpIsValidEvent].operands.push(OperandId, "'event'");

    InstructionDesc[OpCreateUserEvent].capabilities.push_back(CapKernel);

    InstructionDesc[OpRetainEvent].capabilities.push_back(CapKernel);
    InstructionDesc[OpRetainEvent].operands.push(OperandId, "'event'");

    InstructionDesc[OpReleaseEvent].capabilities.push_back(CapKernel);
    InstructionDesc[OpReleaseEvent].operands.push(OperandId, "'event'");

    InstructionDesc[OpGetKernelWorkGroupSize].capabilities.push_back(CapKernel);
    InstructionDesc[OpGetKernelWorkGroupSize].operands.push(OperandId, "'Invoke'");

    InstructionDesc[OpGetKernelPreferredWorkGroupSizeMultiple].capabilities.push_back(CapKernel);
    InstructionDesc[OpGetKernelPreferredWorkGroupSizeMultiple].operands.push(OperandId, "'Invoke'");

    InstructionDesc[OpGetKernelNDrangeSubGroupCount].capabilities.push_back(CapKernel);
    InstructionDesc[OpGetKernelNDrangeSubGroupCount].operands.push(OperandId, "'ND Range'");
    InstructionDesc[OpGetKernelNDrangeSubGroupCount].operands.push(OperandId, "'Invoke'");

    InstructionDesc[OpGetKernelNDrangeMaxSubGroupSize].capabilities.push_back(CapKernel);
    InstructionDesc[OpGetKernelNDrangeMaxSubGroupSize].operands.push(OperandId, "'ND Range'");
    InstructionDesc[OpGetKernelNDrangeMaxSubGroupSize].operands.push(OperandId, "'Invoke'");

    InstructionDesc[OpEnqueueKernel].capabilities.push_back(CapKernel);
    InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'q'");
    InstructionDesc[OpEnqueueKernel].operands.push(OperandKernelEnqueueFlags, "'flags'");
    InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'ND Range'");
    InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Num Events'");
    InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Wait Events'");
    InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Ret Event'");
    InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Invoke'");
    InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Param'");
    InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Param Size'");
    InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Param Align'");
    InstructionDesc[OpEnqueueKernel].operands.push(OperandVariableIds, "'Local Size'");

    InstructionDesc[OpEnqueueMarker].capabilities.push_back(CapKernel);
    InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'q'");
    InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'Num Events'");
    InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'Wait Events'");
    InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'Ret Event'");
}

}; // end spv namespace
