//\r
\r
//\r
-// Programmatically fill in instruction/operand information.\r
+// 1) Programatically fill in instruction/operand information.\r
+// This can be used for disassembly, printing documentation, etc.\r
+//\r
+// 2) Print documentation from this parameterization.\r
//\r
-\r
-#include "spirv.h"\r
\r
#include "doc.h"\r
\r
#include <string.h>\r
#include <algorithm>\r
\r
-#define LINE_BREAK " +\n"\r
-#define GAP " +\n +\n"\r
-#define NOTE GAP "*Note:* "\r
-\r
namespace spv {\r
\r
-// The set of objects that hold all the instruction/operand\r
-// parameterization information.\r
-InstructionParameters InstructionDesc[spv::OpCount];\r
-\r
-// Set up all the parameterizing descriptions of the opcodes, operands, etc.\r
-void Parameterize()\r
-{\r
- // Exceptions to having a result <id> and a resulting type <id>.\r
- // (Everything is initialized to have both).\r
-\r
- InstructionDesc[OpNop] .setResultAndType(false, false);\r
- InstructionDesc[OpSource] .setResultAndType(false, false);\r
- InstructionDesc[OpSourceExtension].setResultAndType(false, false);\r
- InstructionDesc[OpExtension] .setResultAndType(false, false);\r
- InstructionDesc[OpExtInstImport] .setResultAndType(true, false);\r
- InstructionDesc[OpMemoryModel] .setResultAndType(false, false);\r
- InstructionDesc[OpEntryPoint] .setResultAndType(false, false);\r
- InstructionDesc[OpExecutionMode] .setResultAndType(false, false);\r
-\r
- InstructionDesc[OpTypeVoid] .setResultAndType(true, false);\r
- InstructionDesc[OpTypeBool] .setResultAndType(true, false);\r
- InstructionDesc[OpTypeInt] .setResultAndType(true, false);\r
- InstructionDesc[OpTypeFloat] .setResultAndType(true, false);\r
- InstructionDesc[OpTypeVector] .setResultAndType(true, false);\r
- InstructionDesc[OpTypeMatrix] .setResultAndType(true, false);\r
- InstructionDesc[OpTypeSampler] .setResultAndType(true, false);\r
- InstructionDesc[OpTypeFilter] .setResultAndType(true, false);\r
- InstructionDesc[OpTypeArray] .setResultAndType(true, false);\r
- InstructionDesc[OpTypeRuntimeArray].setResultAndType(true, false);\r
- InstructionDesc[OpTypeStruct] .setResultAndType(true, false);\r
- InstructionDesc[OpTypeOpaque] .setResultAndType(true, false);\r
- InstructionDesc[OpTypePointer] .setResultAndType(true, false);\r
- InstructionDesc[OpTypeFunction] .setResultAndType(true, false);\r
-\r
- InstructionDesc[OpTypeEvent] .setResultAndType(true, false);\r
- InstructionDesc[OpTypeDeviceEvent] .setResultAndType(true, false);\r
- InstructionDesc[OpTypeReserveId] .setResultAndType(true, false);\r
- InstructionDesc[OpTypeQueue] .setResultAndType(true, false);\r
- InstructionDesc[OpTypePipe] .setResultAndType(true, false);\r
- InstructionDesc[OpFunctionEnd] .setResultAndType(false, false);\r
- InstructionDesc[OpStore] .setResultAndType(false, false);\r
- InstructionDesc[OpDecorationGroup] .setResultAndType(true, false);\r
- InstructionDesc[OpDecorate] .setResultAndType(false, false);\r
- InstructionDesc[OpMemberDecorate] .setResultAndType(false, false);\r
- InstructionDesc[OpGroupDecorate] .setResultAndType(false, false);\r
- InstructionDesc[OpGroupMemberDecorate].setResultAndType(false, false);\r
- InstructionDesc[OpName] .setResultAndType(false, false);\r
- InstructionDesc[OpMemberName] .setResultAndType(false, false);\r
- InstructionDesc[OpString] .setResultAndType(true, false);\r
- InstructionDesc[OpLine] .setResultAndType(false, false);\r
-\r
- InstructionDesc[OpCopyMemory] .setResultAndType(false, false);\r
- InstructionDesc[OpCopyMemorySized].setResultAndType(false, false);\r
-\r
- InstructionDesc[OpEmitVertex] .setResultAndType(false, false);\r
- InstructionDesc[OpEndPrimitive] .setResultAndType(false, false);\r
- InstructionDesc[OpEmitStreamVertex] .setResultAndType(false, false);\r
- InstructionDesc[OpEndStreamPrimitive].setResultAndType(false, false);\r
-\r
- InstructionDesc[OpControlBarrier].setResultAndType(false, false);\r
- InstructionDesc[OpMemoryBarrier] .setResultAndType(false, false);\r
- \r
- InstructionDesc[OpAtomicInit].setResultAndType(false, false);\r
- InstructionDesc[OpAtomicStore].setResultAndType(false, false);\r
-\r
- InstructionDesc[OpLoopMerge] .setResultAndType(false, false);\r
- InstructionDesc[OpSelectionMerge] .setResultAndType(false, false);\r
- InstructionDesc[OpLabel] .setResultAndType(true, false);\r
- InstructionDesc[OpBranch] .setResultAndType(false, false);\r
- InstructionDesc[OpBranchConditional].setResultAndType(false, false);\r
- InstructionDesc[OpSwitch] .setResultAndType(false, false);\r
- InstructionDesc[OpKill] .setResultAndType(false, false);\r
- InstructionDesc[OpReturn] .setResultAndType(false, false);\r
- InstructionDesc[OpReturnValue] .setResultAndType(false, false);\r
- InstructionDesc[OpUnreachable] .setResultAndType(false, false);\r
-\r
- InstructionDesc[OpLifetimeStart] .setResultAndType(false, false);\r
- InstructionDesc[OpLifetimeStop] .setResultAndType(false, false);\r
-\r
- InstructionDesc[OpCompileFlag] .setResultAndType(false, false);\r
- InstructionDesc[OpCommitReadPipe] .setResultAndType(false, false);\r
- InstructionDesc[OpCommitWritePipe].setResultAndType(false, false);\r
- InstructionDesc[OpGroupCommitWritePipe].setResultAndType(false, false);\r
- InstructionDesc[OpGroupCommitReadPipe].setResultAndType(false, false);\r
- InstructionDesc[OpCaptureEventProfilingInfo].setResultAndType(false, false);\r
- InstructionDesc[OpSetUserEventStatus].setResultAndType(false, false);\r
- InstructionDesc[OpRetainEvent].setResultAndType(false, false);\r
- InstructionDesc[OpReleaseEvent].setResultAndType(false, false);\r
-\r
- // set name of operator, an initial set of <id> style operands, and the description\r
-\r
- #define SET_OPNAME(index) InstructionDesc[index].opName = #index;\r
-\r
- SET_OPNAME(OpNop);\r
- SET_OPNAME(OpSource);\r
- SET_OPNAME(OpSourceExtension);\r
- SET_OPNAME(OpExtension);\r
- SET_OPNAME(OpExtInstImport);\r
- SET_OPNAME(OpMemoryModel);\r
- SET_OPNAME(OpEntryPoint);\r
- SET_OPNAME(OpExecutionMode);\r
-\r
- SET_OPNAME(OpTypeVoid);\r
- SET_OPNAME(OpTypeInt);\r
- SET_OPNAME(OpTypeBool);\r
- SET_OPNAME(OpTypeFloat);\r
- SET_OPNAME(OpTypeVector);\r
- SET_OPNAME(OpTypeMatrix);\r
- SET_OPNAME(OpTypeSampler);\r
- SET_OPNAME(OpTypeFilter);\r
- SET_OPNAME(OpTypeArray);\r
- SET_OPNAME(OpTypeRuntimeArray);\r
- SET_OPNAME(OpTypeStruct);\r
- SET_OPNAME(OpTypeOpaque);\r
- SET_OPNAME(OpTypePointer);\r
- SET_OPNAME(OpTypeFunction);\r
-\r
- SET_OPNAME(OpTypeEvent);\r
- SET_OPNAME(OpTypeDeviceEvent);\r
- SET_OPNAME(OpTypeReserveId);\r
- SET_OPNAME(OpTypeQueue);\r
- SET_OPNAME(OpTypePipe);\r
-\r
- SET_OPNAME(OpConstantTrue);\r
- SET_OPNAME(OpConstantFalse);\r
- SET_OPNAME(OpConstant);\r
- SET_OPNAME(OpConstantComposite);\r
- SET_OPNAME(OpConstantNullPointer);\r
- SET_OPNAME(OpConstantNullObject);\r
- SET_OPNAME(OpConstantSampler);\r
-\r
- SET_OPNAME(OpSpecConstantTrue);\r
- SET_OPNAME(OpSpecConstantFalse);\r
- SET_OPNAME(OpSpecConstant);\r
- SET_OPNAME(OpSpecConstantComposite);\r
-\r
- SET_OPNAME(OpVariable);\r
- SET_OPNAME(OpVariableArray);\r
-\r
- SET_OPNAME(OpFunction);\r
- SET_OPNAME(OpFunctionParameter);\r
- SET_OPNAME(OpFunctionEnd);\r
- SET_OPNAME(OpFunctionCall);\r
-\r
- SET_OPNAME(OpExtInst);\r
-\r
- SET_OPNAME(OpUndef);\r
- SET_OPNAME(OpLoad);\r
- SET_OPNAME(OpStore);\r
- SET_OPNAME(OpPhi);\r
-\r
- SET_OPNAME(OpDecorationGroup);\r
- SET_OPNAME(OpDecorate);\r
- SET_OPNAME(OpMemberDecorate);\r
- SET_OPNAME(OpGroupDecorate);\r
- SET_OPNAME(OpGroupMemberDecorate);\r
- SET_OPNAME(OpName);\r
- SET_OPNAME(OpMemberName);\r
- SET_OPNAME(OpString);\r
- SET_OPNAME(OpLine);\r
-\r
- SET_OPNAME(OpVectorExtractDynamic);\r
- SET_OPNAME(OpVectorInsertDynamic);\r
- SET_OPNAME(OpVectorShuffle);\r
-\r
- SET_OPNAME(OpCompositeConstruct);\r
- SET_OPNAME(OpCompositeExtract);\r
- SET_OPNAME(OpCompositeInsert);\r
-\r
- SET_OPNAME(OpCopyObject);\r
- SET_OPNAME(OpCopyMemory);\r
- SET_OPNAME(OpCopyMemorySized);\r
-\r
- SET_OPNAME(OpSampler);\r
-\r
- SET_OPNAME(OpTextureSample);\r
- SET_OPNAME(OpTextureSampleDref);\r
- SET_OPNAME(OpTextureSampleLod);\r
- SET_OPNAME(OpTextureSampleProj);\r
- SET_OPNAME(OpTextureSampleGrad);\r
- SET_OPNAME(OpTextureSampleOffset);\r
- SET_OPNAME(OpTextureSampleProjLod);\r
- SET_OPNAME(OpTextureSampleProjGrad);\r
- SET_OPNAME(OpTextureSampleLodOffset);\r
- SET_OPNAME(OpTextureSampleProjOffset);\r
- SET_OPNAME(OpTextureSampleGradOffset);\r
- SET_OPNAME(OpTextureSampleProjLodOffset);\r
- SET_OPNAME(OpTextureSampleProjGradOffset);\r
- SET_OPNAME(OpTextureFetchTexel);\r
- SET_OPNAME(OpTextureFetchTexelOffset);\r
- SET_OPNAME(OpTextureFetchSample);\r
- SET_OPNAME(OpTextureFetchBuffer);\r
- SET_OPNAME(OpTextureGather);\r
- SET_OPNAME(OpTextureGatherOffset);\r
- SET_OPNAME(OpTextureGatherOffsets);\r
- SET_OPNAME(OpTextureQuerySizeLod);\r
- SET_OPNAME(OpTextureQuerySize);\r
- SET_OPNAME(OpTextureQueryLod);\r
- SET_OPNAME(OpTextureQueryLevels);\r
- SET_OPNAME(OpTextureQuerySamples);\r
-\r
- SET_OPNAME(OpAccessChain);\r
- SET_OPNAME(OpInBoundsAccessChain);\r
-\r
- SET_OPNAME(OpSNegate);\r
- SET_OPNAME(OpFNegate);\r
- SET_OPNAME(OpNot);\r
- SET_OPNAME(OpAny);\r
- SET_OPNAME(OpAll);\r
-\r
- SET_OPNAME(OpConvertFToU);\r
- SET_OPNAME(OpConvertFToS);\r
- SET_OPNAME(OpConvertSToF);\r
- SET_OPNAME(OpConvertUToF);\r
- SET_OPNAME(OpFConvert);\r
- SET_OPNAME(OpSConvert);\r
- SET_OPNAME(OpUConvert);\r
- SET_OPNAME(OpConvertPtrToU);\r
- SET_OPNAME(OpConvertUToPtr);\r
- SET_OPNAME(OpPtrCastToGeneric);\r
- SET_OPNAME(OpGenericCastToPtr);\r
- SET_OPNAME(OpGenericCastToPtrExplicit);\r
- SET_OPNAME(OpGenericPtrMemSemantics);\r
- SET_OPNAME(OpBitcast);\r
- SET_OPNAME(OpTranspose);\r
-\r
- SET_OPNAME(OpIsNan);\r
- SET_OPNAME(OpIsInf);\r
- SET_OPNAME(OpIsFinite);\r
- SET_OPNAME(OpIsNormal);\r
- SET_OPNAME(OpSignBitSet);\r
- SET_OPNAME(OpLessOrGreater);\r
- SET_OPNAME(OpOrdered);\r
- SET_OPNAME(OpUnordered);\r
-\r
- SET_OPNAME(OpArrayLength);\r
- \r
- SET_OPNAME(OpIAdd);\r
- SET_OPNAME(OpFAdd);\r
- SET_OPNAME(OpISub);\r
- SET_OPNAME(OpFSub);\r
- SET_OPNAME(OpIMul);\r
- SET_OPNAME(OpFMul);\r
- SET_OPNAME(OpUDiv);\r
- SET_OPNAME(OpSDiv);\r
- SET_OPNAME(OpFDiv);\r
- SET_OPNAME(OpUMod);\r
- SET_OPNAME(OpSRem);\r
- SET_OPNAME(OpSMod);\r
- SET_OPNAME(OpFRem);\r
- SET_OPNAME(OpFMod);\r
- \r
- SET_OPNAME(OpVectorTimesScalar);\r
- SET_OPNAME(OpMatrixTimesScalar);\r
- SET_OPNAME(OpVectorTimesMatrix);\r
- SET_OPNAME(OpMatrixTimesVector);\r
- SET_OPNAME(OpMatrixTimesMatrix);\r
- SET_OPNAME(OpOuterProduct);\r
- SET_OPNAME(OpDot);\r
-\r
- SET_OPNAME(OpShiftRightLogical);\r
- SET_OPNAME(OpShiftRightArithmetic);\r
- SET_OPNAME(OpShiftLeftLogical);\r
- SET_OPNAME(OpLogicalOr);\r
- SET_OPNAME(OpLogicalXor);\r
- SET_OPNAME(OpLogicalAnd);\r
-\r
- SET_OPNAME(OpBitwiseOr);\r
- SET_OPNAME(OpBitwiseXor);\r
- SET_OPNAME(OpBitwiseAnd);\r
-\r
- SET_OPNAME(OpSelect);\r
-\r
- SET_OPNAME(OpIEqual);\r
- SET_OPNAME(OpFOrdEqual);\r
- SET_OPNAME(OpFUnordEqual);\r
- SET_OPNAME(OpINotEqual);\r
- SET_OPNAME(OpFOrdNotEqual);\r
- SET_OPNAME(OpFUnordNotEqual);\r
- SET_OPNAME(OpULessThan);\r
- SET_OPNAME(OpSLessThan);\r
- SET_OPNAME(OpFOrdLessThan);\r
- SET_OPNAME(OpFUnordLessThan);\r
- SET_OPNAME(OpUGreaterThan);\r
- SET_OPNAME(OpSGreaterThan);\r
- SET_OPNAME(OpFOrdGreaterThan);\r
- SET_OPNAME(OpFUnordGreaterThan);\r
- SET_OPNAME(OpULessThanEqual);\r
- SET_OPNAME(OpSLessThanEqual);\r
- SET_OPNAME(OpFOrdLessThanEqual);\r
- SET_OPNAME(OpFUnordLessThanEqual);\r
- SET_OPNAME(OpUGreaterThanEqual);\r
- SET_OPNAME(OpSGreaterThanEqual);\r
- SET_OPNAME(OpFOrdGreaterThanEqual);\r
- SET_OPNAME(OpFUnordGreaterThanEqual);\r
-\r
- SET_OPNAME(OpDPdx);\r
- SET_OPNAME(OpDPdy);\r
- SET_OPNAME(OpFwidth);\r
- SET_OPNAME(OpDPdxFine);\r
- SET_OPNAME(OpDPdyFine);\r
- SET_OPNAME(OpFwidthFine);\r
- SET_OPNAME(OpDPdxCoarse);\r
- SET_OPNAME(OpDPdyCoarse);\r
- SET_OPNAME(OpFwidthCoarse);\r
- SET_OPNAME(OpEmitVertex);\r
- SET_OPNAME(OpEndPrimitive);\r
- SET_OPNAME(OpEmitStreamVertex);\r
- SET_OPNAME(OpEndStreamPrimitive);\r
- SET_OPNAME(OpControlBarrier);\r
- SET_OPNAME(OpMemoryBarrier);\r
-\r
- SET_OPNAME(OpImagePointer);\r
-\r
- SET_OPNAME(OpAtomicInit);\r
- SET_OPNAME(OpAtomicLoad);\r
- SET_OPNAME(OpAtomicStore);\r
- SET_OPNAME(OpAtomicExchange);\r
- SET_OPNAME(OpAtomicCompareExchange);\r
- SET_OPNAME(OpAtomicCompareExchangeWeak);\r
- SET_OPNAME(OpAtomicIIncrement);\r
- SET_OPNAME(OpAtomicIDecrement);\r
- SET_OPNAME(OpAtomicIAdd);\r
- SET_OPNAME(OpAtomicISub);\r
- SET_OPNAME(OpAtomicUMin);\r
- SET_OPNAME(OpAtomicUMax);\r
- SET_OPNAME(OpAtomicAnd);\r
- SET_OPNAME(OpAtomicOr);\r
- SET_OPNAME(OpAtomicXor);\r
-\r
- SET_OPNAME(OpLoopMerge);\r
- SET_OPNAME(OpSelectionMerge);\r
- SET_OPNAME(OpLabel);\r
- SET_OPNAME(OpBranch);\r
- SET_OPNAME(OpBranchConditional);\r
- SET_OPNAME(OpSwitch);\r
- SET_OPNAME(OpKill);\r
- SET_OPNAME(OpReturn);\r
- SET_OPNAME(OpReturnValue);\r
- SET_OPNAME(OpUnreachable); \r
-\r
- SET_OPNAME(OpLifetimeStart);\r
- SET_OPNAME(OpLifetimeStop); \r
- SET_OPNAME(OpCompileFlag);\r
- \r
- SET_OPNAME(OpAsyncGroupCopy);\r
- SET_OPNAME(OpWaitGroupEvents);\r
-\r
- SET_OPNAME(OpGroupAll);\r
- SET_OPNAME(OpGroupAny);\r
- SET_OPNAME(OpGroupBroadcast);\r
- SET_OPNAME(OpGroupIAdd);\r
- SET_OPNAME(OpGroupFAdd);\r
- SET_OPNAME(OpGroupFMin);\r
- SET_OPNAME(OpGroupUMin);\r
- SET_OPNAME(OpGroupSMin);\r
- SET_OPNAME(OpGroupFMax);\r
- SET_OPNAME(OpGroupUMax);\r
- SET_OPNAME(OpGroupSMax);\r
-\r
- SET_OPNAME(OpReadPipe);\r
- SET_OPNAME(OpWritePipe);\r
- SET_OPNAME(OpReservedReadPipe);\r
- SET_OPNAME(OpReservedWritePipe);\r
- SET_OPNAME(OpReserveReadPipePackets);\r
- SET_OPNAME(OpReserveWritePipePackets);\r
- SET_OPNAME(OpCommitReadPipe);\r
- SET_OPNAME(OpCommitWritePipe);\r
- SET_OPNAME(OpIsValidReserveId);\r
- SET_OPNAME(OpGetNumPipePackets);\r
- SET_OPNAME(OpGetMaxPipePackets);\r
- SET_OPNAME(OpGroupReserveReadPipePackets);\r
- SET_OPNAME(OpGroupReserveWritePipePackets);\r
- SET_OPNAME(OpGroupCommitReadPipe);\r
- SET_OPNAME(OpGroupCommitWritePipe);\r
-\r
- // Device-side enqueueing of kernels \r
- SET_OPNAME(OpBuildNDRange);\r
- SET_OPNAME(OpGetDefaultQueue);\r
- SET_OPNAME(OpCaptureEventProfilingInfo);\r
- SET_OPNAME(OpSetUserEventStatus);\r
- SET_OPNAME(OpIsValidEvent);\r
- SET_OPNAME(OpCreateUserEvent);\r
- SET_OPNAME(OpRetainEvent);\r
- SET_OPNAME(OpReleaseEvent);\r
- SET_OPNAME(OpGetKernelWorkGroupSize);\r
- SET_OPNAME(OpGetKernelPreferredWorkGroupSizeMultiple);\r
- SET_OPNAME(OpGetKernelNDrangeMaxSubGroupSize);\r
- SET_OPNAME(OpGetKernelNDrangeSubGroupCount);\r
- SET_OPNAME(OpEnqueueKernel);\r
- SET_OPNAME(OpEnqueueMarker);\r
-\r
- InstructionDesc[OpSource].operands.push(OperandSource);
- InstructionDesc[OpSource].operands.push(OperandLiteralNumber);
- InstructionDesc[OpSourceExtension].operands.push(OperandLiteralString);
- InstructionDesc[OpName].operands.push(OperandId);
- InstructionDesc[OpName].operands.push(OperandLiteralString);
- InstructionDesc[OpMemberName].operands.push(OperandId);
- InstructionDesc[OpMemberName].operands.push(OperandLiteralNumber);
- InstructionDesc[OpMemberName].operands.push(OperandLiteralString);
- InstructionDesc[OpString].operands.push(OperandLiteralString);
- InstructionDesc[OpLine].operands.push(OperandId);
- InstructionDesc[OpLine].operands.push(OperandId);
- InstructionDesc[OpLine].operands.push(OperandLiteralNumber);
- InstructionDesc[OpLine].operands.push(OperandLiteralNumber);
- InstructionDesc[OpExtension].operands.push(OperandLiteralString);
- InstructionDesc[OpExtInstImport].operands.push(OperandLiteralString);
- InstructionDesc[OpMemoryModel].operands.push(OperandAddressing);
- InstructionDesc[OpMemoryModel].operands.push(OperandMemory);
- InstructionDesc[OpEntryPoint].operands.push(OperandExecutionModel);
- InstructionDesc[OpEntryPoint].operands.push(OperandId);
- InstructionDesc[OpExecutionMode].operands.push(OperandId);
- InstructionDesc[OpExecutionMode].operands.push(OperandExecutionMode);
- InstructionDesc[OpExecutionMode].operands.push(OperandVariableLiterals);
- InstructionDesc[OpTypeInt].operands.push(OperandLiteralNumber);
- InstructionDesc[OpTypeInt].operands.push(OperandLiteralNumber);
- InstructionDesc[OpTypeFloat].operands.push(OperandLiteralNumber);
- InstructionDesc[OpTypeVector].operands.push(OperandId);
- InstructionDesc[OpTypeVector].operands.push(OperandLiteralNumber);
- InstructionDesc[OpTypeMatrix].operands.push(OperandId);
- InstructionDesc[OpTypeMatrix].operands.push(OperandLiteralNumber);
- InstructionDesc[OpTypeSampler].operands.push(OperandId);
- InstructionDesc[OpTypeSampler].operands.push(OperandDimensionality);
- InstructionDesc[OpTypeSampler].operands.push(OperandLiteralNumber);
- InstructionDesc[OpTypeSampler].operands.push(OperandLiteralNumber);
- InstructionDesc[OpTypeSampler].operands.push(OperandLiteralNumber);
- InstructionDesc[OpTypeSampler].operands.push(OperandLiteralNumber);
- InstructionDesc[OpTypeSampler].operands.push(OperandOptionalId);
- InstructionDesc[OpTypeArray].operands.push(OperandId);
- InstructionDesc[OpTypeArray].operands.push(OperandId);
- InstructionDesc[OpTypeRuntimeArray].operands.push(OperandId);
- InstructionDesc[OpTypeStruct].operands.push(OperandVariableIds);
- InstructionDesc[OpTypeOpaque].operands.push(OperandLiteralString);
- InstructionDesc[OpTypePointer].operands.push(OperandStorage);
- InstructionDesc[OpTypePointer].operands.push(OperandId);
- InstructionDesc[OpTypePipe].operands.push(OperandId);
- InstructionDesc[OpTypePipe].operands.push(OperandAccessQualifier);
- InstructionDesc[OpTypeFunction].operands.push(OperandId);
- InstructionDesc[OpTypeFunction].operands.push(OperandVariableIds);
- InstructionDesc[OpConstant].operands.push(OperandVariableLiterals);
- InstructionDesc[OpConstantComposite].operands.push(OperandVariableIds);
- InstructionDesc[OpConstantSampler].operands.push(OperandLiteralNumber);
- InstructionDesc[OpConstantSampler].operands.push(OperandLiteralNumber);
- InstructionDesc[OpConstantSampler].operands.push(OperandLiteralNumber);
- InstructionDesc[OpSpecConstant].operands.push(OperandVariableLiterals);
- InstructionDesc[OpSpecConstantComposite].operands.push(OperandVariableIds);
- InstructionDesc[OpVariable].operands.push(OperandStorage);
- InstructionDesc[OpVariable].operands.push(OperandOptionalId);
- InstructionDesc[OpVariableArray].operands.push(OperandStorage);
- InstructionDesc[OpVariableArray].operands.push(OperandId);
- InstructionDesc[OpFunction].operands.push(OperandFunction);
- InstructionDesc[OpFunction].operands.push(OperandId);
- InstructionDesc[OpFunctionCall].operands.push(OperandId);
- InstructionDesc[OpFunctionCall].operands.push(OperandVariableIds);
- InstructionDesc[OpExtInst].operands.push(OperandId);
- InstructionDesc[OpExtInst].operands.push(OperandLiteralNumber);
- InstructionDesc[OpExtInst].operands.push(OperandVariableIds);
- InstructionDesc[OpLoad].operands.push(OperandId);
- InstructionDesc[OpLoad].operands.push(OperandVariableLiterals);
- InstructionDesc[OpStore].operands.push(OperandId);
- InstructionDesc[OpStore].operands.push(OperandId);
- InstructionDesc[OpStore].operands.push(OperandVariableLiterals);
- InstructionDesc[OpPhi].operands.push(OperandVariableIds);
- InstructionDesc[OpDecorate].operands.push(OperandId);
- InstructionDesc[OpDecorate].operands.push(OperandDecoration);
- InstructionDesc[OpDecorate].operands.push(OperandVariableLiterals);
- InstructionDesc[OpMemberDecorate].operands.push(OperandId);
- InstructionDesc[OpMemberDecorate].operands.push(OperandLiteralNumber);
- InstructionDesc[OpMemberDecorate].operands.push(OperandDecoration);
- InstructionDesc[OpMemberDecorate].operands.push(OperandVariableLiterals);
- InstructionDesc[OpGroupDecorate].operands.push(OperandId);
- InstructionDesc[OpGroupDecorate].operands.push(OperandVariableIds);
- InstructionDesc[OpGroupMemberDecorate].operands.push(OperandId);
- InstructionDesc[OpGroupMemberDecorate].operands.push(OperandVariableIds);
- InstructionDesc[OpVectorExtractDynamic].operands.push(OperandId);
- InstructionDesc[OpVectorExtractDynamic].operands.push(OperandId);
- InstructionDesc[OpVectorInsertDynamic].operands.push(OperandId);
- InstructionDesc[OpVectorInsertDynamic].operands.push(OperandId);
- InstructionDesc[OpVectorInsertDynamic].operands.push(OperandId);
- InstructionDesc[OpVectorShuffle].operands.push(OperandId);
- InstructionDesc[OpVectorShuffle].operands.push(OperandId);
- InstructionDesc[OpVectorShuffle].operands.push(OperandVariableLiterals);
- InstructionDesc[OpCompositeConstruct].operands.push(OperandVariableIds);
- InstructionDesc[OpCompositeExtract].operands.push(OperandId);
- InstructionDesc[OpCompositeExtract].operands.push(OperandVariableLiterals);
- InstructionDesc[OpCompositeInsert].operands.push(OperandId);
- InstructionDesc[OpCompositeInsert].operands.push(OperandId);
- InstructionDesc[OpCompositeInsert].operands.push(OperandVariableLiterals);
- InstructionDesc[OpCopyObject].operands.push(OperandId);
- InstructionDesc[OpCopyMemory].operands.push(OperandId);
- InstructionDesc[OpCopyMemory].operands.push(OperandId);
- InstructionDesc[OpCopyMemory].operands.push(OperandVariableLiterals);
- InstructionDesc[OpCopyMemorySized].operands.push(OperandId);
- InstructionDesc[OpCopyMemorySized].operands.push(OperandId);
- InstructionDesc[OpCopyMemorySized].operands.push(OperandId);
- InstructionDesc[OpCopyMemorySized].operands.push(OperandVariableLiterals);
- InstructionDesc[OpSampler].operands.push(OperandId);
- InstructionDesc[OpSampler].operands.push(OperandId);
- InstructionDesc[OpTextureSample].operands.push(OperandId);
- InstructionDesc[OpTextureSample].operands.push(OperandId);
- InstructionDesc[OpTextureSample].operands.push(OperandOptionalId);
- InstructionDesc[OpTextureSampleDref].operands.push(OperandId);
- InstructionDesc[OpTextureSampleDref].operands.push(OperandId);
- InstructionDesc[OpTextureSampleDref].operands.push(OperandId);
- InstructionDesc[OpTextureSampleLod].operands.push(OperandId);
- InstructionDesc[OpTextureSampleLod].operands.push(OperandId);
- InstructionDesc[OpTextureSampleLod].operands.push(OperandId);
- InstructionDesc[OpTextureSampleProj].operands.push(OperandId);
- InstructionDesc[OpTextureSampleProj].operands.push(OperandId);
- InstructionDesc[OpTextureSampleProj].operands.push(OperandOptionalId);
- InstructionDesc[OpTextureSampleGrad].operands.push(OperandId);
- InstructionDesc[OpTextureSampleGrad].operands.push(OperandId);
- InstructionDesc[OpTextureSampleGrad].operands.push(OperandId);
- InstructionDesc[OpTextureSampleGrad].operands.push(OperandId);
- InstructionDesc[OpTextureSampleOffset].operands.push(OperandId);
- InstructionDesc[OpTextureSampleOffset].operands.push(OperandId);
- InstructionDesc[OpTextureSampleOffset].operands.push(OperandId);
- InstructionDesc[OpTextureSampleOffset].operands.push(OperandOptionalId);
- InstructionDesc[OpTextureSampleProjLod].operands.push(OperandId);
- InstructionDesc[OpTextureSampleProjLod].operands.push(OperandId);
- InstructionDesc[OpTextureSampleProjLod].operands.push(OperandId);
- InstructionDesc[OpTextureSampleProjGrad].operands.push(OperandId);
- InstructionDesc[OpTextureSampleProjGrad].operands.push(OperandId);
- InstructionDesc[OpTextureSampleProjGrad].operands.push(OperandId);
- InstructionDesc[OpTextureSampleProjGrad].operands.push(OperandId);
- InstructionDesc[OpTextureSampleLodOffset].operands.push(OperandId);
- InstructionDesc[OpTextureSampleLodOffset].operands.push(OperandId);
- InstructionDesc[OpTextureSampleLodOffset].operands.push(OperandId);
- InstructionDesc[OpTextureSampleLodOffset].operands.push(OperandId);
- InstructionDesc[OpTextureSampleProjOffset].operands.push(OperandId);
- InstructionDesc[OpTextureSampleProjOffset].operands.push(OperandId);
- InstructionDesc[OpTextureSampleProjOffset].operands.push(OperandId);
- InstructionDesc[OpTextureSampleProjOffset].operands.push(OperandOptionalId);
- InstructionDesc[OpTextureSampleGradOffset].operands.push(OperandId);
- InstructionDesc[OpTextureSampleGradOffset].operands.push(OperandId);
- InstructionDesc[OpTextureSampleGradOffset].operands.push(OperandId);
- InstructionDesc[OpTextureSampleGradOffset].operands.push(OperandId);
- InstructionDesc[OpTextureSampleGradOffset].operands.push(OperandId);
- InstructionDesc[OpTextureSampleProjLodOffset].operands.push(OperandId);
- InstructionDesc[OpTextureSampleProjLodOffset].operands.push(OperandId);
- InstructionDesc[OpTextureSampleProjLodOffset].operands.push(OperandId);
- InstructionDesc[OpTextureSampleProjLodOffset].operands.push(OperandId);
- InstructionDesc[OpTextureSampleProjGradOffset].operands.push(OperandId);
- InstructionDesc[OpTextureSampleProjGradOffset].operands.push(OperandId);
- InstructionDesc[OpTextureSampleProjGradOffset].operands.push(OperandId);
- InstructionDesc[OpTextureSampleProjGradOffset].operands.push(OperandId);
- InstructionDesc[OpTextureSampleProjGradOffset].operands.push(OperandId);
- InstructionDesc[OpTextureFetchTexel].operands.push(OperandId);
- InstructionDesc[OpTextureFetchTexel].operands.push(OperandId);
- InstructionDesc[OpTextureFetchTexel].operands.push(OperandId);
- InstructionDesc[OpTextureFetchTexelOffset].operands.push(OperandId);
- InstructionDesc[OpTextureFetchTexelOffset].operands.push(OperandId);
- InstructionDesc[OpTextureFetchTexelOffset].operands.push(OperandId);
- InstructionDesc[OpTextureFetchSample].operands.push(OperandId);
- InstructionDesc[OpTextureFetchSample].operands.push(OperandId);
- InstructionDesc[OpTextureFetchSample].operands.push(OperandId);
- InstructionDesc[OpTextureFetchBuffer].operands.push(OperandId);
- InstructionDesc[OpTextureFetchBuffer].operands.push(OperandId);
- InstructionDesc[OpTextureGather].operands.push(OperandId);
- InstructionDesc[OpTextureGather].operands.push(OperandId);
- InstructionDesc[OpTextureGather].operands.push(OperandId);
- InstructionDesc[OpTextureGatherOffset].operands.push(OperandId);
- InstructionDesc[OpTextureGatherOffset].operands.push(OperandId);
- InstructionDesc[OpTextureGatherOffset].operands.push(OperandId);
- InstructionDesc[OpTextureGatherOffset].operands.push(OperandId);
- InstructionDesc[OpTextureGatherOffsets].operands.push(OperandId);
- InstructionDesc[OpTextureGatherOffsets].operands.push(OperandId);
- InstructionDesc[OpTextureGatherOffsets].operands.push(OperandId);
- InstructionDesc[OpTextureGatherOffsets].operands.push(OperandId);
- InstructionDesc[OpTextureQuerySizeLod].operands.push(OperandId);
- InstructionDesc[OpTextureQuerySizeLod].operands.push(OperandId);
- InstructionDesc[OpTextureQuerySize].operands.push(OperandId);
- InstructionDesc[OpTextureQueryLod].operands.push(OperandId);
- InstructionDesc[OpTextureQueryLod].operands.push(OperandId);
- InstructionDesc[OpTextureQueryLevels].operands.push(OperandId);
- InstructionDesc[OpTextureQuerySamples].operands.push(OperandId);
- InstructionDesc[OpAccessChain].operands.push(OperandId);
- InstructionDesc[OpAccessChain].operands.push(OperandVariableIds);
- InstructionDesc[OpInBoundsAccessChain].operands.push(OperandId);
- InstructionDesc[OpInBoundsAccessChain].operands.push(OperandVariableIds);
- InstructionDesc[OpSNegate].operands.push(OperandId);
- InstructionDesc[OpFNegate].operands.push(OperandId);
- InstructionDesc[OpNot].operands.push(OperandId);
- InstructionDesc[OpAny].operands.push(OperandId);
- InstructionDesc[OpAll].operands.push(OperandId);
- InstructionDesc[OpConvertFToU].operands.push(OperandId);
- InstructionDesc[OpConvertFToS].operands.push(OperandId);
- InstructionDesc[OpConvertSToF].operands.push(OperandId);
- InstructionDesc[OpConvertUToF].operands.push(OperandId);
- InstructionDesc[OpUConvert].operands.push(OperandId);
- InstructionDesc[OpSConvert].operands.push(OperandId);
- InstructionDesc[OpFConvert].operands.push(OperandId);
- InstructionDesc[OpConvertPtrToU].operands.push(OperandId);
- InstructionDesc[OpConvertUToPtr].operands.push(OperandId);
- InstructionDesc[OpPtrCastToGeneric].operands.push(OperandId);
- InstructionDesc[OpGenericCastToPtr].operands.push(OperandId);
- InstructionDesc[OpGenericCastToPtrExplicit].operands.push(OperandId);
- InstructionDesc[OpGenericCastToPtrExplicit].operands.push(OperandStorage);
- InstructionDesc[OpGenericPtrMemSemantics].operands.push(OperandId);
- InstructionDesc[OpBitcast].operands.push(OperandId);
- InstructionDesc[OpTranspose].operands.push(OperandId);
- InstructionDesc[OpIsNan].operands.push(OperandId);
- InstructionDesc[OpIsInf].operands.push(OperandId);
- InstructionDesc[OpIsFinite].operands.push(OperandId);
- InstructionDesc[OpIsNormal].operands.push(OperandId);
- InstructionDesc[OpSignBitSet].operands.push(OperandId);
- InstructionDesc[OpLessOrGreater].operands.push(OperandId);
- InstructionDesc[OpLessOrGreater].operands.push(OperandId);
- InstructionDesc[OpOrdered].operands.push(OperandId);
- InstructionDesc[OpOrdered].operands.push(OperandId);
- InstructionDesc[OpUnordered].operands.push(OperandId);
- InstructionDesc[OpUnordered].operands.push(OperandId);
- InstructionDesc[OpArrayLength].operands.push(OperandId);
- InstructionDesc[OpArrayLength].operands.push(OperandLiteralNumber);
- InstructionDesc[OpIAdd].operands.push(OperandId);
- InstructionDesc[OpIAdd].operands.push(OperandId);
- InstructionDesc[OpFAdd].operands.push(OperandId);
- InstructionDesc[OpFAdd].operands.push(OperandId);
- InstructionDesc[OpISub].operands.push(OperandId);
- InstructionDesc[OpISub].operands.push(OperandId);
- InstructionDesc[OpFSub].operands.push(OperandId);
- InstructionDesc[OpFSub].operands.push(OperandId);
- InstructionDesc[OpIMul].operands.push(OperandId);
- InstructionDesc[OpIMul].operands.push(OperandId);
- InstructionDesc[OpFMul].operands.push(OperandId);
- InstructionDesc[OpFMul].operands.push(OperandId);
- InstructionDesc[OpUDiv].operands.push(OperandId);
- InstructionDesc[OpUDiv].operands.push(OperandId);
- InstructionDesc[OpSDiv].operands.push(OperandId);
- InstructionDesc[OpSDiv].operands.push(OperandId);
- InstructionDesc[OpFDiv].operands.push(OperandId);
- InstructionDesc[OpFDiv].operands.push(OperandId);
- InstructionDesc[OpUMod].operands.push(OperandId);
- InstructionDesc[OpUMod].operands.push(OperandId);
- InstructionDesc[OpSRem].operands.push(OperandId);
- InstructionDesc[OpSRem].operands.push(OperandId);
- InstructionDesc[OpSMod].operands.push(OperandId);
- InstructionDesc[OpSMod].operands.push(OperandId);
- InstructionDesc[OpFRem].operands.push(OperandId);
- InstructionDesc[OpFRem].operands.push(OperandId);
- InstructionDesc[OpFMod].operands.push(OperandId);
- InstructionDesc[OpFMod].operands.push(OperandId);
- InstructionDesc[OpVectorTimesScalar].operands.push(OperandId);
- InstructionDesc[OpVectorTimesScalar].operands.push(OperandId);
- InstructionDesc[OpMatrixTimesScalar].operands.push(OperandId);
- InstructionDesc[OpMatrixTimesScalar].operands.push(OperandId);
- InstructionDesc[OpVectorTimesMatrix].operands.push(OperandId);
- InstructionDesc[OpVectorTimesMatrix].operands.push(OperandId);
- InstructionDesc[OpMatrixTimesVector].operands.push(OperandId);
- InstructionDesc[OpMatrixTimesVector].operands.push(OperandId);
- InstructionDesc[OpMatrixTimesMatrix].operands.push(OperandId);
- InstructionDesc[OpMatrixTimesMatrix].operands.push(OperandId);
- InstructionDesc[OpOuterProduct].operands.push(OperandId);
- InstructionDesc[OpOuterProduct].operands.push(OperandId);
- InstructionDesc[OpDot].operands.push(OperandId);
- InstructionDesc[OpDot].operands.push(OperandId);
- InstructionDesc[OpShiftRightLogical].operands.push(OperandId);
- InstructionDesc[OpShiftRightLogical].operands.push(OperandId);
- InstructionDesc[OpShiftRightArithmetic].operands.push(OperandId);
- InstructionDesc[OpShiftRightArithmetic].operands.push(OperandId);
- InstructionDesc[OpShiftLeftLogical].operands.push(OperandId);
- InstructionDesc[OpShiftLeftLogical].operands.push(OperandId);
- InstructionDesc[OpLogicalOr].operands.push(OperandId);
- InstructionDesc[OpLogicalOr].operands.push(OperandId);
- InstructionDesc[OpLogicalXor].operands.push(OperandId);
- InstructionDesc[OpLogicalXor].operands.push(OperandId);
- InstructionDesc[OpLogicalAnd].operands.push(OperandId);
- InstructionDesc[OpLogicalAnd].operands.push(OperandId);
- InstructionDesc[OpBitwiseOr].operands.push(OperandId);
- InstructionDesc[OpBitwiseOr].operands.push(OperandId);
- InstructionDesc[OpBitwiseXor].operands.push(OperandId);
- InstructionDesc[OpBitwiseXor].operands.push(OperandId);
- InstructionDesc[OpBitwiseAnd].operands.push(OperandId);
- InstructionDesc[OpBitwiseAnd].operands.push(OperandId);
- InstructionDesc[OpSelect].operands.push(OperandId);
- InstructionDesc[OpSelect].operands.push(OperandId);
- InstructionDesc[OpSelect].operands.push(OperandId);
- InstructionDesc[OpIEqual].operands.push(OperandId);
- InstructionDesc[OpIEqual].operands.push(OperandId);
- InstructionDesc[OpFOrdEqual].operands.push(OperandId);
- InstructionDesc[OpFOrdEqual].operands.push(OperandId);
- InstructionDesc[OpFUnordEqual].operands.push(OperandId);
- InstructionDesc[OpFUnordEqual].operands.push(OperandId);
- InstructionDesc[OpINotEqual].operands.push(OperandId);
- InstructionDesc[OpINotEqual].operands.push(OperandId);
- InstructionDesc[OpFOrdNotEqual].operands.push(OperandId);
- InstructionDesc[OpFOrdNotEqual].operands.push(OperandId);
- InstructionDesc[OpFUnordNotEqual].operands.push(OperandId);
- InstructionDesc[OpFUnordNotEqual].operands.push(OperandId);
- InstructionDesc[OpULessThan].operands.push(OperandId);
- InstructionDesc[OpULessThan].operands.push(OperandId);
- InstructionDesc[OpSLessThan].operands.push(OperandId);
- InstructionDesc[OpSLessThan].operands.push(OperandId);
- InstructionDesc[OpFOrdLessThan].operands.push(OperandId);
- InstructionDesc[OpFOrdLessThan].operands.push(OperandId);
- InstructionDesc[OpFUnordLessThan].operands.push(OperandId);
- InstructionDesc[OpFUnordLessThan].operands.push(OperandId);
- InstructionDesc[OpUGreaterThan].operands.push(OperandId);
- InstructionDesc[OpUGreaterThan].operands.push(OperandId);
- InstructionDesc[OpSGreaterThan].operands.push(OperandId);
- InstructionDesc[OpSGreaterThan].operands.push(OperandId);
- InstructionDesc[OpFOrdGreaterThan].operands.push(OperandId);
- InstructionDesc[OpFOrdGreaterThan].operands.push(OperandId);
- InstructionDesc[OpFUnordGreaterThan].operands.push(OperandId);
- InstructionDesc[OpFUnordGreaterThan].operands.push(OperandId);
- InstructionDesc[OpULessThanEqual].operands.push(OperandId);
- InstructionDesc[OpULessThanEqual].operands.push(OperandId);
- InstructionDesc[OpSLessThanEqual].operands.push(OperandId);
- InstructionDesc[OpSLessThanEqual].operands.push(OperandId);
- InstructionDesc[OpFOrdLessThanEqual].operands.push(OperandId);
- InstructionDesc[OpFOrdLessThanEqual].operands.push(OperandId);
- InstructionDesc[OpFUnordLessThanEqual].operands.push(OperandId);
- InstructionDesc[OpFUnordLessThanEqual].operands.push(OperandId);
- InstructionDesc[OpUGreaterThanEqual].operands.push(OperandId);
- InstructionDesc[OpUGreaterThanEqual].operands.push(OperandId);
- InstructionDesc[OpSGreaterThanEqual].operands.push(OperandId);
- InstructionDesc[OpSGreaterThanEqual].operands.push(OperandId);
- InstructionDesc[OpFOrdGreaterThanEqual].operands.push(OperandId);
- InstructionDesc[OpFOrdGreaterThanEqual].operands.push(OperandId);
- InstructionDesc[OpFUnordGreaterThanEqual].operands.push(OperandId);
- InstructionDesc[OpFUnordGreaterThanEqual].operands.push(OperandId);
- InstructionDesc[OpDPdx].operands.push(OperandId);
- InstructionDesc[OpDPdy].operands.push(OperandId);
- InstructionDesc[OpFwidth].operands.push(OperandId);
- InstructionDesc[OpDPdxFine].operands.push(OperandId);
- InstructionDesc[OpDPdyFine].operands.push(OperandId);
- InstructionDesc[OpFwidthFine].operands.push(OperandId);
- InstructionDesc[OpDPdxCoarse].operands.push(OperandId);
- InstructionDesc[OpDPdyCoarse].operands.push(OperandId);
- InstructionDesc[OpFwidthCoarse].operands.push(OperandId);
- InstructionDesc[OpEmitStreamVertex].operands.push(OperandId);
- InstructionDesc[OpEndStreamPrimitive].operands.push(OperandId);
- InstructionDesc[OpControlBarrier].operands.push(OperandExecutionScope);
- InstructionDesc[OpMemoryBarrier].operands.push(OperandExecutionScope);
- InstructionDesc[OpMemoryBarrier].operands.push(OperandMemorySemantics);
- InstructionDesc[OpImagePointer].operands.push(OperandId);
- InstructionDesc[OpImagePointer].operands.push(OperandId);
- InstructionDesc[OpImagePointer].operands.push(OperandId);
- InstructionDesc[OpAtomicInit].operands.push(OperandId);
- InstructionDesc[OpAtomicInit].operands.push(OperandId);
- InstructionDesc[OpAtomicLoad].operands.push(OperandId);
- InstructionDesc[OpAtomicLoad].operands.push(OperandExecutionScope);
- InstructionDesc[OpAtomicLoad].operands.push(OperandMemorySemantics);
- InstructionDesc[OpAtomicStore].operands.push(OperandId);
- InstructionDesc[OpAtomicStore].operands.push(OperandExecutionScope);
- InstructionDesc[OpAtomicStore].operands.push(OperandMemorySemantics);
- InstructionDesc[OpAtomicStore].operands.push(OperandId);
- InstructionDesc[OpAtomicExchange].operands.push(OperandId);
- InstructionDesc[OpAtomicExchange].operands.push(OperandExecutionScope);
- InstructionDesc[OpAtomicExchange].operands.push(OperandMemorySemantics);
- InstructionDesc[OpAtomicExchange].operands.push(OperandId);
- InstructionDesc[OpAtomicCompareExchange].operands.push(OperandId);
- InstructionDesc[OpAtomicCompareExchange].operands.push(OperandExecutionScope);
- InstructionDesc[OpAtomicCompareExchange].operands.push(OperandMemorySemantics);
- InstructionDesc[OpAtomicCompareExchange].operands.push(OperandId);
- InstructionDesc[OpAtomicCompareExchange].operands.push(OperandId);
- InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandId);
- InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandExecutionScope);
- InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandMemorySemantics);
- InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandId);
- InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandId);
- InstructionDesc[OpAtomicIIncrement].operands.push(OperandId);
- InstructionDesc[OpAtomicIIncrement].operands.push(OperandExecutionScope);
- InstructionDesc[OpAtomicIIncrement].operands.push(OperandMemorySemantics);
- InstructionDesc[OpAtomicIDecrement].operands.push(OperandId);
- InstructionDesc[OpAtomicIDecrement].operands.push(OperandExecutionScope);
- InstructionDesc[OpAtomicIDecrement].operands.push(OperandMemorySemantics);
- InstructionDesc[OpAtomicIAdd].operands.push(OperandId);
- InstructionDesc[OpAtomicIAdd].operands.push(OperandExecutionScope);
- InstructionDesc[OpAtomicIAdd].operands.push(OperandMemorySemantics);
- InstructionDesc[OpAtomicIAdd].operands.push(OperandId);
- InstructionDesc[OpAtomicISub].operands.push(OperandId);
- InstructionDesc[OpAtomicISub].operands.push(OperandExecutionScope);
- InstructionDesc[OpAtomicISub].operands.push(OperandMemorySemantics);
- InstructionDesc[OpAtomicISub].operands.push(OperandId);
- InstructionDesc[OpAtomicUMin].operands.push(OperandId);
- InstructionDesc[OpAtomicUMin].operands.push(OperandExecutionScope);
- InstructionDesc[OpAtomicUMin].operands.push(OperandMemorySemantics);
- InstructionDesc[OpAtomicUMin].operands.push(OperandId);
- InstructionDesc[OpAtomicUMax].operands.push(OperandId);
- InstructionDesc[OpAtomicUMax].operands.push(OperandExecutionScope);
- InstructionDesc[OpAtomicUMax].operands.push(OperandMemorySemantics);
- InstructionDesc[OpAtomicUMax].operands.push(OperandId);
- InstructionDesc[OpAtomicAnd].operands.push(OperandId);
- InstructionDesc[OpAtomicAnd].operands.push(OperandExecutionScope);
- InstructionDesc[OpAtomicAnd].operands.push(OperandMemorySemantics);
- InstructionDesc[OpAtomicAnd].operands.push(OperandId);
- InstructionDesc[OpAtomicOr].operands.push(OperandId);
- InstructionDesc[OpAtomicOr].operands.push(OperandExecutionScope);
- InstructionDesc[OpAtomicOr].operands.push(OperandMemorySemantics);
- InstructionDesc[OpAtomicOr].operands.push(OperandId);
- InstructionDesc[OpAtomicXor].operands.push(OperandId);
- InstructionDesc[OpAtomicXor].operands.push(OperandExecutionScope);
- InstructionDesc[OpAtomicXor].operands.push(OperandMemorySemantics);
- InstructionDesc[OpAtomicXor].operands.push(OperandId);
- InstructionDesc[OpLoopMerge].operands.push(OperandId);
- InstructionDesc[OpLoopMerge].operands.push(OperandLoop);
- InstructionDesc[OpSelectionMerge].operands.push(OperandId);
- InstructionDesc[OpSelectionMerge].operands.push(OperandSelect);
- InstructionDesc[OpBranch].operands.push(OperandId);
- InstructionDesc[OpBranchConditional].operands.push(OperandId);
- InstructionDesc[OpBranchConditional].operands.push(OperandId);
- InstructionDesc[OpBranchConditional].operands.push(OperandId);
- InstructionDesc[OpBranchConditional].operands.push(OperandVariableLiterals);
- InstructionDesc[OpSwitch].operands.push(OperandId);
- InstructionDesc[OpSwitch].operands.push(OperandId);
- InstructionDesc[OpSwitch].operands.push(OperandVariableLiteralId);
- InstructionDesc[OpReturnValue].operands.push(OperandId);
- InstructionDesc[OpLifetimeStart].operands.push(OperandId);
- InstructionDesc[OpLifetimeStart].operands.push(OperandLiteralNumber);
- InstructionDesc[OpLifetimeStop].operands.push(OperandId);
- InstructionDesc[OpLifetimeStop].operands.push(OperandLiteralNumber);
- InstructionDesc[OpCompileFlag].operands.push(OperandLiteralString);
- InstructionDesc[OpAsyncGroupCopy].operands.push(OperandExecutionScope);
- InstructionDesc[OpAsyncGroupCopy].operands.push(OperandId);
- InstructionDesc[OpAsyncGroupCopy].operands.push(OperandId);
- InstructionDesc[OpAsyncGroupCopy].operands.push(OperandId);
- InstructionDesc[OpAsyncGroupCopy].operands.push(OperandId);
- InstructionDesc[OpAsyncGroupCopy].operands.push(OperandId);
- InstructionDesc[OpWaitGroupEvents].operands.push(OperandExecutionScope);
- InstructionDesc[OpWaitGroupEvents].operands.push(OperandId);
- InstructionDesc[OpWaitGroupEvents].operands.push(OperandId);
- InstructionDesc[OpGroupAll].operands.push(OperandExecutionScope);
- InstructionDesc[OpGroupAll].operands.push(OperandId);
- InstructionDesc[OpGroupAny].operands.push(OperandExecutionScope);
- InstructionDesc[OpGroupAny].operands.push(OperandId);
- InstructionDesc[OpGroupBroadcast].operands.push(OperandExecutionScope);
- InstructionDesc[OpGroupBroadcast].operands.push(OperandId);
- InstructionDesc[OpGroupBroadcast].operands.push(OperandId);
- InstructionDesc[OpGroupIAdd].operands.push(OperandExecutionScope);
- InstructionDesc[OpGroupIAdd].operands.push(OperandGroupOperation);
- InstructionDesc[OpGroupIAdd].operands.push(OperandId);
- InstructionDesc[OpGroupFAdd].operands.push(OperandExecutionScope);
- InstructionDesc[OpGroupFAdd].operands.push(OperandGroupOperation);
- InstructionDesc[OpGroupFAdd].operands.push(OperandId);
- InstructionDesc[OpGroupUMin].operands.push(OperandExecutionScope);
- InstructionDesc[OpGroupUMin].operands.push(OperandGroupOperation);
- InstructionDesc[OpGroupUMin].operands.push(OperandId);
- InstructionDesc[OpGroupSMin].operands.push(OperandExecutionScope);
- InstructionDesc[OpGroupSMin].operands.push(OperandGroupOperation);
- InstructionDesc[OpGroupSMin].operands.push(OperandId);
- InstructionDesc[OpGroupFMin].operands.push(OperandExecutionScope);
- InstructionDesc[OpGroupFMin].operands.push(OperandGroupOperation);
- InstructionDesc[OpGroupFMin].operands.push(OperandId);
- InstructionDesc[OpGroupUMax].operands.push(OperandExecutionScope);
- InstructionDesc[OpGroupUMax].operands.push(OperandGroupOperation);
- InstructionDesc[OpGroupUMax].operands.push(OperandId);
- InstructionDesc[OpGroupSMax].operands.push(OperandExecutionScope);
- InstructionDesc[OpGroupSMax].operands.push(OperandGroupOperation);
- InstructionDesc[OpGroupSMax].operands.push(OperandId);
- InstructionDesc[OpGroupFMax].operands.push(OperandExecutionScope);
- InstructionDesc[OpGroupFMax].operands.push(OperandGroupOperation);
- InstructionDesc[OpGroupFMax].operands.push(OperandId);
- InstructionDesc[OpReadPipe].operands.push(OperandId);
- InstructionDesc[OpReadPipe].operands.push(OperandId);
- InstructionDesc[OpWritePipe].operands.push(OperandId);
- InstructionDesc[OpWritePipe].operands.push(OperandId);
- InstructionDesc[OpReservedReadPipe].operands.push(OperandId);
- InstructionDesc[OpReservedReadPipe].operands.push(OperandId);
- InstructionDesc[OpReservedReadPipe].operands.push(OperandId);
- InstructionDesc[OpReservedReadPipe].operands.push(OperandId);
- InstructionDesc[OpReservedWritePipe].operands.push(OperandId);
- InstructionDesc[OpReservedWritePipe].operands.push(OperandId);
- InstructionDesc[OpReservedWritePipe].operands.push(OperandId);
- InstructionDesc[OpReservedWritePipe].operands.push(OperandId);
- InstructionDesc[OpReserveReadPipePackets].operands.push(OperandId);
- InstructionDesc[OpReserveReadPipePackets].operands.push(OperandId);
- InstructionDesc[OpReserveWritePipePackets].operands.push(OperandId);
- InstructionDesc[OpReserveWritePipePackets].operands.push(OperandId);
- InstructionDesc[OpCommitReadPipe].operands.push(OperandId);
- InstructionDesc[OpCommitReadPipe].operands.push(OperandId);
- InstructionDesc[OpCommitWritePipe].operands.push(OperandId);
- InstructionDesc[OpCommitWritePipe].operands.push(OperandId);
- InstructionDesc[OpIsValidReserveId].operands.push(OperandId);
- InstructionDesc[OpGetNumPipePackets].operands.push(OperandId);
- InstructionDesc[OpGetMaxPipePackets].operands.push(OperandId);
- InstructionDesc[OpGroupReserveReadPipePackets].operands.push(OperandExecutionScope);
- InstructionDesc[OpGroupReserveReadPipePackets].operands.push(OperandId);
- InstructionDesc[OpGroupReserveReadPipePackets].operands.push(OperandId);
- InstructionDesc[OpGroupReserveWritePipePackets].operands.push(OperandExecutionScope);
- InstructionDesc[OpGroupReserveWritePipePackets].operands.push(OperandId);
- InstructionDesc[OpGroupReserveWritePipePackets].operands.push(OperandId);
- InstructionDesc[OpGroupCommitReadPipe].operands.push(OperandExecutionScope);
- InstructionDesc[OpGroupCommitReadPipe].operands.push(OperandId);
- InstructionDesc[OpGroupCommitReadPipe].operands.push(OperandId);
- InstructionDesc[OpGroupCommitWritePipe].operands.push(OperandExecutionScope);
- InstructionDesc[OpGroupCommitWritePipe].operands.push(OperandId);
- InstructionDesc[OpGroupCommitWritePipe].operands.push(OperandId);
- InstructionDesc[OpBuildNDRange].operands.push(OperandId);
- InstructionDesc[OpBuildNDRange].operands.push(OperandId);
- InstructionDesc[OpBuildNDRange].operands.push(OperandId);
- InstructionDesc[OpCaptureEventProfilingInfo].operands.push(OperandId);
- InstructionDesc[OpCaptureEventProfilingInfo].operands.push(OperandKernelProfilingInfo);
- InstructionDesc[OpCaptureEventProfilingInfo].operands.push(OperandId);
- InstructionDesc[OpSetUserEventStatus].operands.push(OperandId);
- InstructionDesc[OpSetUserEventStatus].operands.push(OperandId);
- InstructionDesc[OpIsValidEvent].operands.push(OperandId);
- InstructionDesc[OpRetainEvent].operands.push(OperandId);
- InstructionDesc[OpReleaseEvent].operands.push(OperandId);
- InstructionDesc[OpGetKernelWorkGroupSize].operands.push(OperandId);
- InstructionDesc[OpGetKernelPreferredWorkGroupSizeMultiple].operands.push(OperandId);
- InstructionDesc[OpGetKernelNDrangeSubGroupCount].operands.push(OperandId);
- InstructionDesc[OpGetKernelNDrangeSubGroupCount].operands.push(OperandId);
- InstructionDesc[OpGetKernelNDrangeMaxSubGroupSize].operands.push(OperandId);
- InstructionDesc[OpGetKernelNDrangeMaxSubGroupSize].operands.push(OperandId);
- InstructionDesc[OpEnqueueKernel].operands.push(OperandId);
- InstructionDesc[OpEnqueueKernel].operands.push(OperandKernelEnqueueFlags);
- InstructionDesc[OpEnqueueKernel].operands.push(OperandId);
- InstructionDesc[OpEnqueueKernel].operands.push(OperandId);
- InstructionDesc[OpEnqueueKernel].operands.push(OperandId);
- InstructionDesc[OpEnqueueKernel].operands.push(OperandId);
- InstructionDesc[OpEnqueueKernel].operands.push(OperandId);
- InstructionDesc[OpEnqueueKernel].operands.push(OperandId);
- InstructionDesc[OpEnqueueKernel].operands.push(OperandId);
- InstructionDesc[OpEnqueueKernel].operands.push(OperandId);
- InstructionDesc[OpEnqueueKernel].operands.push(OperandVariableIds);
- InstructionDesc[OpEnqueueMarker].operands.push(OperandId);
- InstructionDesc[OpEnqueueMarker].operands.push(OperandId);
- InstructionDesc[OpEnqueueMarker].operands.push(OperandId);
- InstructionDesc[OpEnqueueMarker].operands.push(OperandId);
-}\r
-\r
//\r
-// A whole set of functions that translate enums to English.\r
+// Whole set of functions that translate enumerants to their text strings for\r
+// the specification (or their sanitized versions for auto-generating the\r
+// spirv.h header.\r
+//\r
+// Also, the ceilings are declared next to these, to help keep them in sync.\r
+// Ceilings should be\r
+// - one more than the maximum value an enumerant takes on, for non-mask enumerants\r
+// (for non-sparse enums, this is the number of enumurants)\r
+// - the number of bits consumed by the set of masks\r
+// (for non-sparse mask enums, this is the number of enumurants)\r
//\r
\r
-const char* CapabilityString(int cap)\r
-{\r
- switch (cap) {\r
- case CapMatrix: return "Matrix";\r
- case CapShader: return "Shader";\r
- case CapGeom: return "Geom";\r
- case CapTess: return "Tess";\r
- case CapAddr: return "Addr";\r
- case CapLink: return "Link";\r
- case CapKernel: return "Kernel";\r
-\r
- default: return "unknown";\r
-\r
- }\r
-}\r
+const int SourceLanguageCeiling = 4;\r
\r
const char* SourceString(int source)\r
{\r
switch (source) {\r
- case LangESSL: return "ESSL";\r
- case LangGLSL: return "GLSL";\r
- case LangOpenCL: return "OpenCL";\r
+ case 0: return "Unknown";\r
+ case 1: return "ESSL";\r
+ case 2: return "GLSL";\r
+ case 3: return "OpenCL";\r
\r
- default: return "unknown";\r
+ case SourceLanguageCeiling:\r
+ default: return "Bad";\r
}\r
}\r
\r
+const int ExecutionModelCeiling = 7;\r
+\r
const char* ExecutionModelString(int model)\r
{\r
switch (model) {\r
- case ModelVertex: return "Vertex";\r
- case ModelTessellationControl: return "TessellationControl";\r
- case ModelTessellationEvaluation: return "TessellationEvaluation";\r
- case ModelGeometry: return "Geometry";\r
- case ModelFragment: return "Fragment";\r
- case ModelGLCompute: return "GLCompute";\r
- case ModelKernel: return "Kernel";\r
-\r
- default: return "BadModel";\r
+ case 0: return "Vertex";\r
+ case 1: return "TessellationControl";\r
+ case 2: return "TessellationEvaluation";\r
+ case 3: return "Geometry";\r
+ case 4: return "Fragment";\r
+ case 5: return "GLCompute";\r
+ case 6: return "Kernel";\r
+\r
+ case ExecutionModelCeiling:\r
+ default: return "Bad";\r
}\r
}\r
\r
+const int AddressingModelCeiling = 3;\r
+\r
const char* AddressingString(int addr)\r
{\r
switch (addr) {\r
- case AddressingLogical: return "Logical";\r
- case AddressingPhysical32: return "Physical32";\r
- case AddressingPhysical64: return "Physical64";\r
+ case 0: return "Logical";\r
+ case 1: return "Physical32";\r
+ case 2: return "Physical64";\r
\r
- default: return "BadAddressModel";\r
+ case AddressingModelCeiling:\r
+ default: return "Bad";\r
}\r
}\r
\r
-const char* AddressingDesc(int addr)\r
-{\r
- switch (addr) {\r
- case AddressingLogical: return "No variables that are pointers or other physical pointers. No arithmetic or casting on pointers.";\r
- case AddressingPhysical32: return "";\r
- case AddressingPhysical64: return "";\r
-\r
- default: return "BadAddressModel";\r
- }\r
-}\r
+const int MemoryModelCeiling = 5;\r
\r
const char* MemoryString(int mem)\r
{\r
switch (mem) {\r
- case MemorySimple: return "Simple";\r
- case MemoryGLSL450: return "GLSL450";\r
- case MemoryOCL12: return "OpenCL1.2";\r
- case MemoryOCL20: return "OpenCL2.0";\r
- case MemoryOCL21: return "OpenCL2.1";\r
- default: return "BadMemoryModel";\r
+ case 0: return "Simple";\r
+ case 1: return "GLSL450";\r
+ case 2: return "OpenCL1.2";\r
+ case 3: return "OpenCL2.0";\r
+ case 4: return "OpenCL2.1";\r
+\r
+ case MemoryModelCeiling:\r
+ default: return "Bad";\r
}\r
}\r
\r
+const int ExecutionModeCeiling = 31;\r
+\r
const char* ExecutionModeString(int mode)\r
{\r
switch (mode) {\r
- case ExecutionInvocations: return "Invocations";\r
- case ExecutionSpacingEqual: return "SpacingEqual";\r
- case ExecutionSpacingFractionalEven: return "SpacingFractionalEven";\r
- case ExecutionSpacingFractionalOdd: return "SpacingFractionalOdd";\r
- case ExecutionVertexOrderCw: return "VertexOrderCw";\r
- case ExecutionVertexOrderCcw: return "VertexOrderCcw";\r
- case ExecutionPixelCenterInteger: return "PixelCenterInteger";\r
- case ExecutionOriginUpperLeft: return "OriginUpperLeft";\r
- case ExecutionEarlyFragmentTests: return "EarlyFragmentTests";\r
- case ExecutionPointMode: return "PointMode";\r
- case ExecutionLocalSize: return "LocalSize";\r
- case ExecutionLocalSizeHint: return "LocalSizeHint";\r
- case ExecutionVecTypeHint: return "VecTypeHint";\r
- case ExecutionContractionOff: return "ContractionOff";\r
- case ExecutionXfb: return "Xfb";\r
- case ExecutionDepthReplacing: return "DepthReplacing";\r
- case ExecutionDepthAny: return "DepthAny";\r
- case ExecutionDepthGreater: return "DepthGreater";\r
- case ExecutionDepthLess: return "DepthLess";\r
- case ExecutionDepthUnchanged: return "DepthUnchanged";\r
-\r
- case ExecutionInputPoints: return "InputPoints";\r
- case ExecutionInputLines: return "InputLines";\r
- case ExecutionInputLinesAdjacency: return "InputLinesAdjacency";\r
- case ExecutionInputTriangles: return "InputTriangles";\r
- case ExecutionInputTrianglesAdjacency: return "InputTrianglesAdjacency";\r
- case ExecutionInputQuads: return "InputQuads";\r
- case ExecutionInputIsolines: return "InputIsolines";\r
-\r
- case ExecutionOutputVertices: return "OutputVertices";\r
- case ExecutionOutputPoints: return "OutputPoints";\r
- case ExecutionOutputLineStrip: return "OutputLineStrip";\r
- case ExecutionOutputTriangleStrip: return "OutputTriangleStrip";\r
-\r
- default: return "BadMode";\r
+ case 0: return "Invocations";\r
+ case 1: return "SpacingEqual";\r
+ case 2: return "SpacingFractionalEven";\r
+ case 3: return "SpacingFractionalOdd";\r
+ case 4: return "VertexOrderCw";\r
+ case 5: return "VertexOrderCcw";\r
+ case 6: return "PixelCenterInteger";\r
+ case 7: return "OriginUpperLeft";\r
+ case 8: return "EarlyFragmentTests";\r
+ case 9: return "PointMode";\r
+ case 10: return "Xfb";\r
+ case 11: return "DepthReplacing";\r
+ case 12: return "DepthAny";\r
+ case 13: return "DepthGreater";\r
+ case 14: return "DepthLess";\r
+ case 15: return "DepthUnchanged";\r
+ case 16: return "LocalSize";\r
+ case 17: return "LocalSizeHint";\r
+ case 18: return "InputPoints";\r
+ case 19: return "InputLines";\r
+ case 20: return "InputLinesAdjacency";\r
+ case 21: return "InputTriangles";\r
+ case 22: return "InputTrianglesAdjacency";\r
+ case 23: return "InputQuads";\r
+ case 24: return "InputIsolines";\r
+ case 25: return "OutputVertices";\r
+ case 26: return "OutputPoints";\r
+ case 27: return "OutputLineStrip";\r
+ case 28: return "OutputTriangleStrip";\r
+ case 29: return "VecTypeHint";\r
+ case 30: return "ContractionOff";\r
+\r
+ case ExecutionModeCeiling:\r
+ default: return "Bad";\r
}\r
}\r
\r
+const int StorageClassCeiling = 11;\r
+\r
const char* StorageClassString(int StorageClass)\r
{\r
switch (StorageClass) {\r
- //case StorageLowertime: return "Lowertime"; // TODO: finish removing when sure they are gone.\r
- case StorageConstantUniform: return "UniformConstant";\r
- case StorageUniform: return "Uniform";\r
- case StorageInput: return "Input";\r
- case StorageOutput: return "Output";\r
- case StorageWorkgroupLocal: return "WorkgroupLocal";\r
- case StoragePrivateGlobal: return "PrivateGlobal";\r
- case StorageWorkgroupGlobal: return "WorkgroupGlobal";\r
- case StorageFunction: return "Function";\r
- case StoragePrivate: return "Private";\r
- case StorageAtomicCounter: return "AtomicCounter";\r
- case StorageGeneric: return "Generic"; \r
- \r
- default: return 0;\r
+ case 0: return "UniformConstant";\r
+ case 1: return "Input";\r
+ case 2: return "Uniform";\r
+ case 3: return "Output";\r
+ case 4: return "WorkgroupLocal";\r
+ case 5: return "WorkgroupGlobal";\r
+ case 6: return "PrivateGlobal";\r
+ case 7: return "Function";\r
+ case 8: return "Generic";\r
+ case 9: return "Private";\r
+ case 10: return "AtomicCounter";\r
+\r
+ case StorageClassCeiling:\r
+ default: return "Bad";\r
}\r
}\r
\r
+const int DecorationCeiling = 45;\r
+\r
const char* DecorationString(int decoration)\r
{\r
switch (decoration) {\r
- case DecPrecisionLow: return "PrecisionLow";\r
- case DecPrecisionMedium: return "PrecisionMedium";\r
- case DecPrecisionHigh: return "PrecisionHigh";\r
- case DecBlock: return "Block";\r
- case DecBufferBlock: return "BufferBlock";\r
- case DecRowMajor: return "RowMajor";\r
- case DecColMajor: return "ColMajor";\r
- case DecGLSLShared: return "GLSLShared";\r
- case DecGLSLStd140: return "GLSLStd140";\r
- case DecGLSLStd430: return "GLSLStd430";\r
- case DecGLSLPacked: return "GLSLPacked";\r
- case DecSmooth: return "Smooth";\r
- case DecNoperspective: return "Noperspective";\r
- case DecFlat: return "Flat";\r
- case DecPatch: return "Patch";\r
- case DecCentroid: return "Centroid";\r
- case DecSample: return "Sample";\r
- case DecInvariant: return "Invariant";\r
- case DecRestrict: return "Restrict";\r
- case DecAliased: return "Aliased";\r
- case DecVolatile: return "Volatile";\r
- case DecConstant: return "Constant";\r
- case DecCoherent: return "Coherent";\r
- case DecNonwritable: return "Nonwritable";\r
- case DecNonreadable: return "Nonreadable";\r
- case DecUniform: return "Uniform";\r
- case DecNoStaticUse: return "NoStaticUse";\r
- case DecCPacked: return "CPacked";\r
- case DecFuncParamAttr: return "FuncParamAttr";\r
- case DecFPSaturatedConv: return "FPSaturatedConversion";\r
- case DecFPRoundingMode: return "FP Rounding Mode";\r
- case DecFPFastMathMode: return "FP Fast Math Mode";\r
- case DecLinkageType: return "Linkage Type";\r
- case DecStream: return "Stream";\r
- case DecLocation: return "Location";\r
- case DecComponent: return "Component";\r
- case DecIndex: return "Index";\r
- case DecBinding: return "Binding";\r
- case DecDescriptorSet: return "DescriptorSet";\r
- case DecOffset: return "Offset";\r
- case DecAlignment: return "Alignment";\r
- case DecXfbBuffer: return "XfbBuffer";\r
- case DecStride: return "Stride";\r
- case DecBuiltIn: return "Built-In";\r
- case DecSpecId: return "SpecId";\r
-\r
- default: return "BadDecoration";\r
+ case 0: return "PrecisionLow";\r
+ case 1: return "PrecisionMedium";\r
+ case 2: return "PrecisionHigh";\r
+ case 3: return "Block";\r
+ case 4: return "BufferBlock";\r
+ case 5: return "RowMajor";\r
+ case 6: return "ColMajor";\r
+ case 7: return "GLSLShared";\r
+ case 8: return "GLSLStd140";\r
+ case 9: return "GLSLStd430";\r
+ case 10: return "GLSLPacked";\r
+ case 11: return "Smooth";\r
+ case 12: return "Noperspective";\r
+ case 13: return "Flat";\r
+ case 14: return "Patch";\r
+ case 15: return "Centroid";\r
+ case 16: return "Sample";\r
+ case 17: return "Invariant";\r
+ case 18: return "Restrict";\r
+ case 19: return "Aliased";\r
+ case 20: return "Volatile";\r
+ case 21: return "Constant";\r
+ case 22: return "Coherent";\r
+ case 23: return "Nonwritable";\r
+ case 24: return "Nonreadable";\r
+ case 25: return "Uniform";\r
+ case 26: return "NoStaticUse";\r
+ case 27: return "CPacked";\r
+ case 28: return "SaturatedConversion";\r
+ case 29: return "Stream";\r
+ case 30: return "Location";\r
+ case 31: return "Component";\r
+ case 32: return "Index";\r
+ case 33: return "Binding";\r
+ case 34: return "DescriptorSet";\r
+ case 35: return "Offset";\r
+ case 36: return "Alignment";\r
+ case 37: return "XfbBuffer";\r
+ case 38: return "Stride";\r
+ case 39: return "BuiltIn";\r
+ case 40: return "FuncParamAttr";\r
+ case 41: return "FP Rounding Mode";\r
+ case 42: return "FP Fast Math Mode";\r
+ case 43: return "Linkage Attributes";\r
+ case 44: return "SpecId";\r
+\r
+ case DecorationCeiling:\r
+ default: return "Bad";\r
}\r
}\r
\r
+const int BuiltInCeiling = 42;\r
+\r
const char* BuiltInString(int builtIn)\r
{\r
switch (builtIn) {\r
- case BuiltInPosition: return "Position";\r
- case BuiltInPointSize: return "PointSize";\r
- case BuiltInClipVertex: return "ClipVertex";\r
- case BuiltInClipDistance: return "ClipDistance";\r
- case BuiltInCullDistance: return "CullDistance";\r
- case BuiltInVertexId: return "VertexId";\r
- case BuiltInInstanceId: return "InstanceId";\r
- case BuiltInPrimitiveId: return "PrimitiveId";\r
- case BuiltInInvocationId: return "InvocationId";\r
- case BuiltInLayer: return "Layer";\r
- case BuiltInViewportIndex: return "ViewportIndex";\r
- case BuiltInTessLevelOuter: return "TessLevelOuter";\r
- case BuiltInTessLevelInner: return "TessLevelInner";\r
- case BuiltInTessCoord: return "TessCoord";\r
- case BuiltInPatchVertices: return "PatchVertices";\r
- case BuiltInFragCoord: return "FragCoord";\r
- case BuiltInPointCoord: return "PointCoord";\r
- case BuiltInFrontFacing: return "FrontFacing";\r
- case BuiltInSampleId: return "SampleId";\r
- case BuiltInSamplePosition: return "SamplePosition";\r
- case BuiltInSampleMask: return "SampleMask";\r
- case BuiltInFragColor: return "FragColor";\r
- case BuiltInFragDepth: return "FragDepth";\r
- case BuiltInHelperInvocation: return "HelperInvocation";\r
- case BuiltInNumWorkgroups: return "NumWorkgroups";\r
- case BuiltInWorkgroupSize: return "WorkgroupSize";\r
- case BuiltInWorkgroupId: return "WorkgroupId";\r
- case BuiltInLocalInvocationId: return "LocalInvocationId";\r
- case BuiltInGlobalInvocationId: return "GlobalInvocationId";\r
- case BuiltInLocalInvocationIndex: return "LocalInvocationIndex"; \r
- case BuiltInWorkDim: return "WorkDim";\r
- case BuiltInGlobalSize: return "GlobalSize";\r
- case BuiltInEnqueuedWorkgroupSize: return "EnqueuedWorkgroupSize";\r
- case BuiltInGlobalOffset: return "GlobalOffset";\r
- case BuiltInGlobalLinearId: return "GlobalLinearId";\r
- case BuiltInWorkgroupLinearId: return "WorkgroupLinearId";\r
- case BuiltInSubgroupSize: return "SubgroupSize";\r
- case BuiltInSubgroupMaxSize: return "SubgroupMaxSize";\r
- case BuiltInNumSubgroups: return "NumSubgroups";\r
- case BuiltInNumEnqueuedSubgroups: return "NumEnqueuedSubgroups";\r
- case BuiltInSubgroupId: return "SubgroupId";\r
- case BuiltInSubgroupLocalInvocationId: return "SubgroupLocalInvocationId";\r
- default: return "BadBuiltIn";\r
+ case 0: return "Position";\r
+ case 1: return "PointSize";\r
+ case 2: return "ClipVertex";\r
+ case 3: return "ClipDistance";\r
+ case 4: return "CullDistance";\r
+ case 5: return "VertexId";\r
+ case 6: return "InstanceId";\r
+ case 7: return "PrimitiveId";\r
+ case 8: return "InvocationId";\r
+ case 9: return "Layer";\r
+ case 10: return "ViewportIndex";\r
+ case 11: return "TessLevelOuter";\r
+ case 12: return "TessLevelInner";\r
+ case 13: return "TessCoord";\r
+ case 14: return "PatchVertices";\r
+ case 15: return "FragCoord";\r
+ case 16: return "PointCoord";\r
+ case 17: return "FrontFacing";\r
+ case 18: return "SampleId";\r
+ case 19: return "SamplePosition";\r
+ case 20: return "SampleMask";\r
+ case 21: return "FragColor";\r
+ case 22: return "FragDepth";\r
+ case 23: return "HelperInvocation";\r
+ case 24: return "NumWorkgroups";\r
+ case 25: return "WorkgroupSize";\r
+ case 26: return "WorkgroupId";\r
+ case 27: return "LocalInvocationId";\r
+ case 28: return "GlobalInvocationId";\r
+ case 29: return "LocalInvocationIndex";\r
+ case 30: return "WorkDim";\r
+ case 31: return "GlobalSize";\r
+ case 32: return "EnqueuedWorkgroupSize";\r
+ case 33: return "GlobalOffset";\r
+ case 34: return "GlobalLinearId";\r
+ case 35: return "WorkgroupLinearId";\r
+ case 36: return "SubgroupSize";\r
+ case 37: return "SubgroupMaxSize";\r
+ case 38: return "NumSubgroups";\r
+ case 39: return "NumEnqueuedSubgroups";\r
+ case 40: return "SubgroupId";\r
+ case 41: return "SubgroupLocalInvocationId";\r
+\r
+ case BuiltInCeiling:\r
+ default: return "Bad";\r
}\r
}\r
\r
+const int DimensionCeiling = 6;\r
+\r
const char* DimensionString(int dim)\r
{\r
switch (dim) {\r
- case Dim1D: return "1D";\r
- case Dim2D: return "2D";\r
- case Dim3D: return "3D";\r
- case DimCube: return "Cube";\r
- case DimRect: return "Rect";\r
- case DimBuffer: return "Buffer";\r
-\r
- default: return "BadDimensionality";\r
+ case 0: return "1D";\r
+ case 1: return "2D";\r
+ case 2: return "3D";\r
+ case 3: return "Cube";\r
+ case 4: return "Rect";\r
+ case 5: return "Buffer";\r
+\r
+ case DimensionCeiling:\r
+ default: return "Bad";\r
}\r
}\r
\r
+const int SamplerAddressingModeCeiling = 9;\r
+\r
const char* SamplerAddressingModeString(int mode)\r
{\r
switch (mode) {\r
- case SamplerAddressingNone: return "None";\r
- case SamplerAddressingClampToEdge: return "ClampEdge";\r
- case SamplerAddressingClamp: return "Clamp";\r
- case SamplerAddressingRepeat: return "Repeat";\r
- case SamplerAddressingRepeatMirrored: return "RepeatMirrored";\r
-\r
- default: return "BadSamplerAddrMode";\r
+ case 0: return "None";\r
+ case 2: return "ClampToEdge";\r
+ case 4: return "Clamp";\r
+ case 6: return "Repeat";\r
+ case 8: return "RepeatMirrored";\r
+\r
+ case SamplerAddressingModeCeiling:\r
+ default: return "Bad";\r
}\r
}\r
\r
+const int SamplerFilterModeCeiling = 0x21;\r
+\r
const char* SamplerFilterModeString(int mode)\r
{\r
switch (mode) {\r
- case SamplerFilterNearest: return "Nearest";\r
- case SamplerFilterLinear: return "Linear";\r
+ case 0x10: return "Nearest";\r
+ case 0x20: return "Linear";\r
\r
- default: return "BadSamplerFilterMode";\r
+ case SamplerFilterModeCeiling:\r
+ default: return "Bad";\r
}\r
}\r
\r
+const int FPFastMathCeiling = 5;\r
+\r
const char* FPFastMathString(int mode)\r
{\r
switch (mode) {\r
- case FPFastMathNNan: return "NotNaN";\r
- case FPFastMathNInf: return "NotInf";\r
- case FPFastMathNSZ: return "NSZ";\r
- case FPFastMathARcp: return "AllowRecip";\r
- case FPFastMathFast: return "Fast";\r
-\r
- default: return "BadFastMathMode";\r
+ case 0: return "NotNaN";\r
+ case 1: return "NotInf";\r
+ case 2: return "NSZ";\r
+ case 3: return "AllowRecip";\r
+ case 4: return "Fast";\r
+\r
+ case FPFastMathCeiling:\r
+ default: return "Bad";\r
}\r
}\r
\r
+const int FPRoundingModeCeiling = 4;\r
+\r
const char* FPRoundingModeString(int mode)\r
{\r
switch (mode) {\r
- case FPRoundRTE: return "RTE";\r
- case FPRoundRTZ: return "RTZ";\r
- case FPRoundRTP: return "RTP";\r
- case FPRoundRTN: return "RTN";\r
+ case 0: return "RTE";\r
+ case 1: return "RTZ";\r
+ case 2: return "RTP";\r
+ case 3: return "RTN";\r
\r
- default: return "BadFPRoundingMode";\r
+ case FPRoundingModeCeiling:\r
+ default: return "Bad";\r
}\r
}\r
\r
+const int LinkageTypeCeiling = 2;\r
\r
const char* LinkageTypeString(int type)\r
{\r
switch (type) {\r
- case LinkageExport: return "Export";\r
- case LinkageImport: return "Import";\r
+ case 0: return "Export";\r
+ case 1: return "Import";\r
\r
- default: return "BadLinkageType";\r
+ case LinkageTypeCeiling:\r
+ default: return "Bad";\r
}\r
}\r
\r
+const int FuncParamAttrCeiling = 9;\r
+\r
const char* FuncParamAttrString(int attr)\r
{\r
switch (attr) {\r
- case FuncParamAttrZext: return "Zext";\r
- case FuncParamAttrSext: return "Sext";\r
- case FuncParamAttrByval: return "ByVal";\r
- case FuncParamAttrSret: return "Sret";\r
- case FuncParamAttrNoAlias: return "NoAlias";\r
- case FuncParamAttrNoCapture: return "NoCapture";\r
- case FuncParamAttrSVM: return "SVM";\r
- case FuncParamAttrNoWrite: return "NoWrite";\r
- case FuncParamAttrNoReadWrite: return "NoReadWrite";\r
-\r
- default: return "BadFunctionParameterAttribute";\r
+ case 0: return "Zext";\r
+ case 1: return "Sext";\r
+ case 2: return "ByVal";\r
+ case 3: return "Sret";\r
+ case 4: return "NoAlias";\r
+ case 5: return "NoCapture";\r
+ case 6: return "SVM";\r
+ case 7: return "NoWrite";\r
+ case 8: return "NoReadWrite";\r
+\r
+ case FuncParamAttrCeiling:\r
+ default: return "Bad";\r
}\r
}\r
\r
+const int AccessQualifierCeiling = 3;\r
+\r
const char* AccessQualifierString(int attr)\r
{\r
switch (attr) {\r
- case AccessQualReadOnly: return "ReadOnly";\r
- case AccessQualWriteOnly: return "WriteOnly";\r
- case AccessQualReadWrite: return "ReadWrite";\r
+ case 0: return "ReadOnly";\r
+ case 1: return "WriteOnly";\r
+ case 2: return "ReadWrite";\r
\r
- default: return "BadAccessQualifier";\r
+ case AccessQualifierCeiling:\r
+ default: return "Bad";\r
}\r
}\r
\r
+const int SelectControlCeiling = 2;\r
+\r
const char* SelectControlString(int cont)\r
{\r
switch (cont) {\r
- case SelectControlNone: return "NoControl";\r
- case SelectControlFlatten: return "Flatten";\r
- case SelectControlDontFlatten: return "DontFlatten";\r
+ case 0: return "Flatten";\r
+ case 1: return "DontFlatten";\r
\r
- default: return "BadSelectControl";\r
+ case SelectControlCeiling:\r
+ default: return "Bad";\r
}\r
}\r
\r
-const char* FunctionControlString(int cont)\r
+const int LoopControlCeiling = 2;\r
+\r
+const char* LoopControlString(int cont)\r
{\r
switch (cont) {\r
- case FunctionControlNone: return "NoControl";\r
- case FunctionControlInline: return "InLine";\r
- case FunctionControlDontInline: return "DontInline";\r
- case FunctionControlPure: return "Pure";\r
- case FunctionControlConst: return "Const";\r
+ case 0: return "Unroll";\r
+ case 1: return "DontUnroll";\r
\r
- default: return "Bad-select-control";\r
+ case LoopControlCeiling:\r
+ default: return "Bad";\r
}\r
}\r
\r
-const char* LoopControlString(int cont)\r
+const int FunctionControlCeiling = 4;\r
+\r
+const char* FunctionControlString(int cont)\r
{\r
switch (cont) {\r
- case LoopControlNone: return "NoControl";\r
- case LoopControlUnroll: return "Unroll";\r
- case LoopControlDontUnroll: return "DontUnroll";\r
+ case 0: return "Inline";\r
+ case 1: return "DontInline";\r
+ case 2: return "Pure";\r
+ case 3: return "Const";\r
\r
- default: return "Bad-loop-control";\r
+ case FunctionControlCeiling:\r
+ default: return "Bad";\r
}\r
}\r
\r
+const int MemorySemanticsCeiling = 10;\r
+\r
const char* MemorySemanticsString(int mem)\r
{\r
switch (mem) {\r
- case MemorySemanticsRelaxed: return "Relaxed";\r
- case MemorySemanticsSequentiallyConsistent: return "Sequentially-Consistent";\r
- case MemorySemanticsAcquire: return "Acquire";\r
- case MemorySemanticsRelease: return "Release";\r
-\r
- case MemorySemanticsUniform: return "Uniform-memory";\r
- case MemorySemanticsSubgroup: return "Subgroup-memory";\r
- case MemorySemanticsWorkgroupLocal: return "Workgroup-local-memory";\r
- case MemorySemanticsWorkgroupGlobal: return "Workgroup-global-memory";\r
- case MemorySemanticsAtomicCounter: return "Atomic-counter-memory";\r
- case MemorySemanticsImage: return "Image-memory";\r
-\r
- default: return "Bad-memory-semantic";\r
+ case 0: return "Relaxed";\r
+ case 1: return "SequentiallyConsistent";\r
+ case 2: return "Acquire";\r
+ case 3: return "Release";\r
+\r
+ case 4: return "UniformMemory";\r
+ case 5: return "SubgroupMemory";\r
+ case 6: return "WorkgroupLocalMemory";\r
+ case 7: return "WorkgroupGlobalMemory";\r
+ case 8: return "AtomicCounterMemory";\r
+ case 9: return "ImageMemory";\r
+\r
+ case MemorySemanticsCeiling:\r
+ default: return "Bad";\r
}\r
}\r
\r
+const int MemoryAccessCeiling = 2;\r
+\r
const char* MemoryAccessString(int mem)\r
{\r
switch (mem) {\r
- case MemoryAccessVolatile: return "Volatile";\r
- case MemoryAccessAligned: return "Aligned";\r
+ case 0: return "Volatile";\r
+ case 1: return "Aligned";\r
\r
- default: return "Bad-memory-access";\r
+ case MemoryAccessCeiling:\r
+ default: return "Bad";\r
}\r
}\r
\r
+const int ExecutionScopeCeiling = 4;\r
+\r
const char* ExecutionScopeString(int mem)\r
{\r
switch (mem) {\r
- case ExecutionScopeCrossDevice: return "CrossDevice";\r
- case ExecutionScopeDevice: return "Device";\r
- case ExecutionScopeWorkgroup: return "Workgroup";\r
- case ExecutionScopeSubgroup: return "Subgroup";\r
+ case 0: return "CrossDevice";\r
+ case 1: return "Device";\r
+ case 2: return "Workgroup";\r
+ case 3: return "Subgroup";\r
\r
- default: return "Bad-execution-scope";\r
+ case ExecutionScopeCeiling:\r
+ default: return "Bad";\r
}\r
}\r
\r
-const char* GroupOperationString(int gop) {\r
+const int GroupOperationCeiling = 3;\r
+\r
+const char* GroupOperationString(int gop)\r
+{\r
\r
switch (gop)\r
{\r
- case GroupOpReduce: return "Reduce";\r
- case GroupOpInclusiveScan: return "InclusiveScan";\r
- case GroupOpExclusiveScan: return "ExclusiveScan";\r
+ case 0: return "Reduce";\r
+ case 1: return "InclusiveScan";\r
+ case 2: return "ExclusiveScan";\r
\r
- default: return "Bad-execution-scope";\r
+ case GroupOperationCeiling:\r
+ default: return "Bad";\r
}\r
}\r
\r
-const char* KernelEnqueueFlagsString(int flag) {\r
+const int KernelEnqueueFlagsCeiling = 3;\r
+\r
+const char* KernelEnqueueFlagsString(int flag)\r
+{\r
switch (flag)\r
{\r
- case spv::EnqFlagNoWait: return "NoWait";\r
- case spv::EnqFlagWaitKernel: return "WaitKernel";\r
- case spv::EnqFlagWaitWaitWorgGroup: return "WaitWorkGroup";\r
+ case 0: return "NoWait";\r
+ case 1: return "WaitKernel";\r
+ case 2: return "WaitWorkGroup";\r
\r
- default: return "Bad-enqueue-flag";\r
+ case KernelEnqueueFlagsCeiling:\r
+ default: return "Bad";\r
}\r
}\r
\r
-const char* KernelProfilingInfoString(int info) {\r
+const int KernelProfilingInfoCeiling = 1;\r
+\r
+const char* KernelProfilingInfoString(int info)\r
+{\r
switch (info)\r
{\r
- case spv::ProfInfoCmdExecTime: return "CmdExecTime";\r
- default: return "Bad-profiling-info";\r
+ case 0: return "CmdExecTime";\r
+\r
+ case KernelProfilingInfoCeiling:\r
+ default: return "Bad";\r
}\r
}\r
\r
-const char* GetOperandDesc(OperandClass operand)\r
+const char* OpcodeString(int op)\r
{\r
- switch (operand) {\r
- case OperandId: return "<id>";\r
- case OperandOptionalId: return "Optional <id>";\r
- case OperandVariableIds: return "<id>, <id>, ...";\r
- case OperandVariableLiterals: return "literal, literal, ...";\r
- case OperandVariableLiteralId: return "literal, label <id>, +\nliteral, label <id>, +\n...";\r
- case OperandLiteralNumber: return "Literal Number";\r
- case OperandLiteralString: return "Literal String";\r
- case OperandSource: return "Source Language";\r
- case OperandExecutionModel: return "Execution Model";\r
- case OperandAddressing: return "Addressing Model";\r
- case OperandMemory: return "Memory Model";\r
- case OperandExecutionMode: return "Execution Mode";\r
- case OperandStorage: return "Storage Class";\r
- case OperandDimensionality: return "Dim";\r
- case OperandDecoration: return "Decoration";\r
- case OperandBuiltIn: return "Built-In";\r
- case OperandSelect: return "Selection Control";\r
- case OperandLoop: return "Loop Control";\r
- case OperandFunction: return "Function Control Mask";\r
- case OperandSamplerAddressingMode: return "Sampler Addressing Mode";\r
- case OperandSamplerFilterMode: return "Sampler Filter Mode";\r
- case OperandFPFastMath: return "FP Fast Math Mode";\r
- case OperandFPRoundingMode: return "FP Rounding Mode";\r
- case OperandLinkageType: return "Linkage Type";\r
- case OperandFuncParamAttr: return "Function Parameter Attribute";\r
- case OperandAccessQualifier: return "Access Qualifier";\r
- case OperandMemorySemantics: return "Memory Semantics";\r
- case OperandMemoryAccess: return "Memory Access";\r
- case OperandExecutionScope: return "Execution Scope";\r
- case OperandGroupOperation: return "Group Operation";\r
- case OperandKernelEnqueueFlags: return "Kernel Enqueue Flags";\r
- case OperandKernelProfilingInfo: return "Kernel Profiling Info";\r
- default: return "Unknown";\r
+ switch (op) {\r
+ case 0: return "OpNop";\r
+ case 1: return "OpSource";\r
+ case 2: return "OpSourceExtension";\r
+ case 3: return "OpExtension";\r
+ case 4: return "OpExtInstImport";\r
+ case 5: return "OpMemoryModel";\r
+ case 6: return "OpEntryPoint";\r
+ case 7: return "OpExecutionMode";\r
+ case 8: return "OpTypeVoid";\r
+ case 9: return "OpTypeBool";\r
+ case 10: return "OpTypeInt";\r
+ case 11: return "OpTypeFloat";\r
+ case 12: return "OpTypeVector";\r
+ case 13: return "OpTypeMatrix";\r
+ case 14: return "OpTypeSampler";\r
+ case 15: return "OpTypeFilter";\r
+ case 16: return "OpTypeArray";\r
+ case 17: return "OpTypeRuntimeArray";\r
+ case 18: return "OpTypeStruct";\r
+ case 19: return "OpTypeOpaque";\r
+ case 20: return "OpTypePointer";\r
+ case 21: return "OpTypeFunction";\r
+ case 22: return "OpTypeEvent";\r
+ case 23: return "OpTypeDeviceEvent";\r
+ case 24: return "OpTypeReserveId";\r
+ case 25: return "OpTypeQueue";\r
+ case 26: return "OpTypePipe";\r
+ case 27: return "OpConstantTrue";\r
+ case 28: return "OpConstantFalse";\r
+ case 29: return "OpConstant";\r
+ case 30: return "OpConstantComposite";\r
+ case 31: return "OpConstantSampler";\r
+ case 32: return "OpConstantNullPointer";\r
+ case 33: return "OpConstantNullObject";\r
+ case 34: return "OpSpecConstantTrue";\r
+ case 35: return "OpSpecConstantFalse";\r
+ case 36: return "OpSpecConstant";\r
+ case 37: return "OpSpecConstantComposite";\r
+ case 38: return "OpVariable";\r
+ case 39: return "OpVariableArray";\r
+ case 40: return "OpFunction";\r
+ case 41: return "OpFunctionParameter";\r
+ case 42: return "OpFunctionEnd";\r
+ case 43: return "OpFunctionCall";\r
+ case 44: return "OpExtInst";\r
+ case 45: return "OpUndef";\r
+ case 46: return "OpLoad";\r
+ case 47: return "OpStore";\r
+ case 48: return "OpPhi";\r
+ case 49: return "OpDecorationGroup";\r
+ case 50: return "OpDecorate";\r
+ case 51: return "OpMemberDecorate";\r
+ case 52: return "OpGroupDecorate";\r
+ case 53: return "OpGroupMemberDecorate";\r
+ case 54: return "OpName";\r
+ case 55: return "OpMemberName";\r
+ case 56: return "OpString";\r
+ case 57: return "OpLine";\r
+ case 58: return "OpVectorExtractDynamic";\r
+ case 59: return "OpVectorInsertDynamic";\r
+ case 60: return "OpVectorShuffle";\r
+ case 61: return "OpCompositeConstruct";\r
+ case 62: return "OpCompositeExtract";\r
+ case 63: return "OpCompositeInsert";\r
+ case 64: return "OpCopyObject";\r
+ case 65: return "OpCopyMemory";\r
+ case 66: return "OpCopyMemorySized";\r
+ case 67: return "OpSampler";\r
+ case 68: return "OpTextureSample";\r
+ case 69: return "OpTextureSampleDref";\r
+ case 70: return "OpTextureSampleLod";\r
+ case 71: return "OpTextureSampleProj";\r
+ case 72: return "OpTextureSampleGrad";\r
+ case 73: return "OpTextureSampleOffset";\r
+ case 74: return "OpTextureSampleProjLod";\r
+ case 75: return "OpTextureSampleProjGrad";\r
+ case 76: return "OpTextureSampleLodOffset";\r
+ case 77: return "OpTextureSampleProjOffset";\r
+ case 78: return "OpTextureSampleGradOffset";\r
+ case 79: return "OpTextureSampleProjLodOffset";\r
+ case 80: return "OpTextureSampleProjGradOffset";\r
+ case 81: return "OpTextureFetchTexelLod";\r
+ case 82: return "OpTextureFetchTexelOffset";\r
+ case 83: return "OpTextureFetchSample";\r
+ case 84: return "OpTextureFetchTexel";\r
+ case 85: return "OpTextureGather";\r
+ case 86: return "OpTextureGatherOffset";\r
+ case 87: return "OpTextureGatherOffsets";\r
+ case 88: return "OpTextureQuerySizeLod";\r
+ case 89: return "OpTextureQuerySize";\r
+ case 90: return "OpTextureQueryLod";\r
+ case 91: return "OpTextureQueryLevels";\r
+ case 92: return "OpTextureQuerySamples";\r
+ case 93: return "OpAccessChain";\r
+ case 94: return "OpInBoundsAccessChain";\r
+ case 95: return "OpSNegate";\r
+ case 96: return "OpFNegate";\r
+ case 97: return "OpNot";\r
+ case 98: return "OpAny";\r
+ case 99: return "OpAll";\r
+ case 100: return "OpConvertFToU";\r
+ case 101: return "OpConvertFToS";\r
+ case 102: return "OpConvertSToF";\r
+ case 103: return "OpConvertUToF";\r
+ case 104: return "OpUConvert";\r
+ case 105: return "OpSConvert";\r
+ case 106: return "OpFConvert";\r
+ case 107: return "OpConvertPtrToU";\r
+ case 108: return "OpConvertUToPtr";\r
+ case 109: return "OpPtrCastToGeneric";\r
+ case 110: return "OpGenericCastToPtr";\r
+ case 111: return "OpBitcast";\r
+ case 112: return "OpTranspose";\r
+ case 113: return "OpIsNan";\r
+ case 114: return "OpIsInf";\r
+ case 115: return "OpIsFinite";\r
+ case 116: return "OpIsNormal";\r
+ case 117: return "OpSignBitSet";\r
+ case 118: return "OpLessOrGreater";\r
+ case 119: return "OpOrdered";\r
+ case 120: return "OpUnordered";\r
+ case 121: return "OpArrayLength";\r
+ case 122: return "OpIAdd";\r
+ case 123: return "OpFAdd";\r
+ case 124: return "OpISub";\r
+ case 125: return "OpFSub";\r
+ case 126: return "OpIMul";\r
+ case 127: return "OpFMul";\r
+ case 128: return "OpUDiv";\r
+ case 129: return "OpSDiv";\r
+ case 130: return "OpFDiv";\r
+ case 131: return "OpUMod";\r
+ case 132: return "OpSRem";\r
+ case 133: return "OpSMod";\r
+ case 134: return "OpFRem";\r
+ case 135: return "OpFMod";\r
+ case 136: return "OpVectorTimesScalar";\r
+ case 137: return "OpMatrixTimesScalar";\r
+ case 138: return "OpVectorTimesMatrix";\r
+ case 139: return "OpMatrixTimesVector";\r
+ case 140: return "OpMatrixTimesMatrix";\r
+ case 141: return "OpOuterProduct";\r
+ case 142: return "OpDot";\r
+ case 143: return "OpShiftRightLogical";\r
+ case 144: return "OpShiftRightArithmetic";\r
+ case 145: return "OpShiftLeftLogical";\r
+ case 146: return "OpLogicalOr";\r
+ case 147: return "OpLogicalXor";\r
+ case 148: return "OpLogicalAnd";\r
+ case 149: return "OpBitwiseOr";\r
+ case 150: return "OpBitwiseXor";\r
+ case 151: return "OpBitwiseAnd";\r
+ case 152: return "OpSelect";\r
+ case 153: return "OpIEqual";\r
+ case 154: return "OpFOrdEqual";\r
+ case 155: return "OpFUnordEqual";\r
+ case 156: return "OpINotEqual";\r
+ case 157: return "OpFOrdNotEqual";\r
+ case 158: return "OpFUnordNotEqual";\r
+ case 159: return "OpULessThan";\r
+ case 160: return "OpSLessThan";\r
+ case 161: return "OpFOrdLessThan";\r
+ case 162: return "OpFUnordLessThan";\r
+ case 163: return "OpUGreaterThan";\r
+ case 164: return "OpSGreaterThan";\r
+ case 165: return "OpFOrdGreaterThan";\r
+ case 166: return "OpFUnordGreaterThan";\r
+ case 167: return "OpULessThanEqual";\r
+ case 168: return "OpSLessThanEqual";\r
+ case 169: return "OpFOrdLessThanEqual";\r
+ case 170: return "OpFUnordLessThanEqual";\r
+ case 171: return "OpUGreaterThanEqual";\r
+ case 172: return "OpSGreaterThanEqual";\r
+ case 173: return "OpFOrdGreaterThanEqual";\r
+ case 174: return "OpFUnordGreaterThanEqual";\r
+ case 175: return "OpDPdx";\r
+ case 176: return "OpDPdy";\r
+ case 177: return "OpFwidth";\r
+ case 178: return "OpDPdxFine";\r
+ case 179: return "OpDPdyFine";\r
+ case 180: return "OpFwidthFine";\r
+ case 181: return "OpDPdxCoarse";\r
+ case 182: return "OpDPdyCoarse";\r
+ case 183: return "OpFwidthCoarse";\r
+ case 184: return "OpEmitVertex";\r
+ case 185: return "OpEndPrimitive";\r
+ case 186: return "OpEmitStreamVertex";\r
+ case 187: return "OpEndStreamPrimitive";\r
+ case 188: return "OpControlBarrier";\r
+ case 189: return "OpMemoryBarrier";\r
+ case 190: return "OpImagePointer";\r
+ case 191: return "OpAtomicInit";\r
+ case 192: return "OpAtomicLoad";\r
+ case 193: return "OpAtomicStore";\r
+ case 194: return "OpAtomicExchange";\r
+ case 195: return "OpAtomicCompareExchange";\r
+ case 196: return "OpAtomicCompareExchangeWeak";\r
+ case 197: return "OpAtomicIIncrement";\r
+ case 198: return "OpAtomicIDecrement";\r
+ case 199: return "OpAtomicIAdd";\r
+ case 200: return "OpAtomicISub";\r
+ case 201: return "OpAtomicUMin";\r
+ case 202: return "OpAtomicUMax";\r
+ case 203: return "OpAtomicAnd";\r
+ case 204: return "OpAtomicOr";\r
+ case 205: return "OpAtomicXor";\r
+ case 206: return "OpLoopMerge";\r
+ case 207: return "OpSelectionMerge";\r
+ case 208: return "OpLabel";\r
+ case 209: return "OpBranch";\r
+ case 210: return "OpBranchConditional";\r
+ case 211: return "OpSwitch";\r
+ case 212: return "OpKill";\r
+ case 213: return "OpReturn";\r
+ case 214: return "OpReturnValue";\r
+ case 215: return "OpUnreachable";\r
+ case 216: return "OpLifetimeStart";\r
+ case 217: return "OpLifetimeStop";\r
+ case 218: return "OpCompileFlag";\r
+ case 219: return "OpAsyncGroupCopy";\r
+ case 220: return "OpWaitGroupEvents";\r
+ case 221: return "OpGroupAll";\r
+ case 222: return "OpGroupAny";\r
+ case 223: return "OpGroupBroadcast";\r
+ case 224: return "OpGroupIAdd";\r
+ case 225: return "OpGroupFAdd";\r
+ case 226: return "OpGroupFMin";\r
+ case 227: return "OpGroupUMin";\r
+ case 228: return "OpGroupSMin";\r
+ case 229: return "OpGroupFMax";\r
+ case 230: return "OpGroupUMax";\r
+ case 231: return "OpGroupSMax";\r
+ case 232: return "OpGenericCastToPtrExplicit";\r
+ case 233: return "OpGenericPtrMemSemantics";\r
+ case 234: return "OpReadPipe";\r
+ case 235: return "OpWritePipe";\r
+ case 236: return "OpReservedReadPipe";\r
+ case 237: return "OpReservedWritePipe";\r
+ case 238: return "OpReserveReadPipePackets";\r
+ case 239: return "OpReserveWritePipePackets";\r
+ case 240: return "OpCommitReadPipe";\r
+ case 241: return "OpCommitWritePipe";\r
+ case 242: return "OpIsValidReserveId";\r
+ case 243: return "OpGetNumPipePackets";\r
+ case 244: return "OpGetMaxPipePackets";\r
+ case 245: return "OpGroupReserveReadPipePackets";\r
+ case 246: return "OpGroupReserveWritePipePackets";\r
+ case 247: return "OpGroupCommitReadPipe";\r
+ case 248: return "OpGroupCommitWritePipe";\r
+ case 249: return "OpEnqueueMarker";\r
+ case 250: return "OpEnqueueKernel";\r
+ case 251: return "OpGetKernelNDrangeSubGroupCount";\r
+ case 252: return "OpGetKernelNDrangeMaxSubGroupSize";\r
+ case 253: return "OpGetKernelWorkGroupSize";\r
+ case 254: return "OpGetKernelPreferredWorkGroupSizeMultiple";\r
+ case 255: return "OpRetainEvent";\r
+ case 256: return "OpReleaseEvent";\r
+ case 257: return "OpCreateUserEvent";\r
+ case 258: return "OpIsValidEvent";\r
+ case 259: return "OpSetUserEventStatus";\r
+ case 260: return "OpCaptureEventProfilingInfo";\r
+ case 261: return "OpGetDefaultQueue";\r
+ case 262: return "OpBuildNDRange";\r
+ case 263: return "OpSatConvertSToU";\r
+ case 264: return "OpSatConvertUToS";\r
+ case 265: return "OpAtomicIMin";\r
+ case 266: return "OpAtomicIMax";\r
+\r
+ case OpcodeCeiling:\r
+ default:\r
+ return "Bad";\r
}\r
}\r
\r
+// The set of objects that hold all the instruction/operand\r
+// parameterization information.\r
+InstructionParameters InstructionDesc[OpcodeCeiling];\r
+OperandParameters ExecutionModeOperands[ExecutionModeCeiling];\r
+OperandParameters DecorationOperands[DecorationCeiling];\r
+\r
+EnumDefinition OperandClassParams[OperandCount];\r
+EnumParameters ExecutionModelParams[ExecutionModelCeiling];\r
+EnumParameters AddressingParams[AddressingModelCeiling];\r
+EnumParameters MemoryParams[MemoryModelCeiling];\r
+EnumParameters ExecutionModeParams[ExecutionModeCeiling];\r
+EnumParameters StorageParams[StorageClassCeiling];\r
+EnumParameters SamplerAddressingModeParams[SamplerAddressingModeCeiling];\r
+EnumParameters SamplerFilterModeParams[SamplerFilterModeCeiling];\r
+EnumParameters FPFastMathParams[FPFastMathCeiling];\r
+EnumParameters FPRoundingModeParams[FPRoundingModeCeiling];\r
+EnumParameters LinkageTypeParams[LinkageTypeCeiling];\r
+EnumParameters DecorationParams[DecorationCeiling];\r
+EnumParameters BuiltInParams[BuiltInCeiling];\r
+EnumParameters DimensionalityParams[DimensionCeiling];\r
+EnumParameters FuncParamAttrParams[FuncParamAttrCeiling];\r
+EnumParameters AccessQualifierParams[AccessQualifierCeiling];\r
+EnumParameters GroupOperationParams[GroupOperationCeiling];\r
+EnumParameters LoopControlParams[FunctionControlCeiling];\r
+EnumParameters SelectionControlParams[SelectControlCeiling];\r
+EnumParameters FunctionControlParams[FunctionControlCeiling];\r
+EnumParameters MemorySemanticsParams[MemorySemanticsCeiling];\r
+EnumParameters MemoryAccessParams[MemoryAccessCeiling];\r
+EnumParameters ExecutionScopeParams[ExecutionScopeCeiling];\r
+EnumParameters KernelEnqueueFlagsParams[KernelEnqueueFlagsCeiling];\r
+EnumParameters KernelProfilingInfoParams[KernelProfilingInfoCeiling];\r
+\r
+// Set up all the parameterizing descriptions of the opcodes, operands, etc.\r
+void Parameterize()\r
+{\r
+ // Exceptions to having a result <id> and a resulting type <id>.\r
+ // (Everything is initialized to have both).\r
+\r
+ InstructionDesc[OpNop].setResultAndType(false, false);\r
+ InstructionDesc[OpSource].setResultAndType(false, false);\r
+ InstructionDesc[OpSourceExtension].setResultAndType(false, false);\r
+ InstructionDesc[OpExtension].setResultAndType(false, false);\r
+ InstructionDesc[OpExtInstImport].setResultAndType(true, false);\r
+ InstructionDesc[OpMemoryModel].setResultAndType(false, false);\r
+ InstructionDesc[OpEntryPoint].setResultAndType(false, false);\r
+ InstructionDesc[OpExecutionMode].setResultAndType(false, false);\r
+ InstructionDesc[OpTypeVoid].setResultAndType(true, false);\r
+ InstructionDesc[OpTypeBool].setResultAndType(true, false);\r
+ InstructionDesc[OpTypeInt].setResultAndType(true, false);\r
+ InstructionDesc[OpTypeFloat].setResultAndType(true, false);\r
+ InstructionDesc[OpTypeVector].setResultAndType(true, false);\r
+ InstructionDesc[OpTypeMatrix].setResultAndType(true, false);\r
+ InstructionDesc[OpTypeSampler].setResultAndType(true, false);\r
+ InstructionDesc[OpTypeFilter].setResultAndType(true, false);\r
+ InstructionDesc[OpTypeArray].setResultAndType(true, false);\r
+ InstructionDesc[OpTypeRuntimeArray].setResultAndType(true, false);\r
+ InstructionDesc[OpTypeStruct].setResultAndType(true, false);\r
+ InstructionDesc[OpTypeOpaque].setResultAndType(true, false);\r
+ InstructionDesc[OpTypePointer].setResultAndType(true, false);\r
+ InstructionDesc[OpTypeFunction].setResultAndType(true, false);\r
+ InstructionDesc[OpTypeEvent].setResultAndType(true, false);\r
+ InstructionDesc[OpTypeDeviceEvent].setResultAndType(true, false);\r
+ InstructionDesc[OpTypeReserveId].setResultAndType(true, false);\r
+ InstructionDesc[OpTypeQueue].setResultAndType(true, false);\r
+ InstructionDesc[OpTypePipe].setResultAndType(true, false);\r
+ InstructionDesc[OpFunctionEnd].setResultAndType(false, false);\r
+ InstructionDesc[OpStore].setResultAndType(false, false);\r
+ InstructionDesc[OpDecorationGroup].setResultAndType(true, false);\r
+ InstructionDesc[OpDecorate].setResultAndType(false, false);\r
+ InstructionDesc[OpMemberDecorate].setResultAndType(false, false);\r
+ InstructionDesc[OpGroupDecorate].setResultAndType(false, false);\r
+ InstructionDesc[OpGroupMemberDecorate].setResultAndType(false, false);\r
+ InstructionDesc[OpName].setResultAndType(false, false);\r
+ InstructionDesc[OpMemberName].setResultAndType(false, false);\r
+ InstructionDesc[OpString].setResultAndType(true, false);\r
+ InstructionDesc[OpLine].setResultAndType(false, false);\r
+ InstructionDesc[OpCopyMemory].setResultAndType(false, false);\r
+ InstructionDesc[OpCopyMemorySized].setResultAndType(false, false);\r
+ InstructionDesc[OpEmitVertex].setResultAndType(false, false);\r
+ InstructionDesc[OpEndPrimitive].setResultAndType(false, false);\r
+ InstructionDesc[OpEmitStreamVertex].setResultAndType(false, false);\r
+ InstructionDesc[OpEndStreamPrimitive].setResultAndType(false, false);\r
+ InstructionDesc[OpControlBarrier].setResultAndType(false, false);\r
+ InstructionDesc[OpMemoryBarrier].setResultAndType(false, false);\r
+ InstructionDesc[OpAtomicInit].setResultAndType(false, false);\r
+ InstructionDesc[OpAtomicStore].setResultAndType(false, false);\r
+ InstructionDesc[OpLoopMerge].setResultAndType(false, false);\r
+ InstructionDesc[OpSelectionMerge].setResultAndType(false, false);\r
+ InstructionDesc[OpLabel].setResultAndType(true, false);\r
+ InstructionDesc[OpBranch].setResultAndType(false, false);\r
+ InstructionDesc[OpBranchConditional].setResultAndType(false, false);\r
+ InstructionDesc[OpSwitch].setResultAndType(false, false);\r
+ InstructionDesc[OpKill].setResultAndType(false, false);\r
+ InstructionDesc[OpReturn].setResultAndType(false, false);\r
+ InstructionDesc[OpReturnValue].setResultAndType(false, false);\r
+ InstructionDesc[OpUnreachable].setResultAndType(false, false);\r
+ InstructionDesc[OpLifetimeStart].setResultAndType(false, false);\r
+ InstructionDesc[OpLifetimeStop].setResultAndType(false, false);\r
+ InstructionDesc[OpCompileFlag].setResultAndType(false, false);\r
+ InstructionDesc[OpCommitReadPipe].setResultAndType(false, false);\r
+ InstructionDesc[OpCommitWritePipe].setResultAndType(false, false);\r
+ InstructionDesc[OpGroupCommitWritePipe].setResultAndType(false, false);\r
+ InstructionDesc[OpGroupCommitReadPipe].setResultAndType(false, false);\r
+ InstructionDesc[OpCaptureEventProfilingInfo].setResultAndType(false, false);\r
+ InstructionDesc[OpSetUserEventStatus].setResultAndType(false, false);\r
+ InstructionDesc[OpRetainEvent].setResultAndType(false, false);\r
+ InstructionDesc[OpReleaseEvent].setResultAndType(false, false);\r
+\r
+ // Specific additional context-dependent operands\r
+\r
+ ExecutionModeOperands[ExecutionModeInvocations].push(OperandLiteralNumber, "Number of invocations");\r
+\r
+ ExecutionModeOperands[ExecutionModeLocalSize].push(OperandLiteralNumber, "'x size'");\r
+ ExecutionModeOperands[ExecutionModeLocalSize].push(OperandLiteralNumber, "'y size'");\r
+ ExecutionModeOperands[ExecutionModeLocalSize].push(OperandLiteralNumber, "'z size'");\r
+\r
+ ExecutionModeOperands[ExecutionModeLocalSizeHint].push(OperandLiteralNumber, "'x size'");\r
+ ExecutionModeOperands[ExecutionModeLocalSizeHint].push(OperandLiteralNumber, "'y size'");\r
+ ExecutionModeOperands[ExecutionModeLocalSizeHint].push(OperandLiteralNumber, "'z size'");\r
+\r
+ ExecutionModeOperands[ExecutionModeOutputVertices].push(OperandLiteralNumber, "Vertex count");\r
+ ExecutionModeOperands[ExecutionModeVecTypeHint].push(OperandId, "Vector type");\r
+\r
+ DecorationOperands[DecorationStream].push(OperandLiteralNumber, "Stream number");\r
+ DecorationOperands[DecorationLocation].push(OperandLiteralNumber, "Location");\r
+ DecorationOperands[DecorationComponent].push(OperandLiteralNumber, "Component within a vector");\r
+ DecorationOperands[DecorationIndex].push(OperandLiteralNumber, "Index");\r
+ DecorationOperands[DecorationBinding].push(OperandLiteralNumber, "Binding point");\r
+ DecorationOperands[DecorationDescriptorSet].push(OperandLiteralNumber, "Descriptor set");\r
+ DecorationOperands[DecorationOffset].push(OperandLiteralNumber, "Byte offset");\r
+ DecorationOperands[DecorationAlignment].push(OperandLiteralNumber, "Declared alignment");\r
+ DecorationOperands[DecorationXfbBuffer].push(OperandLiteralNumber, "XFB Buffer number");\r
+ DecorationOperands[DecorationStride].push(OperandLiteralNumber, "Stride");\r
+ DecorationOperands[DecorationBuiltIn].push(OperandLiteralNumber, "See <<BuiltIn,*BuiltIn*>>");\r
+ DecorationOperands[DecorationFPRoundingMode].push(OperandFPRoundingMode, "floating-point rounding mode");\r
+ DecorationOperands[DecorationFPFastMathMode].push(OperandFPFastMath, "fast-math mode");\r
+ DecorationOperands[DecorationLinkageAttributes].push(OperandLiteralString, "name");\r
+ DecorationOperands[DecorationLinkageAttributes].push(OperandLinkageType, "linkage type");\r
+ DecorationOperands[DecorationFuncParamAttr].push(OperandFuncParamAttr, "function parameter attribute");\r
+ DecorationOperands[DecorationSpecId].push(OperandLiteralNumber, "Specialization Constant ID");\r
+\r
+ OperandClassParams[OperandSource].set(SourceLanguageCeiling, SourceString, 0);\r
+ OperandClassParams[OperandExecutionModel].set(ExecutionModelCeiling, ExecutionModelString, ExecutionModelParams);\r
+ OperandClassParams[OperandAddressing].set(AddressingModelCeiling, AddressingString, AddressingParams);\r
+ OperandClassParams[OperandMemory].set(MemoryModelCeiling, MemoryString, MemoryParams);\r
+ OperandClassParams[OperandExecutionMode].set(ExecutionModeCeiling, ExecutionModeString, ExecutionModeParams);\r
+ OperandClassParams[OperandExecutionMode].setOperands(ExecutionModeOperands);\r
+ OperandClassParams[OperandStorage].set(StorageClassCeiling, StorageClassString, StorageParams);\r
+ OperandClassParams[OperandDimensionality].set(DimensionCeiling, DimensionString, DimensionalityParams);\r
+ OperandClassParams[OperandSamplerAddressingMode].set(SamplerAddressingModeCeiling, SamplerAddressingModeString, SamplerAddressingModeParams);\r
+ OperandClassParams[OperandSamplerFilterMode].set(SamplerFilterModeCeiling, SamplerFilterModeString, SamplerFilterModeParams);\r
+ OperandClassParams[OperandFPFastMath].set(FPFastMathCeiling, FPFastMathString, FPFastMathParams, true);\r
+ OperandClassParams[OperandFPRoundingMode].set(FPRoundingModeCeiling, FPRoundingModeString, FPRoundingModeParams);\r
+ OperandClassParams[OperandLinkageType].set(LinkageTypeCeiling, LinkageTypeString, LinkageTypeParams);\r
+ OperandClassParams[OperandFuncParamAttr].set(FuncParamAttrCeiling, FuncParamAttrString, FuncParamAttrParams);\r
+ OperandClassParams[OperandAccessQualifier].set(AccessQualifierCeiling, AccessQualifierString, AccessQualifierParams);\r
+ OperandClassParams[OperandDecoration].set(DecorationCeiling, DecorationString, DecorationParams);\r
+ OperandClassParams[OperandDecoration].setOperands(DecorationOperands);\r
+ OperandClassParams[OperandBuiltIn].set(BuiltInCeiling, BuiltInString, BuiltInParams);\r
+ OperandClassParams[OperandSelect].set(SelectControlCeiling, SelectControlString, SelectionControlParams, true);\r
+ OperandClassParams[OperandLoop].set(LoopControlCeiling, LoopControlString, LoopControlParams, true);\r
+ OperandClassParams[OperandFunction].set(FunctionControlCeiling, FunctionControlString, FunctionControlParams, true);\r
+ OperandClassParams[OperandMemorySemantics].set(MemorySemanticsCeiling, MemorySemanticsString, MemorySemanticsParams, true);\r
+ OperandClassParams[OperandMemoryAccess].set(MemoryAccessCeiling, MemoryAccessString, MemoryAccessParams, true);\r
+ OperandClassParams[OperandExecutionScope].set(ExecutionScopeCeiling, ExecutionScopeString, ExecutionScopeParams);\r
+ OperandClassParams[OperandGroupOperation].set(GroupOperationCeiling, GroupOperationString, GroupOperationParams);\r
+ OperandClassParams[OperandKernelEnqueueFlags].set(KernelEnqueueFlagsCeiling, KernelEnqueueFlagsString, KernelEnqueueFlagsParams);\r
+ OperandClassParams[OperandKernelProfilingInfo].set(KernelProfilingInfoCeiling, KernelProfilingInfoString, KernelProfilingInfoParams, true);\r
+ OperandClassParams[OperandOpcode].set(OpcodeCeiling, OpcodeString, 0);\r
+\r
+ AddressingParams[AddressingModelPhysical32].caps.push_back(CapAddr);\r
+ AddressingParams[AddressingModelPhysical64].caps.push_back(CapAddr);\r
+\r
+ MemoryParams[MemoryModelSimple].caps.push_back(CapShader);\r
+ MemoryParams[MemoryModelGLSL450].caps.push_back(CapShader);\r
+ MemoryParams[MemoryModelOpenCL12].caps.push_back(CapKernel);\r
+ MemoryParams[MemoryModelOpenCL20].caps.push_back(CapKernel);\r
+ MemoryParams[MemoryModelOpenCL21].caps.push_back(CapKernel);\r
+\r
+ ExecutionModelParams[ExecutionModelVertex].caps.push_back(CapShader);\r
+ ExecutionModelParams[ExecutionModelTessellationControl].caps.push_back(CapTess);\r
+ ExecutionModelParams[ExecutionModelTessellationEvaluation].caps.push_back(CapTess);\r
+ ExecutionModelParams[ExecutionModelGeometry].caps.push_back(CapGeom);\r
+ ExecutionModelParams[ExecutionModelFragment].caps.push_back(CapShader);\r
+ ExecutionModelParams[ExecutionModelGLCompute].caps.push_back(CapShader);\r
+ ExecutionModelParams[ExecutionModelKernel].caps.push_back(CapKernel);\r
+\r
+ // Storage capabilites\r
+ StorageParams[StorageClassInput].caps.push_back(CapShader);\r
+ StorageParams[StorageClassUniform].caps.push_back(CapShader);\r
+ StorageParams[StorageClassOutput].caps.push_back(CapShader);\r
+ StorageParams[StorageClassPrivateGlobal].caps.push_back(CapShader);\r
+ StorageParams[StorageClassFunction].caps.push_back(CapShader);\r
+ StorageParams[StorageClassGeneric].caps.push_back(CapKernel);\r
+ StorageParams[StorageClassPrivate].caps.push_back(CapKernel);\r
+ StorageParams[StorageClassAtomicCounter].caps.push_back(CapShader);\r
+\r
+ // Sampler Filter & Addressing mode capabilities\r
+ SamplerAddressingModeParams[SamplerAddressingModeNone].caps.push_back(CapKernel);\r
+ SamplerAddressingModeParams[SamplerAddressingModeClampToEdge].caps.push_back(CapKernel);\r
+ SamplerAddressingModeParams[SamplerAddressingModeClamp].caps.push_back(CapKernel);\r
+ SamplerAddressingModeParams[SamplerAddressingModeRepeat].caps.push_back(CapKernel);\r
+ SamplerAddressingModeParams[SamplerAddressingModeRepeatMirrored].caps.push_back(CapKernel);\r
+\r
+ SamplerFilterModeParams[SamplerFilterModeNearest].caps.push_back(CapKernel);\r
+ SamplerFilterModeParams[SamplerFilterModeLinear].caps.push_back(CapKernel);\r
+\r
+ // fast math flags capabilities\r
+ for (int i = 0; i < FPFastMathCeiling; ++i) {\r
+ FPFastMathParams[i].caps.push_back(CapKernel);\r
+ }\r
+\r
+ // fp rounding mode capabilities\r
+ for (int i = 0; i < FPRoundingModeCeiling; ++i) {\r
+ FPRoundingModeParams[i].caps.push_back(CapKernel);\r
+ }\r
+\r
+ // linkage types\r
+ for (int i = 0; i < LinkageTypeCeiling; ++i) {\r
+ LinkageTypeParams[i].caps.push_back(CapLink);\r
+ }\r
+\r
+ // function argument types\r
+ for (int i = 0; i < FuncParamAttrCeiling; ++i) {\r
+ FuncParamAttrParams[i].caps.push_back(CapKernel);\r
+ }\r
+\r
+ // function argument types\r
+ for (int i = 0; i < AccessQualifierCeiling; ++i) {\r
+ AccessQualifierParams[i].caps.push_back(CapKernel);\r
+ }\r
+\r
+ ExecutionModeParams[ExecutionModeInvocations].caps.push_back(CapGeom);\r
+ ExecutionModeParams[ExecutionModeSpacingEqual].caps.push_back(CapTess);\r
+ ExecutionModeParams[ExecutionModeSpacingFractionalEven].caps.push_back(CapTess);\r
+ ExecutionModeParams[ExecutionModeSpacingFractionalOdd].caps.push_back(CapTess);\r
+ ExecutionModeParams[ExecutionModeVertexOrderCw].caps.push_back(CapTess);\r
+ ExecutionModeParams[ExecutionModeVertexOrderCcw].caps.push_back(CapTess);\r
+ ExecutionModeParams[ExecutionModePixelCenterInteger].caps.push_back(CapShader);\r
+ ExecutionModeParams[ExecutionModeOriginUpperLeft].caps.push_back(CapShader);\r
+ ExecutionModeParams[ExecutionModeEarlyFragmentTests].caps.push_back(CapShader);\r
+ ExecutionModeParams[ExecutionModePointMode].caps.push_back(CapTess);\r
+ ExecutionModeParams[ExecutionModeXfb].caps.push_back(CapShader);\r
+ ExecutionModeParams[ExecutionModeDepthReplacing].caps.push_back(CapShader);\r
+ ExecutionModeParams[ExecutionModeDepthAny].caps.push_back(CapShader);\r
+ ExecutionModeParams[ExecutionModeDepthGreater].caps.push_back(CapShader);\r
+ ExecutionModeParams[ExecutionModeDepthLess].caps.push_back(CapShader);\r
+ ExecutionModeParams[ExecutionModeDepthUnchanged].caps.push_back(CapShader);\r
+ ExecutionModeParams[ExecutionModeLocalSizeHint].caps.push_back(CapKernel);\r
+ ExecutionModeParams[ExecutionModeInputPoints].caps.push_back(CapGeom);\r
+ ExecutionModeParams[ExecutionModeInputLines].caps.push_back(CapGeom);\r
+ ExecutionModeParams[ExecutionModeInputLinesAdjacency].caps.push_back(CapGeom);\r
+ ExecutionModeParams[ExecutionModeInputTriangles].caps.push_back(CapGeom);\r
+ ExecutionModeParams[ExecutionModeInputTriangles].caps.push_back(CapTess);\r
+ ExecutionModeParams[ExecutionModeInputTrianglesAdjacency].caps.push_back(CapGeom);\r
+ ExecutionModeParams[ExecutionModeInputQuads].caps.push_back(CapTess);\r
+ ExecutionModeParams[ExecutionModeInputIsolines].caps.push_back(CapTess);\r
+ ExecutionModeParams[ExecutionModeOutputVertices].caps.push_back(CapGeom);\r
+ ExecutionModeParams[ExecutionModeOutputVertices].caps.push_back(CapTess);\r
+ ExecutionModeParams[ExecutionModeOutputPoints].caps.push_back(CapGeom);\r
+ ExecutionModeParams[ExecutionModeOutputLineStrip].caps.push_back(CapGeom);\r
+ ExecutionModeParams[ExecutionModeOutputTriangleStrip].caps.push_back(CapGeom);\r
+ ExecutionModeParams[ExecutionModeVecTypeHint].caps.push_back(CapKernel);\r
+ ExecutionModeParams[ExecutionModeContractionOff].caps.push_back(CapKernel);\r
+\r
+ DecorationParams[DecorationPrecisionLow].caps.push_back(CapShader);\r
+ DecorationParams[DecorationPrecisionMedium].caps.push_back(CapShader);\r
+ DecorationParams[DecorationPrecisionHigh].caps.push_back(CapShader);\r
+ DecorationParams[DecorationBlock].caps.push_back(CapShader);\r
+ DecorationParams[DecorationBufferBlock].caps.push_back(CapShader);\r
+ DecorationParams[DecorationRowMajor].caps.push_back(CapMatrix);\r
+ DecorationParams[DecorationColMajor].caps.push_back(CapMatrix);\r
+ DecorationParams[DecorationGLSLShared].caps.push_back(CapShader);\r
+ DecorationParams[DecorationGLSLStd140].caps.push_back(CapShader);\r
+ DecorationParams[DecorationGLSLStd430].caps.push_back(CapShader);\r
+ DecorationParams[DecorationGLSLPacked].caps.push_back(CapShader);\r
+ DecorationParams[DecorationSmooth].caps.push_back(CapShader);\r
+ DecorationParams[DecorationNoperspective].caps.push_back(CapShader);\r
+ DecorationParams[DecorationFlat].caps.push_back(CapShader);\r
+ DecorationParams[DecorationPatch].caps.push_back(CapTess);\r
+ DecorationParams[DecorationCentroid].caps.push_back(CapShader);\r
+ DecorationParams[DecorationSample].caps.push_back(CapShader);\r
+ DecorationParams[DecorationInvariant].caps.push_back(CapShader);\r
+ DecorationParams[DecorationConstant].caps.push_back(CapKernel);\r
+ DecorationParams[DecorationUniform].caps.push_back(CapShader);\r
+ DecorationParams[DecorationCPacked].caps.push_back(CapKernel);\r
+ DecorationParams[DecorationSaturatedConversion].caps.push_back(CapKernel);\r
+ DecorationParams[DecorationStream].caps.push_back(CapGeom);\r
+ DecorationParams[DecorationLocation].caps.push_back(CapShader);\r
+ DecorationParams[DecorationComponent].caps.push_back(CapShader);\r
+ DecorationParams[DecorationIndex].caps.push_back(CapShader);\r
+ DecorationParams[DecorationBinding].caps.push_back(CapShader);\r
+ DecorationParams[DecorationDescriptorSet].caps.push_back(CapShader);\r
+ DecorationParams[DecorationXfbBuffer].caps.push_back(CapShader);\r
+ DecorationParams[DecorationStride].caps.push_back(CapShader);\r
+ DecorationParams[DecorationBuiltIn].caps.push_back(CapShader);\r
+ DecorationParams[DecorationFuncParamAttr].caps.push_back(CapKernel);\r
+ DecorationParams[DecorationFPRoundingMode].caps.push_back(CapKernel);\r
+ DecorationParams[DecorationFPFastMathMode].caps.push_back(CapKernel);\r
+ DecorationParams[DecorationLinkageAttributes].caps.push_back(CapLink);\r
+ DecorationParams[DecorationSpecId].caps.push_back(CapShader);\r
+\r
+ BuiltInParams[BuiltInPosition].caps.push_back(CapShader);\r
+ BuiltInParams[BuiltInPointSize].caps.push_back(CapShader);\r
+ BuiltInParams[BuiltInClipVertex].caps.push_back(CapShader);\r
+ BuiltInParams[BuiltInClipDistance].caps.push_back(CapShader);\r
+ BuiltInParams[BuiltInCullDistance].caps.push_back(CapShader);\r
+ BuiltInParams[BuiltInVertexId].caps.push_back(CapShader);\r
+ BuiltInParams[BuiltInInstanceId].caps.push_back(CapShader);\r
+ BuiltInParams[BuiltInPrimitiveId].caps.push_back(CapGeom);\r
+ BuiltInParams[BuiltInPrimitiveId].caps.push_back(CapTess);\r
+ BuiltInParams[BuiltInInvocationId].caps.push_back(CapGeom);\r
+ BuiltInParams[BuiltInInvocationId].caps.push_back(CapTess);\r
+ BuiltInParams[BuiltInLayer].caps.push_back(CapGeom);\r
+ BuiltInParams[BuiltInViewportIndex].caps.push_back(CapGeom);\r
+ BuiltInParams[BuiltInTessLevelOuter].caps.push_back(CapTess);\r
+ BuiltInParams[BuiltInTessLevelInner].caps.push_back(CapTess);\r
+ BuiltInParams[BuiltInTessCoord].caps.push_back(CapTess);\r
+ BuiltInParams[BuiltInPatchVertices].caps.push_back(CapTess);\r
+ BuiltInParams[BuiltInFragCoord].caps.push_back(CapShader);\r
+ BuiltInParams[BuiltInPointCoord].caps.push_back(CapShader);\r
+ BuiltInParams[BuiltInFrontFacing].caps.push_back(CapShader);\r
+ BuiltInParams[BuiltInSampleId].caps.push_back(CapShader);\r
+ BuiltInParams[BuiltInSamplePosition].caps.push_back(CapShader);\r
+ BuiltInParams[BuiltInSampleMask].caps.push_back(CapShader);\r
+ BuiltInParams[BuiltInFragColor].caps.push_back(CapShader);\r
+ BuiltInParams[BuiltInFragDepth].caps.push_back(CapShader);\r
+ BuiltInParams[BuiltInHelperInvocation].caps.push_back(CapShader);\r
+ BuiltInParams[BuiltInLocalInvocationIndex].caps.push_back(CapShader);\r
+ BuiltInParams[BuiltInWorkDim].caps.push_back(CapKernel);\r
+ BuiltInParams[BuiltInGlobalSize].caps.push_back(CapKernel);\r
+ BuiltInParams[BuiltInEnqueuedWorkgroupSize].caps.push_back(CapKernel);\r
+ BuiltInParams[BuiltInGlobalOffset].caps.push_back(CapKernel);\r
+ BuiltInParams[BuiltInGlobalLinearId].caps.push_back(CapKernel);\r
+ BuiltInParams[BuiltInWorkgroupLinearId].caps.push_back(CapKernel);\r
+\r
+ BuiltInParams[BuiltInSubgroupSize].caps.push_back(CapKernel);\r
+ BuiltInParams[BuiltInSubgroupMaxSize].caps.push_back(CapKernel);\r
+ BuiltInParams[BuiltInNumSubgroups].caps.push_back(CapKernel);\r
+ BuiltInParams[BuiltInNumEnqueuedSubgroups].caps.push_back(CapKernel);\r
+ BuiltInParams[BuiltInSubgroupId].caps.push_back(CapKernel);\r
+ BuiltInParams[BuiltInSubgroupLocalInvocationId].caps.push_back(CapKernel);\r
+\r
+ DimensionalityParams[DimCube].caps.push_back(CapShader);\r
+ DimensionalityParams[DimRect].caps.push_back(CapShader);\r
+\r
+ // Group Operations\r
+ for (int i = 0; i < GroupOperationCeiling; ++i) {\r
+ GroupOperationParams[i].caps.push_back(CapKernel);\r
+ }\r
+\r
+ // Enqueue flags\r
+ for (int i = 0; i < KernelEnqueueFlagsCeiling; ++i) {\r
+ KernelEnqueueFlagsParams[i].caps.push_back(CapKernel);\r
+ }\r
+\r
+ // Profiling info\r
+ KernelProfilingInfoParams[0].caps.push_back(CapKernel);\r
+\r
+ // set name of operator, an initial set of <id> style operands, and the description\r
+\r
+ InstructionDesc[OpSource].operands.push(OperandSource, "");\r
+ InstructionDesc[OpSource].operands.push(OperandLiteralNumber, "'Version'");\r
+\r
+ InstructionDesc[OpSourceExtension].operands.push(OperandLiteralString, "'Extension'");\r
+\r
+ InstructionDesc[OpName].operands.push(OperandId, "'Target'");\r
+ InstructionDesc[OpName].operands.push(OperandLiteralString, "'Name'");\r
+\r
+ InstructionDesc[OpMemberName].operands.push(OperandId, "'Type'");\r
+ InstructionDesc[OpMemberName].operands.push(OperandLiteralNumber, "'Member'");\r
+ InstructionDesc[OpMemberName].operands.push(OperandLiteralString, "'Name'");\r
+\r
+ InstructionDesc[OpString].operands.push(OperandLiteralString, "'String'");\r
+\r
+ InstructionDesc[OpLine].operands.push(OperandId, "'Target'");\r
+ InstructionDesc[OpLine].operands.push(OperandId, "'File'");\r
+ InstructionDesc[OpLine].operands.push(OperandLiteralNumber, "'Line'");\r
+ InstructionDesc[OpLine].operands.push(OperandLiteralNumber, "'Column'");\r
+\r
+ InstructionDesc[OpExtension].operands.push(OperandLiteralString, "'Name'");\r
+\r
+ InstructionDesc[OpExtInstImport].operands.push(OperandLiteralString, "'Name'");\r
+\r
+ InstructionDesc[OpMemoryModel].operands.push(OperandAddressing, "");\r
+ InstructionDesc[OpMemoryModel].operands.push(OperandMemory, "");\r
+\r
+ InstructionDesc[OpEntryPoint].operands.push(OperandExecutionModel, "");\r
+ InstructionDesc[OpEntryPoint].operands.push(OperandId, "'Entry Point'");\r
+\r
+ InstructionDesc[OpExecutionMode].operands.push(OperandId, "'Entry Point'");\r
+ InstructionDesc[OpExecutionMode].operands.push(OperandExecutionMode, "'Mode'");\r
+ InstructionDesc[OpExecutionMode].operands.push(OperandVariableLiterals, "See <<Execution Mode,Execution Mode>>");\r
+\r
+ InstructionDesc[OpTypeInt].operands.push(OperandLiteralNumber, "'Width'");\r
+ InstructionDesc[OpTypeInt].operands.push(OperandLiteralNumber, "'Signedness'");\r
+\r
+ InstructionDesc[OpTypeFloat].operands.push(OperandLiteralNumber, "'Width'");\r
+\r
+ InstructionDesc[OpTypeVector].operands.push(OperandId, "'Component type'");\r
+ InstructionDesc[OpTypeVector].operands.push(OperandLiteralNumber, "'Component count'");\r
+\r
+ InstructionDesc[OpTypeMatrix].capabilities.push_back(CapMatrix);\r
+ InstructionDesc[OpTypeMatrix].operands.push(OperandId, "'Column type'");\r
+ InstructionDesc[OpTypeMatrix].operands.push(OperandLiteralNumber, "'Column count'");\r
+\r
+ InstructionDesc[OpTypeSampler].operands.push(OperandId, "'Sampled Type'");\r
+ InstructionDesc[OpTypeSampler].operands.push(OperandDimensionality, "");\r
+ InstructionDesc[OpTypeSampler].operands.push(OperandLiteralNumber, "'Content'");\r
+ InstructionDesc[OpTypeSampler].operands.push(OperandLiteralNumber, "'Arrayed'");\r
+ InstructionDesc[OpTypeSampler].operands.push(OperandLiteralNumber, "'Compare'");\r
+ InstructionDesc[OpTypeSampler].operands.push(OperandLiteralNumber, "'MS'");\r
+ InstructionDesc[OpTypeSampler].operands.push(OperandOptionalId, "'Qualifier'");\r
+\r
+ InstructionDesc[OpTypeArray].operands.push(OperandId, "'Element type'");\r
+ InstructionDesc[OpTypeArray].operands.push(OperandId, "'Length'");\r
+\r
+ InstructionDesc[OpTypeRuntimeArray].capabilities.push_back(CapShader);\r
+ InstructionDesc[OpTypeRuntimeArray].operands.push(OperandId, "'Element type'");\r
+\r
+ InstructionDesc[OpTypeStruct].operands.push(OperandVariableIds, "'Member 0 type', +\n'member 1 type', +\n...");\r
+\r
+ InstructionDesc[OpTypeOpaque].capabilities.push_back(CapKernel);\r
+ InstructionDesc[OpTypeOpaque].operands.push(OperandLiteralString, "The name of the opaque type.");\r
+\r
+ InstructionDesc[OpTypePointer].operands.push(OperandStorage, "");\r
+ InstructionDesc[OpTypePointer].operands.push(OperandId, "'Type'");\r
+\r
+ InstructionDesc[OpTypeEvent].capabilities.push_back(CapKernel);\r
+\r
+ InstructionDesc[OpTypeDeviceEvent].capabilities.push_back(CapKernel);\r
+\r
+ InstructionDesc[OpTypeReserveId].capabilities.push_back(CapKernel);\r
+\r
+ InstructionDesc[OpTypeQueue].capabilities.push_back(CapKernel);\r
+\r
+ InstructionDesc[OpTypePipe].operands.push(OperandId, "'Type'");\r
+ InstructionDesc[OpTypePipe].operands.push(OperandAccessQualifier, "'Qualifier'");\r
+ InstructionDesc[OpTypePipe].capabilities.push_back(CapKernel);\r
+\r
+ InstructionDesc[OpTypeFunction].operands.push(OperandId, "'Return Type'");\r
+ InstructionDesc[OpTypeFunction].operands.push(OperandVariableIds, "'Parameter 0 Type', +\n'Parameter 1 Type', +\n...");\r
+\r
+ InstructionDesc[OpConstant].operands.push(OperandVariableLiterals, "'Value'");\r
+\r
+ InstructionDesc[OpConstantComposite].operands.push(OperandVariableIds, "'Constituents'");\r
+\r
+ InstructionDesc[OpConstantNullPointer].capabilities.push_back(CapAddr);\r
+\r
+ InstructionDesc[OpConstantNullObject].capabilities.push_back(CapKernel);\r
+\r
+ InstructionDesc[OpConstantSampler].capabilities.push_back(CapKernel);\r
+ InstructionDesc[OpConstantSampler].operands.push(OperandLiteralNumber, "'Mode'");\r
+ InstructionDesc[OpConstantSampler].operands.push(OperandLiteralNumber, "'Param'");\r
+ InstructionDesc[OpConstantSampler].operands.push(OperandLiteralNumber, "'Filter'");\r
+\r
+ InstructionDesc[OpSpecConstantTrue].capabilities.push_back(CapShader);\r
+\r
+ InstructionDesc[OpSpecConstantFalse].capabilities.push_back(CapShader);\r
+\r
+ InstructionDesc[OpSpecConstant].operands.push(OperandVariableLiterals, "'Value'");\r
+ InstructionDesc[OpSpecConstant].capabilities.push_back(CapShader);\r
+\r
+ InstructionDesc[OpSpecConstantComposite].operands.push(OperandVariableIds, "'Constituents'");\r
+ InstructionDesc[OpSpecConstantComposite].capabilities.push_back(CapShader);\r
+\r
+ InstructionDesc[OpVariable].operands.push(OperandStorage, "");\r
+ InstructionDesc[OpVariable].operands.push(OperandOptionalId, "'Initializer'");\r
+\r
+ InstructionDesc[OpVariableArray].operands.push(OperandStorage, "");\r
+ InstructionDesc[OpVariableArray].operands.push(OperandId, "'N'");\r
+ InstructionDesc[OpVariableArray].capabilities.push_back(CapAddr);\r
+\r
+ InstructionDesc[OpFunction].operands.push(OperandFunction, "");\r
+ InstructionDesc[OpFunction].operands.push(OperandId, "'Function Type'");\r
+\r
+ InstructionDesc[OpFunctionCall].operands.push(OperandId, "'Function'");\r
+ InstructionDesc[OpFunctionCall].operands.push(OperandVariableIds, "'Argument 0', +\n'Argument 1', +\n...");\r
+\r
+ InstructionDesc[OpExtInst].operands.push(OperandId, "'Set'");\r
+ InstructionDesc[OpExtInst].operands.push(OperandLiteralNumber, "'Instruction'");\r
+ InstructionDesc[OpExtInst].operands.push(OperandVariableIds, "'Operand 1', +\n'Operand 2', +\n...");\r
+\r
+ InstructionDesc[OpLoad].operands.push(OperandId, "'Pointer'");\r
+ InstructionDesc[OpLoad].operands.push(OperandVariableLiterals, "'Memory Access'");\r
+\r
+ InstructionDesc[OpStore].operands.push(OperandId, "'Pointer'");\r
+ InstructionDesc[OpStore].operands.push(OperandId, "'Object'");\r
+ InstructionDesc[OpStore].operands.push(OperandVariableLiterals, "'Memory Access'");\r
+\r
+ InstructionDesc[OpPhi].operands.push(OperandVariableIds, "");\r
+\r
+ InstructionDesc[OpDecorate].operands.push(OperandId, "'Target'");\r
+ InstructionDesc[OpDecorate].operands.push(OperandDecoration, "");\r
+ InstructionDesc[OpDecorate].operands.push(OperandVariableLiterals, "See <<Decoration,'Decoration'>>.");\r
+\r
+ InstructionDesc[OpMemberDecorate].operands.push(OperandId, "'Structure type'");\r
+ InstructionDesc[OpMemberDecorate].operands.push(OperandLiteralNumber, "'Member'");\r
+ InstructionDesc[OpMemberDecorate].operands.push(OperandDecoration, "");\r
+ InstructionDesc[OpMemberDecorate].operands.push(OperandVariableLiterals, "See <<Decoration,'Decoration'>>.");\r
+\r
+ InstructionDesc[OpGroupDecorate].operands.push(OperandId, "'Decoration group'");\r
+ InstructionDesc[OpGroupDecorate].operands.push(OperandVariableIds, "'Target', 'Target', ...");\r
+\r
+ InstructionDesc[OpGroupMemberDecorate].operands.push(OperandId, "'Decoration group'");\r
+ InstructionDesc[OpGroupMemberDecorate].operands.push(OperandVariableIds, "'Target', 'Target', ...");\r
+\r
+ InstructionDesc[OpVectorExtractDynamic].operands.push(OperandId, "'Vector'");\r
+ InstructionDesc[OpVectorExtractDynamic].operands.push(OperandId, "'Index'");\r
+\r
+ InstructionDesc[OpVectorInsertDynamic].operands.push(OperandId, "'Vector'");\r
+ InstructionDesc[OpVectorInsertDynamic].operands.push(OperandId, "'Component'");\r
+ InstructionDesc[OpVectorInsertDynamic].operands.push(OperandId, "'Index'");\r
+\r
+ InstructionDesc[OpVectorShuffle].operands.push(OperandId, "'Vector 1'");\r
+ InstructionDesc[OpVectorShuffle].operands.push(OperandId, "'Vector 2'");\r
+ InstructionDesc[OpVectorShuffle].operands.push(OperandVariableLiterals, "'Components'");\r
+\r
+ InstructionDesc[OpCompositeConstruct].operands.push(OperandVariableIds, "'Constituents'");\r
+\r
+ InstructionDesc[OpCompositeExtract].operands.push(OperandId, "'Composite'");\r
+ InstructionDesc[OpCompositeExtract].operands.push(OperandVariableLiterals, "'Indexes'");\r
+\r
+ InstructionDesc[OpCompositeInsert].operands.push(OperandId, "'Object'");\r
+ InstructionDesc[OpCompositeInsert].operands.push(OperandId, "'Composite'");\r
+ InstructionDesc[OpCompositeInsert].operands.push(OperandVariableLiterals, "'Indexes'");\r
+\r
+ InstructionDesc[OpCopyObject].operands.push(OperandId, "'Operand'");\r
+\r
+ InstructionDesc[OpCopyMemory].operands.push(OperandId, "'Target'");\r
+ InstructionDesc[OpCopyMemory].operands.push(OperandId, "'Source'");\r
+ InstructionDesc[OpCopyMemory].operands.push(OperandVariableLiterals, "'Memory Access'");\r
+\r
+ InstructionDesc[OpCopyMemorySized].operands.push(OperandId, "'Target'");\r
+ InstructionDesc[OpCopyMemorySized].operands.push(OperandId, "'Source'");\r
+ InstructionDesc[OpCopyMemorySized].operands.push(OperandId, "'Size'");\r
+ InstructionDesc[OpCopyMemorySized].operands.push(OperandVariableLiterals, "'Memory Access'");\r
+\r
+ InstructionDesc[OpCopyMemorySized].capabilities.push_back(CapAddr);\r
+\r
+ InstructionDesc[OpSampler].operands.push(OperandId, "'Sampler'");\r
+ InstructionDesc[OpSampler].operands.push(OperandId, "'Filter'");\r
+\r
+ InstructionDesc[OpTextureSample].operands.push(OperandId, "'Sampler'");\r
+ InstructionDesc[OpTextureSample].operands.push(OperandId, "'Coordinate'");\r
+ InstructionDesc[OpTextureSample].operands.push(OperandOptionalId, "['Bias']");\r
+ InstructionDesc[OpTextureSample].capabilities.push_back(CapShader);\r
+\r
+ InstructionDesc[OpTextureSampleDref].operands.push(OperandId, "'Sampler'");\r
+ InstructionDesc[OpTextureSampleDref].operands.push(OperandId, "'Coordinate'");\r
+ InstructionDesc[OpTextureSampleDref].operands.push(OperandId, "'D~ref~'");\r
+ InstructionDesc[OpTextureSampleDref].capabilities.push_back(CapShader);\r
+\r
+ InstructionDesc[OpTextureSampleLod].operands.push(OperandId, "'Sampler'");\r
+ InstructionDesc[OpTextureSampleLod].operands.push(OperandId, "'Coordinate'");\r
+ InstructionDesc[OpTextureSampleLod].operands.push(OperandId, "'Level of Detail'");\r
+ InstructionDesc[OpTextureSampleLod].capabilities.push_back(CapShader);\r
+\r
+ InstructionDesc[OpTextureSampleProj].operands.push(OperandId, "'Sampler'");\r
+ InstructionDesc[OpTextureSampleProj].operands.push(OperandId, "'Coordinate'");\r
+ InstructionDesc[OpTextureSampleProj].operands.push(OperandOptionalId, "['Bias']");\r
+ InstructionDesc[OpTextureSampleProj].capabilities.push_back(CapShader);\r
+\r
+ InstructionDesc[OpTextureSampleGrad].operands.push(OperandId, "'Sampler'");\r
+ InstructionDesc[OpTextureSampleGrad].operands.push(OperandId, "'Coordinate'");\r
+ InstructionDesc[OpTextureSampleGrad].operands.push(OperandId, "'dx'");\r
+ InstructionDesc[OpTextureSampleGrad].operands.push(OperandId, "'dy'");\r
+ InstructionDesc[OpTextureSampleGrad].capabilities.push_back(CapShader);\r
+\r
+ InstructionDesc[OpTextureSampleOffset].operands.push(OperandId, "'Sampler'");\r
+ InstructionDesc[OpTextureSampleOffset].operands.push(OperandId, "'Coordinate'");\r
+ InstructionDesc[OpTextureSampleOffset].operands.push(OperandId, "'Offset'");\r
+ InstructionDesc[OpTextureSampleOffset].operands.push(OperandOptionalId, "['Bias']");\r
+ InstructionDesc[OpTextureSampleOffset].capabilities.push_back(CapShader);\r
+\r
+ InstructionDesc[OpTextureSampleProjLod].operands.push(OperandId, "'Sampler'");\r
+ InstructionDesc[OpTextureSampleProjLod].operands.push(OperandId, "'Coordinate'");\r
+ InstructionDesc[OpTextureSampleProjLod].operands.push(OperandId, "'Level of Detail'");\r
+ InstructionDesc[OpTextureSampleProjLod].capabilities.push_back(CapShader);\r
+\r
+ InstructionDesc[OpTextureSampleProjGrad].operands.push(OperandId, "'Sampler'");\r
+ InstructionDesc[OpTextureSampleProjGrad].operands.push(OperandId, "'Coordinate'");\r
+ InstructionDesc[OpTextureSampleProjGrad].operands.push(OperandId, "'dx'");\r
+ InstructionDesc[OpTextureSampleProjGrad].operands.push(OperandId, "'dy'");\r
+ InstructionDesc[OpTextureSampleProjGrad].capabilities.push_back(CapShader);\r
+\r
+ InstructionDesc[OpTextureSampleLodOffset].operands.push(OperandId, "'Sampler'");\r
+ InstructionDesc[OpTextureSampleLodOffset].operands.push(OperandId, "'Coordinate'");\r
+ InstructionDesc[OpTextureSampleLodOffset].operands.push(OperandId, "'Level of Detail'");\r
+ InstructionDesc[OpTextureSampleLodOffset].operands.push(OperandId, "'Offset'");\r
+ InstructionDesc[OpTextureSampleLodOffset].capabilities.push_back(CapShader);\r
+\r
+ InstructionDesc[OpTextureSampleProjOffset].operands.push(OperandId, "'Sampler'");\r
+ InstructionDesc[OpTextureSampleProjOffset].operands.push(OperandId, "'Coordinate'");\r
+ InstructionDesc[OpTextureSampleProjOffset].operands.push(OperandId, "'Offset'");\r
+ InstructionDesc[OpTextureSampleProjOffset].operands.push(OperandOptionalId, "['Bias']");\r
+ InstructionDesc[OpTextureSampleProjOffset].capabilities.push_back(CapShader);\r
+\r
+ InstructionDesc[OpTextureSampleGradOffset].operands.push(OperandId, "'Sampler'");\r
+ InstructionDesc[OpTextureSampleGradOffset].operands.push(OperandId, "'Coordinate'");\r
+ InstructionDesc[OpTextureSampleGradOffset].operands.push(OperandId, "'dx'");\r
+ InstructionDesc[OpTextureSampleGradOffset].operands.push(OperandId, "'dy'");\r
+ InstructionDesc[OpTextureSampleGradOffset].operands.push(OperandId, "'Offset'");\r
+ InstructionDesc[OpTextureSampleGradOffset].capabilities.push_back(CapShader);\r
+\r
+ InstructionDesc[OpTextureSampleProjLodOffset].operands.push(OperandId, "'Sampler'");\r
+ InstructionDesc[OpTextureSampleProjLodOffset].operands.push(OperandId, "'Coordinate'");\r
+ InstructionDesc[OpTextureSampleProjLodOffset].operands.push(OperandId, "'Level of Detail'");\r
+ InstructionDesc[OpTextureSampleProjLodOffset].operands.push(OperandId, "'Offset'");\r
+ InstructionDesc[OpTextureSampleProjLodOffset].capabilities.push_back(CapShader);\r
+\r
+ InstructionDesc[OpTextureSampleProjGradOffset].operands.push(OperandId, "'Sampler'");\r
+ InstructionDesc[OpTextureSampleProjGradOffset].operands.push(OperandId, "'Coordinate'");\r
+ InstructionDesc[OpTextureSampleProjGradOffset].operands.push(OperandId, "'dx'");\r
+ InstructionDesc[OpTextureSampleProjGradOffset].operands.push(OperandId, "'dy'");\r
+ InstructionDesc[OpTextureSampleProjGradOffset].operands.push(OperandId, "'Offset'");\r
+ InstructionDesc[OpTextureSampleProjGradOffset].capabilities.push_back(CapShader);\r
+\r
+ InstructionDesc[OpTextureFetchTexelLod].operands.push(OperandId, "'Sampler'");\r
+ InstructionDesc[OpTextureFetchTexelLod].operands.push(OperandId, "'Coordinate'");\r
+ InstructionDesc[OpTextureFetchTexelLod].operands.push(OperandId, "'Level of Detail'");\r
+ InstructionDesc[OpTextureFetchTexelLod].capabilities.push_back(CapShader);\r
+\r
+ InstructionDesc[OpTextureFetchTexelOffset].operands.push(OperandId, "'Sampler'");\r
+ InstructionDesc[OpTextureFetchTexelOffset].operands.push(OperandId, "'Coordinate'");\r
+ InstructionDesc[OpTextureFetchTexelOffset].operands.push(OperandId, "'Offset'");\r
+ InstructionDesc[OpTextureFetchTexelOffset].capabilities.push_back(CapShader);\r
+\r
+ InstructionDesc[OpTextureFetchSample].operands.push(OperandId, "'Sampler'");\r
+ InstructionDesc[OpTextureFetchSample].operands.push(OperandId, "'Coordinate'");\r
+ InstructionDesc[OpTextureFetchSample].operands.push(OperandId, "'Sample'");\r
+ InstructionDesc[OpTextureFetchSample].capabilities.push_back(CapShader);\r
+\r
+ InstructionDesc[OpTextureFetchTexel].operands.push(OperandId, "'Sampler'");\r
+ InstructionDesc[OpTextureFetchTexel].operands.push(OperandId, "'Element'");\r
+ InstructionDesc[OpTextureFetchTexel].capabilities.push_back(CapShader);\r
+\r
+ InstructionDesc[OpTextureGather].operands.push(OperandId, "'Sampler'");\r
+ InstructionDesc[OpTextureGather].operands.push(OperandId, "'Coordinate'");\r
+ InstructionDesc[OpTextureGather].operands.push(OperandId, "'Component'");\r
+ InstructionDesc[OpTextureGather].capabilities.push_back(CapShader);\r
+\r
+ InstructionDesc[OpTextureGatherOffset].operands.push(OperandId, "'Sampler'");\r
+ InstructionDesc[OpTextureGatherOffset].operands.push(OperandId, "'Coordinate'");\r
+ InstructionDesc[OpTextureGatherOffset].operands.push(OperandId, "'Component'");\r
+ InstructionDesc[OpTextureGatherOffset].operands.push(OperandId, "'Offset'");\r
+ InstructionDesc[OpTextureGatherOffset].capabilities.push_back(CapShader);\r
+\r
+ InstructionDesc[OpTextureGatherOffsets].operands.push(OperandId, "'Sampler'");\r
+ InstructionDesc[OpTextureGatherOffsets].operands.push(OperandId, "'Coordinate'");\r
+ InstructionDesc[OpTextureGatherOffsets].operands.push(OperandId, "'Component'");\r
+ InstructionDesc[OpTextureGatherOffsets].operands.push(OperandId, "'Offsets'");\r
+ InstructionDesc[OpTextureGatherOffsets].capabilities.push_back(CapShader);\r
+\r
+ InstructionDesc[OpTextureQuerySizeLod].operands.push(OperandId, "'Sampler'");\r
+ InstructionDesc[OpTextureQuerySizeLod].operands.push(OperandId, "'Level of Detail'");\r
+ InstructionDesc[OpTextureQuerySizeLod].capabilities.push_back(CapShader);\r
+\r
+ InstructionDesc[OpTextureQuerySize].operands.push(OperandId, "'Sampler'");\r
+ InstructionDesc[OpTextureQuerySize].capabilities.push_back(CapShader);\r
+\r
+ InstructionDesc[OpTextureQueryLod].operands.push(OperandId, "'Sampler'");\r
+ InstructionDesc[OpTextureQueryLod].operands.push(OperandId, "'Coordinate'");\r
+ InstructionDesc[OpTextureQueryLod].capabilities.push_back(CapShader);\r
+\r
+ InstructionDesc[OpTextureQueryLevels].operands.push(OperandId, "'Sampler'");\r
+ InstructionDesc[OpTextureQueryLevels].capabilities.push_back(CapShader);\r
+\r
+ InstructionDesc[OpTextureQuerySamples].operands.push(OperandId, "'Sampler'");\r
+ InstructionDesc[OpTextureQuerySamples].capabilities.push_back(CapShader);\r
+\r
+ InstructionDesc[OpAccessChain].operands.push(OperandId, "'Base'");\r
+ InstructionDesc[OpAccessChain].operands.push(OperandVariableIds, "'Indexes'");\r
+\r
+ InstructionDesc[OpInBoundsAccessChain].operands.push(OperandId, "'Base'");\r
+ InstructionDesc[OpInBoundsAccessChain].operands.push(OperandVariableIds, "'Indexes'");\r
+\r
+ InstructionDesc[OpSNegate].operands.push(OperandId, "'Operand'");\r
+\r
+ InstructionDesc[OpFNegate].operands.push(OperandId, "'Operand'");\r
+\r
+ InstructionDesc[OpNot].operands.push(OperandId, "'Operand'");\r
+\r
+ InstructionDesc[OpAny].operands.push(OperandId, "'Vector'");\r
+\r
+ InstructionDesc[OpAll].operands.push(OperandId, "'Vector'");\r
+\r
+ InstructionDesc[OpConvertFToU].operands.push(OperandId, "'Float Value'");\r
+\r
+ InstructionDesc[OpConvertFToS].operands.push(OperandId, "'Float Value'");\r
+\r
+ InstructionDesc[OpConvertSToF].operands.push(OperandId, "'Signed Value'");\r
+\r
+ InstructionDesc[OpConvertUToF].operands.push(OperandId, "'Unsigned value'");\r
+\r
+ InstructionDesc[OpUConvert].operands.push(OperandId, "'Unsigned value'");\r
+\r
+ InstructionDesc[OpSConvert].operands.push(OperandId, "'Signed Value'");\r
+\r
+ InstructionDesc[OpFConvert].operands.push(OperandId, "'Float Value'");\r
+\r
+ InstructionDesc[OpSatConvertSToU].operands.push(OperandId, "'Signed Value'");\r
+ InstructionDesc[OpSatConvertSToU].capabilities.push_back(CapKernel);\r
+\r
+ InstructionDesc[OpSatConvertUToS].operands.push(OperandId, "'Unsigned Value'");\r
+ InstructionDesc[OpSatConvertUToS].capabilities.push_back(CapKernel);\r
+\r
+ InstructionDesc[OpConvertPtrToU].operands.push(OperandId, "'Pointer'");\r
+ InstructionDesc[OpConvertPtrToU].capabilities.push_back(CapAddr);\r
+\r
+ InstructionDesc[OpConvertUToPtr].operands.push(OperandId, "'Integer value'");\r
+ InstructionDesc[OpConvertUToPtr].capabilities.push_back(CapAddr);\r
+\r
+ InstructionDesc[OpPtrCastToGeneric].operands.push(OperandId, "'Source pointer'");\r
+ InstructionDesc[OpPtrCastToGeneric].capabilities.push_back(CapKernel);\r
+\r
+\r
+ InstructionDesc[OpGenericCastToPtr].operands.push(OperandId, "'Source pointer'");\r
+ InstructionDesc[OpGenericCastToPtr].capabilities.push_back(CapKernel);\r
+\r
+ InstructionDesc[OpGenericCastToPtrExplicit].operands.push(OperandId, "'Source pointer'");\r
+ InstructionDesc[OpGenericCastToPtrExplicit].operands.push(OperandStorage, "'storage'");\r
+ InstructionDesc[OpGenericCastToPtrExplicit].capabilities.push_back(CapKernel);\r
+\r
+ InstructionDesc[OpGenericPtrMemSemantics].operands.push(OperandId, "'ptr'");\r
+ InstructionDesc[OpGenericPtrMemSemantics].capabilities.push_back(CapKernel);\r
+\r
+ InstructionDesc[OpBitcast].operands.push(OperandId, "'Operand'");\r
+\r
+ InstructionDesc[OpTranspose].capabilities.push_back(CapMatrix);\r
+ InstructionDesc[OpTranspose].operands.push(OperandId, "'Matrix'");\r
+\r
+ InstructionDesc[OpIsNan].operands.push(OperandId, "'x'");\r
+\r
+ InstructionDesc[OpIsInf].operands.push(OperandId, "'x'");\r
+\r
+ InstructionDesc[OpIsFinite].capabilities.push_back(CapKernel);\r
+ InstructionDesc[OpIsFinite].operands.push(OperandId, "'x'");\r
+\r
+ InstructionDesc[OpIsNormal].capabilities.push_back(CapKernel);\r
+ InstructionDesc[OpIsNormal].operands.push(OperandId, "'x'");\r
+\r
+ InstructionDesc[OpSignBitSet].capabilities.push_back(CapKernel);\r
+ InstructionDesc[OpSignBitSet].operands.push(OperandId, "'x'");\r
+\r
+ InstructionDesc[OpLessOrGreater].capabilities.push_back(CapKernel);\r
+ InstructionDesc[OpLessOrGreater].operands.push(OperandId, "'x'");\r
+ InstructionDesc[OpLessOrGreater].operands.push(OperandId, "'y'");\r
+\r
+ InstructionDesc[OpOrdered].capabilities.push_back(CapKernel);\r
+ InstructionDesc[OpOrdered].operands.push(OperandId, "'x'");\r
+ InstructionDesc[OpOrdered].operands.push(OperandId, "'y'");\r
+\r
+ InstructionDesc[OpUnordered].capabilities.push_back(CapKernel);\r
+ InstructionDesc[OpUnordered].operands.push(OperandId, "'x'");\r
+ InstructionDesc[OpUnordered].operands.push(OperandId, "'y'");\r
+\r
+ InstructionDesc[OpArrayLength].operands.push(OperandId, "'Structure'");\r
+ InstructionDesc[OpArrayLength].operands.push(OperandLiteralNumber, "'Array member'");\r
+ InstructionDesc[OpArrayLength].capabilities.push_back(CapShader);\r
+\r
+ InstructionDesc[OpIAdd].operands.push(OperandId, "'Operand 1'");\r
+ InstructionDesc[OpIAdd].operands.push(OperandId, "'Operand 2'");\r
+\r
+ InstructionDesc[OpFAdd].operands.push(OperandId, "'Operand 1'");\r
+ InstructionDesc[OpFAdd].operands.push(OperandId, "'Operand 2'");\r
+\r
+ InstructionDesc[OpISub].operands.push(OperandId, "'Operand 1'");\r
+ InstructionDesc[OpISub].operands.push(OperandId, "'Operand 2'");\r
+\r
+ InstructionDesc[OpFSub].operands.push(OperandId, "'Operand 1'");\r
+ InstructionDesc[OpFSub].operands.push(OperandId, "'Operand 2'");\r
+\r
+ InstructionDesc[OpIMul].operands.push(OperandId, "'Operand 1'");\r
+ InstructionDesc[OpIMul].operands.push(OperandId, "'Operand 2'");\r
+\r
+ InstructionDesc[OpFMul].operands.push(OperandId, "'Operand 1'");\r
+ InstructionDesc[OpFMul].operands.push(OperandId, "'Operand 2'");\r
+\r
+ InstructionDesc[OpUDiv].operands.push(OperandId, "'Operand 1'");\r
+ InstructionDesc[OpUDiv].operands.push(OperandId, "'Operand 2'");\r
+\r
+ InstructionDesc[OpSDiv].operands.push(OperandId, "'Operand 1'");\r
+ InstructionDesc[OpSDiv].operands.push(OperandId, "'Operand 2'");\r
+\r
+ InstructionDesc[OpFDiv].operands.push(OperandId, "'Operand 1'");\r
+ InstructionDesc[OpFDiv].operands.push(OperandId, "'Operand 2'");\r
+\r
+ InstructionDesc[OpUMod].operands.push(OperandId, "'Operand 1'");\r
+ InstructionDesc[OpUMod].operands.push(OperandId, "'Operand 2'");\r
+\r
+ InstructionDesc[OpSRem].operands.push(OperandId, "'Operand 1'");\r
+ InstructionDesc[OpSRem].operands.push(OperandId, "'Operand 2'");\r
+\r
+ InstructionDesc[OpSMod].operands.push(OperandId, "'Operand 1'");\r
+ InstructionDesc[OpSMod].operands.push(OperandId, "'Operand 2'");\r
+\r
+ InstructionDesc[OpFRem].operands.push(OperandId, "'Operand 1'");\r
+ InstructionDesc[OpFRem].operands.push(OperandId, "'Operand 2'");\r
+\r
+ InstructionDesc[OpFMod].operands.push(OperandId, "'Operand 1'");\r
+ InstructionDesc[OpFMod].operands.push(OperandId, "'Operand 2'");\r
+\r
+ InstructionDesc[OpVectorTimesScalar].operands.push(OperandId, "'Vector'");\r
+ InstructionDesc[OpVectorTimesScalar].operands.push(OperandId, "'Scalar'");\r
+\r
+ InstructionDesc[OpMatrixTimesScalar].capabilities.push_back(CapMatrix);\r
+ InstructionDesc[OpMatrixTimesScalar].operands.push(OperandId, "'Matrix'");\r
+ InstructionDesc[OpMatrixTimesScalar].operands.push(OperandId, "'Scalar'");\r
+\r
+ InstructionDesc[OpVectorTimesMatrix].capabilities.push_back(CapMatrix);\r
+ InstructionDesc[OpVectorTimesMatrix].operands.push(OperandId, "'Vector'");\r
+ InstructionDesc[OpVectorTimesMatrix].operands.push(OperandId, "'Matrix'");\r
+\r
+ InstructionDesc[OpMatrixTimesVector].capabilities.push_back(CapMatrix);\r
+ InstructionDesc[OpMatrixTimesVector].operands.push(OperandId, "'Matrix'");\r
+ InstructionDesc[OpMatrixTimesVector].operands.push(OperandId, "'Vector'");\r
+\r
+ InstructionDesc[OpMatrixTimesMatrix].capabilities.push_back(CapMatrix);\r
+ InstructionDesc[OpMatrixTimesMatrix].operands.push(OperandId, "'LeftMatrix'");\r
+ InstructionDesc[OpMatrixTimesMatrix].operands.push(OperandId, "'RightMatrix'");\r
+\r
+ InstructionDesc[OpOuterProduct].capabilities.push_back(CapMatrix);\r
+ InstructionDesc[OpOuterProduct].operands.push(OperandId, "'Vector 1'");\r
+ InstructionDesc[OpOuterProduct].operands.push(OperandId, "'Vector 2'");\r
+\r
+ InstructionDesc[OpDot].operands.push(OperandId, "'Vector 1'");\r
+ InstructionDesc[OpDot].operands.push(OperandId, "'Vector 2'");\r
+\r
+ InstructionDesc[OpShiftRightLogical].operands.push(OperandId, "'Operand 1'");\r
+ InstructionDesc[OpShiftRightLogical].operands.push(OperandId, "'Operand 2'");\r
+\r
+ InstructionDesc[OpShiftRightArithmetic].operands.push(OperandId, "'Operand 1'");\r
+ InstructionDesc[OpShiftRightArithmetic].operands.push(OperandId, "'Operand 2'");\r
+\r
+ InstructionDesc[OpShiftLeftLogical].operands.push(OperandId, "'Operand 1'");\r
+ InstructionDesc[OpShiftLeftLogical].operands.push(OperandId, "'Operand 2'");\r
+\r
+ InstructionDesc[OpLogicalOr].operands.push(OperandId, "'Operand 1'");\r
+ InstructionDesc[OpLogicalOr].operands.push(OperandId, "'Operand 2'");\r
+\r
+ InstructionDesc[OpLogicalXor].operands.push(OperandId, "'Operand 1'");\r
+ InstructionDesc[OpLogicalXor].operands.push(OperandId, "'Operand 2'");\r
+\r
+ InstructionDesc[OpLogicalAnd].operands.push(OperandId, "'Operand 1'");\r
+ InstructionDesc[OpLogicalAnd].operands.push(OperandId, "'Operand 2'");\r
+\r
+ InstructionDesc[OpBitwiseOr].operands.push(OperandId, "'Operand 1'");\r
+ InstructionDesc[OpBitwiseOr].operands.push(OperandId, "'Operand 2'");\r
+\r
+ InstructionDesc[OpBitwiseXor].operands.push(OperandId, "'Operand 1'");\r
+ InstructionDesc[OpBitwiseXor].operands.push(OperandId, "'Operand 2'");\r
+\r
+ InstructionDesc[OpBitwiseAnd].operands.push(OperandId, "'Operand 1'");\r
+ InstructionDesc[OpBitwiseAnd].operands.push(OperandId, "'Operand 2'");\r
+\r
+ InstructionDesc[OpSelect].operands.push(OperandId, "'Condition'");\r
+ InstructionDesc[OpSelect].operands.push(OperandId, "'Object 1'");\r
+ InstructionDesc[OpSelect].operands.push(OperandId, "'Object 2'");\r
+\r
+ InstructionDesc[OpIEqual].operands.push(OperandId, "'Operand 1'");\r
+ InstructionDesc[OpIEqual].operands.push(OperandId, "'Operand 2'");\r
+\r
+ InstructionDesc[OpFOrdEqual].operands.push(OperandId, "'Operand 1'");\r
+ InstructionDesc[OpFOrdEqual].operands.push(OperandId, "'Operand 2'");\r
+\r
+ InstructionDesc[OpFUnordEqual].operands.push(OperandId, "'Operand 1'");\r
+ InstructionDesc[OpFUnordEqual].operands.push(OperandId, "'Operand 2'");\r
+\r
+ InstructionDesc[OpINotEqual].operands.push(OperandId, "'Operand 1'");\r
+ InstructionDesc[OpINotEqual].operands.push(OperandId, "'Operand 2'");\r
+\r
+ InstructionDesc[OpFOrdNotEqual].operands.push(OperandId, "'Operand 1'");\r
+ InstructionDesc[OpFOrdNotEqual].operands.push(OperandId, "'Operand 2'");\r
+\r
+ InstructionDesc[OpFUnordNotEqual].operands.push(OperandId, "'Operand 1'");\r
+ InstructionDesc[OpFUnordNotEqual].operands.push(OperandId, "'Operand 2'");\r
+\r
+ InstructionDesc[OpULessThan].operands.push(OperandId, "'Operand 1'");\r
+ InstructionDesc[OpULessThan].operands.push(OperandId, "'Operand 2'");\r
+\r
+ InstructionDesc[OpSLessThan].operands.push(OperandId, "'Operand 1'");\r
+ InstructionDesc[OpSLessThan].operands.push(OperandId, "'Operand 2'");\r
+\r
+ InstructionDesc[OpFOrdLessThan].operands.push(OperandId, "'Operand 1'");\r
+ InstructionDesc[OpFOrdLessThan].operands.push(OperandId, "'Operand 2'");\r
+\r
+ InstructionDesc[OpFUnordLessThan].operands.push(OperandId, "'Operand 1'");\r
+ InstructionDesc[OpFUnordLessThan].operands.push(OperandId, "'Operand 2'");\r
+\r
+ InstructionDesc[OpUGreaterThan].operands.push(OperandId, "'Operand 1'");\r
+ InstructionDesc[OpUGreaterThan].operands.push(OperandId, "'Operand 2'");\r
+\r
+ InstructionDesc[OpSGreaterThan].operands.push(OperandId, "'Operand 1'");\r
+ InstructionDesc[OpSGreaterThan].operands.push(OperandId, "'Operand 2'");\r
+\r
+ InstructionDesc[OpFOrdGreaterThan].operands.push(OperandId, "'Operand 1'");\r
+ InstructionDesc[OpFOrdGreaterThan].operands.push(OperandId, "'Operand 2'");\r
+\r
+ InstructionDesc[OpFUnordGreaterThan].operands.push(OperandId, "'Operand 1'");\r
+ InstructionDesc[OpFUnordGreaterThan].operands.push(OperandId, "'Operand 2'");\r
+\r
+ InstructionDesc[OpULessThanEqual].operands.push(OperandId, "'Operand 1'");\r
+ InstructionDesc[OpULessThanEqual].operands.push(OperandId, "'Operand 2'");\r
+\r
+ InstructionDesc[OpSLessThanEqual].operands.push(OperandId, "'Operand 1'");\r
+ InstructionDesc[OpSLessThanEqual].operands.push(OperandId, "'Operand 2'");\r
+\r
+ InstructionDesc[OpFOrdLessThanEqual].operands.push(OperandId, "'Operand 1'");\r
+ InstructionDesc[OpFOrdLessThanEqual].operands.push(OperandId, "'Operand 2'");\r
+\r
+ InstructionDesc[OpFUnordLessThanEqual].operands.push(OperandId, "'Operand 1'");\r
+ InstructionDesc[OpFUnordLessThanEqual].operands.push(OperandId, "'Operand 2'");\r
+\r
+ InstructionDesc[OpUGreaterThanEqual].operands.push(OperandId, "'Operand 1'");\r
+ InstructionDesc[OpUGreaterThanEqual].operands.push(OperandId, "'Operand 2'");\r
+\r
+ InstructionDesc[OpSGreaterThanEqual].operands.push(OperandId, "'Operand 1'");\r
+ InstructionDesc[OpSGreaterThanEqual].operands.push(OperandId, "'Operand 2'");\r
+\r
+ InstructionDesc[OpFOrdGreaterThanEqual].operands.push(OperandId, "'Operand 1'");\r
+ InstructionDesc[OpFOrdGreaterThanEqual].operands.push(OperandId, "'Operand 2'");\r
+\r
+ InstructionDesc[OpFUnordGreaterThanEqual].operands.push(OperandId, "'Operand 1'");\r
+ InstructionDesc[OpFUnordGreaterThanEqual].operands.push(OperandId, "'Operand 2'");\r
+\r
+ InstructionDesc[OpDPdx].capabilities.push_back(CapShader);\r
+ InstructionDesc[OpDPdx].operands.push(OperandId, "'P'");\r
+\r
+ InstructionDesc[OpDPdy].capabilities.push_back(CapShader);\r
+ InstructionDesc[OpDPdy].operands.push(OperandId, "'P'");\r
+\r
+ InstructionDesc[OpFwidth].capabilities.push_back(CapShader);\r
+ InstructionDesc[OpFwidth].operands.push(OperandId, "'P'");\r
+\r
+ InstructionDesc[OpDPdxFine].capabilities.push_back(CapShader);\r
+ InstructionDesc[OpDPdxFine].operands.push(OperandId, "'P'");\r
+\r
+ InstructionDesc[OpDPdyFine].capabilities.push_back(CapShader);\r
+ InstructionDesc[OpDPdyFine].operands.push(OperandId, "'P'");\r
+\r
+ InstructionDesc[OpFwidthFine].capabilities.push_back(CapShader);\r
+ InstructionDesc[OpFwidthFine].operands.push(OperandId, "'P'");\r
+\r
+ InstructionDesc[OpDPdxCoarse].capabilities.push_back(CapShader);\r
+ InstructionDesc[OpDPdxCoarse].operands.push(OperandId, "'P'");\r
+\r
+ InstructionDesc[OpDPdyCoarse].capabilities.push_back(CapShader);\r
+ InstructionDesc[OpDPdyCoarse].operands.push(OperandId, "'P'");\r
+\r
+ InstructionDesc[OpFwidthCoarse].capabilities.push_back(CapShader);\r
+ InstructionDesc[OpFwidthCoarse].operands.push(OperandId, "'P'");\r
+\r
+ InstructionDesc[OpEmitVertex].capabilities.push_back(CapGeom);\r
+\r
+ InstructionDesc[OpEndPrimitive].capabilities.push_back(CapGeom);\r
+\r
+ InstructionDesc[OpEmitStreamVertex].operands.push(OperandId, "'Stream'");\r
+ InstructionDesc[OpEmitStreamVertex].capabilities.push_back(CapGeom);\r
+\r
+ InstructionDesc[OpEndStreamPrimitive].operands.push(OperandId, "'Stream'");\r
+ InstructionDesc[OpEndStreamPrimitive].capabilities.push_back(CapGeom);\r
+\r
+ InstructionDesc[OpControlBarrier].operands.push(OperandExecutionScope, "'Scope'");\r
+\r
+ InstructionDesc[OpMemoryBarrier].operands.push(OperandExecutionScope, "'Scope'");\r
+ InstructionDesc[OpMemoryBarrier].operands.push(OperandMemorySemantics, "'Semantics'");\r
+\r
+ InstructionDesc[OpImagePointer].operands.push(OperandId, "'Image'");\r
+ InstructionDesc[OpImagePointer].operands.push(OperandId, "'Coordinate'");\r
+ InstructionDesc[OpImagePointer].operands.push(OperandId, "'Sample'");\r
+\r
+ InstructionDesc[OpAtomicInit].operands.push(OperandId, "'Pointer'");\r
+ InstructionDesc[OpAtomicInit].operands.push(OperandId, "'Value'");\r
+\r
+ InstructionDesc[OpAtomicLoad].operands.push(OperandId, "'Pointer'");\r
+ InstructionDesc[OpAtomicLoad].operands.push(OperandExecutionScope, "'Scope'");\r
+ InstructionDesc[OpAtomicLoad].operands.push(OperandMemorySemantics, "'Semantics'");\r
+\r
+ InstructionDesc[OpAtomicStore].operands.push(OperandId, "'Pointer'");\r
+ InstructionDesc[OpAtomicStore].operands.push(OperandExecutionScope, "'Scope'");\r
+ InstructionDesc[OpAtomicStore].operands.push(OperandMemorySemantics, "'Semantics'");\r
+ InstructionDesc[OpAtomicStore].operands.push(OperandId, "'Value'");\r
+\r
+ InstructionDesc[OpAtomicExchange].operands.push(OperandId, "'Pointer'");\r
+ InstructionDesc[OpAtomicExchange].operands.push(OperandExecutionScope, "'Scope'");\r
+ InstructionDesc[OpAtomicExchange].operands.push(OperandMemorySemantics, "'Semantics'");\r
+ InstructionDesc[OpAtomicExchange].operands.push(OperandId, "'Value'");\r
+\r
+ InstructionDesc[OpAtomicCompareExchange].operands.push(OperandId, "'Pointer'");\r
+ InstructionDesc[OpAtomicCompareExchange].operands.push(OperandExecutionScope, "'Scope'");\r
+ InstructionDesc[OpAtomicCompareExchange].operands.push(OperandMemorySemantics, "'Semantics'");\r
+ InstructionDesc[OpAtomicCompareExchange].operands.push(OperandId, "'Value'");\r
+ InstructionDesc[OpAtomicCompareExchange].operands.push(OperandId, "'Comparator'");\r
+\r
+ InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandId, "'Pointer'");\r
+ InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandExecutionScope, "'Scope'");\r
+ InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandMemorySemantics, "'Semantics'");\r
+ InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandId, "'Value'");\r
+ InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandId, "'Comparator'");\r
+\r
+ InstructionDesc[OpAtomicIIncrement].operands.push(OperandId, "'Pointer'");\r
+ InstructionDesc[OpAtomicIIncrement].operands.push(OperandExecutionScope, "'Scope'");\r
+ InstructionDesc[OpAtomicIIncrement].operands.push(OperandMemorySemantics, "'Semantics'");\r
+\r
+ InstructionDesc[OpAtomicIDecrement].operands.push(OperandId, "'Pointer'");\r
+ InstructionDesc[OpAtomicIDecrement].operands.push(OperandExecutionScope, "'Scope'");\r
+ InstructionDesc[OpAtomicIDecrement].operands.push(OperandMemorySemantics, "'Semantics'");\r
+\r
+ InstructionDesc[OpAtomicIAdd].operands.push(OperandId, "'Pointer'");\r
+ InstructionDesc[OpAtomicIAdd].operands.push(OperandExecutionScope, "'Scope'");\r
+ InstructionDesc[OpAtomicIAdd].operands.push(OperandMemorySemantics, "'Semantics'");\r
+ InstructionDesc[OpAtomicIAdd].operands.push(OperandId, "'Value'");\r
+\r
+ InstructionDesc[OpAtomicISub].operands.push(OperandId, "'Pointer'");\r
+ InstructionDesc[OpAtomicISub].operands.push(OperandExecutionScope, "'Scope'");\r
+ InstructionDesc[OpAtomicISub].operands.push(OperandMemorySemantics, "'Semantics'");\r
+ InstructionDesc[OpAtomicISub].operands.push(OperandId, "'Value'");\r
+\r
+ InstructionDesc[OpAtomicUMin].operands.push(OperandId, "'Pointer'");\r
+ InstructionDesc[OpAtomicUMin].operands.push(OperandExecutionScope, "'Scope'");\r
+ InstructionDesc[OpAtomicUMin].operands.push(OperandMemorySemantics, "'Semantics'");\r
+ InstructionDesc[OpAtomicUMin].operands.push(OperandId, "'Value'");\r
+\r
+ InstructionDesc[OpAtomicUMax].operands.push(OperandId, "'Pointer'");\r
+ InstructionDesc[OpAtomicUMax].operands.push(OperandExecutionScope, "'Scope'");\r
+ InstructionDesc[OpAtomicUMax].operands.push(OperandMemorySemantics, "'Semantics'");\r
+ InstructionDesc[OpAtomicUMax].operands.push(OperandId, "'Value'");\r
+\r
+ InstructionDesc[OpAtomicIMin].operands.push(OperandId, "'Pointer'");\r
+ InstructionDesc[OpAtomicIMin].operands.push(OperandExecutionScope, "'Scope'");\r
+ InstructionDesc[OpAtomicIMin].operands.push(OperandMemorySemantics, "'Semantics'");\r
+ InstructionDesc[OpAtomicIMin].operands.push(OperandId, "'Value'");\r
+\r
+ InstructionDesc[OpAtomicIMax].operands.push(OperandId, "'Pointer'");\r
+ InstructionDesc[OpAtomicIMax].operands.push(OperandExecutionScope, "'Scope'");\r
+ InstructionDesc[OpAtomicIMax].operands.push(OperandMemorySemantics, "'Semantics'");\r
+ InstructionDesc[OpAtomicIMax].operands.push(OperandId, "'Value'");\r
+\r
+ InstructionDesc[OpAtomicAnd].operands.push(OperandId, "'Pointer'");\r
+ InstructionDesc[OpAtomicAnd].operands.push(OperandExecutionScope, "'Scope'");\r
+ InstructionDesc[OpAtomicAnd].operands.push(OperandMemorySemantics, "'Semantics'");\r
+ InstructionDesc[OpAtomicAnd].operands.push(OperandId, "'Value'");\r
+\r
+ InstructionDesc[OpAtomicOr].operands.push(OperandId, "'Pointer'");\r
+ InstructionDesc[OpAtomicOr].operands.push(OperandExecutionScope, "'Scope'");\r
+ InstructionDesc[OpAtomicOr].operands.push(OperandMemorySemantics, "'Semantics'");\r
+ InstructionDesc[OpAtomicOr].operands.push(OperandId, "'Value'");\r
+\r
+ InstructionDesc[OpAtomicXor].operands.push(OperandId, "'Pointer'");\r
+ InstructionDesc[OpAtomicXor].operands.push(OperandExecutionScope, "'Scope'");\r
+ InstructionDesc[OpAtomicXor].operands.push(OperandMemorySemantics, "'Semantics'");\r
+ InstructionDesc[OpAtomicXor].operands.push(OperandId, "'Value'");\r
+\r
+ InstructionDesc[OpLoopMerge].operands.push(OperandId, "'Label'");\r
+ InstructionDesc[OpLoopMerge].operands.push(OperandLoop, "");\r
+\r
+ InstructionDesc[OpSelectionMerge].operands.push(OperandId, "'Label'");\r
+ InstructionDesc[OpSelectionMerge].operands.push(OperandSelect, "");\r
+\r
+ InstructionDesc[OpBranch].operands.push(OperandId, "'Target Label'");\r
+\r
+ InstructionDesc[OpBranchConditional].operands.push(OperandId, "'Condition'");\r
+ InstructionDesc[OpBranchConditional].operands.push(OperandId, "'True Label'");\r
+ InstructionDesc[OpBranchConditional].operands.push(OperandId, "'False Label'");\r
+ InstructionDesc[OpBranchConditional].operands.push(OperandVariableLiterals, "'Branch weights'");\r
+\r
+ InstructionDesc[OpSwitch].operands.push(OperandId, "'Selector'");\r
+ InstructionDesc[OpSwitch].operands.push(OperandId, "'Default'");\r
+ InstructionDesc[OpSwitch].operands.push(OperandVariableLiteralId, "'Target'");\r
+\r
+ InstructionDesc[OpKill].capabilities.push_back(CapShader);\r
+\r
+ InstructionDesc[OpReturnValue].operands.push(OperandId, "'Value'");\r
+\r
+ InstructionDesc[OpUnreachable].capabilities.push_back(CapKernel);\r
+\r
+ InstructionDesc[OpLifetimeStart].operands.push(OperandId, "");\r
+ InstructionDesc[OpLifetimeStart].operands.push(OperandLiteralNumber, "");\r
+\r
+ InstructionDesc[OpLifetimeStop].operands.push(OperandId, "");\r
+ InstructionDesc[OpLifetimeStop].operands.push(OperandLiteralNumber, "");\r
+\r
+ InstructionDesc[OpCompileFlag].capabilities.push_back(CapKernel);\r
+ InstructionDesc[OpCompileFlag].operands.push(OperandLiteralString, "'Flag'");\r
+\r
+ InstructionDesc[OpAsyncGroupCopy].capabilities.push_back(CapKernel);\r
+ InstructionDesc[OpAsyncGroupCopy].operands.push(OperandExecutionScope, "'Scope'");\r
+ InstructionDesc[OpAsyncGroupCopy].operands.push(OperandId, "'Destination'");\r
+ InstructionDesc[OpAsyncGroupCopy].operands.push(OperandId, "'Source'");\r
+ InstructionDesc[OpAsyncGroupCopy].operands.push(OperandId, "'Num Elements'");\r
+ InstructionDesc[OpAsyncGroupCopy].operands.push(OperandId, "'Stride'");\r
+ InstructionDesc[OpAsyncGroupCopy].operands.push(OperandId, "'Event'");\r
+\r
+ InstructionDesc[OpWaitGroupEvents].capabilities.push_back(CapKernel);\r
+ InstructionDesc[OpWaitGroupEvents].operands.push(OperandExecutionScope, "'Scope'");\r
+ InstructionDesc[OpWaitGroupEvents].operands.push(OperandId, "'Num Events'");\r
+ InstructionDesc[OpWaitGroupEvents].operands.push(OperandId, "'Events List'");\r
+\r
+ InstructionDesc[OpGroupAll].capabilities.push_back(CapKernel);\r
+ InstructionDesc[OpGroupAll].operands.push(OperandExecutionScope, "'Scope'");\r
+ InstructionDesc[OpGroupAll].operands.push(OperandId, "'Predicate'");\r
+\r
+ InstructionDesc[OpGroupAny].capabilities.push_back(CapKernel);\r
+ InstructionDesc[OpGroupAny].operands.push(OperandExecutionScope, "'Scope'");\r
+ InstructionDesc[OpGroupAny].operands.push(OperandId, "'Predicate'");\r
+\r
+ InstructionDesc[OpGroupBroadcast].capabilities.push_back(CapKernel);\r
+ InstructionDesc[OpGroupBroadcast].operands.push(OperandExecutionScope, "'Scope'");\r
+ InstructionDesc[OpGroupBroadcast].operands.push(OperandId, "'Value'");\r
+ InstructionDesc[OpGroupBroadcast].operands.push(OperandId, "'LocalId'");\r
+\r
+ InstructionDesc[OpGroupIAdd].capabilities.push_back(CapKernel);\r
+ InstructionDesc[OpGroupIAdd].operands.push(OperandExecutionScope, "'Scope'");\r
+ InstructionDesc[OpGroupIAdd].operands.push(OperandGroupOperation, "'Operation'");\r
+ InstructionDesc[OpGroupIAdd].operands.push(OperandId, "'X'");\r
+\r
+ InstructionDesc[OpGroupFAdd].capabilities.push_back(CapKernel);\r
+ InstructionDesc[OpGroupFAdd].operands.push(OperandExecutionScope, "'Scope'");\r
+ InstructionDesc[OpGroupFAdd].operands.push(OperandGroupOperation, "'Operation'");\r
+ InstructionDesc[OpGroupFAdd].operands.push(OperandId, "'X'");\r
+\r
+ InstructionDesc[OpGroupUMin].capabilities.push_back(CapKernel);\r
+ InstructionDesc[OpGroupUMin].operands.push(OperandExecutionScope, "'Scope'");\r
+ InstructionDesc[OpGroupUMin].operands.push(OperandGroupOperation, "'Operation'");\r
+ InstructionDesc[OpGroupUMin].operands.push(OperandId, "'X'");\r
+\r
+ InstructionDesc[OpGroupSMin].capabilities.push_back(CapKernel);\r
+ InstructionDesc[OpGroupSMin].operands.push(OperandExecutionScope, "'Scope'");\r
+ InstructionDesc[OpGroupSMin].operands.push(OperandGroupOperation, "'Operation'");\r
+ InstructionDesc[OpGroupSMin].operands.push(OperandId, "X");\r
+\r
+ InstructionDesc[OpGroupFMin].capabilities.push_back(CapKernel);\r
+ InstructionDesc[OpGroupFMin].operands.push(OperandExecutionScope, "'Scope'");\r
+ InstructionDesc[OpGroupFMin].operands.push(OperandGroupOperation, "'Operation'");\r
+ InstructionDesc[OpGroupFMin].operands.push(OperandId, "X");\r
+\r
+ InstructionDesc[OpGroupUMax].capabilities.push_back(CapKernel);\r
+ InstructionDesc[OpGroupUMax].operands.push(OperandExecutionScope, "'Scope'");\r
+ InstructionDesc[OpGroupUMax].operands.push(OperandGroupOperation, "'Operation'");\r
+ InstructionDesc[OpGroupUMax].operands.push(OperandId, "X");\r
+\r
+ InstructionDesc[OpGroupSMax].capabilities.push_back(CapKernel);\r
+ InstructionDesc[OpGroupSMax].operands.push(OperandExecutionScope, "'Scope'");\r
+ InstructionDesc[OpGroupSMax].operands.push(OperandGroupOperation, "'Operation'");\r
+ InstructionDesc[OpGroupSMax].operands.push(OperandId, "X");\r
+\r
+ InstructionDesc[OpGroupFMax].capabilities.push_back(CapKernel);\r
+ InstructionDesc[OpGroupFMax].operands.push(OperandExecutionScope, "'Scope'");\r
+ InstructionDesc[OpGroupFMax].operands.push(OperandGroupOperation, "'Operation'");\r
+ InstructionDesc[OpGroupFMax].operands.push(OperandId, "X");\r
+\r
+ InstructionDesc[OpReadPipe].capabilities.push_back(CapKernel);\r
+ InstructionDesc[OpReadPipe].operands.push(OperandId, "'p'");\r
+ InstructionDesc[OpReadPipe].operands.push(OperandId, "'ptr'");\r
+\r
+ InstructionDesc[OpWritePipe].capabilities.push_back(CapKernel);\r
+ InstructionDesc[OpWritePipe].operands.push(OperandId, "'p'");\r
+ InstructionDesc[OpWritePipe].operands.push(OperandId, "'ptr'");\r
+\r
+ InstructionDesc[OpReservedReadPipe].capabilities.push_back(CapKernel);\r
+ InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'p'");\r
+ InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'reserve_id'");\r
+ InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'index'");\r
+ InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'ptr'");\r
+\r
+ InstructionDesc[OpReservedWritePipe].capabilities.push_back(CapKernel);\r
+ InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'p'");\r
+ InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'reserve_id'");\r
+ InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'index'");\r
+ InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'ptr'");\r
+\r
+ InstructionDesc[OpReserveReadPipePackets].capabilities.push_back(CapKernel);\r
+ InstructionDesc[OpReserveReadPipePackets].operands.push(OperandId, "'p'");\r
+ InstructionDesc[OpReserveReadPipePackets].operands.push(OperandId, "'num_packets'");\r
+\r
+ InstructionDesc[OpReserveWritePipePackets].capabilities.push_back(CapKernel);\r
+ InstructionDesc[OpReserveWritePipePackets].operands.push(OperandId, "'p'");\r
+ InstructionDesc[OpReserveWritePipePackets].operands.push(OperandId, "'num_packets'");\r
+\r
+ InstructionDesc[OpCommitReadPipe].capabilities.push_back(CapKernel);\r
+ InstructionDesc[OpCommitReadPipe].operands.push(OperandId, "'p'");\r
+ InstructionDesc[OpCommitReadPipe].operands.push(OperandId, "'reserve_id'");\r
+\r
+ InstructionDesc[OpCommitWritePipe].capabilities.push_back(CapKernel);\r
+ InstructionDesc[OpCommitWritePipe].operands.push(OperandId, "'p'");\r
+ InstructionDesc[OpCommitWritePipe].operands.push(OperandId, "'reserve_id'");\r
+\r
+ InstructionDesc[OpIsValidReserveId].capabilities.push_back(CapKernel);\r
+ InstructionDesc[OpIsValidReserveId].operands.push(OperandId, "'reserve_id'");\r
+\r
+ InstructionDesc[OpGetNumPipePackets].capabilities.push_back(CapKernel);\r
+ InstructionDesc[OpGetNumPipePackets].operands.push(OperandId, "'p'");\r
+\r
+ InstructionDesc[OpGetMaxPipePackets].capabilities.push_back(CapKernel);\r
+ InstructionDesc[OpGetMaxPipePackets].operands.push(OperandId, "'p'");\r
+\r
+ InstructionDesc[OpGroupReserveReadPipePackets].capabilities.push_back(CapKernel);\r
+ InstructionDesc[OpGroupReserveReadPipePackets].operands.push(OperandExecutionScope, "'Scope'");\r
+ InstructionDesc[OpGroupReserveReadPipePackets].operands.push(OperandId, "'p'");\r
+ InstructionDesc[OpGroupReserveReadPipePackets].operands.push(OperandId, "'num_packets'");\r
+\r
+ InstructionDesc[OpGroupReserveWritePipePackets].capabilities.push_back(CapKernel);\r
+ InstructionDesc[OpGroupReserveWritePipePackets].operands.push(OperandExecutionScope, "'Scope'");\r
+ InstructionDesc[OpGroupReserveWritePipePackets].operands.push(OperandId, "'p'");\r
+ InstructionDesc[OpGroupReserveWritePipePackets].operands.push(OperandId, "'num_packets'");\r
+\r
+ InstructionDesc[OpGroupCommitReadPipe].capabilities.push_back(CapKernel);\r
+ InstructionDesc[OpGroupCommitReadPipe].operands.push(OperandExecutionScope, "'Scope'");\r
+ InstructionDesc[OpGroupCommitReadPipe].operands.push(OperandId, "'p'");\r
+ InstructionDesc[OpGroupCommitReadPipe].operands.push(OperandId, "'reserve_id'");\r
+\r
+ InstructionDesc[OpGroupCommitWritePipe].capabilities.push_back(CapKernel);\r
+ InstructionDesc[OpGroupCommitWritePipe].operands.push(OperandExecutionScope, "'Scope'");\r
+ InstructionDesc[OpGroupCommitWritePipe].operands.push(OperandId, "'p'");\r
+ InstructionDesc[OpGroupCommitWritePipe].operands.push(OperandId, "'reserve_id'");\r
+\r
+ InstructionDesc[OpBuildNDRange].capabilities.push_back(CapKernel);\r
+ InstructionDesc[OpBuildNDRange].operands.push(OperandId, "'GlobalWorkSize'");\r
+ InstructionDesc[OpBuildNDRange].operands.push(OperandId, "'LocalWorkSize'");\r
+ InstructionDesc[OpBuildNDRange].operands.push(OperandId, "'GlobalWorkOffset'");\r
+\r
+ InstructionDesc[OpGetDefaultQueue].capabilities.push_back(CapKernel);\r
+\r
+ InstructionDesc[OpCaptureEventProfilingInfo].capabilities.push_back(CapKernel);\r
+\r
+ InstructionDesc[OpCaptureEventProfilingInfo].operands.push(OperandId, "'event'");\r
+ InstructionDesc[OpCaptureEventProfilingInfo].operands.push(OperandKernelProfilingInfo, "'info'");\r
+ InstructionDesc[OpCaptureEventProfilingInfo].operands.push(OperandId, "'value'");\r
+\r
+ InstructionDesc[OpSetUserEventStatus].capabilities.push_back(CapKernel);\r
+\r
+ InstructionDesc[OpSetUserEventStatus].operands.push(OperandId, "'event'");\r
+ InstructionDesc[OpSetUserEventStatus].operands.push(OperandId, "'status'");\r
+\r
+ InstructionDesc[OpIsValidEvent].capabilities.push_back(CapKernel);\r
+ InstructionDesc[OpIsValidEvent].operands.push(OperandId, "'event'");\r
+\r
+ InstructionDesc[OpCreateUserEvent].capabilities.push_back(CapKernel);\r
+\r
+ InstructionDesc[OpRetainEvent].capabilities.push_back(CapKernel);\r
+ InstructionDesc[OpRetainEvent].operands.push(OperandId, "'event'");\r
+\r
+ InstructionDesc[OpReleaseEvent].capabilities.push_back(CapKernel);\r
+ InstructionDesc[OpReleaseEvent].operands.push(OperandId, "'event'");\r
+\r
+ InstructionDesc[OpGetKernelWorkGroupSize].capabilities.push_back(CapKernel);\r
+ InstructionDesc[OpGetKernelWorkGroupSize].operands.push(OperandId, "'Invoke'");\r
+\r
+ InstructionDesc[OpGetKernelPreferredWorkGroupSizeMultiple].capabilities.push_back(CapKernel);\r
+ InstructionDesc[OpGetKernelPreferredWorkGroupSizeMultiple].operands.push(OperandId, "'Invoke'");\r
+\r
+ InstructionDesc[OpGetKernelNDrangeSubGroupCount].capabilities.push_back(CapKernel);\r
+ InstructionDesc[OpGetKernelNDrangeSubGroupCount].operands.push(OperandId, "'ND Range'");\r
+ InstructionDesc[OpGetKernelNDrangeSubGroupCount].operands.push(OperandId, "'Invoke'");\r
+\r
+ InstructionDesc[OpGetKernelNDrangeMaxSubGroupSize].capabilities.push_back(CapKernel);\r
+ InstructionDesc[OpGetKernelNDrangeMaxSubGroupSize].operands.push(OperandId, "'ND Range'");\r
+ InstructionDesc[OpGetKernelNDrangeMaxSubGroupSize].operands.push(OperandId, "'Invoke'");\r
+\r
+ InstructionDesc[OpEnqueueKernel].capabilities.push_back(CapKernel);\r
+ InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'q'");\r
+ InstructionDesc[OpEnqueueKernel].operands.push(OperandKernelEnqueueFlags, "'flags'");\r
+ InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'ND Range'");\r
+ InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Num Events'");\r
+ InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Wait Events'");\r
+ InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Ret Event'");\r
+ InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Invoke'");\r
+ InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Param'");\r
+ InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Param Size'");\r
+ InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Param Align'");\r
+ InstructionDesc[OpEnqueueKernel].operands.push(OperandVariableIds, "'Local Size'");\r
+\r
+ InstructionDesc[OpEnqueueMarker].capabilities.push_back(CapKernel);\r
+ InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'q'");\r
+ InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'Num Events'");\r
+ InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'Wait Events'");\r
+ InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'Ret Event'");\r
+}\r
+\r
}; // end spv namespace\r
** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.\r
*/\r
\r
-//\r
-// Enumeration tokens for SPIR V.\r
-//\r
+/*\r
+** This header is automatically generated by the same tool that creates\r
+** the Binary Section of the SPIR-V specification.\r
+*/\r
+\r
+/*\r
+** Specification revision 29.\r
+** Enumeration tokens for SPIR-V, in three styles: C, C++, generic.\r
+** - C++ will have the tokens in the "spv" name space, with no prefix.\r
+** - C will have tokens with as "Spv" prefix.\r
+**\r
+** Some tokens act like mask values, which can be OR'd together,\r
+** while others are mutually exclusive. The mask-like ones have\r
+** "Mask" in their name, and a parallel enum that has the shift\r
+** amount (1 << x) for each corresponding enumerant.\r
+*/\r
\r
-#pragma once\r
#ifndef spirv_H\r
#define spirv_H\r
\r
#ifdef __cplusplus\r
-namespace spv{\r
-#endif\r
+\r
+namespace spv {\r
\r
const int MagicNumber = 0x07230203;\r
const int Version = 99;\r
\r
typedef unsigned int Id;\r
\r
-const Id NoResult = 0;\r
-const Id NoType = 0;\r
-\r
const unsigned int OpCodeMask = 0xFFFF;\r
const unsigned int WordCountShift = 16;\r
\r
-// Set of capabilities. Generally, something is assumed to be in core,\r
-// if nothing else is said. So, these are used to identify when something\r
-// requires a specific capability to be declared.\r
-enum Capability {\r
- CapMatrix,\r
- CapShader,\r
- CapGeom,\r
- CapTess,\r
- CapAddr,\r
- CapLink,\r
- CapKernel\r
-};\r
-\r
-// What language is the source code in? Note the OpSource instruction has a separate\r
-// operand for the version number, this is just the language name. The GLSL\r
-// compatibility profile will be indicated by using an OpSourceExtension string.\r
enum SourceLanguage {\r
- LangUnknown,\r
- LangESSL,\r
- LangGLSL,\r
- LangOpenCL,\r
-\r
- LangCount // guard for validation, "default:" statements, etc.\r
+ SourceLanguageUnknown = 0,\r
+ SourceLanguageESSL = 1,\r
+ SourceLanguageGLSL = 2,\r
+ SourceLanguageOpenCL = 3,\r
};\r
\r
-// Used per entry point to communicate the "stage" or other model of\r
-// execution used by that entry point.\r
-// See OpEntryPoint.\r
enum ExecutionModel {\r
- ModelVertex,\r
- ModelTessellationControl,\r
- ModelTessellationEvaluation,\r
- ModelGeometry,\r
- ModelFragment,\r
- ModelGLCompute,\r
- ModelKernel,\r
-\r
- ModelCount // guard for validation, "default:" statements, etc.\r
+ ExecutionModelVertex = 0,\r
+ ExecutionModelTessellationControl = 1,\r
+ ExecutionModelTessellationEvaluation = 2,\r
+ ExecutionModelGeometry = 3,\r
+ ExecutionModelFragment = 4,\r
+ ExecutionModelGLCompute = 5,\r
+ ExecutionModelKernel = 6,\r
};\r
\r
-// Used as an argument to OpMemoryModel\r
enum AddressingModel {\r
- AddressingLogical,\r
- AddressingPhysical32,\r
- AddressingPhysical64,\r
-\r
- AddressingCount // guard for validation, "default:" statements, etc.\r
+ AddressingModelLogical = 0,\r
+ AddressingModelPhysical32 = 1,\r
+ AddressingModelPhysical64 = 2,\r
};\r
\r
-// Used as an argment to OpMemoryModel\r
enum MemoryModel {\r
- MemorySimple,\r
- MemoryGLSL450,\r
- MemoryOCL12,\r
- MemoryOCL20,\r
- MemoryOCL21,\r
-\r
- MemoryCount // guard for validation, "default:" statements, etc.\r
+ MemoryModelSimple = 0,\r
+ MemoryModelGLSL450 = 1,\r
+ MemoryModelOpenCL12 = 2,\r
+ MemoryModelOpenCL20 = 3,\r
+ MemoryModelOpenCL21 = 4,\r
};\r
\r
-// Used per entry point to communicate modes related to input, output, and execution.\r
-// See OpExecutionMode.\r
enum ExecutionMode {\r
- ExecutionInvocations,\r
- ExecutionSpacingEqual,\r
- ExecutionSpacingFractionalEven,\r
- ExecutionSpacingFractionalOdd,\r
- ExecutionVertexOrderCw,\r
- ExecutionVertexOrderCcw,\r
- ExecutionPixelCenterInteger,\r
- ExecutionOriginUpperLeft,\r
- ExecutionEarlyFragmentTests,\r
- ExecutionPointMode,\r
- ExecutionXfb,\r
- ExecutionDepthReplacing,\r
- ExecutionDepthAny,\r
- ExecutionDepthGreater,\r
- ExecutionDepthLess,\r
- ExecutionDepthUnchanged,\r
- ExecutionLocalSize,\r
- ExecutionLocalSizeHint,\r
-\r
- ExecutionInputPoints,\r
- ExecutionInputLines,\r
- ExecutionInputLinesAdjacency,\r
- ExecutionInputTriangles,\r
- ExecutionInputTrianglesAdjacency,\r
- ExecutionInputQuads,\r
- ExecutionInputIsolines,\r
-\r
- ExecutionOutputVertices,\r
- ExecutionOutputPoints,\r
- ExecutionOutputLineStrip,\r
- ExecutionOutputTriangleStrip,\r
-\r
- ExecutionVecTypeHint,\r
- ExecutionContractionOff,\r
- ExecutionModeCount // guard for validation, "default:" statements, etc.\r
+ ExecutionModeInvocations = 0,\r
+ ExecutionModeSpacingEqual = 1,\r
+ ExecutionModeSpacingFractionalEven = 2,\r
+ ExecutionModeSpacingFractionalOdd = 3,\r
+ ExecutionModeVertexOrderCw = 4,\r
+ ExecutionModeVertexOrderCcw = 5,\r
+ ExecutionModePixelCenterInteger = 6,\r
+ ExecutionModeOriginUpperLeft = 7,\r
+ ExecutionModeEarlyFragmentTests = 8,\r
+ ExecutionModePointMode = 9,\r
+ ExecutionModeXfb = 10,\r
+ ExecutionModeDepthReplacing = 11,\r
+ ExecutionModeDepthAny = 12,\r
+ ExecutionModeDepthGreater = 13,\r
+ ExecutionModeDepthLess = 14,\r
+ ExecutionModeDepthUnchanged = 15,\r
+ ExecutionModeLocalSize = 16,\r
+ ExecutionModeLocalSizeHint = 17,\r
+ ExecutionModeInputPoints = 18,\r
+ ExecutionModeInputLines = 19,\r
+ ExecutionModeInputLinesAdjacency = 20,\r
+ ExecutionModeInputTriangles = 21,\r
+ ExecutionModeInputTrianglesAdjacency = 22,\r
+ ExecutionModeInputQuads = 23,\r
+ ExecutionModeInputIsolines = 24,\r
+ ExecutionModeOutputVertices = 25,\r
+ ExecutionModeOutputPoints = 26,\r
+ ExecutionModeOutputLineStrip = 27,\r
+ ExecutionModeOutputTriangleStrip = 28,\r
+ ExecutionModeVecTypeHint = 29,\r
+ ExecutionModeContractionOff = 30,\r
};\r
\r
enum StorageClass {\r
- StorageConstantUniform,\r
- StorageInput,\r
- StorageUniform,\r
- StorageOutput,\r
- StorageWorkgroupLocal,\r
- StorageWorkgroupGlobal,\r
- StoragePrivateGlobal,\r
- StorageFunction,\r
- StorageGeneric,\r
- StoragePrivate,\r
- StorageAtomicCounter,\r
- StorageCount // guard for validation, "default:" statements, etc.\r
-};\r
-\r
-// Dimensionalities currently used for sampling.\r
-// See TypeSampler in TypeClass.\r
-enum Dimensionality {\r
- Dim1D,\r
- Dim2D,\r
- Dim3D,\r
- DimCube,\r
- DimRect,\r
- DimBuffer,\r
-\r
- DimCount // guard for validation, "default:" statements, etc.\r
-};\r
-\r
-// Sampler addressing mode.\r
+ StorageClassUniformConstant = 0,\r
+ StorageClassInput = 1,\r
+ StorageClassUniform = 2,\r
+ StorageClassOutput = 3,\r
+ StorageClassWorkgroupLocal = 4,\r
+ StorageClassWorkgroupGlobal = 5,\r
+ StorageClassPrivateGlobal = 6,\r
+ StorageClassFunction = 7,\r
+ StorageClassGeneric = 8,\r
+ StorageClassPrivate = 9,\r
+ StorageClassAtomicCounter = 10,\r
+};\r
+\r
+enum Dim {\r
+ Dim1D = 0,\r
+ Dim2D = 1,\r
+ Dim3D = 2,\r
+ DimCube = 3,\r
+ DimRect = 4,\r
+ DimBuffer = 5,\r
+};\r
+\r
enum SamplerAddressingMode {\r
- SamplerAddressingNone = 0,\r
- SamplerAddressingClampToEdge = 2,\r
- SamplerAddressingClamp = 4,\r
- SamplerAddressingRepeat = 6,\r
- SamplerAddressingRepeatMirrored = 8,\r
- SamplerAddressingModeLast,\r
+ SamplerAddressingModeNone = 0,\r
+ SamplerAddressingModeClampToEdge = 2,\r
+ SamplerAddressingModeClamp = 4,\r
+ SamplerAddressingModeRepeat = 6,\r
+ SamplerAddressingModeRepeatMirrored = 8,\r
};\r
\r
-// Sampler filter mode.\r
enum SamplerFilterMode {\r
- SamplerFilterNearest = 0x10,\r
- SamplerFilterLinear = 0x20,\r
- SamplerFilterModeLast,\r
+ SamplerFilterModeNearest = 16,\r
+ SamplerFilterModeLinear = 32,\r
};\r
\r
-// FP Fast Math Mode.\r
-enum FPFastMath {\r
- FPFastMathNNan = 0, // assume parameters and result are not NaN.\r
- FPFastMathNInf = 0x02, // assume parameters and result are not +/- Inf.\r
- FPFastMathNSZ = 0x04, // treat the sign of a zero parameter or result as insignificant.\r
- FPFastMathARcp = 0x08, // allow the usage of reciprocal rather than perform a division.\r
- FPFastMathFast = 0x10, // allow Algebraic transformations according to real number associative and distibutive algebra. This flag implies all the others.\r
- FPFastMathLast,\r
+enum FPFastMathModeShift {\r
+ FPFastMathModeNotNaNShift = 0,\r
+ FPFastMathModeNotInfShift = 1,\r
+ FPFastMathModeNSZShift = 2,\r
+ FPFastMathModeAllowRecipShift = 3,\r
+ FPFastMathModeFastShift = 4,\r
+};\r
+\r
+enum FPFastMathModeMask {\r
+ FPFastMathModeMaskNone = 0,\r
+ FPFastMathModeNotNaNMask = 0x00000001,\r
+ FPFastMathModeNotInfMask = 0x00000002,\r
+ FPFastMathModeNSZMask = 0x00000004,\r
+ FPFastMathModeAllowRecipMask = 0x00000008,\r
+ FPFastMathModeFastMask = 0x00000010,\r
};\r
\r
-// FP Fast Math Mode.\r
enum FPRoundingMode {\r
- FPRoundRTE, // round to nearest even.\r
- FPRoundRTZ, // round towards zero.\r
- FPRoundRTP, // round towards positive infinity.\r
- FPRoundRTN, // round towards negative infinity.\r
- FPRoundLast,\r
+ FPRoundingModeRTE = 0,\r
+ FPRoundingModeRTZ = 1,\r
+ FPRoundingModeRTP = 2,\r
+ FPRoundingModeRTN = 3,\r
};\r
\r
-// Global identifier linkage types (by default the linkage type of global identifiers is private. This means that they are only accessible to objects inside the module.)\r
enum LinkageType {\r
- LinkageExport, // accessible by objects in other modules as well.\r
- LinkageImport, // a forward declaration to a global identifier that exists in another module.\r
- LinkageLast,\r
+ LinkageTypeExport = 0,\r
+ LinkageTypeImport = 1,\r
};\r
\r
-// Access Qualifiers for OpenCL pipes and images\r
enum AccessQualifier {\r
- AccessQualReadOnly,\r
- AccessQualWriteOnly,\r
- AccessQualReadWrite,\r
- AccessQualLast,\r
+ AccessQualifierReadOnly = 0,\r
+ AccessQualifierWriteOnly = 1,\r
+ AccessQualifierReadWrite = 2,\r
};\r
\r
-// Function argument attributes\r
enum FunctionParameterAttribute {\r
- FuncParamAttrZext, // value should be zero extended if needed\r
- FuncParamAttrSext, // value should be sign extended if needed\r
- FuncParamAttrByval, // only valid for pointer parameters (not for ret value), this indicates that the pointer parameter should really be passed by value to the function.\r
- FuncParamAttrSret, // indicates that the pointer parameter specifies the address of a structure that is the return value of the function in the source program. only applicable to the first parameter\r
- FuncParamAttrNoAlias,\r
- FuncParamAttrNoCapture,\r
- FuncParamAttrSVM,\r
- FuncParamAttrNoWrite,\r
- FuncParamAttrNoReadWrite,\r
- FuncParamAttrLast, // guard for validation, "default:" statements, etc.\r
+ FunctionParameterAttributeZext = 0,\r
+ FunctionParameterAttributeSext = 1,\r
+ FunctionParameterAttributeByVal = 2,\r
+ FunctionParameterAttributeSret = 3,\r
+ FunctionParameterAttributeNoAlias = 4,\r
+ FunctionParameterAttributeNoCapture = 5,\r
+ FunctionParameterAttributeSVM = 6,\r
+ FunctionParameterAttributeNoWrite = 7,\r
+ FunctionParameterAttributeNoReadWrite = 8,\r
};\r
\r
-\r
-// Extra forms of "qualification" to add as needed. See OpDecorate.\r
enum Decoration {\r
- // For legacy ES precision qualifiers; newer language\r
- // designs can use the "num-bits" feature in TypeClass.\r
- // The precision qualifiers may be decorated on type <id>s or instruction <id>s.\r
- DecPrecisionLow,\r
- DecPrecisionMedium,\r
- DecPrecisionHigh,\r
-\r
- DecBlock, // basic in/out/uniform block, applied only to types of TypeStruct\r
- DecBufferBlock, // shader storage buffer block\r
- DecRowMajor,\r
- DecColMajor,\r
- DecGLSLShared,\r
- DecGLSLStd140,\r
- DecGLSLStd430,\r
- DecGLSLPacked,\r
- DecSmooth,\r
- DecNoperspective,\r
- DecFlat,\r
- DecPatch,\r
- DecCentroid,\r
- DecSample,\r
- DecInvariant,\r
- DecRestrict,\r
- DecAliased,\r
- DecVolatile,\r
- DecConstant,\r
- DecCoherent,\r
- DecNonwritable,\r
- DecNonreadable,\r
- DecUniform,\r
- DecNoStaticUse,\r
-\r
- DecCPacked,\r
- DecFPSaturatedConv,\r
-\r
- // these all take one additional operand\r
- DecStream,\r
- DecLocation,\r
- DecComponent,\r
- DecIndex,\r
- DecBinding,\r
- DecDescriptorSet,\r
- DecOffset,\r
- DecAlignment,\r
- DecXfbBuffer,\r
- DecStride,\r
- DecBuiltIn,\r
- DecFuncParamAttr,\r
- DecFPRoundingMode,\r
- DecFPFastMathMode,\r
- DecLinkageType,\r
- DecSpecId,\r
-\r
- DecCount // guard for validation, "default:" statements, etc.\r
+ DecorationPrecisionLow = 0,\r
+ DecorationPrecisionMedium = 1,\r
+ DecorationPrecisionHigh = 2,\r
+ DecorationBlock = 3,\r
+ DecorationBufferBlock = 4,\r
+ DecorationRowMajor = 5,\r
+ DecorationColMajor = 6,\r
+ DecorationGLSLShared = 7,\r
+ DecorationGLSLStd140 = 8,\r
+ DecorationGLSLStd430 = 9,\r
+ DecorationGLSLPacked = 10,\r
+ DecorationSmooth = 11,\r
+ DecorationNoperspective = 12,\r
+ DecorationFlat = 13,\r
+ DecorationPatch = 14,\r
+ DecorationCentroid = 15,\r
+ DecorationSample = 16,\r
+ DecorationInvariant = 17,\r
+ DecorationRestrict = 18,\r
+ DecorationAliased = 19,\r
+ DecorationVolatile = 20,\r
+ DecorationConstant = 21,\r
+ DecorationCoherent = 22,\r
+ DecorationNonwritable = 23,\r
+ DecorationNonreadable = 24,\r
+ DecorationUniform = 25,\r
+ DecorationNoStaticUse = 26,\r
+ DecorationCPacked = 27,\r
+ DecorationSaturatedConversion = 28,\r
+ DecorationStream = 29,\r
+ DecorationLocation = 30,\r
+ DecorationComponent = 31,\r
+ DecorationIndex = 32,\r
+ DecorationBinding = 33,\r
+ DecorationDescriptorSet = 34,\r
+ DecorationOffset = 35,\r
+ DecorationAlignment = 36,\r
+ DecorationXfbBuffer = 37,\r
+ DecorationStride = 38,\r
+ DecorationBuiltIn = 39,\r
+ DecorationFuncParamAttr = 40,\r
+ DecorationFPRoundingMode = 41,\r
+ DecorationFPFastMathMode = 42,\r
+ DecorationLinkageAttributes = 43,\r
+ DecorationSpecId = 44,\r
};\r
\r
enum BuiltIn {\r
- BuiltInPosition,\r
- BuiltInPointSize,\r
- BuiltInClipVertex,\r
- BuiltInClipDistance,\r
- BuiltInCullDistance,\r
- BuiltInVertexId,\r
- BuiltInInstanceId,\r
- BuiltInPrimitiveId,\r
- BuiltInInvocationId,\r
- BuiltInLayer,\r
- BuiltInViewportIndex,\r
- BuiltInTessLevelOuter,\r
- BuiltInTessLevelInner,\r
- BuiltInTessCoord,\r
- BuiltInPatchVertices,\r
- BuiltInFragCoord,\r
- BuiltInPointCoord,\r
- BuiltInFrontFacing,\r
- BuiltInSampleId,\r
- BuiltInSamplePosition,\r
- BuiltInSampleMask,\r
- BuiltInFragColor,\r
- BuiltInFragDepth,\r
- BuiltInHelperInvocation,\r
-\r
- // OpenGL compute stage, OpenCL work item built-ins\r
- BuiltInNumWorkgroups, // number of work-groups that will execute a kernel\r
- BuiltInWorkgroupSize, // OpenCL number of local work-items\r
- BuiltInWorkgroupId, // OpenCL work group id\r
- BuiltInLocalInvocationId, // OpenCL local work item id (decorates a vector3 i32/i64)\r
- BuiltInGlobalInvocationId, // OpenCL global work item id (decorates a vector3 i32/i64)\r
- BuiltInLocalInvocationIndex, // not in use in OpenCL\r
- BuiltInWorkDim, // OpenCL number of dimensions in use (decorates a scalar i32/i64)\r
- BuiltInGlobalSize, // OpenCL number of global work items, per dimension (decorates a vector3 i32/i64)\r
- BuiltInEnqueuedWorkgroupSize, // OpenCL 2.0 only, get local size\r
- BuiltInGlobalOffset, // OpenCL offset values specified global_work_offset \r
- BuiltInGlobalLinearId, // OpenCL 2.0 only, work items 1-dimensional global ID.\r
- BuiltInWorkgroupLinearId, // OpenCL 2.0 only work items 1-dimensional local ID.\r
-\r
- // OpenCL 2.0 subgroups\r
- BuiltInSubgroupSize, // Returns the number of work-items in the subgroup\r
- BuiltInSubgroupMaxSize, // Returns the maximum size of a subgroup within the dispatch\r
- BuiltInNumSubgroups, // Returns the maximum size of a subgroup within the dispatch\r
- BuiltInNumEnqueuedSubgroups, // Returns the maximum size of a subgroup within the dispatch\r
- BuiltInSubgroupId, // \r
- BuiltInSubgroupLocalInvocationId, // Returns the unique work-item ID within the current subgroup\r
-\r
- BuiltInCount // guard for validation, "default:" statements, etc.\r
-};\r
-\r
-enum SelectControl {\r
- SelectControlNone,\r
- SelectControlFlatten,\r
- SelectControlDontFlatten,\r
-\r
- SelectControlCount, // guard for validation, "default:" statements, etc.\r
-};\r
-\r
-enum LoopControl {\r
- LoopControlNone,\r
- LoopControlUnroll,\r
- LoopControlDontUnroll,\r
-\r
- LoopControlCount,\r
+ BuiltInPosition = 0,\r
+ BuiltInPointSize = 1,\r
+ BuiltInClipVertex = 2,\r
+ BuiltInClipDistance = 3,\r
+ BuiltInCullDistance = 4,\r
+ BuiltInVertexId = 5,\r
+ BuiltInInstanceId = 6,\r
+ BuiltInPrimitiveId = 7,\r
+ BuiltInInvocationId = 8,\r
+ BuiltInLayer = 9,\r
+ BuiltInViewportIndex = 10,\r
+ BuiltInTessLevelOuter = 11,\r
+ BuiltInTessLevelInner = 12,\r
+ BuiltInTessCoord = 13,\r
+ BuiltInPatchVertices = 14,\r
+ BuiltInFragCoord = 15,\r
+ BuiltInPointCoord = 16,\r
+ BuiltInFrontFacing = 17,\r
+ BuiltInSampleId = 18,\r
+ BuiltInSamplePosition = 19,\r
+ BuiltInSampleMask = 20,\r
+ BuiltInFragColor = 21,\r
+ BuiltInFragDepth = 22,\r
+ BuiltInHelperInvocation = 23,\r
+ BuiltInNumWorkgroups = 24,\r
+ BuiltInWorkgroupSize = 25,\r
+ BuiltInWorkgroupId = 26,\r
+ BuiltInLocalInvocationId = 27,\r
+ BuiltInGlobalInvocationId = 28,\r
+ BuiltInLocalInvocationIndex = 29,\r
+ BuiltInWorkDim = 30,\r
+ BuiltInGlobalSize = 31,\r
+ BuiltInEnqueuedWorkgroupSize = 32,\r
+ BuiltInGlobalOffset = 33,\r
+ BuiltInGlobalLinearId = 34,\r
+ BuiltInWorkgroupLinearId = 35,\r
+ BuiltInSubgroupSize = 36,\r
+ BuiltInSubgroupMaxSize = 37,\r
+ BuiltInNumSubgroups = 38,\r
+ BuiltInNumEnqueuedSubgroups = 39,\r
+ BuiltInSubgroupId = 40,\r
+ BuiltInSubgroupLocalInvocationId = 41,\r
+};\r
+\r
+enum SelectionControlShift {\r
+ SelectionControlFlattenShift = 0,\r
+ SelectionControlDontFlattenShift = 1,\r
+};\r
+\r
+enum SelectionControlMask {\r
+ SelectionControlMaskNone = 0,\r
+ SelectionControlFlattenMask = 0x00000001,\r
+ SelectionControlDontFlattenMask = 0x00000002,\r
+};\r
+\r
+enum LoopControlShift {\r
+ LoopControlUnrollShift = 0,\r
+ LoopControlDontUnrollShift = 1,\r
+};\r
+\r
+enum LoopControlMask {\r
+ LoopControlMaskNone = 0,\r
+ LoopControlUnrollMask = 0x00000001,\r
+ LoopControlDontUnrollMask = 0x00000002,\r
+};\r
+\r
+enum FunctionControlShift {\r
+ FunctionControlInlineShift = 0,\r
+ FunctionControlDontInlineShift = 1,\r
+ FunctionControlPureShift = 2,\r
+ FunctionControlConstShift = 3,\r
};\r
\r
enum FunctionControlMask {\r
- FunctionControlNone = 0x0,\r
- FunctionControlInline = 0x1,\r
- FunctionControlDontInline = 0x2,\r
- FunctionControlPure = 0x4, \r
- FunctionControlConst = 0x8,\r
+ FunctionControlMaskNone = 0,\r
+ FunctionControlInlineMask = 0x00000001,\r
+ FunctionControlDontInlineMask = 0x00000002,\r
+ FunctionControlPureMask = 0x00000004,\r
+ FunctionControlConstMask = 0x00000008,\r
+};\r
\r
- FunctionControlCount = 4,\r
+enum MemorySemanticsShift {\r
+ MemorySemanticsRelaxedShift = 0,\r
+ MemorySemanticsSequentiallyConsistentShift = 1,\r
+ MemorySemanticsAcquireShift = 2,\r
+ MemorySemanticsReleaseShift = 3,\r
+ MemorySemanticsUniformMemoryShift = 4,\r
+ MemorySemanticsSubgroupMemoryShift = 5,\r
+ MemorySemanticsWorkgroupLocalMemoryShift = 6,\r
+ MemorySemanticsWorkgroupGlobalMemoryShift = 7,\r
+ MemorySemanticsAtomicCounterMemoryShift = 8,\r
+ MemorySemanticsImageMemoryShift = 9,\r
};\r
\r
enum MemorySemanticsMask {\r
- MemorySemanticsRelaxed = 0x0001,\r
- MemorySemanticsSequentiallyConsistent = 0x0002,\r
- MemorySemanticsAcquire = 0x0004,\r
- MemorySemanticsRelease = 0x0008,\r
-\r
- MemorySemanticsUniform = 0x0010,\r
- MemorySemanticsSubgroup = 0x0020,\r
- MemorySemanticsWorkgroupLocal = 0x0040,\r
- MemorySemanticsWorkgroupGlobal = 0x0080,\r
- MemorySemanticsAtomicCounter = 0x0100,\r
- MemorySemanticsImage = 0x0200,\r
- MemorySemanticsAllMemory = 0x03FF,\r
+ MemorySemanticsMaskNone = 0,\r
+ MemorySemanticsRelaxedMask = 0x00000001,\r
+ MemorySemanticsSequentiallyConsistentMask = 0x00000002,\r
+ MemorySemanticsAcquireMask = 0x00000004,\r
+ MemorySemanticsReleaseMask = 0x00000008,\r
+ MemorySemanticsUniformMemoryMask = 0x00000010,\r
+ MemorySemanticsSubgroupMemoryMask = 0x00000020,\r
+ MemorySemanticsWorkgroupLocalMemoryMask = 0x00000040,\r
+ MemorySemanticsWorkgroupGlobalMemoryMask = 0x00000080,\r
+ MemorySemanticsAtomicCounterMemoryMask = 0x00000100,\r
+ MemorySemanticsImageMemoryMask = 0x00000200,\r
+};\r
\r
- MemorySemanticsCount = 10\r
+enum MemoryAccessShift {\r
+ MemoryAccessVolatileShift = 0,\r
+ MemoryAccessAlignedShift = 1,\r
};\r
\r
enum MemoryAccessMask {\r
- MemoryAccessVolatile = 0x0001,\r
- MemoryAccessAligned = 0x0002,\r
-\r
- MemoryAccessCount = 2\r
+ MemoryAccessMaskNone = 0,\r
+ MemoryAccessVolatileMask = 0x00000001,\r
+ MemoryAccessAlignedMask = 0x00000002,\r
};\r
\r
enum ExecutionScope {\r
- ExecutionScopeCrossDevice,\r
- ExecutionScopeDevice,\r
- ExecutionScopeWorkgroup,\r
- ExecutionScopeSubgroup,\r
-\r
- ExecutionScopeCount // guard for validation, "default:" statements, etc.\r
+ ExecutionScopeCrossDevice = 0,\r
+ ExecutionScopeDevice = 1,\r
+ ExecutionScopeWorkgroup = 2,\r
+ ExecutionScopeSubgroup = 3,\r
};\r
\r
enum GroupOperation {\r
- GroupOpReduce,\r
- GroupOpInclusiveScan,\r
- GroupOpExclusiveScan,\r
-\r
- GroupOpCount\r
+ GroupOperationReduce = 0,\r
+ GroupOperationInclusiveScan = 1,\r
+ GroupOperationExclusiveScan = 2,\r
};\r
\r
enum KernelEnqueueFlags {\r
- EnqFlagNoWait,\r
- EnqFlagWaitKernel,\r
- EnqFlagWaitWaitWorgGroup,\r
-\r
- EnqFlagCount\r
-};\r
-\r
-enum KernelProfilingInfo {\r
- ProfInfoCmdExecTime = 0x01,\r
- ProfilingInfoCount = 1\r
-};\r
-\r
-enum OpCode {\r
- OpNop = 0, // Not used.\r
-\r
- OpSource,\r
- OpSourceExtension,\r
- OpExtension,\r
- OpExtInstImport,\r
-\r
- OpMemoryModel,\r
- OpEntryPoint,\r
- OpExecutionMode,\r
-\r
- OpTypeVoid,\r
- OpTypeBool,\r
- OpTypeInt,\r
- OpTypeFloat,\r
- OpTypeVector,\r
- OpTypeMatrix,\r
- OpTypeSampler,\r
- OpTypeFilter,\r
- OpTypeArray,\r
- OpTypeRuntimeArray,\r
- OpTypeStruct,\r
- OpTypeOpaque,\r
- OpTypePointer,\r
- OpTypeFunction,\r
- OpTypeEvent,\r
- OpTypeDeviceEvent,\r
- OpTypeReserveId,\r
- OpTypeQueue,\r
- OpTypePipe,\r
-\r
- OpConstantTrue,\r
- OpConstantFalse,\r
- OpConstant,\r
- OpConstantComposite,\r
- OpConstantSampler,\r
- OpConstantNullPointer,\r
- OpConstantNullObject,\r
-\r
- OpSpecConstantTrue,\r
- OpSpecConstantFalse,\r
- OpSpecConstant,\r
- OpSpecConstantComposite,\r
-\r
- OpVariable,\r
- OpVariableArray,\r
-\r
- OpFunction,\r
- OpFunctionParameter,\r
- OpFunctionEnd,\r
- OpFunctionCall,\r
-\r
- OpExtInst,\r
-\r
- OpUndef,\r
-\r
- OpLoad,\r
- OpStore,\r
-\r
- OpPhi,\r
-\r
- OpDecorationGroup,\r
- OpDecorate,\r
- OpMemberDecorate,\r
- OpGroupDecorate,\r
- OpGroupMemberDecorate,\r
-\r
- OpName,\r
- OpMemberName,\r
- OpString,\r
- OpLine,\r
-\r
- OpVectorExtractDynamic,\r
- OpVectorInsertDynamic,\r
- OpVectorShuffle,\r
- \r
- OpCompositeConstruct,\r
- OpCompositeExtract,\r
- OpCompositeInsert,\r
-\r
- OpCopyObject,\r
- OpCopyMemory,\r
- OpCopyMemorySized,\r
-\r
- OpSampler,\r
-\r
- OpTextureSample,\r
- OpTextureSampleDref,\r
- OpTextureSampleLod,\r
- OpTextureSampleProj,\r
- OpTextureSampleGrad,\r
- OpTextureSampleOffset,\r
- OpTextureSampleProjLod,\r
- OpTextureSampleProjGrad,\r
- OpTextureSampleLodOffset,\r
- OpTextureSampleProjOffset,\r
- OpTextureSampleGradOffset,\r
- OpTextureSampleProjLodOffset,\r
- OpTextureSampleProjGradOffset,\r
-\r
- OpTextureFetchTexel,\r
- OpTextureFetchTexelOffset,\r
- OpTextureFetchSample,\r
- OpTextureFetchBuffer,\r
- OpTextureGather,\r
- OpTextureGatherOffset,\r
- OpTextureGatherOffsets,\r
-\r
- OpTextureQuerySizeLod,\r
- OpTextureQuerySize,\r
- OpTextureQueryLod,\r
- OpTextureQueryLevels,\r
- OpTextureQuerySamples,\r
-\r
- OpAccessChain,\r
- OpInBoundsAccessChain,\r
-\r
- OpSNegate,\r
- OpFNegate,\r
-\r
- OpNot,\r
-\r
- OpAny,\r
- OpAll,\r
-\r
- OpConvertFToU,\r
- OpConvertFToS,\r
- OpConvertSToF,\r
- OpConvertUToF,\r
- OpUConvert,\r
- OpSConvert,\r
- OpFConvert,\r
- OpConvertPtrToU,\r
- OpConvertUToPtr,\r
- OpPtrCastToGeneric, // cast a pointer storage class to be in storage generic\r
- OpGenericCastToPtr, // cast a pointer in the generic storage class generic to another storage class\r
- OpBitcast,\r
-\r
- OpTranspose,\r
-\r
- OpIsNan,\r
- OpIsInf,\r
- OpIsFinite,\r
- OpIsNormal,\r
- OpSignBitSet,\r
- OpLessOrGreater,\r
- OpOrdered,\r
- OpUnordered,\r
-\r
- OpArrayLength,\r
-\r
- OpIAdd,\r
- OpFAdd,\r
- OpISub,\r
- OpFSub,\r
- OpIMul,\r
- OpFMul,\r
- OpUDiv,\r
- OpSDiv,\r
- OpFDiv,\r
-\r
- OpUMod,\r
- OpSRem,\r
- OpSMod,\r
- OpFRem,\r
- OpFMod,\r
-\r
- OpVectorTimesScalar,\r
- OpMatrixTimesScalar,\r
- OpVectorTimesMatrix,\r
- OpMatrixTimesVector,\r
- OpMatrixTimesMatrix,\r
- OpOuterProduct,\r
-\r
- OpDot,\r
-\r
- OpShiftRightLogical,\r
- OpShiftRightArithmetic,\r
- OpShiftLeftLogical,\r
- OpLogicalOr,\r
- OpLogicalXor,\r
- OpLogicalAnd,\r
- \r
- OpBitwiseOr,\r
- OpBitwiseXor,\r
- OpBitwiseAnd,\r
- \r
- OpSelect,\r
-\r
- OpIEqual,\r
- OpFOrdEqual,\r
- OpFUnordEqual,\r
-\r
- OpINotEqual,\r
- OpFOrdNotEqual,\r
- OpFUnordNotEqual,\r
-\r
- OpULessThan,\r
- OpSLessThan,\r
- OpFOrdLessThan,\r
- OpFUnordLessThan,\r
-\r
- OpUGreaterThan,\r
- OpSGreaterThan,\r
- OpFOrdGreaterThan,\r
- OpFUnordGreaterThan,\r
-\r
- OpULessThanEqual,\r
- OpSLessThanEqual,\r
- OpFOrdLessThanEqual,\r
- OpFUnordLessThanEqual,\r
-\r
- OpUGreaterThanEqual,\r
- OpSGreaterThanEqual,\r
- OpFOrdGreaterThanEqual,\r
- OpFUnordGreaterThanEqual,\r
-\r
- OpDPdx,\r
- OpDPdy,\r
- OpFwidth,\r
- OpDPdxFine,\r
- OpDPdyFine,\r
- OpFwidthFine,\r
- OpDPdxCoarse,\r
- OpDPdyCoarse,\r
- OpFwidthCoarse,\r
-\r
- OpEmitVertex,\r
- OpEndPrimitive,\r
- OpEmitStreamVertex,\r
- OpEndStreamPrimitive,\r
-\r
- OpControlBarrier,\r
- OpMemoryBarrier,\r
-\r
- OpImagePointer,\r
-\r
- OpAtomicInit,\r
- OpAtomicLoad,\r
- OpAtomicStore,\r
- OpAtomicExchange,\r
- OpAtomicCompareExchange,\r
- OpAtomicCompareExchangeWeak,\r
- OpAtomicIIncrement,\r
- OpAtomicIDecrement,\r
- OpAtomicIAdd,\r
- OpAtomicISub,\r
- OpAtomicUMin,\r
- OpAtomicUMax,\r
- OpAtomicAnd,\r
- OpAtomicOr,\r
- OpAtomicXor,\r
-\r
- OpLoopMerge,\r
- OpSelectionMerge,\r
- OpLabel,\r
- OpBranch,\r
- OpBranchConditional,\r
- OpSwitch,\r
- OpKill,\r
- OpReturn,\r
- OpReturnValue,\r
-\r
- OpUnreachable,\r
-\r
- OpLifetimeStart,\r
- OpLifetimeStop,\r
-\r
- OpCompileFlag,\r
- \r
- OpAsyncGroupCopy,\r
- OpWaitGroupEvents, \r
-\r
- OpGroupAll,\r
- OpGroupAny,\r
- OpGroupBroadcast,\r
- \r
- OpGroupIAdd,\r
- OpGroupFAdd,\r
- OpGroupFMin,\r
- OpGroupUMin,\r
- OpGroupSMin,\r
- OpGroupFMax,\r
- OpGroupUMax,\r
- OpGroupSMax,\r
-\r
- OpGenericCastToPtrExplicit,\r
- OpGenericPtrMemSemantics,\r
-\r
- OpReadPipe,\r
- OpWritePipe,\r
- OpReservedReadPipe,\r
- OpReservedWritePipe,\r
- OpReserveReadPipePackets,\r
- OpReserveWritePipePackets,\r
- OpCommitReadPipe,\r
- OpCommitWritePipe,\r
- OpIsValidReserveId,\r
- OpGetNumPipePackets,\r
- OpGetMaxPipePackets,\r
- OpGroupReserveReadPipePackets,\r
- OpGroupReserveWritePipePackets,\r
- OpGroupCommitReadPipe,\r
- OpGroupCommitWritePipe, \r
-\r
- OpEnqueueMarker,\r
- OpEnqueueKernel,\r
- OpGetKernelNDrangeSubGroupCount,\r
- OpGetKernelNDrangeMaxSubGroupSize,\r
-\r
- OpGetKernelWorkGroupSize,\r
- OpGetKernelPreferredWorkGroupSizeMultiple,\r
-\r
- OpRetainEvent,\r
- OpReleaseEvent,\r
-\r
- OpCreateUserEvent,\r
- OpIsValidEvent,\r
- OpSetUserEventStatus,\r
- OpCaptureEventProfilingInfo,\r
- OpGetDefaultQueue,\r
- \r
- OpBuildNDRange,\r
-\r
- OpCount // guard for validation, "default:" statements, etc.\r
+ KernelEnqueueFlagsNoWait = 0,\r
+ KernelEnqueueFlagsWaitKernel = 1,\r
+ KernelEnqueueFlagsWaitWorkGroup = 2,\r
+};\r
+\r
+enum KernelProfilingInfoShift {\r
+ KernelProfilingInfoCmdExecTimeShift = 0,\r
+};\r
+\r
+enum KernelProfilingInfoMask {\r
+ KernelProfilingInfoMaskNone = 0,\r
+ KernelProfilingInfoCmdExecTimeMask = 0x00000001,\r
+};\r
+\r
+enum Op {\r
+ OpNop = 0,\r
+ OpSource = 1,\r
+ OpSourceExtension = 2,\r
+ OpExtension = 3,\r
+ OpExtInstImport = 4,\r
+ OpMemoryModel = 5,\r
+ OpEntryPoint = 6,\r
+ OpExecutionMode = 7,\r
+ OpTypeVoid = 8,\r
+ OpTypeBool = 9,\r
+ OpTypeInt = 10,\r
+ OpTypeFloat = 11,\r
+ OpTypeVector = 12,\r
+ OpTypeMatrix = 13,\r
+ OpTypeSampler = 14,\r
+ OpTypeFilter = 15,\r
+ OpTypeArray = 16,\r
+ OpTypeRuntimeArray = 17,\r
+ OpTypeStruct = 18,\r
+ OpTypeOpaque = 19,\r
+ OpTypePointer = 20,\r
+ OpTypeFunction = 21,\r
+ OpTypeEvent = 22,\r
+ OpTypeDeviceEvent = 23,\r
+ OpTypeReserveId = 24,\r
+ OpTypeQueue = 25,\r
+ OpTypePipe = 26,\r
+ OpConstantTrue = 27,\r
+ OpConstantFalse = 28,\r
+ OpConstant = 29,\r
+ OpConstantComposite = 30,\r
+ OpConstantSampler = 31,\r
+ OpConstantNullPointer = 32,\r
+ OpConstantNullObject = 33,\r
+ OpSpecConstantTrue = 34,\r
+ OpSpecConstantFalse = 35,\r
+ OpSpecConstant = 36,\r
+ OpSpecConstantComposite = 37,\r
+ OpVariable = 38,\r
+ OpVariableArray = 39,\r
+ OpFunction = 40,\r
+ OpFunctionParameter = 41,\r
+ OpFunctionEnd = 42,\r
+ OpFunctionCall = 43,\r
+ OpExtInst = 44,\r
+ OpUndef = 45,\r
+ OpLoad = 46,\r
+ OpStore = 47,\r
+ OpPhi = 48,\r
+ OpDecorationGroup = 49,\r
+ OpDecorate = 50,\r
+ OpMemberDecorate = 51,\r
+ OpGroupDecorate = 52,\r
+ OpGroupMemberDecorate = 53,\r
+ OpName = 54,\r
+ OpMemberName = 55,\r
+ OpString = 56,\r
+ OpLine = 57,\r
+ OpVectorExtractDynamic = 58,\r
+ OpVectorInsertDynamic = 59,\r
+ OpVectorShuffle = 60,\r
+ OpCompositeConstruct = 61,\r
+ OpCompositeExtract = 62,\r
+ OpCompositeInsert = 63,\r
+ OpCopyObject = 64,\r
+ OpCopyMemory = 65,\r
+ OpCopyMemorySized = 66,\r
+ OpSampler = 67,\r
+ OpTextureSample = 68,\r
+ OpTextureSampleDref = 69,\r
+ OpTextureSampleLod = 70,\r
+ OpTextureSampleProj = 71,\r
+ OpTextureSampleGrad = 72,\r
+ OpTextureSampleOffset = 73,\r
+ OpTextureSampleProjLod = 74,\r
+ OpTextureSampleProjGrad = 75,\r
+ OpTextureSampleLodOffset = 76,\r
+ OpTextureSampleProjOffset = 77,\r
+ OpTextureSampleGradOffset = 78,\r
+ OpTextureSampleProjLodOffset = 79,\r
+ OpTextureSampleProjGradOffset = 80,\r
+ OpTextureFetchTexelLod = 81,\r
+ OpTextureFetchTexelOffset = 82,\r
+ OpTextureFetchSample = 83,\r
+ OpTextureFetchTexel = 84,\r
+ OpTextureGather = 85,\r
+ OpTextureGatherOffset = 86,\r
+ OpTextureGatherOffsets = 87,\r
+ OpTextureQuerySizeLod = 88,\r
+ OpTextureQuerySize = 89,\r
+ OpTextureQueryLod = 90,\r
+ OpTextureQueryLevels = 91,\r
+ OpTextureQuerySamples = 92,\r
+ OpAccessChain = 93,\r
+ OpInBoundsAccessChain = 94,\r
+ OpSNegate = 95,\r
+ OpFNegate = 96,\r
+ OpNot = 97,\r
+ OpAny = 98,\r
+ OpAll = 99,\r
+ OpConvertFToU = 100,\r
+ OpConvertFToS = 101,\r
+ OpConvertSToF = 102,\r
+ OpConvertUToF = 103,\r
+ OpUConvert = 104,\r
+ OpSConvert = 105,\r
+ OpFConvert = 106,\r
+ OpConvertPtrToU = 107,\r
+ OpConvertUToPtr = 108,\r
+ OpPtrCastToGeneric = 109,\r
+ OpGenericCastToPtr = 110,\r
+ OpBitcast = 111,\r
+ OpTranspose = 112,\r
+ OpIsNan = 113,\r
+ OpIsInf = 114,\r
+ OpIsFinite = 115,\r
+ OpIsNormal = 116,\r
+ OpSignBitSet = 117,\r
+ OpLessOrGreater = 118,\r
+ OpOrdered = 119,\r
+ OpUnordered = 120,\r
+ OpArrayLength = 121,\r
+ OpIAdd = 122,\r
+ OpFAdd = 123,\r
+ OpISub = 124,\r
+ OpFSub = 125,\r
+ OpIMul = 126,\r
+ OpFMul = 127,\r
+ OpUDiv = 128,\r
+ OpSDiv = 129,\r
+ OpFDiv = 130,\r
+ OpUMod = 131,\r
+ OpSRem = 132,\r
+ OpSMod = 133,\r
+ OpFRem = 134,\r
+ OpFMod = 135,\r
+ OpVectorTimesScalar = 136,\r
+ OpMatrixTimesScalar = 137,\r
+ OpVectorTimesMatrix = 138,\r
+ OpMatrixTimesVector = 139,\r
+ OpMatrixTimesMatrix = 140,\r
+ OpOuterProduct = 141,\r
+ OpDot = 142,\r
+ OpShiftRightLogical = 143,\r
+ OpShiftRightArithmetic = 144,\r
+ OpShiftLeftLogical = 145,\r
+ OpLogicalOr = 146,\r
+ OpLogicalXor = 147,\r
+ OpLogicalAnd = 148,\r
+ OpBitwiseOr = 149,\r
+ OpBitwiseXor = 150,\r
+ OpBitwiseAnd = 151,\r
+ OpSelect = 152,\r
+ OpIEqual = 153,\r
+ OpFOrdEqual = 154,\r
+ OpFUnordEqual = 155,\r
+ OpINotEqual = 156,\r
+ OpFOrdNotEqual = 157,\r
+ OpFUnordNotEqual = 158,\r
+ OpULessThan = 159,\r
+ OpSLessThan = 160,\r
+ OpFOrdLessThan = 161,\r
+ OpFUnordLessThan = 162,\r
+ OpUGreaterThan = 163,\r
+ OpSGreaterThan = 164,\r
+ OpFOrdGreaterThan = 165,\r
+ OpFUnordGreaterThan = 166,\r
+ OpULessThanEqual = 167,\r
+ OpSLessThanEqual = 168,\r
+ OpFOrdLessThanEqual = 169,\r
+ OpFUnordLessThanEqual = 170,\r
+ OpUGreaterThanEqual = 171,\r
+ OpSGreaterThanEqual = 172,\r
+ OpFOrdGreaterThanEqual = 173,\r
+ OpFUnordGreaterThanEqual = 174,\r
+ OpDPdx = 175,\r
+ OpDPdy = 176,\r
+ OpFwidth = 177,\r
+ OpDPdxFine = 178,\r
+ OpDPdyFine = 179,\r
+ OpFwidthFine = 180,\r
+ OpDPdxCoarse = 181,\r
+ OpDPdyCoarse = 182,\r
+ OpFwidthCoarse = 183,\r
+ OpEmitVertex = 184,\r
+ OpEndPrimitive = 185,\r
+ OpEmitStreamVertex = 186,\r
+ OpEndStreamPrimitive = 187,\r
+ OpControlBarrier = 188,\r
+ OpMemoryBarrier = 189,\r
+ OpImagePointer = 190,\r
+ OpAtomicInit = 191,\r
+ OpAtomicLoad = 192,\r
+ OpAtomicStore = 193,\r
+ OpAtomicExchange = 194,\r
+ OpAtomicCompareExchange = 195,\r
+ OpAtomicCompareExchangeWeak = 196,\r
+ OpAtomicIIncrement = 197,\r
+ OpAtomicIDecrement = 198,\r
+ OpAtomicIAdd = 199,\r
+ OpAtomicISub = 200,\r
+ OpAtomicUMin = 201,\r
+ OpAtomicUMax = 202,\r
+ OpAtomicAnd = 203,\r
+ OpAtomicOr = 204,\r
+ OpAtomicXor = 205,\r
+ OpLoopMerge = 206,\r
+ OpSelectionMerge = 207,\r
+ OpLabel = 208,\r
+ OpBranch = 209,\r
+ OpBranchConditional = 210,\r
+ OpSwitch = 211,\r
+ OpKill = 212,\r
+ OpReturn = 213,\r
+ OpReturnValue = 214,\r
+ OpUnreachable = 215,\r
+ OpLifetimeStart = 216,\r
+ OpLifetimeStop = 217,\r
+ OpCompileFlag = 218,\r
+ OpAsyncGroupCopy = 219,\r
+ OpWaitGroupEvents = 220,\r
+ OpGroupAll = 221,\r
+ OpGroupAny = 222,\r
+ OpGroupBroadcast = 223,\r
+ OpGroupIAdd = 224,\r
+ OpGroupFAdd = 225,\r
+ OpGroupFMin = 226,\r
+ OpGroupUMin = 227,\r
+ OpGroupSMin = 228,\r
+ OpGroupFMax = 229,\r
+ OpGroupUMax = 230,\r
+ OpGroupSMax = 231,\r
+ OpGenericCastToPtrExplicit = 232,\r
+ OpGenericPtrMemSemantics = 233,\r
+ OpReadPipe = 234,\r
+ OpWritePipe = 235,\r
+ OpReservedReadPipe = 236,\r
+ OpReservedWritePipe = 237,\r
+ OpReserveReadPipePackets = 238,\r
+ OpReserveWritePipePackets = 239,\r
+ OpCommitReadPipe = 240,\r
+ OpCommitWritePipe = 241,\r
+ OpIsValidReserveId = 242,\r
+ OpGetNumPipePackets = 243,\r
+ OpGetMaxPipePackets = 244,\r
+ OpGroupReserveReadPipePackets = 245,\r
+ OpGroupReserveWritePipePackets = 246,\r
+ OpGroupCommitReadPipe = 247,\r
+ OpGroupCommitWritePipe = 248,\r
+ OpEnqueueMarker = 249,\r
+ OpEnqueueKernel = 250,\r
+ OpGetKernelNDrangeSubGroupCount = 251,\r
+ OpGetKernelNDrangeMaxSubGroupSize = 252,\r
+ OpGetKernelWorkGroupSize = 253,\r
+ OpGetKernelPreferredWorkGroupSizeMultiple = 254,\r
+ OpRetainEvent = 255,\r
+ OpReleaseEvent = 256,\r
+ OpCreateUserEvent = 257,\r
+ OpIsValidEvent = 258,\r
+ OpSetUserEventStatus = 259,\r
+ OpCaptureEventProfilingInfo = 260,\r
+ OpGetDefaultQueue = 261,\r
+ OpBuildNDRange = 262,\r
+ OpSatConvertSToU = 263,\r
+ OpSatConvertUToS = 264,\r
+ OpAtomicIMin = 265,\r
+ OpAtomicIMax = 266,\r
};\r
\r
-#ifdef __cplusplus\r
}; // end namespace spv\r
-#endif\r
\r
-#endif // spirv_H\r
+#endif // #ifdef __cplusplus\r
+\r
+\r
+#ifndef __cplusplus\r
+\r
+const int SpvMagicNumber = 0x07230203;\r
+const int SpvVersion = 99;\r
+\r
+typedef unsigned int SpvId;\r
+\r
+const unsigned int SpvOpCodeMask = 0xFFFF;\r
+const unsigned int SpvWordCountShift = 16;\r
+\r
+typedef enum SpvSourceLanguage_ {\r
+ SpvSourceLanguageUnknown = 0,\r
+ SpvSourceLanguageESSL = 1,\r
+ SpvSourceLanguageGLSL = 2,\r
+ SpvSourceLanguageOpenCL = 3,\r
+} SpvSourceLanguage;\r
+\r
+typedef enum SpvExecutionModel_ {\r
+ SpvExecutionModelVertex = 0,\r
+ SpvExecutionModelTessellationControl = 1,\r
+ SpvExecutionModelTessellationEvaluation = 2,\r
+ SpvExecutionModelGeometry = 3,\r
+ SpvExecutionModelFragment = 4,\r
+ SpvExecutionModelGLCompute = 5,\r
+ SpvExecutionModelKernel = 6,\r
+} SpvExecutionModel;\r
+\r
+typedef enum SpvAddressingModel_ {\r
+ SpvAddressingModelLogical = 0,\r
+ SpvAddressingModelPhysical32 = 1,\r
+ SpvAddressingModelPhysical64 = 2,\r
+} SpvAddressingModel;\r
+\r
+typedef enum SpvMemoryModel_ {\r
+ SpvMemoryModelSimple = 0,\r
+ SpvMemoryModelGLSL450 = 1,\r
+ SpvMemoryModelOpenCL12 = 2,\r
+ SpvMemoryModelOpenCL20 = 3,\r
+ SpvMemoryModelOpenCL21 = 4,\r
+} SpvMemoryModel;\r
+\r
+typedef enum SpvExecutionMode_ {\r
+ SpvExecutionModeInvocations = 0,\r
+ SpvExecutionModeSpacingEqual = 1,\r
+ SpvExecutionModeSpacingFractionalEven = 2,\r
+ SpvExecutionModeSpacingFractionalOdd = 3,\r
+ SpvExecutionModeVertexOrderCw = 4,\r
+ SpvExecutionModeVertexOrderCcw = 5,\r
+ SpvExecutionModePixelCenterInteger = 6,\r
+ SpvExecutionModeOriginUpperLeft = 7,\r
+ SpvExecutionModeEarlyFragmentTests = 8,\r
+ SpvExecutionModePointMode = 9,\r
+ SpvExecutionModeXfb = 10,\r
+ SpvExecutionModeDepthReplacing = 11,\r
+ SpvExecutionModeDepthAny = 12,\r
+ SpvExecutionModeDepthGreater = 13,\r
+ SpvExecutionModeDepthLess = 14,\r
+ SpvExecutionModeDepthUnchanged = 15,\r
+ SpvExecutionModeLocalSize = 16,\r
+ SpvExecutionModeLocalSizeHint = 17,\r
+ SpvExecutionModeInputPoints = 18,\r
+ SpvExecutionModeInputLines = 19,\r
+ SpvExecutionModeInputLinesAdjacency = 20,\r
+ SpvExecutionModeInputTriangles = 21,\r
+ SpvExecutionModeInputTrianglesAdjacency = 22,\r
+ SpvExecutionModeInputQuads = 23,\r
+ SpvExecutionModeInputIsolines = 24,\r
+ SpvExecutionModeOutputVertices = 25,\r
+ SpvExecutionModeOutputPoints = 26,\r
+ SpvExecutionModeOutputLineStrip = 27,\r
+ SpvExecutionModeOutputTriangleStrip = 28,\r
+ SpvExecutionModeVecTypeHint = 29,\r
+ SpvExecutionModeContractionOff = 30,\r
+} SpvExecutionMode;\r
+\r
+typedef enum SpvStorageClass_ {\r
+ SpvStorageClassUniformConstant = 0,\r
+ SpvStorageClassInput = 1,\r
+ SpvStorageClassUniform = 2,\r
+ SpvStorageClassOutput = 3,\r
+ SpvStorageClassWorkgroupLocal = 4,\r
+ SpvStorageClassWorkgroupGlobal = 5,\r
+ SpvStorageClassPrivateGlobal = 6,\r
+ SpvStorageClassFunction = 7,\r
+ SpvStorageClassGeneric = 8,\r
+ SpvStorageClassPrivate = 9,\r
+ SpvStorageClassAtomicCounter = 10,\r
+} SpvStorageClass;\r
+\r
+typedef enum SpvDim_ {\r
+ SpvDim1D = 0,\r
+ SpvDim2D = 1,\r
+ SpvDim3D = 2,\r
+ SpvDimCube = 3,\r
+ SpvDimRect = 4,\r
+ SpvDimBuffer = 5,\r
+} SpvDim;\r
+\r
+typedef enum SpvSamplerAddressingMode_ {\r
+ SpvSamplerAddressingModeNone = 0,\r
+ SpvSamplerAddressingModeClampToEdge = 2,\r
+ SpvSamplerAddressingModeClamp = 4,\r
+ SpvSamplerAddressingModeRepeat = 6,\r
+ SpvSamplerAddressingModeRepeatMirrored = 8,\r
+} SpvSamplerAddressingMode;\r
+\r
+typedef enum SpvSamplerFilterMode_ {\r
+ SpvSamplerFilterModeNearest = 16,\r
+ SpvSamplerFilterModeLinear = 32,\r
+} SpvSamplerFilterMode;\r
+\r
+typedef enum SpvFPFastMathModeShift_ {\r
+ SpvFPFastMathModeNotNaNShift = 0,\r
+ SpvFPFastMathModeNotInfShift = 1,\r
+ SpvFPFastMathModeNSZShift = 2,\r
+ SpvFPFastMathModeAllowRecipShift = 3,\r
+ SpvFPFastMathModeFastShift = 4,\r
+} SpvFPFastMathModeShift;\r
+\r
+typedef enum SpvFPFastMathModeMask_ {\r
+ SpvFPFastMathModeMaskNone = 0,\r
+ SpvFPFastMathModeNotNaNMask = 0x00000001,\r
+ SpvFPFastMathModeNotInfMask = 0x00000002,\r
+ SpvFPFastMathModeNSZMask = 0x00000004,\r
+ SpvFPFastMathModeAllowRecipMask = 0x00000008,\r
+ SpvFPFastMathModeFastMask = 0x00000010,\r
+} SpvFPFastMathModeMask;\r
+\r
+typedef enum SpvFPRoundingMode_ {\r
+ SpvFPRoundingModeRTE = 0,\r
+ SpvFPRoundingModeRTZ = 1,\r
+ SpvFPRoundingModeRTP = 2,\r
+ SpvFPRoundingModeRTN = 3,\r
+} SpvFPRoundingMode;\r
+\r
+typedef enum SpvLinkageType_ {\r
+ SpvLinkageTypeExport = 0,\r
+ SpvLinkageTypeImport = 1,\r
+} SpvLinkageType;\r
+\r
+typedef enum SpvAccessQualifier_ {\r
+ SpvAccessQualifierReadOnly = 0,\r
+ SpvAccessQualifierWriteOnly = 1,\r
+ SpvAccessQualifierReadWrite = 2,\r
+} SpvAccessQualifier;\r
+\r
+typedef enum SpvFunctionParameterAttribute_ {\r
+ SpvFunctionParameterAttributeZext = 0,\r
+ SpvFunctionParameterAttributeSext = 1,\r
+ SpvFunctionParameterAttributeByVal = 2,\r
+ SpvFunctionParameterAttributeSret = 3,\r
+ SpvFunctionParameterAttributeNoAlias = 4,\r
+ SpvFunctionParameterAttributeNoCapture = 5,\r
+ SpvFunctionParameterAttributeSVM = 6,\r
+ SpvFunctionParameterAttributeNoWrite = 7,\r
+ SpvFunctionParameterAttributeNoReadWrite = 8,\r
+} SpvFunctionParameterAttribute;\r
+\r
+typedef enum SpvDecoration_ {\r
+ SpvDecorationPrecisionLow = 0,\r
+ SpvDecorationPrecisionMedium = 1,\r
+ SpvDecorationPrecisionHigh = 2,\r
+ SpvDecorationBlock = 3,\r
+ SpvDecorationBufferBlock = 4,\r
+ SpvDecorationRowMajor = 5,\r
+ SpvDecorationColMajor = 6,\r
+ SpvDecorationGLSLShared = 7,\r
+ SpvDecorationGLSLStd140 = 8,\r
+ SpvDecorationGLSLStd430 = 9,\r
+ SpvDecorationGLSLPacked = 10,\r
+ SpvDecorationSmooth = 11,\r
+ SpvDecorationNoperspective = 12,\r
+ SpvDecorationFlat = 13,\r
+ SpvDecorationPatch = 14,\r
+ SpvDecorationCentroid = 15,\r
+ SpvDecorationSample = 16,\r
+ SpvDecorationInvariant = 17,\r
+ SpvDecorationRestrict = 18,\r
+ SpvDecorationAliased = 19,\r
+ SpvDecorationVolatile = 20,\r
+ SpvDecorationConstant = 21,\r
+ SpvDecorationCoherent = 22,\r
+ SpvDecorationNonwritable = 23,\r
+ SpvDecorationNonreadable = 24,\r
+ SpvDecorationUniform = 25,\r
+ SpvDecorationNoStaticUse = 26,\r
+ SpvDecorationCPacked = 27,\r
+ SpvDecorationSaturatedConversion = 28,\r
+ SpvDecorationStream = 29,\r
+ SpvDecorationLocation = 30,\r
+ SpvDecorationComponent = 31,\r
+ SpvDecorationIndex = 32,\r
+ SpvDecorationBinding = 33,\r
+ SpvDecorationDescriptorSet = 34,\r
+ SpvDecorationOffset = 35,\r
+ SpvDecorationAlignment = 36,\r
+ SpvDecorationXfbBuffer = 37,\r
+ SpvDecorationStride = 38,\r
+ SpvDecorationBuiltIn = 39,\r
+ SpvDecorationFuncParamAttr = 40,\r
+ SpvDecorationFPRoundingMode = 41,\r
+ SpvDecorationFPFastMathMode = 42,\r
+ SpvDecorationLinkageAttributes = 43,\r
+ SpvDecorationSpecId = 44,\r
+} SpvDecoration;\r
+\r
+typedef enum SpvBuiltIn_ {\r
+ SpvBuiltInPosition = 0,\r
+ SpvBuiltInPointSize = 1,\r
+ SpvBuiltInClipVertex = 2,\r
+ SpvBuiltInClipDistance = 3,\r
+ SpvBuiltInCullDistance = 4,\r
+ SpvBuiltInVertexId = 5,\r
+ SpvBuiltInInstanceId = 6,\r
+ SpvBuiltInPrimitiveId = 7,\r
+ SpvBuiltInInvocationId = 8,\r
+ SpvBuiltInLayer = 9,\r
+ SpvBuiltInViewportIndex = 10,\r
+ SpvBuiltInTessLevelOuter = 11,\r
+ SpvBuiltInTessLevelInner = 12,\r
+ SpvBuiltInTessCoord = 13,\r
+ SpvBuiltInPatchVertices = 14,\r
+ SpvBuiltInFragCoord = 15,\r
+ SpvBuiltInPointCoord = 16,\r
+ SpvBuiltInFrontFacing = 17,\r
+ SpvBuiltInSampleId = 18,\r
+ SpvBuiltInSamplePosition = 19,\r
+ SpvBuiltInSampleMask = 20,\r
+ SpvBuiltInFragColor = 21,\r
+ SpvBuiltInFragDepth = 22,\r
+ SpvBuiltInHelperInvocation = 23,\r
+ SpvBuiltInNumWorkgroups = 24,\r
+ SpvBuiltInWorkgroupSize = 25,\r
+ SpvBuiltInWorkgroupId = 26,\r
+ SpvBuiltInLocalInvocationId = 27,\r
+ SpvBuiltInGlobalInvocationId = 28,\r
+ SpvBuiltInLocalInvocationIndex = 29,\r
+ SpvBuiltInWorkDim = 30,\r
+ SpvBuiltInGlobalSize = 31,\r
+ SpvBuiltInEnqueuedWorkgroupSize = 32,\r
+ SpvBuiltInGlobalOffset = 33,\r
+ SpvBuiltInGlobalLinearId = 34,\r
+ SpvBuiltInWorkgroupLinearId = 35,\r
+ SpvBuiltInSubgroupSize = 36,\r
+ SpvBuiltInSubgroupMaxSize = 37,\r
+ SpvBuiltInNumSubgroups = 38,\r
+ SpvBuiltInNumEnqueuedSubgroups = 39,\r
+ SpvBuiltInSubgroupId = 40,\r
+ SpvBuiltInSubgroupLocalInvocationId = 41,\r
+} SpvBuiltIn;\r
+\r
+typedef enum SpvSelectionControlShift_ {\r
+ SpvSelectionControlFlattenShift = 0,\r
+ SpvSelectionControlDontFlattenShift = 1,\r
+} SpvSelectionControlShift;\r
+\r
+typedef enum SpvSelectionControlMask_ {\r
+ SpvSelectionControlMaskNone = 0,\r
+ SpvSelectionControlFlattenMask = 0x00000001,\r
+ SpvSelectionControlDontFlattenMask = 0x00000002,\r
+} SpvSelectionControlMask;\r
+\r
+typedef enum SpvLoopControlShift_ {\r
+ SpvLoopControlUnrollShift = 0,\r
+ SpvLoopControlDontUnrollShift = 1,\r
+} SpvLoopControlShift;\r
+\r
+typedef enum SpvLoopControlMask_ {\r
+ SpvLoopControlMaskNone = 0,\r
+ SpvLoopControlUnrollMask = 0x00000001,\r
+ SpvLoopControlDontUnrollMask = 0x00000002,\r
+} SpvLoopControlMask;\r
+\r
+typedef enum SpvFunctionControlShift_ {\r
+ SpvFunctionControlInlineShift = 0,\r
+ SpvFunctionControlDontInlineShift = 1,\r
+ SpvFunctionControlPureShift = 2,\r
+ SpvFunctionControlConstShift = 3,\r
+} SpvFunctionControlShift;\r
+\r
+typedef enum SpvFunctionControlMask_ {\r
+ SpvFunctionControlMaskNone = 0,\r
+ SpvFunctionControlInlineMask = 0x00000001,\r
+ SpvFunctionControlDontInlineMask = 0x00000002,\r
+ SpvFunctionControlPureMask = 0x00000004,\r
+ SpvFunctionControlConstMask = 0x00000008,\r
+} SpvFunctionControlMask;\r
+\r
+typedef enum SpvMemorySemanticsShift_ {\r
+ SpvMemorySemanticsRelaxedShift = 0,\r
+ SpvMemorySemanticsSequentiallyConsistentShift = 1,\r
+ SpvMemorySemanticsAcquireShift = 2,\r
+ SpvMemorySemanticsReleaseShift = 3,\r
+ SpvMemorySemanticsUniformMemoryShift = 4,\r
+ SpvMemorySemanticsSubgroupMemoryShift = 5,\r
+ SpvMemorySemanticsWorkgroupLocalMemoryShift = 6,\r
+ SpvMemorySemanticsWorkgroupGlobalMemoryShift = 7,\r
+ SpvMemorySemanticsAtomicCounterMemoryShift = 8,\r
+ SpvMemorySemanticsImageMemoryShift = 9,\r
+} SpvMemorySemanticsShift;\r
+\r
+typedef enum SpvMemorySemanticsMask_ {\r
+ SpvMemorySemanticsMaskNone = 0,\r
+ SpvMemorySemanticsRelaxedMask = 0x00000001,\r
+ SpvMemorySemanticsSequentiallyConsistentMask = 0x00000002,\r
+ SpvMemorySemanticsAcquireMask = 0x00000004,\r
+ SpvMemorySemanticsReleaseMask = 0x00000008,\r
+ SpvMemorySemanticsUniformMemoryMask = 0x00000010,\r
+ SpvMemorySemanticsSubgroupMemoryMask = 0x00000020,\r
+ SpvMemorySemanticsWorkgroupLocalMemoryMask = 0x00000040,\r
+ SpvMemorySemanticsWorkgroupGlobalMemoryMask = 0x00000080,\r
+ SpvMemorySemanticsAtomicCounterMemoryMask = 0x00000100,\r
+ SpvMemorySemanticsImageMemoryMask = 0x00000200,\r
+} SpvMemorySemanticsMask;\r
+\r
+typedef enum SpvMemoryAccessShift_ {\r
+ SpvMemoryAccessVolatileShift = 0,\r
+ SpvMemoryAccessAlignedShift = 1,\r
+} SpvMemoryAccessShift;\r
+\r
+typedef enum SpvMemoryAccessMask_ {\r
+ SpvMemoryAccessMaskNone = 0,\r
+ SpvMemoryAccessVolatileMask = 0x00000001,\r
+ SpvMemoryAccessAlignedMask = 0x00000002,\r
+} SpvMemoryAccessMask;\r
+\r
+typedef enum SpvExecutionScope_ {\r
+ SpvExecutionScopeCrossDevice = 0,\r
+ SpvExecutionScopeDevice = 1,\r
+ SpvExecutionScopeWorkgroup = 2,\r
+ SpvExecutionScopeSubgroup = 3,\r
+} SpvExecutionScope;\r
+\r
+typedef enum SpvGroupOperation_ {\r
+ SpvGroupOperationReduce = 0,\r
+ SpvGroupOperationInclusiveScan = 1,\r
+ SpvGroupOperationExclusiveScan = 2,\r
+} SpvGroupOperation;\r
+\r
+typedef enum SpvKernelEnqueueFlags_ {\r
+ SpvKernelEnqueueFlagsNoWait = 0,\r
+ SpvKernelEnqueueFlagsWaitKernel = 1,\r
+ SpvKernelEnqueueFlagsWaitWorkGroup = 2,\r
+} SpvKernelEnqueueFlags;\r
+\r
+typedef enum SpvKernelProfilingInfoShift_ {\r
+ SpvKernelProfilingInfoCmdExecTimeShift = 0,\r
+} SpvKernelProfilingInfoShift;\r
+\r
+typedef enum SpvKernelProfilingInfoMask_ {\r
+ SpvKernelProfilingInfoMaskNone = 0,\r
+ SpvKernelProfilingInfoCmdExecTimeMask = 0x00000001,\r
+} SpvKernelProfilingInfoMask;\r
+\r
+typedef enum SpvOp_ {\r
+ SpvOpNop = 0,\r
+ SpvOpSource = 1,\r
+ SpvOpSourceExtension = 2,\r
+ SpvOpExtension = 3,\r
+ SpvOpExtInstImport = 4,\r
+ SpvOpMemoryModel = 5,\r
+ SpvOpEntryPoint = 6,\r
+ SpvOpExecutionMode = 7,\r
+ SpvOpTypeVoid = 8,\r
+ SpvOpTypeBool = 9,\r
+ SpvOpTypeInt = 10,\r
+ SpvOpTypeFloat = 11,\r
+ SpvOpTypeVector = 12,\r
+ SpvOpTypeMatrix = 13,\r
+ SpvOpTypeSampler = 14,\r
+ SpvOpTypeFilter = 15,\r
+ SpvOpTypeArray = 16,\r
+ SpvOpTypeRuntimeArray = 17,\r
+ SpvOpTypeStruct = 18,\r
+ SpvOpTypeOpaque = 19,\r
+ SpvOpTypePointer = 20,\r
+ SpvOpTypeFunction = 21,\r
+ SpvOpTypeEvent = 22,\r
+ SpvOpTypeDeviceEvent = 23,\r
+ SpvOpTypeReserveId = 24,\r
+ SpvOpTypeQueue = 25,\r
+ SpvOpTypePipe = 26,\r
+ SpvOpConstantTrue = 27,\r
+ SpvOpConstantFalse = 28,\r
+ SpvOpConstant = 29,\r
+ SpvOpConstantComposite = 30,\r
+ SpvOpConstantSampler = 31,\r
+ SpvOpConstantNullPointer = 32,\r
+ SpvOpConstantNullObject = 33,\r
+ SpvOpSpecConstantTrue = 34,\r
+ SpvOpSpecConstantFalse = 35,\r
+ SpvOpSpecConstant = 36,\r
+ SpvOpSpecConstantComposite = 37,\r
+ SpvOpVariable = 38,\r
+ SpvOpVariableArray = 39,\r
+ SpvOpFunction = 40,\r
+ SpvOpFunctionParameter = 41,\r
+ SpvOpFunctionEnd = 42,\r
+ SpvOpFunctionCall = 43,\r
+ SpvOpExtInst = 44,\r
+ SpvOpUndef = 45,\r
+ SpvOpLoad = 46,\r
+ SpvOpStore = 47,\r
+ SpvOpPhi = 48,\r
+ SpvOpDecorationGroup = 49,\r
+ SpvOpDecorate = 50,\r
+ SpvOpMemberDecorate = 51,\r
+ SpvOpGroupDecorate = 52,\r
+ SpvOpGroupMemberDecorate = 53,\r
+ SpvOpName = 54,\r
+ SpvOpMemberName = 55,\r
+ SpvOpString = 56,\r
+ SpvOpLine = 57,\r
+ SpvOpVectorExtractDynamic = 58,\r
+ SpvOpVectorInsertDynamic = 59,\r
+ SpvOpVectorShuffle = 60,\r
+ SpvOpCompositeConstruct = 61,\r
+ SpvOpCompositeExtract = 62,\r
+ SpvOpCompositeInsert = 63,\r
+ SpvOpCopyObject = 64,\r
+ SpvOpCopyMemory = 65,\r
+ SpvOpCopyMemorySized = 66,\r
+ SpvOpSampler = 67,\r
+ SpvOpTextureSample = 68,\r
+ SpvOpTextureSampleDref = 69,\r
+ SpvOpTextureSampleLod = 70,\r
+ SpvOpTextureSampleProj = 71,\r
+ SpvOpTextureSampleGrad = 72,\r
+ SpvOpTextureSampleOffset = 73,\r
+ SpvOpTextureSampleProjLod = 74,\r
+ SpvOpTextureSampleProjGrad = 75,\r
+ SpvOpTextureSampleLodOffset = 76,\r
+ SpvOpTextureSampleProjOffset = 77,\r
+ SpvOpTextureSampleGradOffset = 78,\r
+ SpvOpTextureSampleProjLodOffset = 79,\r
+ SpvOpTextureSampleProjGradOffset = 80,\r
+ SpvOpTextureFetchTexelLod = 81,\r
+ SpvOpTextureFetchTexelOffset = 82,\r
+ SpvOpTextureFetchSample = 83,\r
+ SpvOpTextureFetchTexel = 84,\r
+ SpvOpTextureGather = 85,\r
+ SpvOpTextureGatherOffset = 86,\r
+ SpvOpTextureGatherOffsets = 87,\r
+ SpvOpTextureQuerySizeLod = 88,\r
+ SpvOpTextureQuerySize = 89,\r
+ SpvOpTextureQueryLod = 90,\r
+ SpvOpTextureQueryLevels = 91,\r
+ SpvOpTextureQuerySamples = 92,\r
+ SpvOpAccessChain = 93,\r
+ SpvOpInBoundsAccessChain = 94,\r
+ SpvOpSNegate = 95,\r
+ SpvOpFNegate = 96,\r
+ SpvOpNot = 97,\r
+ SpvOpAny = 98,\r
+ SpvOpAll = 99,\r
+ SpvOpConvertFToU = 100,\r
+ SpvOpConvertFToS = 101,\r
+ SpvOpConvertSToF = 102,\r
+ SpvOpConvertUToF = 103,\r
+ SpvOpUConvert = 104,\r
+ SpvOpSConvert = 105,\r
+ SpvOpFConvert = 106,\r
+ SpvOpConvertPtrToU = 107,\r
+ SpvOpConvertUToPtr = 108,\r
+ SpvOpPtrCastToGeneric = 109,\r
+ SpvOpGenericCastToPtr = 110,\r
+ SpvOpBitcast = 111,\r
+ SpvOpTranspose = 112,\r
+ SpvOpIsNan = 113,\r
+ SpvOpIsInf = 114,\r
+ SpvOpIsFinite = 115,\r
+ SpvOpIsNormal = 116,\r
+ SpvOpSignBitSet = 117,\r
+ SpvOpLessOrGreater = 118,\r
+ SpvOpOrdered = 119,\r
+ SpvOpUnordered = 120,\r
+ SpvOpArrayLength = 121,\r
+ SpvOpIAdd = 122,\r
+ SpvOpFAdd = 123,\r
+ SpvOpISub = 124,\r
+ SpvOpFSub = 125,\r
+ SpvOpIMul = 126,\r
+ SpvOpFMul = 127,\r
+ SpvOpUDiv = 128,\r
+ SpvOpSDiv = 129,\r
+ SpvOpFDiv = 130,\r
+ SpvOpUMod = 131,\r
+ SpvOpSRem = 132,\r
+ SpvOpSMod = 133,\r
+ SpvOpFRem = 134,\r
+ SpvOpFMod = 135,\r
+ SpvOpVectorTimesScalar = 136,\r
+ SpvOpMatrixTimesScalar = 137,\r
+ SpvOpVectorTimesMatrix = 138,\r
+ SpvOpMatrixTimesVector = 139,\r
+ SpvOpMatrixTimesMatrix = 140,\r
+ SpvOpOuterProduct = 141,\r
+ SpvOpDot = 142,\r
+ SpvOpShiftRightLogical = 143,\r
+ SpvOpShiftRightArithmetic = 144,\r
+ SpvOpShiftLeftLogical = 145,\r
+ SpvOpLogicalOr = 146,\r
+ SpvOpLogicalXor = 147,\r
+ SpvOpLogicalAnd = 148,\r
+ SpvOpBitwiseOr = 149,\r
+ SpvOpBitwiseXor = 150,\r
+ SpvOpBitwiseAnd = 151,\r
+ SpvOpSelect = 152,\r
+ SpvOpIEqual = 153,\r
+ SpvOpFOrdEqual = 154,\r
+ SpvOpFUnordEqual = 155,\r
+ SpvOpINotEqual = 156,\r
+ SpvOpFOrdNotEqual = 157,\r
+ SpvOpFUnordNotEqual = 158,\r
+ SpvOpULessThan = 159,\r
+ SpvOpSLessThan = 160,\r
+ SpvOpFOrdLessThan = 161,\r
+ SpvOpFUnordLessThan = 162,\r
+ SpvOpUGreaterThan = 163,\r
+ SpvOpSGreaterThan = 164,\r
+ SpvOpFOrdGreaterThan = 165,\r
+ SpvOpFUnordGreaterThan = 166,\r
+ SpvOpULessThanEqual = 167,\r
+ SpvOpSLessThanEqual = 168,\r
+ SpvOpFOrdLessThanEqual = 169,\r
+ SpvOpFUnordLessThanEqual = 170,\r
+ SpvOpUGreaterThanEqual = 171,\r
+ SpvOpSGreaterThanEqual = 172,\r
+ SpvOpFOrdGreaterThanEqual = 173,\r
+ SpvOpFUnordGreaterThanEqual = 174,\r
+ SpvOpDPdx = 175,\r
+ SpvOpDPdy = 176,\r
+ SpvOpFwidth = 177,\r
+ SpvOpDPdxFine = 178,\r
+ SpvOpDPdyFine = 179,\r
+ SpvOpFwidthFine = 180,\r
+ SpvOpDPdxCoarse = 181,\r
+ SpvOpDPdyCoarse = 182,\r
+ SpvOpFwidthCoarse = 183,\r
+ SpvOpEmitVertex = 184,\r
+ SpvOpEndPrimitive = 185,\r
+ SpvOpEmitStreamVertex = 186,\r
+ SpvOpEndStreamPrimitive = 187,\r
+ SpvOpControlBarrier = 188,\r
+ SpvOpMemoryBarrier = 189,\r
+ SpvOpImagePointer = 190,\r
+ SpvOpAtomicInit = 191,\r
+ SpvOpAtomicLoad = 192,\r
+ SpvOpAtomicStore = 193,\r
+ SpvOpAtomicExchange = 194,\r
+ SpvOpAtomicCompareExchange = 195,\r
+ SpvOpAtomicCompareExchangeWeak = 196,\r
+ SpvOpAtomicIIncrement = 197,\r
+ SpvOpAtomicIDecrement = 198,\r
+ SpvOpAtomicIAdd = 199,\r
+ SpvOpAtomicISub = 200,\r
+ SpvOpAtomicUMin = 201,\r
+ SpvOpAtomicUMax = 202,\r
+ SpvOpAtomicAnd = 203,\r
+ SpvOpAtomicOr = 204,\r
+ SpvOpAtomicXor = 205,\r
+ SpvOpLoopMerge = 206,\r
+ SpvOpSelectionMerge = 207,\r
+ SpvOpLabel = 208,\r
+ SpvOpBranch = 209,\r
+ SpvOpBranchConditional = 210,\r
+ SpvOpSwitch = 211,\r
+ SpvOpKill = 212,\r
+ SpvOpReturn = 213,\r
+ SpvOpReturnValue = 214,\r
+ SpvOpUnreachable = 215,\r
+ SpvOpLifetimeStart = 216,\r
+ SpvOpLifetimeStop = 217,\r
+ SpvOpCompileFlag = 218,\r
+ SpvOpAsyncGroupCopy = 219,\r
+ SpvOpWaitGroupEvents = 220,\r
+ SpvOpGroupAll = 221,\r
+ SpvOpGroupAny = 222,\r
+ SpvOpGroupBroadcast = 223,\r
+ SpvOpGroupIAdd = 224,\r
+ SpvOpGroupFAdd = 225,\r
+ SpvOpGroupFMin = 226,\r
+ SpvOpGroupUMin = 227,\r
+ SpvOpGroupSMin = 228,\r
+ SpvOpGroupFMax = 229,\r
+ SpvOpGroupUMax = 230,\r
+ SpvOpGroupSMax = 231,\r
+ SpvOpGenericCastToPtrExplicit = 232,\r
+ SpvOpGenericPtrMemSemantics = 233,\r
+ SpvOpReadPipe = 234,\r
+ SpvOpWritePipe = 235,\r
+ SpvOpReservedReadPipe = 236,\r
+ SpvOpReservedWritePipe = 237,\r
+ SpvOpReserveReadPipePackets = 238,\r
+ SpvOpReserveWritePipePackets = 239,\r
+ SpvOpCommitReadPipe = 240,\r
+ SpvOpCommitWritePipe = 241,\r
+ SpvOpIsValidReserveId = 242,\r
+ SpvOpGetNumPipePackets = 243,\r
+ SpvOpGetMaxPipePackets = 244,\r
+ SpvOpGroupReserveReadPipePackets = 245,\r
+ SpvOpGroupReserveWritePipePackets = 246,\r
+ SpvOpGroupCommitReadPipe = 247,\r
+ SpvOpGroupCommitWritePipe = 248,\r
+ SpvOpEnqueueMarker = 249,\r
+ SpvOpEnqueueKernel = 250,\r
+ SpvOpGetKernelNDrangeSubGroupCount = 251,\r
+ SpvOpGetKernelNDrangeMaxSubGroupSize = 252,\r
+ SpvOpGetKernelWorkGroupSize = 253,\r
+ SpvOpGetKernelPreferredWorkGroupSizeMultiple = 254,\r
+ SpvOpRetainEvent = 255,\r
+ SpvOpReleaseEvent = 256,\r
+ SpvOpCreateUserEvent = 257,\r
+ SpvOpIsValidEvent = 258,\r
+ SpvOpSetUserEventStatus = 259,\r
+ SpvOpCaptureEventProfilingInfo = 260,\r
+ SpvOpGetDefaultQueue = 261,\r
+ SpvOpBuildNDRange = 262,\r
+ SpvOpSatConvertSToU = 263,\r
+ SpvOpSatConvertUToS = 264,\r
+ SpvOpAtomicIMin = 265,\r
+ SpvOpAtomicIMax = 266,\r
+} SpvOp;\r
+\r
+#endif // #ifndef __cplusplus\r
+\r
+#endif // #ifndef spirv_H\r