// the specification (or their sanitized versions for auto-generating the
// spirv headers.
//
-// Also, the ceilings are declared next to these, to help keep them in sync.
+// Also, for masks the ceilings are declared next to these, to help keep them in sync.
// Ceilings should be
// - one more than the maximum value an enumerant takes on, for non-mask enumerants
// (for non-sparse enums, this is the number of enumerants)
// (for non-sparse mask enums, this is the number of enumerants)
//
-const int SourceLanguageCeiling = 6; // HLSL todo: need official enumerant
-
const char* SourceString(int source)
{
switch (source) {
case 4: return "OpenCL_CPP";
case 5: return "HLSL";
- case SourceLanguageCeiling:
default: return "Bad";
}
}
-const int ExecutionModelCeiling = 7;
-
const char* ExecutionModelString(int model)
{
switch (model) {
case 5: return "GLCompute";
case 6: return "Kernel";
- case ExecutionModelCeiling:
default: return "Bad";
}
}
-const int AddressingModelCeiling = 3;
-
const char* AddressingString(int addr)
{
switch (addr) {
case 1: return "Physical32";
case 2: return "Physical64";
- case AddressingModelCeiling:
default: return "Bad";
}
}
-const int MemoryModelCeiling = 3;
-
const char* MemoryString(int mem)
{
switch (mem) {
case 1: return "GLSL450";
case 2: return "OpenCL";
- case MemoryModelCeiling:
default: return "Bad";
}
}
}
}
-const int StorageClassCeiling = 13;
-
const char* StorageClassString(int StorageClass)
{
switch (StorageClass) {
case 11: return "Image";
case 12: return "StorageBuffer";
- case StorageClassCeiling:
default: return "Bad";
}
}
default: return "Bad";
#ifdef AMD_EXTENSIONS
- case 4999: return "ExplicitInterpAMD";
+ case DecorationExplicitInterpAMD: return "ExplicitInterpAMD";
#endif
#ifdef NV_EXTENSIONS
- case 5248: return "OverrideCoverageNV";
- case 5250: return "PassthroughNV";
- case 5252: return "ViewportRelativeNV";
- case 5256: return "SecondaryViewportRelativeNV";
+ case DecorationOverrideCoverageNV: return "OverrideCoverageNV";
+ case DecorationPassthroughNV: return "PassthroughNV";
+ case DecorationViewportRelativeNV: return "ViewportRelativeNV";
+ case DecorationSecondaryViewportRelativeNV: return "SecondaryViewportRelativeNV";
#endif
case DecorationHlslCounterBufferGOOGLE: return "DecorationHlslCounterBufferGOOGLE";
}
}
-const int BuiltInCeiling = 44;
-
const char* BuiltInString(int builtIn)
{
switch (builtIn) {
case 5264: return "FullyCoveredEXT";
- case BuiltInCeiling:
default: return "Bad";
}
}
-const int DimensionCeiling = 7;
-
const char* DimensionString(int dim)
{
switch (dim) {
case 5: return "Buffer";
case 6: return "SubpassData";
- case DimensionCeiling:
default: return "Bad";
}
}
-const int SamplerAddressingModeCeiling = 5;
-
const char* SamplerAddressingModeString(int mode)
{
switch (mode) {
case 3: return "Repeat";
case 4: return "RepeatMirrored";
- case SamplerAddressingModeCeiling:
default: return "Bad";
}
}
-const int SamplerFilterModeCeiling = 2;
-
const char* SamplerFilterModeString(int mode)
{
switch (mode) {
case 0: return "Nearest";
case 1: return "Linear";
- case SamplerFilterModeCeiling:
default: return "Bad";
}
}
-const int ImageFormatCeiling = 40;
-
const char* ImageFormatString(int format)
{
switch (format) {
case 38: return "R16ui";
case 39: return "R8ui";
- case ImageFormatCeiling:
default:
return "Bad";
}
}
-const int ImageChannelOrderCeiling = 19;
-
const char* ImageChannelOrderString(int format)
{
switch (format) {
case 17: return "sRGBA";
case 18: return "sBGRA";
- case ImageChannelOrderCeiling:
default:
return "Bad";
}
}
-const int ImageChannelDataTypeCeiling = 17;
-
const char* ImageChannelDataTypeString(int type)
{
switch (type)
case 15: return "UnormInt24";
case 16: return "UnormInt101010_2";
- case ImageChannelDataTypeCeiling:
default:
return "Bad";
}
}
}
-const int FPFastMathCeiling = 5;
-
const char* FPFastMathString(int mode)
{
switch (mode) {
case 3: return "AllowRecip";
case 4: return "Fast";
- case FPFastMathCeiling:
default: return "Bad";
}
}
-const int FPRoundingModeCeiling = 4;
-
const char* FPRoundingModeString(int mode)
{
switch (mode) {
case 2: return "RTP";
case 3: return "RTN";
- case FPRoundingModeCeiling:
default: return "Bad";
}
}
-const int LinkageTypeCeiling = 2;
-
const char* LinkageTypeString(int type)
{
switch (type) {
case 0: return "Export";
case 1: return "Import";
- case LinkageTypeCeiling:
default: return "Bad";
}
}
-const int FuncParamAttrCeiling = 8;
-
const char* FuncParamAttrString(int attr)
{
switch (attr) {
case 6: return "NoWrite";
case 7: return "NoReadWrite";
- case FuncParamAttrCeiling:
default: return "Bad";
}
}
-const int AccessQualifierCeiling = 3;
-
const char* AccessQualifierString(int attr)
{
switch (attr) {
case 1: return "WriteOnly";
case 2: return "ReadWrite";
- case AccessQualifierCeiling:
default: return "Bad";
}
}
}
}
-const int MemorySemanticsCeiling = 12;
-
const char* MemorySemanticsString(int mem)
{
// Note: No bits set (None) means "Relaxed"
case 10: return "AtomicCounterMemory";
case 11: return "ImageMemory";
- case MemorySemanticsCeiling:
default: return "Bad";
}
}
-const int MemoryAccessCeiling = 3;
-
const char* MemoryAccessString(int mem)
{
switch (mem) {
case 1: return "Aligned";
case 2: return "Nontemporal";
- case MemoryAccessCeiling:
default: return "Bad";
}
}
-const int ScopeCeiling = 5;
-
const char* ScopeString(int mem)
{
switch (mem) {
case 3: return "Subgroup";
case 4: return "Invocation";
- case ScopeCeiling:
default: return "Bad";
}
}
-const int GroupOperationCeiling = 9;
-
const char* GroupOperationString(int gop)
{
case GroupOperationPartitionedExclusiveScanNV: return "PartitionedExclusiveScanNV";
#endif
- case GroupOperationCeiling:
default: return "Bad";
}
}
-const int KernelEnqueueFlagsCeiling = 3;
-
const char* KernelEnqueueFlagsString(int flag)
{
switch (flag)
case 1: return "WaitKernel";
case 2: return "WaitWorkGroup";
- case KernelEnqueueFlagsCeiling:
default: return "Bad";
}
}
-const int KernelProfilingInfoCeiling = 1;
-
const char* KernelProfilingInfoString(int info)
{
switch (info)
{
case 0: return "CmdExecTime";
- case KernelProfilingInfoCeiling:
default: return "Bad";
}
}
-const int CapabilityCeiling = 58;
-
const char* CapabilityString(int info)
{
switch (info)
case 67: return "GroupNonUniformClustered";
case 68: return "GroupNonUniformQuad";
- case 4423: return "SubgroupBallotKHR";
- case 4427: return "DrawParameters";
- case 4431: return "SubgroupVoteKHR";
+ case CapabilitySubgroupBallotKHR: return "SubgroupBallotKHR";
+ case CapabilityDrawParameters: return "DrawParameters";
+ case CapabilitySubgroupVoteKHR: return "SubgroupVoteKHR";
- case 4433: return "StorageUniformBufferBlock16";
- case 4434: return "StorageUniform16";
- case 4435: return "StoragePushConstant16";
- case 4436: return "StorageInputOutput16";
+ case CapabilityStorageUniformBufferBlock16: return "StorageUniformBufferBlock16";
+ case CapabilityStorageUniform16: return "StorageUniform16";
+ case CapabilityStoragePushConstant16: return "StoragePushConstant16";
+ case CapabilityStorageInputOutput16: return "StorageInputOutput16";
- case 4437: return "DeviceGroup";
- case 4439: return "MultiView";
+ case CapabilityDeviceGroup: return "DeviceGroup";
+ case CapabilityMultiView: return "MultiView";
- case 5013: return "StencilExportEXT";
+ case CapabilityStencilExportEXT: return "StencilExportEXT";
#ifdef AMD_EXTENSIONS
- case 5008: return "Float16ImageAMD";
- case 5009: return "ImageGatherBiasLodAMD";
- case 5010: return "FragmentMaskAMD";
- case 5015: return "ImageReadWriteLodAMD";
+ case CapabilityFloat16ImageAMD: return "Float16ImageAMD";
+ case CapabilityImageGatherBiasLodAMD: return "ImageGatherBiasLodAMD";
+ case CapabilityFragmentMaskAMD: return "FragmentMaskAMD";
+ case CapabilityImageReadWriteLodAMD: return "ImageReadWriteLodAMD";
#endif
- case 4445: return "AtomicStorageOps";
+ case CapabilityAtomicStorageOps: return "AtomicStorageOps";
- case 4447: return "SampleMaskPostDepthCoverage";
+ case CapabilitySampleMaskPostDepthCoverage: return "SampleMaskPostDepthCoverage";
#ifdef NV_EXTENSIONS
- case 5251: return "GeometryShaderPassthroughNV";
- case 5254: return "ShaderViewportIndexLayerNV";
- case 5255: return "ShaderViewportMaskNV";
- case 5259: return "ShaderStereoViewNV";
- case 5260: return "PerViewAttributesNV";
- case 5297: return "GroupNonUniformPartitionedNV";
+ case CapabilityGeometryShaderPassthroughNV: return "GeometryShaderPassthroughNV";
+ case CapabilityShaderViewportIndexLayerNV: return "ShaderViewportIndexLayerNV";
+ case CapabilityShaderViewportMaskNV: return "ShaderViewportMaskNV";
+ case CapabilityShaderStereoViewNV: return "ShaderStereoViewNV";
+ case CapabilityPerViewAttributesNV: return "PerViewAttributesNV";
+ case CapabilityGroupNonUniformPartitionedNV: return "GroupNonUniformPartitionedNV";
#endif
- case 5265: return "FragmentFullyCoveredEXT";
+ case CapabilityFragmentFullyCoveredEXT: return "FragmentFullyCoveredEXT";
- case CapabilityCeiling:
default: return "Bad";
}
}
case OpMemberDecorateStringGOOGLE: return "OpMemberDecorateStringGOOGLE";
#ifdef NV_EXTENSIONS
- case 5296: return "OpGroupNonUniformPartitionNV";
+ case OpGroupNonUniformPartitionNV: return "OpGroupNonUniformPartitionNV";
#endif
- case OpcodeCeiling:
default:
return "Bad";
}
OperandParameters DecorationOperands[DecorationCeiling];
EnumDefinition OperandClassParams[OperandCount];
-EnumParameters ExecutionModelParams[ExecutionModelCeiling];
-EnumParameters AddressingParams[AddressingModelCeiling];
-EnumParameters MemoryParams[MemoryModelCeiling];
EnumParameters ExecutionModeParams[ExecutionModeCeiling];
-EnumParameters StorageParams[StorageClassCeiling];
-EnumParameters SamplerAddressingModeParams[SamplerAddressingModeCeiling];
-EnumParameters SamplerFilterModeParams[SamplerFilterModeCeiling];
-EnumParameters ImageFormatParams[ImageFormatCeiling];
-EnumParameters ImageChannelOrderParams[ImageChannelOrderCeiling];
-EnumParameters ImageChannelDataTypeParams[ImageChannelDataTypeCeiling];
EnumParameters ImageOperandsParams[ImageOperandsCeiling];
-EnumParameters FPFastMathParams[FPFastMathCeiling];
-EnumParameters FPRoundingModeParams[FPRoundingModeCeiling];
-EnumParameters LinkageTypeParams[LinkageTypeCeiling];
EnumParameters DecorationParams[DecorationCeiling];
-EnumParameters BuiltInParams[BuiltInCeiling];
-EnumParameters DimensionalityParams[DimensionCeiling];
-EnumParameters FuncParamAttrParams[FuncParamAttrCeiling];
-EnumParameters AccessQualifierParams[AccessQualifierCeiling];
-EnumParameters GroupOperationParams[GroupOperationCeiling];
EnumParameters LoopControlParams[FunctionControlCeiling];
EnumParameters SelectionControlParams[SelectControlCeiling];
EnumParameters FunctionControlParams[FunctionControlCeiling];
-EnumParameters MemorySemanticsParams[MemorySemanticsCeiling];
-EnumParameters MemoryAccessParams[MemoryAccessCeiling];
-EnumParameters ScopeParams[ScopeCeiling];
-EnumParameters KernelEnqueueFlagsParams[KernelEnqueueFlagsCeiling];
-EnumParameters KernelProfilingInfoParams[KernelProfilingInfoCeiling];
-EnumParameters CapabilityParams[CapabilityCeiling];
// Set up all the parameterizing descriptions of the opcodes, operands, etc.
void Parameterize()
DecorationOperands[DecorationInputAttachmentIndex].push(OperandLiteralNumber, "'Attachment Index'");
DecorationOperands[DecorationAlignment].push(OperandLiteralNumber, "'Alignment'");
- OperandClassParams[OperandSource].set(SourceLanguageCeiling, SourceString, 0);
- OperandClassParams[OperandExecutionModel].set(ExecutionModelCeiling, ExecutionModelString, ExecutionModelParams);
- OperandClassParams[OperandAddressing].set(AddressingModelCeiling, AddressingString, AddressingParams);
- OperandClassParams[OperandMemory].set(MemoryModelCeiling, MemoryString, MemoryParams);
+ OperandClassParams[OperandSource].set(0, SourceString, 0);
+ OperandClassParams[OperandExecutionModel].set(0, ExecutionModelString, nullptr);
+ OperandClassParams[OperandAddressing].set(0, AddressingString, nullptr);
+ OperandClassParams[OperandMemory].set(0, MemoryString, nullptr);
OperandClassParams[OperandExecutionMode].set(ExecutionModeCeiling, ExecutionModeString, ExecutionModeParams);
OperandClassParams[OperandExecutionMode].setOperands(ExecutionModeOperands);
- OperandClassParams[OperandStorage].set(StorageClassCeiling, StorageClassString, StorageParams);
- OperandClassParams[OperandDimensionality].set(DimensionCeiling, DimensionString, DimensionalityParams);
- OperandClassParams[OperandSamplerAddressingMode].set(SamplerAddressingModeCeiling, SamplerAddressingModeString, SamplerAddressingModeParams);
- OperandClassParams[OperandSamplerFilterMode].set(SamplerFilterModeCeiling, SamplerFilterModeString, SamplerFilterModeParams);
- OperandClassParams[OperandSamplerImageFormat].set(ImageFormatCeiling, ImageFormatString, ImageFormatParams);
- OperandClassParams[OperandImageChannelOrder].set(ImageChannelOrderCeiling, ImageChannelOrderString, ImageChannelOrderParams);
- OperandClassParams[OperandImageChannelDataType].set(ImageChannelDataTypeCeiling, ImageChannelDataTypeString, ImageChannelDataTypeParams);
+ OperandClassParams[OperandStorage].set(0, StorageClassString, nullptr);
+ OperandClassParams[OperandDimensionality].set(0, DimensionString, nullptr);
+ OperandClassParams[OperandSamplerAddressingMode].set(0, SamplerAddressingModeString, nullptr);
+ OperandClassParams[OperandSamplerFilterMode].set(0, SamplerFilterModeString, nullptr);
+ OperandClassParams[OperandSamplerImageFormat].set(0, ImageFormatString, nullptr);
+ OperandClassParams[OperandImageChannelOrder].set(0, ImageChannelOrderString, nullptr);
+ OperandClassParams[OperandImageChannelDataType].set(0, ImageChannelDataTypeString, nullptr);
OperandClassParams[OperandImageOperands].set(ImageOperandsCeiling, ImageOperandsString, ImageOperandsParams, true);
- OperandClassParams[OperandFPFastMath].set(FPFastMathCeiling, FPFastMathString, FPFastMathParams, true);
- OperandClassParams[OperandFPRoundingMode].set(FPRoundingModeCeiling, FPRoundingModeString, FPRoundingModeParams);
- OperandClassParams[OperandLinkageType].set(LinkageTypeCeiling, LinkageTypeString, LinkageTypeParams);
- OperandClassParams[OperandFuncParamAttr].set(FuncParamAttrCeiling, FuncParamAttrString, FuncParamAttrParams);
- OperandClassParams[OperandAccessQualifier].set(AccessQualifierCeiling, AccessQualifierString, AccessQualifierParams);
+ OperandClassParams[OperandFPFastMath].set(0, FPFastMathString, nullptr, true);
+ OperandClassParams[OperandFPRoundingMode].set(0, FPRoundingModeString, nullptr);
+ OperandClassParams[OperandLinkageType].set(0, LinkageTypeString, nullptr);
+ OperandClassParams[OperandFuncParamAttr].set(0, FuncParamAttrString, nullptr);
+ OperandClassParams[OperandAccessQualifier].set(0, AccessQualifierString, nullptr);
OperandClassParams[OperandDecoration].set(DecorationCeiling, DecorationString, DecorationParams);
OperandClassParams[OperandDecoration].setOperands(DecorationOperands);
- OperandClassParams[OperandBuiltIn].set(BuiltInCeiling, BuiltInString, BuiltInParams);
+ OperandClassParams[OperandBuiltIn].set(0, BuiltInString, nullptr);
OperandClassParams[OperandSelect].set(SelectControlCeiling, SelectControlString, SelectionControlParams, true);
OperandClassParams[OperandLoop].set(LoopControlCeiling, LoopControlString, LoopControlParams, true);
OperandClassParams[OperandFunction].set(FunctionControlCeiling, FunctionControlString, FunctionControlParams, true);
- OperandClassParams[OperandMemorySemantics].set(MemorySemanticsCeiling, MemorySemanticsString, MemorySemanticsParams, true);
- OperandClassParams[OperandMemoryAccess].set(MemoryAccessCeiling, MemoryAccessString, MemoryAccessParams, true);
- OperandClassParams[OperandScope].set(ScopeCeiling, ScopeString, ScopeParams);
- OperandClassParams[OperandGroupOperation].set(GroupOperationCeiling, GroupOperationString, GroupOperationParams);
- OperandClassParams[OperandKernelEnqueueFlags].set(KernelEnqueueFlagsCeiling, KernelEnqueueFlagsString, KernelEnqueueFlagsParams);
- OperandClassParams[OperandKernelProfilingInfo].set(KernelProfilingInfoCeiling, KernelProfilingInfoString, KernelProfilingInfoParams, true);
- OperandClassParams[OperandCapability].set(CapabilityCeiling, CapabilityString, CapabilityParams);
- OperandClassParams[OperandOpcode].set(OpcodeCeiling, OpcodeString, 0);
-
- CapabilityParams[CapabilityShader].caps.push_back(CapabilityMatrix);
- CapabilityParams[CapabilityGeometry].caps.push_back(CapabilityShader);
- CapabilityParams[CapabilityTessellation].caps.push_back(CapabilityShader);
- CapabilityParams[CapabilityVector16].caps.push_back(CapabilityKernel);
- CapabilityParams[CapabilityFloat16Buffer].caps.push_back(CapabilityKernel);
- CapabilityParams[CapabilityInt64Atomics].caps.push_back(CapabilityInt64);
- CapabilityParams[CapabilityImageBasic].caps.push_back(CapabilityKernel);
- CapabilityParams[CapabilityImageReadWrite].caps.push_back(CapabilityImageBasic);
- CapabilityParams[CapabilityImageMipmap].caps.push_back(CapabilityImageBasic);
- CapabilityParams[CapabilityPipes].caps.push_back(CapabilityKernel);
- CapabilityParams[CapabilityDeviceEnqueue].caps.push_back(CapabilityKernel);
- CapabilityParams[CapabilityLiteralSampler].caps.push_back(CapabilityKernel);
- CapabilityParams[CapabilityAtomicStorage].caps.push_back(CapabilityShader);
- CapabilityParams[CapabilitySampleRateShading].caps.push_back(CapabilityShader);
- CapabilityParams[CapabilityTessellationPointSize].caps.push_back(CapabilityTessellation);
- CapabilityParams[CapabilityGeometryPointSize].caps.push_back(CapabilityGeometry);
- CapabilityParams[CapabilityImageGatherExtended].caps.push_back(CapabilityShader);
- CapabilityParams[CapabilityStorageImageExtendedFormats].caps.push_back(CapabilityShader);
- CapabilityParams[CapabilityStorageImageMultisample].caps.push_back(CapabilityShader);
- CapabilityParams[CapabilityUniformBufferArrayDynamicIndexing].caps.push_back(CapabilityShader);
- CapabilityParams[CapabilitySampledImageArrayDynamicIndexing].caps.push_back(CapabilityShader);
- CapabilityParams[CapabilityStorageBufferArrayDynamicIndexing].caps.push_back(CapabilityShader);
- CapabilityParams[CapabilityStorageImageArrayDynamicIndexing].caps.push_back(CapabilityShader);
- CapabilityParams[CapabilityClipDistance].caps.push_back(CapabilityShader);
- CapabilityParams[CapabilityCullDistance].caps.push_back(CapabilityShader);
- CapabilityParams[CapabilityGenericPointer].caps.push_back(CapabilityAddresses);
- CapabilityParams[CapabilityInt8].caps.push_back(CapabilityKernel);
- CapabilityParams[CapabilityInputAttachment].caps.push_back(CapabilityShader);
- CapabilityParams[CapabilityMinLod].caps.push_back(CapabilityShader);
- CapabilityParams[CapabilitySparseResidency].caps.push_back(CapabilityShader);
- CapabilityParams[CapabilitySampled1D].caps.push_back(CapabilityShader);
- CapabilityParams[CapabilitySampledRect].caps.push_back(CapabilityShader);
- CapabilityParams[CapabilitySampledBuffer].caps.push_back(CapabilityShader);
- CapabilityParams[CapabilitySampledCubeArray].caps.push_back(CapabilityShader);
- CapabilityParams[CapabilityImageMSArray].caps.push_back(CapabilityShader);
- CapabilityParams[CapabilityImage1D].caps.push_back(CapabilitySampled1D);
- CapabilityParams[CapabilityImageRect].caps.push_back(CapabilitySampledRect);
- CapabilityParams[CapabilityImageBuffer].caps.push_back(CapabilitySampledBuffer);
- CapabilityParams[CapabilityImageCubeArray].caps.push_back(CapabilitySampledCubeArray);
- CapabilityParams[CapabilityImageQuery].caps.push_back(CapabilityShader);
- CapabilityParams[CapabilityDerivativeControl].caps.push_back(CapabilityShader);
- CapabilityParams[CapabilityInterpolationFunction].caps.push_back(CapabilityShader);
- CapabilityParams[CapabilityTransformFeedback].caps.push_back(CapabilityShader);
- CapabilityParams[CapabilityGeometryStreams].caps.push_back(CapabilityGeometry);
- CapabilityParams[CapabilityStorageImageReadWithoutFormat].caps.push_back(CapabilityShader);
- CapabilityParams[CapabilityStorageImageWriteWithoutFormat].caps.push_back(CapabilityShader);
- CapabilityParams[CapabilityMultiViewport].caps.push_back(CapabilityGeometry);
-
- AddressingParams[AddressingModelPhysical32].caps.push_back(CapabilityAddresses);
- AddressingParams[AddressingModelPhysical64].caps.push_back(CapabilityAddresses);
-
- MemoryParams[MemoryModelSimple].caps.push_back(CapabilityShader);
- MemoryParams[MemoryModelGLSL450].caps.push_back(CapabilityShader);
- MemoryParams[MemoryModelOpenCL].caps.push_back(CapabilityKernel);
-
- MemorySemanticsParams[MemorySemanticsUniformMemoryShift].caps.push_back(CapabilityShader);
- MemorySemanticsParams[MemorySemanticsAtomicCounterMemoryShift].caps.push_back(CapabilityAtomicStorage);
-
- ExecutionModelParams[ExecutionModelVertex].caps.push_back(CapabilityShader);
- ExecutionModelParams[ExecutionModelTessellationControl].caps.push_back(CapabilityTessellation);
- ExecutionModelParams[ExecutionModelTessellationEvaluation].caps.push_back(CapabilityTessellation);
- ExecutionModelParams[ExecutionModelGeometry].caps.push_back(CapabilityGeometry);
- ExecutionModelParams[ExecutionModelFragment].caps.push_back(CapabilityShader);
- ExecutionModelParams[ExecutionModelGLCompute].caps.push_back(CapabilityShader);
- ExecutionModelParams[ExecutionModelKernel].caps.push_back(CapabilityKernel);
-
- // Storage capabilites
- StorageParams[StorageClassInput].caps.push_back(CapabilityShader);
- StorageParams[StorageClassUniform].caps.push_back(CapabilityShader);
- StorageParams[StorageClassOutput].caps.push_back(CapabilityShader);
- StorageParams[StorageClassPrivate].caps.push_back(CapabilityShader);
- StorageParams[StorageClassGeneric].caps.push_back(CapabilityKernel);
- StorageParams[StorageClassAtomicCounter].caps.push_back(CapabilityAtomicStorage);
- StorageParams[StorageClassPushConstant].caps.push_back(CapabilityShader);
-
- // Sampler Filter & Addressing mode capabilities
- SamplerAddressingModeParams[SamplerAddressingModeNone].caps.push_back(CapabilityKernel);
- SamplerAddressingModeParams[SamplerAddressingModeClampToEdge].caps.push_back(CapabilityKernel);
- SamplerAddressingModeParams[SamplerAddressingModeClamp].caps.push_back(CapabilityKernel);
- SamplerAddressingModeParams[SamplerAddressingModeRepeat].caps.push_back(CapabilityKernel);
- SamplerAddressingModeParams[SamplerAddressingModeRepeatMirrored].caps.push_back(CapabilityKernel);
-
- SamplerFilterModeParams[SamplerFilterModeNearest].caps.push_back(CapabilityKernel);
- SamplerFilterModeParams[SamplerFilterModeLinear].caps.push_back(CapabilityKernel);
-
- // image format capabilities
-
- // ES/Desktop float
- ImageFormatParams[ImageFormatRgba32f].caps.push_back(CapabilityShader);
- ImageFormatParams[ImageFormatRgba16f].caps.push_back(CapabilityShader);
- ImageFormatParams[ImageFormatR32f].caps.push_back(CapabilityShader);
- ImageFormatParams[ImageFormatRgba8].caps.push_back(CapabilityShader);
- ImageFormatParams[ImageFormatRgba8Snorm].caps.push_back(CapabilityShader);
-
- // Desktop float
- ImageFormatParams[ImageFormatRg32f].caps.push_back(CapabilityStorageImageExtendedFormats);
- ImageFormatParams[ImageFormatRg16f].caps.push_back(CapabilityStorageImageExtendedFormats);
- ImageFormatParams[ImageFormatR11fG11fB10f].caps.push_back(CapabilityStorageImageExtendedFormats);
- ImageFormatParams[ImageFormatR16f].caps.push_back(CapabilityStorageImageExtendedFormats);
- ImageFormatParams[ImageFormatRgba16].caps.push_back(CapabilityStorageImageExtendedFormats);
- ImageFormatParams[ImageFormatRgb10A2].caps.push_back(CapabilityStorageImageExtendedFormats);
- ImageFormatParams[ImageFormatRg16].caps.push_back(CapabilityStorageImageExtendedFormats);
- ImageFormatParams[ImageFormatRg8].caps.push_back(CapabilityStorageImageExtendedFormats);
- ImageFormatParams[ImageFormatR16].caps.push_back(CapabilityStorageImageExtendedFormats);
- ImageFormatParams[ImageFormatR8].caps.push_back(CapabilityStorageImageExtendedFormats);
- ImageFormatParams[ImageFormatRgba16Snorm].caps.push_back(CapabilityStorageImageExtendedFormats);
- ImageFormatParams[ImageFormatRg16Snorm].caps.push_back(CapabilityStorageImageExtendedFormats);
- ImageFormatParams[ImageFormatRg8Snorm].caps.push_back(CapabilityStorageImageExtendedFormats);
- ImageFormatParams[ImageFormatR16Snorm].caps.push_back(CapabilityStorageImageExtendedFormats);
- ImageFormatParams[ImageFormatR8Snorm].caps.push_back(CapabilityStorageImageExtendedFormats);
-
- // ES/Desktop int
- ImageFormatParams[ImageFormatRgba32i].caps.push_back(CapabilityShader);
- ImageFormatParams[ImageFormatRgba16i].caps.push_back(CapabilityShader);
- ImageFormatParams[ImageFormatRgba8i].caps.push_back(CapabilityShader);
- ImageFormatParams[ImageFormatR32i].caps.push_back(CapabilityShader);
-
- // Desktop int
- ImageFormatParams[ImageFormatRg32i].caps.push_back(CapabilityStorageImageExtendedFormats);
- ImageFormatParams[ImageFormatRg16i].caps.push_back(CapabilityStorageImageExtendedFormats);
- ImageFormatParams[ImageFormatRg8i].caps.push_back(CapabilityStorageImageExtendedFormats);
- ImageFormatParams[ImageFormatR16i].caps.push_back(CapabilityStorageImageExtendedFormats);
- ImageFormatParams[ImageFormatR8i].caps.push_back(CapabilityStorageImageExtendedFormats);
-
- // ES/Desktop uint
- ImageFormatParams[ImageFormatRgba32ui].caps.push_back(CapabilityShader);
- ImageFormatParams[ImageFormatRgba16ui].caps.push_back(CapabilityShader);
- ImageFormatParams[ImageFormatRgba8ui].caps.push_back(CapabilityShader);
- ImageFormatParams[ImageFormatR32ui].caps.push_back(CapabilityShader);
-
- // Desktop uint
- ImageFormatParams[ImageFormatRgb10a2ui].caps.push_back(CapabilityStorageImageExtendedFormats);
- ImageFormatParams[ImageFormatRg32ui].caps.push_back(CapabilityStorageImageExtendedFormats);
- ImageFormatParams[ImageFormatRg16ui].caps.push_back(CapabilityStorageImageExtendedFormats);
- ImageFormatParams[ImageFormatRg8ui].caps.push_back(CapabilityStorageImageExtendedFormats);
- ImageFormatParams[ImageFormatR16ui].caps.push_back(CapabilityStorageImageExtendedFormats);
- ImageFormatParams[ImageFormatR8ui].caps.push_back(CapabilityStorageImageExtendedFormats);
-
- // image channel order capabilities
- for (int i = 0; i < ImageChannelOrderCeiling; ++i) {
- ImageChannelOrderParams[i].caps.push_back(CapabilityKernel);
- }
-
- // image channel type capabilities
- for (int i = 0; i < ImageChannelDataTypeCeiling; ++i) {
- ImageChannelDataTypeParams[i].caps.push_back(CapabilityKernel);
- }
-
- // image lookup operands
- ImageOperandsParams[ImageOperandsBiasShift].caps.push_back(CapabilityShader);
- ImageOperandsParams[ImageOperandsOffsetShift].caps.push_back(CapabilityImageGatherExtended);
- ImageOperandsParams[ImageOperandsMinLodShift].caps.push_back(CapabilityMinLod);
-
- // fast math flags capabilities
- for (int i = 0; i < FPFastMathCeiling; ++i) {
- FPFastMathParams[i].caps.push_back(CapabilityKernel);
- }
-
- // fp rounding mode capabilities
- for (int i = 0; i < FPRoundingModeCeiling; ++i) {
- FPRoundingModeParams[i].caps.push_back(CapabilityKernel);
- }
-
- // linkage types
- for (int i = 0; i < LinkageTypeCeiling; ++i) {
- LinkageTypeParams[i].caps.push_back(CapabilityLinkage);
- }
-
- // function argument types
- for (int i = 0; i < FuncParamAttrCeiling; ++i) {
- FuncParamAttrParams[i].caps.push_back(CapabilityKernel);
- }
-
- // function argument types
- for (int i = 0; i < AccessQualifierCeiling; ++i) {
- AccessQualifierParams[i].caps.push_back(CapabilityKernel);
- }
-
- ExecutionModeParams[ExecutionModeInvocations].caps.push_back(CapabilityGeometry);
- ExecutionModeParams[ExecutionModeSpacingEqual].caps.push_back(CapabilityTessellation);
- ExecutionModeParams[ExecutionModeSpacingFractionalEven].caps.push_back(CapabilityTessellation);
- ExecutionModeParams[ExecutionModeSpacingFractionalOdd].caps.push_back(CapabilityTessellation);
- ExecutionModeParams[ExecutionModeVertexOrderCw].caps.push_back(CapabilityTessellation);
- ExecutionModeParams[ExecutionModeVertexOrderCcw].caps.push_back(CapabilityTessellation);
- ExecutionModeParams[ExecutionModePixelCenterInteger].caps.push_back(CapabilityShader);
- ExecutionModeParams[ExecutionModeOriginUpperLeft].caps.push_back(CapabilityShader);
- ExecutionModeParams[ExecutionModeOriginLowerLeft].caps.push_back(CapabilityShader);
- ExecutionModeParams[ExecutionModeEarlyFragmentTests].caps.push_back(CapabilityShader);
- ExecutionModeParams[ExecutionModePointMode].caps.push_back(CapabilityTessellation);
- ExecutionModeParams[ExecutionModeXfb].caps.push_back(CapabilityTransformFeedback);
- ExecutionModeParams[ExecutionModeDepthReplacing].caps.push_back(CapabilityShader);
- ExecutionModeParams[ExecutionModeDepthGreater].caps.push_back(CapabilityShader);
- ExecutionModeParams[ExecutionModeDepthLess].caps.push_back(CapabilityShader);
- ExecutionModeParams[ExecutionModeDepthUnchanged].caps.push_back(CapabilityShader);
- ExecutionModeParams[ExecutionModeLocalSizeHint].caps.push_back(CapabilityKernel);
- ExecutionModeParams[ExecutionModeInputPoints].caps.push_back(CapabilityGeometry);
- ExecutionModeParams[ExecutionModeInputLines].caps.push_back(CapabilityGeometry);
- ExecutionModeParams[ExecutionModeInputLinesAdjacency].caps.push_back(CapabilityGeometry);
- ExecutionModeParams[ExecutionModeTriangles].caps.push_back(CapabilityGeometry);
- ExecutionModeParams[ExecutionModeTriangles].caps.push_back(CapabilityTessellation);
- ExecutionModeParams[ExecutionModeInputTrianglesAdjacency].caps.push_back(CapabilityGeometry);
- ExecutionModeParams[ExecutionModeQuads].caps.push_back(CapabilityTessellation);
- ExecutionModeParams[ExecutionModeIsolines].caps.push_back(CapabilityTessellation);
- ExecutionModeParams[ExecutionModeOutputVertices].caps.push_back(CapabilityGeometry);
- ExecutionModeParams[ExecutionModeOutputVertices].caps.push_back(CapabilityTessellation);
- ExecutionModeParams[ExecutionModeOutputPoints].caps.push_back(CapabilityGeometry);
- ExecutionModeParams[ExecutionModeOutputLineStrip].caps.push_back(CapabilityGeometry);
- ExecutionModeParams[ExecutionModeOutputTriangleStrip].caps.push_back(CapabilityGeometry);
- ExecutionModeParams[ExecutionModeVecTypeHint].caps.push_back(CapabilityKernel);
- ExecutionModeParams[ExecutionModeContractionOff].caps.push_back(CapabilityKernel);
-
- DecorationParams[DecorationRelaxedPrecision].caps.push_back(CapabilityShader);
- DecorationParams[DecorationBlock].caps.push_back(CapabilityShader);
- DecorationParams[DecorationBufferBlock].caps.push_back(CapabilityShader);
- DecorationParams[DecorationRowMajor].caps.push_back(CapabilityMatrix);
- DecorationParams[DecorationColMajor].caps.push_back(CapabilityMatrix);
- DecorationParams[DecorationGLSLShared].caps.push_back(CapabilityShader);
- DecorationParams[DecorationGLSLPacked].caps.push_back(CapabilityShader);
- DecorationParams[DecorationNoPerspective].caps.push_back(CapabilityShader);
- DecorationParams[DecorationFlat].caps.push_back(CapabilityShader);
- DecorationParams[DecorationPatch].caps.push_back(CapabilityTessellation);
- DecorationParams[DecorationCentroid].caps.push_back(CapabilityShader);
- DecorationParams[DecorationSample].caps.push_back(CapabilitySampleRateShading);
- DecorationParams[DecorationInvariant].caps.push_back(CapabilityShader);
- DecorationParams[DecorationConstant].caps.push_back(CapabilityKernel);
- DecorationParams[DecorationUniform].caps.push_back(CapabilityShader);
- DecorationParams[DecorationCPacked].caps.push_back(CapabilityKernel);
- DecorationParams[DecorationSaturatedConversion].caps.push_back(CapabilityKernel);
- DecorationParams[DecorationStream].caps.push_back(CapabilityGeometryStreams);
- DecorationParams[DecorationLocation].caps.push_back(CapabilityShader);
- DecorationParams[DecorationComponent].caps.push_back(CapabilityShader);
- DecorationParams[DecorationOffset].caps.push_back(CapabilityShader);
- DecorationParams[DecorationIndex].caps.push_back(CapabilityShader);
- DecorationParams[DecorationBinding].caps.push_back(CapabilityShader);
- DecorationParams[DecorationDescriptorSet].caps.push_back(CapabilityShader);
- DecorationParams[DecorationXfbBuffer].caps.push_back(CapabilityTransformFeedback);
- DecorationParams[DecorationXfbStride].caps.push_back(CapabilityTransformFeedback);
- DecorationParams[DecorationArrayStride].caps.push_back(CapabilityShader);
- DecorationParams[DecorationMatrixStride].caps.push_back(CapabilityMatrix);
- DecorationParams[DecorationFuncParamAttr].caps.push_back(CapabilityKernel);
- DecorationParams[DecorationFPRoundingMode].caps.push_back(CapabilityKernel);
- DecorationParams[DecorationFPFastMathMode].caps.push_back(CapabilityKernel);
- DecorationParams[DecorationLinkageAttributes].caps.push_back(CapabilityLinkage);
- DecorationParams[DecorationSpecId].caps.push_back(CapabilityShader);
- DecorationParams[DecorationNoContraction].caps.push_back(CapabilityShader);
- DecorationParams[DecorationInputAttachmentIndex].caps.push_back(CapabilityInputAttachment);
- DecorationParams[DecorationAlignment].caps.push_back(CapabilityKernel);
-
- BuiltInParams[BuiltInPosition].caps.push_back(CapabilityShader);
- BuiltInParams[BuiltInPointSize].caps.push_back(CapabilityShader);
- BuiltInParams[BuiltInClipDistance].caps.push_back(CapabilityClipDistance);
- BuiltInParams[BuiltInCullDistance].caps.push_back(CapabilityCullDistance);
-
- BuiltInParams[BuiltInVertexId].caps.push_back(CapabilityShader);
- BuiltInParams[BuiltInVertexId].desc = "Vertex ID, which takes on values 0, 1, 2, . . . .";
-
- BuiltInParams[BuiltInInstanceId].caps.push_back(CapabilityShader);
- BuiltInParams[BuiltInInstanceId].desc = "Instance ID, which takes on values 0, 1, 2, . . . .";
-
- BuiltInParams[BuiltInVertexIndex].caps.push_back(CapabilityShader);
- BuiltInParams[BuiltInVertexIndex].desc = "Vertex index, which takes on values base, base+1, base+2, . . . .";
-
- BuiltInParams[BuiltInInstanceIndex].caps.push_back(CapabilityShader);
- BuiltInParams[BuiltInInstanceIndex].desc = "Instance index, which takes on values base, base+1, base+2, . . . .";
-
- BuiltInParams[BuiltInPrimitiveId].caps.push_back(CapabilityGeometry);
- BuiltInParams[BuiltInPrimitiveId].caps.push_back(CapabilityTessellation);
- BuiltInParams[BuiltInInvocationId].caps.push_back(CapabilityGeometry);
- BuiltInParams[BuiltInInvocationId].caps.push_back(CapabilityTessellation);
- BuiltInParams[BuiltInLayer].caps.push_back(CapabilityGeometry);
- BuiltInParams[BuiltInViewportIndex].caps.push_back(CapabilityMultiViewport);
- BuiltInParams[BuiltInTessLevelOuter].caps.push_back(CapabilityTessellation);
- BuiltInParams[BuiltInTessLevelInner].caps.push_back(CapabilityTessellation);
- BuiltInParams[BuiltInTessCoord].caps.push_back(CapabilityTessellation);
- BuiltInParams[BuiltInPatchVertices].caps.push_back(CapabilityTessellation);
- BuiltInParams[BuiltInFragCoord].caps.push_back(CapabilityShader);
- BuiltInParams[BuiltInPointCoord].caps.push_back(CapabilityShader);
- BuiltInParams[BuiltInFrontFacing].caps.push_back(CapabilityShader);
- BuiltInParams[BuiltInSampleId].caps.push_back(CapabilitySampleRateShading);
- BuiltInParams[BuiltInSamplePosition].caps.push_back(CapabilitySampleRateShading);
- BuiltInParams[BuiltInSampleMask].caps.push_back(CapabilitySampleRateShading);
- BuiltInParams[BuiltInFragDepth].caps.push_back(CapabilityShader);
- BuiltInParams[BuiltInHelperInvocation].caps.push_back(CapabilityShader);
- BuiltInParams[BuiltInWorkDim].caps.push_back(CapabilityKernel);
- BuiltInParams[BuiltInGlobalSize].caps.push_back(CapabilityKernel);
- BuiltInParams[BuiltInEnqueuedWorkgroupSize].caps.push_back(CapabilityKernel);
- BuiltInParams[BuiltInGlobalOffset].caps.push_back(CapabilityKernel);
- BuiltInParams[BuiltInGlobalLinearId].caps.push_back(CapabilityKernel);
-
- BuiltInParams[BuiltInSubgroupSize].caps.push_back(CapabilityKernel);
- BuiltInParams[BuiltInSubgroupMaxSize].caps.push_back(CapabilityKernel);
- BuiltInParams[BuiltInNumSubgroups].caps.push_back(CapabilityKernel);
- BuiltInParams[BuiltInNumEnqueuedSubgroups].caps.push_back(CapabilityKernel);
- BuiltInParams[BuiltInSubgroupId].caps.push_back(CapabilityKernel);
- BuiltInParams[BuiltInSubgroupLocalInvocationId].caps.push_back(CapabilityKernel);
-
- DimensionalityParams[Dim1D].caps.push_back(CapabilitySampled1D);
- DimensionalityParams[DimCube].caps.push_back(CapabilityShader);
- DimensionalityParams[DimRect].caps.push_back(CapabilitySampledRect);
- DimensionalityParams[DimBuffer].caps.push_back(CapabilitySampledBuffer);
- DimensionalityParams[DimSubpassData].caps.push_back(CapabilityInputAttachment);
-
- // Group Operations
- for (int i = 0; i < GroupOperationCeiling; ++i) {
- GroupOperationParams[i].caps.push_back(CapabilityKernel);
- }
-
- // Enqueue flags
- for (int i = 0; i < KernelEnqueueFlagsCeiling; ++i) {
- KernelEnqueueFlagsParams[i].caps.push_back(CapabilityKernel);
- }
-
- // Profiling info
- KernelProfilingInfoParams[0].caps.push_back(CapabilityKernel);
+ OperandClassParams[OperandMemorySemantics].set(0, MemorySemanticsString, nullptr, true);
+ OperandClassParams[OperandMemoryAccess].set(0, MemoryAccessString, nullptr, true);
+ OperandClassParams[OperandScope].set(0, ScopeString, nullptr);
+ OperandClassParams[OperandGroupOperation].set(0, GroupOperationString, nullptr);
+ OperandClassParams[OperandKernelEnqueueFlags].set(0, KernelEnqueueFlagsString, nullptr);
+ OperandClassParams[OperandKernelProfilingInfo].set(0, KernelProfilingInfoString, nullptr, true);
+ OperandClassParams[OperandCapability].set(0, CapabilityString, nullptr);
+ OperandClassParams[OperandOpcode].set(OpCodeMask + 1, OpcodeString, 0);
// set name of operator, an initial set of <id> style operands, and the description
InstructionDesc[OpTypeVector].operands.push(OperandId, "'Component Type'");
InstructionDesc[OpTypeVector].operands.push(OperandLiteralNumber, "'Component Count'");
- InstructionDesc[OpTypeMatrix].capabilities.push_back(CapabilityMatrix);
InstructionDesc[OpTypeMatrix].operands.push(OperandId, "'Column Type'");
InstructionDesc[OpTypeMatrix].operands.push(OperandLiteralNumber, "'Column Count'");
InstructionDesc[OpTypeArray].operands.push(OperandId, "'Element Type'");
InstructionDesc[OpTypeArray].operands.push(OperandId, "'Length'");
- InstructionDesc[OpTypeRuntimeArray].capabilities.push_back(CapabilityShader);
InstructionDesc[OpTypeRuntimeArray].operands.push(OperandId, "'Element Type'");
InstructionDesc[OpTypeStruct].operands.push(OperandVariableIds, "'Member 0 type', +\n'member 1 type', +\n...");
- InstructionDesc[OpTypeOpaque].capabilities.push_back(CapabilityKernel);
InstructionDesc[OpTypeOpaque].operands.push(OperandLiteralString, "The name of the opaque type.");
InstructionDesc[OpTypePointer].operands.push(OperandStorage, "");
InstructionDesc[OpTypePointer].operands.push(OperandId, "'Type'");
- InstructionDesc[OpTypeForwardPointer].capabilities.push_back(CapabilityAddresses);
InstructionDesc[OpTypeForwardPointer].operands.push(OperandId, "'Pointer Type'");
InstructionDesc[OpTypeForwardPointer].operands.push(OperandStorage, "");
- InstructionDesc[OpTypeEvent].capabilities.push_back(CapabilityKernel);
-
- InstructionDesc[OpTypeDeviceEvent].capabilities.push_back(CapabilityDeviceEnqueue);
-
- InstructionDesc[OpTypeReserveId].capabilities.push_back(CapabilityPipes);
-
- InstructionDesc[OpTypeQueue].capabilities.push_back(CapabilityDeviceEnqueue);
-
InstructionDesc[OpTypePipe].operands.push(OperandAccessQualifier, "'Qualifier'");
- InstructionDesc[OpTypePipe].capabilities.push_back(CapabilityPipes);
InstructionDesc[OpTypeFunction].operands.push(OperandId, "'Return Type'");
InstructionDesc[OpTypeFunction].operands.push(OperandVariableIds, "'Parameter 0 Type', +\n'Parameter 1 Type', +\n...");
InstructionDesc[OpConstantComposite].operands.push(OperandVariableIds, "'Constituents'");
- InstructionDesc[OpConstantSampler].capabilities.push_back(CapabilityLiteralSampler);
InstructionDesc[OpConstantSampler].operands.push(OperandSamplerAddressingMode, "");
InstructionDesc[OpConstantSampler].operands.push(OperandLiteralNumber, "'Param'");
InstructionDesc[OpConstantSampler].operands.push(OperandSamplerFilterMode, "");
InstructionDesc[OpCopyMemorySized].operands.push(OperandId, "'Size'");
InstructionDesc[OpCopyMemorySized].operands.push(OperandMemoryAccess, "", true);
- InstructionDesc[OpCopyMemorySized].capabilities.push_back(CapabilityAddresses);
-
InstructionDesc[OpSampledImage].operands.push(OperandId, "'Image'");
InstructionDesc[OpSampledImage].operands.push(OperandId, "'Sampler'");
InstructionDesc[OpImageSampleImplicitLod].operands.push(OperandId, "'Coordinate'");
InstructionDesc[OpImageSampleImplicitLod].operands.push(OperandImageOperands, "", true);
InstructionDesc[OpImageSampleImplicitLod].operands.push(OperandVariableIds, "", true);
- InstructionDesc[OpImageSampleImplicitLod].capabilities.push_back(CapabilityShader);
InstructionDesc[OpImageSampleExplicitLod].operands.push(OperandId, "'Sampled Image'");
InstructionDesc[OpImageSampleExplicitLod].operands.push(OperandId, "'Coordinate'");
InstructionDesc[OpImageSampleDrefImplicitLod].operands.push(OperandId, "'D~ref~'");
InstructionDesc[OpImageSampleDrefImplicitLod].operands.push(OperandImageOperands, "", true);
InstructionDesc[OpImageSampleDrefImplicitLod].operands.push(OperandVariableIds, "", true);
- InstructionDesc[OpImageSampleDrefImplicitLod].capabilities.push_back(CapabilityShader);
InstructionDesc[OpImageSampleDrefExplicitLod].operands.push(OperandId, "'Sampled Image'");
InstructionDesc[OpImageSampleDrefExplicitLod].operands.push(OperandId, "'Coordinate'");
InstructionDesc[OpImageSampleDrefExplicitLod].operands.push(OperandId, "'D~ref~'");
InstructionDesc[OpImageSampleDrefExplicitLod].operands.push(OperandImageOperands, "", true);
InstructionDesc[OpImageSampleDrefExplicitLod].operands.push(OperandVariableIds, "", true);
- InstructionDesc[OpImageSampleDrefExplicitLod].capabilities.push_back(CapabilityShader);
InstructionDesc[OpImageSampleProjImplicitLod].operands.push(OperandId, "'Sampled Image'");
InstructionDesc[OpImageSampleProjImplicitLod].operands.push(OperandId, "'Coordinate'");
InstructionDesc[OpImageSampleProjImplicitLod].operands.push(OperandImageOperands, "", true);
InstructionDesc[OpImageSampleProjImplicitLod].operands.push(OperandVariableIds, "", true);
- InstructionDesc[OpImageSampleProjImplicitLod].capabilities.push_back(CapabilityShader);
InstructionDesc[OpImageSampleProjExplicitLod].operands.push(OperandId, "'Sampled Image'");
InstructionDesc[OpImageSampleProjExplicitLod].operands.push(OperandId, "'Coordinate'");
InstructionDesc[OpImageSampleProjExplicitLod].operands.push(OperandImageOperands, "", true);
InstructionDesc[OpImageSampleProjExplicitLod].operands.push(OperandVariableIds, "", true);
- InstructionDesc[OpImageSampleProjExplicitLod].capabilities.push_back(CapabilityShader);
InstructionDesc[OpImageSampleProjDrefImplicitLod].operands.push(OperandId, "'Sampled Image'");
InstructionDesc[OpImageSampleProjDrefImplicitLod].operands.push(OperandId, "'Coordinate'");
InstructionDesc[OpImageSampleProjDrefImplicitLod].operands.push(OperandId, "'D~ref~'");
InstructionDesc[OpImageSampleProjDrefImplicitLod].operands.push(OperandImageOperands, "", true);
InstructionDesc[OpImageSampleProjDrefImplicitLod].operands.push(OperandVariableIds, "", true);
- InstructionDesc[OpImageSampleProjDrefImplicitLod].capabilities.push_back(CapabilityShader);
InstructionDesc[OpImageSampleProjDrefExplicitLod].operands.push(OperandId, "'Sampled Image'");
InstructionDesc[OpImageSampleProjDrefExplicitLod].operands.push(OperandId, "'Coordinate'");
InstructionDesc[OpImageSampleProjDrefExplicitLod].operands.push(OperandId, "'D~ref~'");
InstructionDesc[OpImageSampleProjDrefExplicitLod].operands.push(OperandImageOperands, "", true);
InstructionDesc[OpImageSampleProjDrefExplicitLod].operands.push(OperandVariableIds, "", true);
- InstructionDesc[OpImageSampleProjDrefExplicitLod].capabilities.push_back(CapabilityShader);
InstructionDesc[OpImageFetch].operands.push(OperandId, "'Image'");
InstructionDesc[OpImageFetch].operands.push(OperandId, "'Coordinate'");
InstructionDesc[OpImageGather].operands.push(OperandId, "'Component'");
InstructionDesc[OpImageGather].operands.push(OperandImageOperands, "", true);
InstructionDesc[OpImageGather].operands.push(OperandVariableIds, "", true);
- InstructionDesc[OpImageGather].capabilities.push_back(CapabilityShader);
InstructionDesc[OpImageDrefGather].operands.push(OperandId, "'Sampled Image'");
InstructionDesc[OpImageDrefGather].operands.push(OperandId, "'Coordinate'");
InstructionDesc[OpImageDrefGather].operands.push(OperandId, "'D~ref~'");
InstructionDesc[OpImageDrefGather].operands.push(OperandImageOperands, "", true);
InstructionDesc[OpImageDrefGather].operands.push(OperandVariableIds, "", true);
- InstructionDesc[OpImageDrefGather].capabilities.push_back(CapabilityShader);
InstructionDesc[OpImageSparseSampleImplicitLod].operands.push(OperandId, "'Sampled Image'");
InstructionDesc[OpImageSparseSampleImplicitLod].operands.push(OperandId, "'Coordinate'");
InstructionDesc[OpImageSparseSampleImplicitLod].operands.push(OperandImageOperands, "", true);
InstructionDesc[OpImageSparseSampleImplicitLod].operands.push(OperandVariableIds, "", true);
- InstructionDesc[OpImageSparseSampleImplicitLod].capabilities.push_back(CapabilitySparseResidency);
InstructionDesc[OpImageSparseSampleExplicitLod].operands.push(OperandId, "'Sampled Image'");
InstructionDesc[OpImageSparseSampleExplicitLod].operands.push(OperandId, "'Coordinate'");
InstructionDesc[OpImageSparseSampleExplicitLod].operands.push(OperandImageOperands, "", true);
InstructionDesc[OpImageSparseSampleExplicitLod].operands.push(OperandVariableIds, "", true);
- InstructionDesc[OpImageSparseSampleExplicitLod].capabilities.push_back(CapabilitySparseResidency);
InstructionDesc[OpImageSparseSampleDrefImplicitLod].operands.push(OperandId, "'Sampled Image'");
InstructionDesc[OpImageSparseSampleDrefImplicitLod].operands.push(OperandId, "'Coordinate'");
InstructionDesc[OpImageSparseSampleDrefImplicitLod].operands.push(OperandId, "'D~ref~'");
InstructionDesc[OpImageSparseSampleDrefImplicitLod].operands.push(OperandImageOperands, "", true);
InstructionDesc[OpImageSparseSampleDrefImplicitLod].operands.push(OperandVariableIds, "", true);
- InstructionDesc[OpImageSparseSampleDrefImplicitLod].capabilities.push_back(CapabilitySparseResidency);
InstructionDesc[OpImageSparseSampleDrefExplicitLod].operands.push(OperandId, "'Sampled Image'");
InstructionDesc[OpImageSparseSampleDrefExplicitLod].operands.push(OperandId, "'Coordinate'");
InstructionDesc[OpImageSparseSampleDrefExplicitLod].operands.push(OperandId, "'D~ref~'");
InstructionDesc[OpImageSparseSampleDrefExplicitLod].operands.push(OperandImageOperands, "", true);
InstructionDesc[OpImageSparseSampleDrefExplicitLod].operands.push(OperandVariableIds, "", true);
- InstructionDesc[OpImageSparseSampleDrefExplicitLod].capabilities.push_back(CapabilitySparseResidency);
InstructionDesc[OpImageSparseSampleProjImplicitLod].operands.push(OperandId, "'Sampled Image'");
InstructionDesc[OpImageSparseSampleProjImplicitLod].operands.push(OperandId, "'Coordinate'");
InstructionDesc[OpImageSparseSampleProjImplicitLod].operands.push(OperandImageOperands, "", true);
InstructionDesc[OpImageSparseSampleProjImplicitLod].operands.push(OperandVariableIds, "", true);
- InstructionDesc[OpImageSparseSampleProjImplicitLod].capabilities.push_back(CapabilitySparseResidency);
InstructionDesc[OpImageSparseSampleProjExplicitLod].operands.push(OperandId, "'Sampled Image'");
InstructionDesc[OpImageSparseSampleProjExplicitLod].operands.push(OperandId, "'Coordinate'");
InstructionDesc[OpImageSparseSampleProjExplicitLod].operands.push(OperandImageOperands, "", true);
InstructionDesc[OpImageSparseSampleProjExplicitLod].operands.push(OperandVariableIds, "", true);
- InstructionDesc[OpImageSparseSampleProjExplicitLod].capabilities.push_back(CapabilitySparseResidency);
InstructionDesc[OpImageSparseSampleProjDrefImplicitLod].operands.push(OperandId, "'Sampled Image'");
InstructionDesc[OpImageSparseSampleProjDrefImplicitLod].operands.push(OperandId, "'Coordinate'");
InstructionDesc[OpImageSparseSampleProjDrefImplicitLod].operands.push(OperandId, "'D~ref~'");
InstructionDesc[OpImageSparseSampleProjDrefImplicitLod].operands.push(OperandImageOperands, "", true);
InstructionDesc[OpImageSparseSampleProjDrefImplicitLod].operands.push(OperandVariableIds, "", true);
- InstructionDesc[OpImageSparseSampleProjDrefImplicitLod].capabilities.push_back(CapabilitySparseResidency);
InstructionDesc[OpImageSparseSampleProjDrefExplicitLod].operands.push(OperandId, "'Sampled Image'");
InstructionDesc[OpImageSparseSampleProjDrefExplicitLod].operands.push(OperandId, "'Coordinate'");
InstructionDesc[OpImageSparseSampleProjDrefExplicitLod].operands.push(OperandId, "'D~ref~'");
InstructionDesc[OpImageSparseSampleProjDrefExplicitLod].operands.push(OperandImageOperands, "", true);
InstructionDesc[OpImageSparseSampleProjDrefExplicitLod].operands.push(OperandVariableIds, "", true);
- InstructionDesc[OpImageSparseSampleProjDrefExplicitLod].capabilities.push_back(CapabilitySparseResidency);
InstructionDesc[OpImageSparseFetch].operands.push(OperandId, "'Image'");
InstructionDesc[OpImageSparseFetch].operands.push(OperandId, "'Coordinate'");
InstructionDesc[OpImageSparseFetch].operands.push(OperandImageOperands, "", true);
InstructionDesc[OpImageSparseFetch].operands.push(OperandVariableIds, "", true);
- InstructionDesc[OpImageSparseFetch].capabilities.push_back(CapabilitySparseResidency);
InstructionDesc[OpImageSparseGather].operands.push(OperandId, "'Sampled Image'");
InstructionDesc[OpImageSparseGather].operands.push(OperandId, "'Coordinate'");
InstructionDesc[OpImageSparseGather].operands.push(OperandId, "'Component'");
InstructionDesc[OpImageSparseGather].operands.push(OperandImageOperands, "", true);
InstructionDesc[OpImageSparseGather].operands.push(OperandVariableIds, "", true);
- InstructionDesc[OpImageSparseGather].capabilities.push_back(CapabilitySparseResidency);
InstructionDesc[OpImageSparseDrefGather].operands.push(OperandId, "'Sampled Image'");
InstructionDesc[OpImageSparseDrefGather].operands.push(OperandId, "'Coordinate'");
InstructionDesc[OpImageSparseDrefGather].operands.push(OperandId, "'D~ref~'");
InstructionDesc[OpImageSparseDrefGather].operands.push(OperandImageOperands, "", true);
InstructionDesc[OpImageSparseDrefGather].operands.push(OperandVariableIds, "", true);
- InstructionDesc[OpImageSparseDrefGather].capabilities.push_back(CapabilitySparseResidency);
InstructionDesc[OpImageSparseRead].operands.push(OperandId, "'Image'");
InstructionDesc[OpImageSparseRead].operands.push(OperandId, "'Coordinate'");
InstructionDesc[OpImageSparseRead].operands.push(OperandImageOperands, "", true);
InstructionDesc[OpImageSparseRead].operands.push(OperandVariableIds, "", true);
- InstructionDesc[OpImageSparseRead].capabilities.push_back(CapabilitySparseResidency);
InstructionDesc[OpImageSparseTexelsResident].operands.push(OperandId, "'Resident Code'");
- InstructionDesc[OpImageSparseTexelsResident].capabilities.push_back(CapabilitySparseResidency);
InstructionDesc[OpImageQuerySizeLod].operands.push(OperandId, "'Image'");
InstructionDesc[OpImageQuerySizeLod].operands.push(OperandId, "'Level of Detail'");
- InstructionDesc[OpImageQuerySizeLod].capabilities.push_back(CapabilityKernel);
- InstructionDesc[OpImageQuerySizeLod].capabilities.push_back(CapabilityImageQuery);
InstructionDesc[OpImageQuerySize].operands.push(OperandId, "'Image'");
- InstructionDesc[OpImageQuerySize].capabilities.push_back(CapabilityKernel);
- InstructionDesc[OpImageQuerySize].capabilities.push_back(CapabilityImageQuery);
InstructionDesc[OpImageQueryLod].operands.push(OperandId, "'Image'");
InstructionDesc[OpImageQueryLod].operands.push(OperandId, "'Coordinate'");
- InstructionDesc[OpImageQueryLod].capabilities.push_back(CapabilityImageQuery);
InstructionDesc[OpImageQueryLevels].operands.push(OperandId, "'Image'");
- InstructionDesc[OpImageQueryLevels].capabilities.push_back(CapabilityKernel);
- InstructionDesc[OpImageQueryLevels].capabilities.push_back(CapabilityImageQuery);
InstructionDesc[OpImageQuerySamples].operands.push(OperandId, "'Image'");
- InstructionDesc[OpImageQuerySamples].capabilities.push_back(CapabilityKernel);
- InstructionDesc[OpImageQuerySamples].capabilities.push_back(CapabilityImageQuery);
InstructionDesc[OpImageQueryFormat].operands.push(OperandId, "'Image'");
- InstructionDesc[OpImageQueryFormat].capabilities.push_back(CapabilityKernel);
InstructionDesc[OpImageQueryOrder].operands.push(OperandId, "'Image'");
- InstructionDesc[OpImageQueryOrder].capabilities.push_back(CapabilityKernel);
InstructionDesc[OpAccessChain].operands.push(OperandId, "'Base'");
InstructionDesc[OpAccessChain].operands.push(OperandVariableIds, "'Indexes'");
InstructionDesc[OpPtrAccessChain].operands.push(OperandId, "'Base'");
InstructionDesc[OpPtrAccessChain].operands.push(OperandId, "'Element'");
InstructionDesc[OpPtrAccessChain].operands.push(OperandVariableIds, "'Indexes'");
- InstructionDesc[OpPtrAccessChain].capabilities.push_back(CapabilityAddresses);
InstructionDesc[OpInBoundsPtrAccessChain].operands.push(OperandId, "'Base'");
InstructionDesc[OpInBoundsPtrAccessChain].operands.push(OperandId, "'Element'");
InstructionDesc[OpInBoundsPtrAccessChain].operands.push(OperandVariableIds, "'Indexes'");
- InstructionDesc[OpInBoundsPtrAccessChain].capabilities.push_back(CapabilityAddresses);
InstructionDesc[OpSNegate].operands.push(OperandId, "'Operand'");
InstructionDesc[OpFConvert].operands.push(OperandId, "'Float Value'");
InstructionDesc[OpSatConvertSToU].operands.push(OperandId, "'Signed Value'");
- InstructionDesc[OpSatConvertSToU].capabilities.push_back(CapabilityKernel);
InstructionDesc[OpSatConvertUToS].operands.push(OperandId, "'Unsigned Value'");
- InstructionDesc[OpSatConvertUToS].capabilities.push_back(CapabilityKernel);
InstructionDesc[OpConvertPtrToU].operands.push(OperandId, "'Pointer'");
- InstructionDesc[OpConvertPtrToU].capabilities.push_back(CapabilityAddresses);
InstructionDesc[OpConvertUToPtr].operands.push(OperandId, "'Integer Value'");
- InstructionDesc[OpConvertUToPtr].capabilities.push_back(CapabilityAddresses);
InstructionDesc[OpPtrCastToGeneric].operands.push(OperandId, "'Pointer'");
- InstructionDesc[OpPtrCastToGeneric].capabilities.push_back(CapabilityKernel);
InstructionDesc[OpGenericCastToPtr].operands.push(OperandId, "'Pointer'");
- InstructionDesc[OpGenericCastToPtr].capabilities.push_back(CapabilityKernel);
InstructionDesc[OpGenericCastToPtrExplicit].operands.push(OperandId, "'Pointer'");
InstructionDesc[OpGenericCastToPtrExplicit].operands.push(OperandStorage, "'Storage'");
- InstructionDesc[OpGenericCastToPtrExplicit].capabilities.push_back(CapabilityKernel);
InstructionDesc[OpGenericPtrMemSemantics].operands.push(OperandId, "'Pointer'");
- InstructionDesc[OpGenericPtrMemSemantics].capabilities.push_back(CapabilityKernel);
InstructionDesc[OpBitcast].operands.push(OperandId, "'Operand'");
InstructionDesc[OpQuantizeToF16].operands.push(OperandId, "'Value'");
- InstructionDesc[OpTranspose].capabilities.push_back(CapabilityMatrix);
InstructionDesc[OpTranspose].operands.push(OperandId, "'Matrix'");
InstructionDesc[OpIsNan].operands.push(OperandId, "'x'");
InstructionDesc[OpIsInf].operands.push(OperandId, "'x'");
- InstructionDesc[OpIsFinite].capabilities.push_back(CapabilityKernel);
InstructionDesc[OpIsFinite].operands.push(OperandId, "'x'");
- InstructionDesc[OpIsNormal].capabilities.push_back(CapabilityKernel);
InstructionDesc[OpIsNormal].operands.push(OperandId, "'x'");
- InstructionDesc[OpSignBitSet].capabilities.push_back(CapabilityKernel);
InstructionDesc[OpSignBitSet].operands.push(OperandId, "'x'");
- InstructionDesc[OpLessOrGreater].capabilities.push_back(CapabilityKernel);
InstructionDesc[OpLessOrGreater].operands.push(OperandId, "'x'");
InstructionDesc[OpLessOrGreater].operands.push(OperandId, "'y'");
- InstructionDesc[OpOrdered].capabilities.push_back(CapabilityKernel);
InstructionDesc[OpOrdered].operands.push(OperandId, "'x'");
InstructionDesc[OpOrdered].operands.push(OperandId, "'y'");
- InstructionDesc[OpUnordered].capabilities.push_back(CapabilityKernel);
InstructionDesc[OpUnordered].operands.push(OperandId, "'x'");
InstructionDesc[OpUnordered].operands.push(OperandId, "'y'");
InstructionDesc[OpArrayLength].operands.push(OperandId, "'Structure'");
InstructionDesc[OpArrayLength].operands.push(OperandLiteralNumber, "'Array member'");
- InstructionDesc[OpArrayLength].capabilities.push_back(CapabilityShader);
InstructionDesc[OpIAdd].operands.push(OperandId, "'Operand 1'");
InstructionDesc[OpIAdd].operands.push(OperandId, "'Operand 2'");
InstructionDesc[OpVectorTimesScalar].operands.push(OperandId, "'Vector'");
InstructionDesc[OpVectorTimesScalar].operands.push(OperandId, "'Scalar'");
- InstructionDesc[OpMatrixTimesScalar].capabilities.push_back(CapabilityMatrix);
InstructionDesc[OpMatrixTimesScalar].operands.push(OperandId, "'Matrix'");
InstructionDesc[OpMatrixTimesScalar].operands.push(OperandId, "'Scalar'");
- InstructionDesc[OpVectorTimesMatrix].capabilities.push_back(CapabilityMatrix);
InstructionDesc[OpVectorTimesMatrix].operands.push(OperandId, "'Vector'");
InstructionDesc[OpVectorTimesMatrix].operands.push(OperandId, "'Matrix'");
- InstructionDesc[OpMatrixTimesVector].capabilities.push_back(CapabilityMatrix);
InstructionDesc[OpMatrixTimesVector].operands.push(OperandId, "'Matrix'");
InstructionDesc[OpMatrixTimesVector].operands.push(OperandId, "'Vector'");
- InstructionDesc[OpMatrixTimesMatrix].capabilities.push_back(CapabilityMatrix);
InstructionDesc[OpMatrixTimesMatrix].operands.push(OperandId, "'LeftMatrix'");
InstructionDesc[OpMatrixTimesMatrix].operands.push(OperandId, "'RightMatrix'");
- InstructionDesc[OpOuterProduct].capabilities.push_back(CapabilityMatrix);
InstructionDesc[OpOuterProduct].operands.push(OperandId, "'Vector 1'");
InstructionDesc[OpOuterProduct].operands.push(OperandId, "'Vector 2'");
InstructionDesc[OpBitwiseAnd].operands.push(OperandId, "'Operand 1'");
InstructionDesc[OpBitwiseAnd].operands.push(OperandId, "'Operand 2'");
- InstructionDesc[OpBitFieldInsert].capabilities.push_back(CapabilityShader);
InstructionDesc[OpBitFieldInsert].operands.push(OperandId, "'Base'");
InstructionDesc[OpBitFieldInsert].operands.push(OperandId, "'Insert'");
InstructionDesc[OpBitFieldInsert].operands.push(OperandId, "'Offset'");
InstructionDesc[OpBitFieldInsert].operands.push(OperandId, "'Count'");
-
- InstructionDesc[OpBitFieldSExtract].capabilities.push_back(CapabilityShader);
+
InstructionDesc[OpBitFieldSExtract].operands.push(OperandId, "'Base'");
InstructionDesc[OpBitFieldSExtract].operands.push(OperandId, "'Offset'");
InstructionDesc[OpBitFieldSExtract].operands.push(OperandId, "'Count'");
- InstructionDesc[OpBitFieldUExtract].capabilities.push_back(CapabilityShader);
InstructionDesc[OpBitFieldUExtract].operands.push(OperandId, "'Base'");
InstructionDesc[OpBitFieldUExtract].operands.push(OperandId, "'Offset'");
InstructionDesc[OpBitFieldUExtract].operands.push(OperandId, "'Count'");
- InstructionDesc[OpBitReverse].capabilities.push_back(CapabilityShader);
InstructionDesc[OpBitReverse].operands.push(OperandId, "'Base'");
InstructionDesc[OpBitCount].operands.push(OperandId, "'Base'");
InstructionDesc[OpFUnordGreaterThanEqual].operands.push(OperandId, "'Operand 1'");
InstructionDesc[OpFUnordGreaterThanEqual].operands.push(OperandId, "'Operand 2'");
- InstructionDesc[OpDPdx].capabilities.push_back(CapabilityShader);
InstructionDesc[OpDPdx].operands.push(OperandId, "'P'");
- InstructionDesc[OpDPdy].capabilities.push_back(CapabilityShader);
InstructionDesc[OpDPdy].operands.push(OperandId, "'P'");
- InstructionDesc[OpFwidth].capabilities.push_back(CapabilityShader);
InstructionDesc[OpFwidth].operands.push(OperandId, "'P'");
- InstructionDesc[OpDPdxFine].capabilities.push_back(CapabilityDerivativeControl);
InstructionDesc[OpDPdxFine].operands.push(OperandId, "'P'");
- InstructionDesc[OpDPdyFine].capabilities.push_back(CapabilityDerivativeControl);
InstructionDesc[OpDPdyFine].operands.push(OperandId, "'P'");
- InstructionDesc[OpFwidthFine].capabilities.push_back(CapabilityDerivativeControl);
InstructionDesc[OpFwidthFine].operands.push(OperandId, "'P'");
- InstructionDesc[OpDPdxCoarse].capabilities.push_back(CapabilityDerivativeControl);
InstructionDesc[OpDPdxCoarse].operands.push(OperandId, "'P'");
- InstructionDesc[OpDPdyCoarse].capabilities.push_back(CapabilityDerivativeControl);
InstructionDesc[OpDPdyCoarse].operands.push(OperandId, "'P'");
- InstructionDesc[OpFwidthCoarse].capabilities.push_back(CapabilityDerivativeControl);
InstructionDesc[OpFwidthCoarse].operands.push(OperandId, "'P'");
- InstructionDesc[OpEmitVertex].capabilities.push_back(CapabilityGeometry);
-
- InstructionDesc[OpEndPrimitive].capabilities.push_back(CapabilityGeometry);
-
InstructionDesc[OpEmitStreamVertex].operands.push(OperandId, "'Stream'");
- InstructionDesc[OpEmitStreamVertex].capabilities.push_back(CapabilityGeometryStreams);
InstructionDesc[OpEndStreamPrimitive].operands.push(OperandId, "'Stream'");
- InstructionDesc[OpEndStreamPrimitive].capabilities.push_back(CapabilityGeometryStreams);
InstructionDesc[OpControlBarrier].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpControlBarrier].operands.push(OperandScope, "'Memory'");
InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandMemorySemantics, "'Unequal'");
InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandId, "'Value'");
InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandId, "'Comparator'");
- InstructionDesc[OpAtomicCompareExchangeWeak].capabilities.push_back(CapabilityKernel);
InstructionDesc[OpAtomicIIncrement].operands.push(OperandId, "'Pointer'");
InstructionDesc[OpAtomicIIncrement].operands.push(OperandScope, "'Scope'");
InstructionDesc[OpAtomicFlagTestAndSet].operands.push(OperandId, "'Pointer'");
InstructionDesc[OpAtomicFlagTestAndSet].operands.push(OperandScope, "'Scope'");
InstructionDesc[OpAtomicFlagTestAndSet].operands.push(OperandMemorySemantics, "'Semantics'");
- InstructionDesc[OpAtomicFlagTestAndSet].capabilities.push_back(CapabilityKernel);
InstructionDesc[OpAtomicFlagClear].operands.push(OperandId, "'Pointer'");
InstructionDesc[OpAtomicFlagClear].operands.push(OperandScope, "'Scope'");
InstructionDesc[OpAtomicFlagClear].operands.push(OperandMemorySemantics, "'Semantics'");
- InstructionDesc[OpAtomicFlagClear].capabilities.push_back(CapabilityKernel);
InstructionDesc[OpLoopMerge].operands.push(OperandId, "'Merge Block'");
InstructionDesc[OpLoopMerge].operands.push(OperandId, "'Continue Target'");
InstructionDesc[OpSwitch].operands.push(OperandId, "'Default'");
InstructionDesc[OpSwitch].operands.push(OperandVariableLiteralId, "'Target'");
- InstructionDesc[OpKill].capabilities.push_back(CapabilityShader);
InstructionDesc[OpReturnValue].operands.push(OperandId, "'Value'");
InstructionDesc[OpLifetimeStart].operands.push(OperandId, "'Pointer'");
InstructionDesc[OpLifetimeStart].operands.push(OperandLiteralNumber, "'Size'");
- InstructionDesc[OpLifetimeStart].capabilities.push_back(CapabilityKernel);
InstructionDesc[OpLifetimeStop].operands.push(OperandId, "'Pointer'");
InstructionDesc[OpLifetimeStop].operands.push(OperandLiteralNumber, "'Size'");
- InstructionDesc[OpLifetimeStop].capabilities.push_back(CapabilityKernel);
- InstructionDesc[OpGroupAsyncCopy].capabilities.push_back(CapabilityKernel);
InstructionDesc[OpGroupAsyncCopy].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupAsyncCopy].operands.push(OperandId, "'Destination'");
InstructionDesc[OpGroupAsyncCopy].operands.push(OperandId, "'Source'");
InstructionDesc[OpGroupAsyncCopy].operands.push(OperandId, "'Stride'");
InstructionDesc[OpGroupAsyncCopy].operands.push(OperandId, "'Event'");
- InstructionDesc[OpGroupWaitEvents].capabilities.push_back(CapabilityKernel);
InstructionDesc[OpGroupWaitEvents].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupWaitEvents].operands.push(OperandId, "'Num Events'");
InstructionDesc[OpGroupWaitEvents].operands.push(OperandId, "'Events List'");
- InstructionDesc[OpGroupAll].capabilities.push_back(CapabilityGroups);
InstructionDesc[OpGroupAll].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupAll].operands.push(OperandId, "'Predicate'");
- InstructionDesc[OpGroupAny].capabilities.push_back(CapabilityGroups);
InstructionDesc[OpGroupAny].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupAny].operands.push(OperandId, "'Predicate'");
- InstructionDesc[OpGroupBroadcast].capabilities.push_back(CapabilityGroups);
InstructionDesc[OpGroupBroadcast].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupBroadcast].operands.push(OperandId, "'Value'");
InstructionDesc[OpGroupBroadcast].operands.push(OperandId, "'LocalId'");
- InstructionDesc[OpGroupIAdd].capabilities.push_back(CapabilityGroups);
InstructionDesc[OpGroupIAdd].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupIAdd].operands.push(OperandGroupOperation, "'Operation'");
InstructionDesc[OpGroupIAdd].operands.push(OperandId, "'X'");
- InstructionDesc[OpGroupFAdd].capabilities.push_back(CapabilityGroups);
InstructionDesc[OpGroupFAdd].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupFAdd].operands.push(OperandGroupOperation, "'Operation'");
InstructionDesc[OpGroupFAdd].operands.push(OperandId, "'X'");
- InstructionDesc[OpGroupUMin].capabilities.push_back(CapabilityGroups);
InstructionDesc[OpGroupUMin].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupUMin].operands.push(OperandGroupOperation, "'Operation'");
InstructionDesc[OpGroupUMin].operands.push(OperandId, "'X'");
- InstructionDesc[OpGroupSMin].capabilities.push_back(CapabilityGroups);
InstructionDesc[OpGroupSMin].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupSMin].operands.push(OperandGroupOperation, "'Operation'");
InstructionDesc[OpGroupSMin].operands.push(OperandId, "X");
- InstructionDesc[OpGroupFMin].capabilities.push_back(CapabilityGroups);
InstructionDesc[OpGroupFMin].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupFMin].operands.push(OperandGroupOperation, "'Operation'");
InstructionDesc[OpGroupFMin].operands.push(OperandId, "X");
- InstructionDesc[OpGroupUMax].capabilities.push_back(CapabilityGroups);
InstructionDesc[OpGroupUMax].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupUMax].operands.push(OperandGroupOperation, "'Operation'");
InstructionDesc[OpGroupUMax].operands.push(OperandId, "X");
- InstructionDesc[OpGroupSMax].capabilities.push_back(CapabilityGroups);
InstructionDesc[OpGroupSMax].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupSMax].operands.push(OperandGroupOperation, "'Operation'");
InstructionDesc[OpGroupSMax].operands.push(OperandId, "X");
- InstructionDesc[OpGroupFMax].capabilities.push_back(CapabilityGroups);
InstructionDesc[OpGroupFMax].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupFMax].operands.push(OperandGroupOperation, "'Operation'");
InstructionDesc[OpGroupFMax].operands.push(OperandId, "X");
- InstructionDesc[OpReadPipe].capabilities.push_back(CapabilityPipes);
InstructionDesc[OpReadPipe].operands.push(OperandId, "'Pipe'");
InstructionDesc[OpReadPipe].operands.push(OperandId, "'Pointer'");
InstructionDesc[OpReadPipe].operands.push(OperandId, "'Packet Size'");
InstructionDesc[OpReadPipe].operands.push(OperandId, "'Packet Alignment'");
- InstructionDesc[OpWritePipe].capabilities.push_back(CapabilityPipes);
InstructionDesc[OpWritePipe].operands.push(OperandId, "'Pipe'");
InstructionDesc[OpWritePipe].operands.push(OperandId, "'Pointer'");
InstructionDesc[OpWritePipe].operands.push(OperandId, "'Packet Size'");
InstructionDesc[OpWritePipe].operands.push(OperandId, "'Packet Alignment'");
- InstructionDesc[OpReservedReadPipe].capabilities.push_back(CapabilityPipes);
InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'Pipe'");
InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'Reserve Id'");
InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'Index'");
InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'Packet Size'");
InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'Packet Alignment'");
- InstructionDesc[OpReservedWritePipe].capabilities.push_back(CapabilityPipes);
InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'Pipe'");
InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'Reserve Id'");
InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'Index'");
InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'Packet Size'");
InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'Packet Alignment'");
- InstructionDesc[OpReserveReadPipePackets].capabilities.push_back(CapabilityPipes);
InstructionDesc[OpReserveReadPipePackets].operands.push(OperandId, "'Pipe'");
InstructionDesc[OpReserveReadPipePackets].operands.push(OperandId, "'Num Packets'");
InstructionDesc[OpReserveReadPipePackets].operands.push(OperandId, "'Packet Size'");
InstructionDesc[OpReserveReadPipePackets].operands.push(OperandId, "'Packet Alignment'");
- InstructionDesc[OpReserveWritePipePackets].capabilities.push_back(CapabilityPipes);
InstructionDesc[OpReserveWritePipePackets].operands.push(OperandId, "'Pipe'");
InstructionDesc[OpReserveWritePipePackets].operands.push(OperandId, "'Num Packets'");
InstructionDesc[OpReserveWritePipePackets].operands.push(OperandId, "'Packet Size'");
InstructionDesc[OpReserveWritePipePackets].operands.push(OperandId, "'Packet Alignment'");
- InstructionDesc[OpCommitReadPipe].capabilities.push_back(CapabilityPipes);
InstructionDesc[OpCommitReadPipe].operands.push(OperandId, "'Pipe'");
InstructionDesc[OpCommitReadPipe].operands.push(OperandId, "'Reserve Id'");
InstructionDesc[OpCommitReadPipe].operands.push(OperandId, "'Packet Size'");
InstructionDesc[OpCommitReadPipe].operands.push(OperandId, "'Packet Alignment'");
- InstructionDesc[OpCommitWritePipe].capabilities.push_back(CapabilityPipes);
InstructionDesc[OpCommitWritePipe].operands.push(OperandId, "'Pipe'");
InstructionDesc[OpCommitWritePipe].operands.push(OperandId, "'Reserve Id'");
InstructionDesc[OpCommitWritePipe].operands.push(OperandId, "'Packet Size'");
InstructionDesc[OpCommitWritePipe].operands.push(OperandId, "'Packet Alignment'");
- InstructionDesc[OpIsValidReserveId].capabilities.push_back(CapabilityPipes);
InstructionDesc[OpIsValidReserveId].operands.push(OperandId, "'Reserve Id'");
- InstructionDesc[OpGetNumPipePackets].capabilities.push_back(CapabilityPipes);
InstructionDesc[OpGetNumPipePackets].operands.push(OperandId, "'Pipe'");
InstructionDesc[OpGetNumPipePackets].operands.push(OperandId, "'Packet Size'");
InstructionDesc[OpGetNumPipePackets].operands.push(OperandId, "'Packet Alignment'");
- InstructionDesc[OpGetMaxPipePackets].capabilities.push_back(CapabilityPipes);
InstructionDesc[OpGetMaxPipePackets].operands.push(OperandId, "'Pipe'");
InstructionDesc[OpGetMaxPipePackets].operands.push(OperandId, "'Packet Size'");
InstructionDesc[OpGetMaxPipePackets].operands.push(OperandId, "'Packet Alignment'");
- InstructionDesc[OpGroupReserveReadPipePackets].capabilities.push_back(CapabilityPipes);
InstructionDesc[OpGroupReserveReadPipePackets].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupReserveReadPipePackets].operands.push(OperandId, "'Pipe'");
InstructionDesc[OpGroupReserveReadPipePackets].operands.push(OperandId, "'Num Packets'");
InstructionDesc[OpGroupReserveReadPipePackets].operands.push(OperandId, "'Packet Size'");
InstructionDesc[OpGroupReserveReadPipePackets].operands.push(OperandId, "'Packet Alignment'");
- InstructionDesc[OpGroupReserveWritePipePackets].capabilities.push_back(CapabilityPipes);
InstructionDesc[OpGroupReserveWritePipePackets].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupReserveWritePipePackets].operands.push(OperandId, "'Pipe'");
InstructionDesc[OpGroupReserveWritePipePackets].operands.push(OperandId, "'Num Packets'");
InstructionDesc[OpGroupReserveWritePipePackets].operands.push(OperandId, "'Packet Size'");
InstructionDesc[OpGroupReserveWritePipePackets].operands.push(OperandId, "'Packet Alignment'");
- InstructionDesc[OpGroupCommitReadPipe].capabilities.push_back(CapabilityPipes);
InstructionDesc[OpGroupCommitReadPipe].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupCommitReadPipe].operands.push(OperandId, "'Pipe'");
InstructionDesc[OpGroupCommitReadPipe].operands.push(OperandId, "'Reserve Id'");
InstructionDesc[OpGroupCommitReadPipe].operands.push(OperandId, "'Packet Size'");
InstructionDesc[OpGroupCommitReadPipe].operands.push(OperandId, "'Packet Alignment'");
- InstructionDesc[OpGroupCommitWritePipe].capabilities.push_back(CapabilityPipes);
InstructionDesc[OpGroupCommitWritePipe].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupCommitWritePipe].operands.push(OperandId, "'Pipe'");
InstructionDesc[OpGroupCommitWritePipe].operands.push(OperandId, "'Reserve Id'");
InstructionDesc[OpGroupCommitWritePipe].operands.push(OperandId, "'Packet Size'");
InstructionDesc[OpGroupCommitWritePipe].operands.push(OperandId, "'Packet Alignment'");
- InstructionDesc[OpBuildNDRange].capabilities.push_back(CapabilityDeviceEnqueue);
InstructionDesc[OpBuildNDRange].operands.push(OperandId, "'GlobalWorkSize'");
InstructionDesc[OpBuildNDRange].operands.push(OperandId, "'LocalWorkSize'");
InstructionDesc[OpBuildNDRange].operands.push(OperandId, "'GlobalWorkOffset'");
- InstructionDesc[OpGetDefaultQueue].capabilities.push_back(CapabilityDeviceEnqueue);
-
- InstructionDesc[OpCaptureEventProfilingInfo].capabilities.push_back(CapabilityDeviceEnqueue);
-
InstructionDesc[OpCaptureEventProfilingInfo].operands.push(OperandId, "'Event'");
InstructionDesc[OpCaptureEventProfilingInfo].operands.push(OperandId, "'Profiling Info'");
InstructionDesc[OpCaptureEventProfilingInfo].operands.push(OperandId, "'Value'");
- InstructionDesc[OpSetUserEventStatus].capabilities.push_back(CapabilityDeviceEnqueue);
-
InstructionDesc[OpSetUserEventStatus].operands.push(OperandId, "'Event'");
InstructionDesc[OpSetUserEventStatus].operands.push(OperandId, "'Status'");
- InstructionDesc[OpIsValidEvent].capabilities.push_back(CapabilityDeviceEnqueue);
InstructionDesc[OpIsValidEvent].operands.push(OperandId, "'Event'");
- InstructionDesc[OpCreateUserEvent].capabilities.push_back(CapabilityDeviceEnqueue);
-
- InstructionDesc[OpRetainEvent].capabilities.push_back(CapabilityDeviceEnqueue);
InstructionDesc[OpRetainEvent].operands.push(OperandId, "'Event'");
- InstructionDesc[OpReleaseEvent].capabilities.push_back(CapabilityDeviceEnqueue);
InstructionDesc[OpReleaseEvent].operands.push(OperandId, "'Event'");
- InstructionDesc[OpGetKernelWorkGroupSize].capabilities.push_back(CapabilityDeviceEnqueue);
InstructionDesc[OpGetKernelWorkGroupSize].operands.push(OperandId, "'Invoke'");
InstructionDesc[OpGetKernelWorkGroupSize].operands.push(OperandId, "'Param'");
InstructionDesc[OpGetKernelWorkGroupSize].operands.push(OperandId, "'Param Size'");
InstructionDesc[OpGetKernelWorkGroupSize].operands.push(OperandId, "'Param Align'");
- InstructionDesc[OpGetKernelPreferredWorkGroupSizeMultiple].capabilities.push_back(CapabilityDeviceEnqueue);
InstructionDesc[OpGetKernelPreferredWorkGroupSizeMultiple].operands.push(OperandId, "'Invoke'");
InstructionDesc[OpGetKernelPreferredWorkGroupSizeMultiple].operands.push(OperandId, "'Param'");
InstructionDesc[OpGetKernelPreferredWorkGroupSizeMultiple].operands.push(OperandId, "'Param Size'");
InstructionDesc[OpGetKernelPreferredWorkGroupSizeMultiple].operands.push(OperandId, "'Param Align'");
- InstructionDesc[OpGetKernelNDrangeSubGroupCount].capabilities.push_back(CapabilityDeviceEnqueue);
InstructionDesc[OpGetKernelNDrangeSubGroupCount].operands.push(OperandId, "'ND Range'");
InstructionDesc[OpGetKernelNDrangeSubGroupCount].operands.push(OperandId, "'Invoke'");
InstructionDesc[OpGetKernelNDrangeSubGroupCount].operands.push(OperandId, "'Param'");
InstructionDesc[OpGetKernelNDrangeSubGroupCount].operands.push(OperandId, "'Param Size'");
InstructionDesc[OpGetKernelNDrangeSubGroupCount].operands.push(OperandId, "'Param Align'");
- InstructionDesc[OpGetKernelNDrangeMaxSubGroupSize].capabilities.push_back(CapabilityDeviceEnqueue);
InstructionDesc[OpGetKernelNDrangeMaxSubGroupSize].operands.push(OperandId, "'ND Range'");
InstructionDesc[OpGetKernelNDrangeMaxSubGroupSize].operands.push(OperandId, "'Invoke'");
InstructionDesc[OpGetKernelNDrangeMaxSubGroupSize].operands.push(OperandId, "'Param'");
InstructionDesc[OpGetKernelNDrangeMaxSubGroupSize].operands.push(OperandId, "'Param Size'");
InstructionDesc[OpGetKernelNDrangeMaxSubGroupSize].operands.push(OperandId, "'Param Align'");
- InstructionDesc[OpEnqueueKernel].capabilities.push_back(CapabilityDeviceEnqueue);
InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Queue'");
InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Flags'");
InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'ND Range'");
InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Param Align'");
InstructionDesc[OpEnqueueKernel].operands.push(OperandVariableIds, "'Local Size'");
- InstructionDesc[OpEnqueueMarker].capabilities.push_back(CapabilityDeviceEnqueue);
InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'Queue'");
InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'Num Events'");
InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'Wait Events'");
InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'Ret Event'");
- InstructionDesc[OpGroupNonUniformElect].capabilities.push_back(CapabilityGroupNonUniform);
InstructionDesc[OpGroupNonUniformElect].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupNonUniformAll].capabilities.push_back(CapabilityGroupNonUniformVote);
InstructionDesc[OpGroupNonUniformAll].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupNonUniformAll].operands.push(OperandId, "X");
- InstructionDesc[OpGroupNonUniformAny].capabilities.push_back(CapabilityGroupNonUniformVote);
InstructionDesc[OpGroupNonUniformAny].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupNonUniformAny].operands.push(OperandId, "X");
- InstructionDesc[OpGroupNonUniformAllEqual].capabilities.push_back(CapabilityGroupNonUniformVote);
InstructionDesc[OpGroupNonUniformAllEqual].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupNonUniformAllEqual].operands.push(OperandId, "X");
- InstructionDesc[OpGroupNonUniformBroadcast].capabilities.push_back(CapabilityGroupNonUniformBallot);
InstructionDesc[OpGroupNonUniformBroadcast].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupNonUniformBroadcast].operands.push(OperandId, "X");
InstructionDesc[OpGroupNonUniformBroadcast].operands.push(OperandId, "ID");
- InstructionDesc[OpGroupNonUniformBroadcastFirst].capabilities.push_back(CapabilityGroupNonUniformBallot);
InstructionDesc[OpGroupNonUniformBroadcastFirst].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupNonUniformBroadcastFirst].operands.push(OperandId, "X");
- InstructionDesc[OpGroupNonUniformBallot].capabilities.push_back(CapabilityGroupNonUniformBallot);
InstructionDesc[OpGroupNonUniformBallot].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupNonUniformBallot].operands.push(OperandId, "X");
- InstructionDesc[OpGroupNonUniformInverseBallot].capabilities.push_back(CapabilityGroupNonUniformBallot);
InstructionDesc[OpGroupNonUniformInverseBallot].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupNonUniformInverseBallot].operands.push(OperandId, "X");
- InstructionDesc[OpGroupNonUniformBallotBitExtract].capabilities.push_back(CapabilityGroupNonUniformBallot);
InstructionDesc[OpGroupNonUniformBallotBitExtract].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupNonUniformBallotBitExtract].operands.push(OperandId, "X");
InstructionDesc[OpGroupNonUniformBallotBitExtract].operands.push(OperandId, "Bit");
- InstructionDesc[OpGroupNonUniformBallotBitCount].capabilities.push_back(CapabilityGroupNonUniformBallot);
InstructionDesc[OpGroupNonUniformBallotBitCount].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupNonUniformBallotBitCount].operands.push(OperandGroupOperation, "'Operation'");
InstructionDesc[OpGroupNonUniformBallotBitCount].operands.push(OperandId, "X");
- InstructionDesc[OpGroupNonUniformBallotFindLSB].capabilities.push_back(CapabilityGroupNonUniformBallot);
InstructionDesc[OpGroupNonUniformBallotFindLSB].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupNonUniformBallotFindLSB].operands.push(OperandId, "X");
- InstructionDesc[OpGroupNonUniformBallotFindMSB].capabilities.push_back(CapabilityGroupNonUniformBallot);
InstructionDesc[OpGroupNonUniformBallotFindMSB].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupNonUniformBallotFindMSB].operands.push(OperandId, "X");
- InstructionDesc[OpGroupNonUniformShuffle].capabilities.push_back(CapabilityGroupNonUniformShuffle);
InstructionDesc[OpGroupNonUniformShuffle].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupNonUniformShuffle].operands.push(OperandId, "X");
InstructionDesc[OpGroupNonUniformShuffle].operands.push(OperandId, "'Id'");
- InstructionDesc[OpGroupNonUniformShuffleXor].capabilities.push_back(CapabilityGroupNonUniformShuffle);
InstructionDesc[OpGroupNonUniformShuffleXor].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupNonUniformShuffleXor].operands.push(OperandId, "X");
InstructionDesc[OpGroupNonUniformShuffleXor].operands.push(OperandId, "Mask");
- InstructionDesc[OpGroupNonUniformShuffleUp].capabilities.push_back(CapabilityGroupNonUniformShuffleRelative);
InstructionDesc[OpGroupNonUniformShuffleUp].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupNonUniformShuffleUp].operands.push(OperandId, "X");
InstructionDesc[OpGroupNonUniformShuffleUp].operands.push(OperandId, "Offset");
- InstructionDesc[OpGroupNonUniformShuffleDown].capabilities.push_back(CapabilityGroupNonUniformShuffleRelative);
InstructionDesc[OpGroupNonUniformShuffleDown].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupNonUniformShuffleDown].operands.push(OperandId, "X");
InstructionDesc[OpGroupNonUniformShuffleDown].operands.push(OperandId, "Offset");
- InstructionDesc[OpGroupNonUniformIAdd].capabilities.push_back(CapabilityGroupNonUniformArithmetic);
InstructionDesc[OpGroupNonUniformIAdd].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupNonUniformIAdd].operands.push(OperandGroupOperation, "'Operation'");
InstructionDesc[OpGroupNonUniformIAdd].operands.push(OperandId, "X");
InstructionDesc[OpGroupNonUniformIAdd].operands.push(OperandId, "'ClusterSize'", true);
- InstructionDesc[OpGroupNonUniformFAdd].capabilities.push_back(CapabilityGroupNonUniformArithmetic);
InstructionDesc[OpGroupNonUniformFAdd].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupNonUniformFAdd].operands.push(OperandGroupOperation, "'Operation'");
InstructionDesc[OpGroupNonUniformFAdd].operands.push(OperandId, "X");
InstructionDesc[OpGroupNonUniformFAdd].operands.push(OperandId, "'ClusterSize'", true);
- InstructionDesc[OpGroupNonUniformIMul].capabilities.push_back(CapabilityGroupNonUniformArithmetic);
InstructionDesc[OpGroupNonUniformIMul].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupNonUniformIMul].operands.push(OperandGroupOperation, "'Operation'");
InstructionDesc[OpGroupNonUniformIMul].operands.push(OperandId, "X");
InstructionDesc[OpGroupNonUniformIMul].operands.push(OperandId, "'ClusterSize'", true);
- InstructionDesc[OpGroupNonUniformFMul].capabilities.push_back(CapabilityGroupNonUniformArithmetic);
InstructionDesc[OpGroupNonUniformFMul].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupNonUniformFMul].operands.push(OperandGroupOperation, "'Operation'");
InstructionDesc[OpGroupNonUniformFMul].operands.push(OperandId, "X");
InstructionDesc[OpGroupNonUniformFMul].operands.push(OperandId, "'ClusterSize'", true);
- InstructionDesc[OpGroupNonUniformSMin].capabilities.push_back(CapabilityGroupNonUniformArithmetic);
InstructionDesc[OpGroupNonUniformSMin].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupNonUniformSMin].operands.push(OperandGroupOperation, "'Operation'");
InstructionDesc[OpGroupNonUniformSMin].operands.push(OperandId, "X");
InstructionDesc[OpGroupNonUniformSMin].operands.push(OperandId, "'ClusterSize'", true);
- InstructionDesc[OpGroupNonUniformUMin].capabilities.push_back(CapabilityGroupNonUniformArithmetic);
InstructionDesc[OpGroupNonUniformUMin].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupNonUniformUMin].operands.push(OperandGroupOperation, "'Operation'");
InstructionDesc[OpGroupNonUniformUMin].operands.push(OperandId, "X");
InstructionDesc[OpGroupNonUniformUMin].operands.push(OperandId, "'ClusterSize'", true);
- InstructionDesc[OpGroupNonUniformFMin].capabilities.push_back(CapabilityGroupNonUniformArithmetic);
InstructionDesc[OpGroupNonUniformFMin].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupNonUniformFMin].operands.push(OperandGroupOperation, "'Operation'");
InstructionDesc[OpGroupNonUniformFMin].operands.push(OperandId, "X");
InstructionDesc[OpGroupNonUniformFMin].operands.push(OperandId, "'ClusterSize'", true);
- InstructionDesc[OpGroupNonUniformSMax].capabilities.push_back(CapabilityGroupNonUniformArithmetic);
InstructionDesc[OpGroupNonUniformSMax].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupNonUniformSMax].operands.push(OperandGroupOperation, "'Operation'");
InstructionDesc[OpGroupNonUniformSMax].operands.push(OperandId, "X");
InstructionDesc[OpGroupNonUniformSMax].operands.push(OperandId, "'ClusterSize'", true);
- InstructionDesc[OpGroupNonUniformUMax].capabilities.push_back(CapabilityGroupNonUniformArithmetic);
InstructionDesc[OpGroupNonUniformUMax].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupNonUniformUMax].operands.push(OperandGroupOperation, "'Operation'");
InstructionDesc[OpGroupNonUniformUMax].operands.push(OperandId, "X");
InstructionDesc[OpGroupNonUniformUMax].operands.push(OperandId, "'ClusterSize'", true);
- InstructionDesc[OpGroupNonUniformFMax].capabilities.push_back(CapabilityGroupNonUniformArithmetic);
InstructionDesc[OpGroupNonUniformFMax].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupNonUniformFMax].operands.push(OperandGroupOperation, "'Operation'");
InstructionDesc[OpGroupNonUniformFMax].operands.push(OperandId, "X");
InstructionDesc[OpGroupNonUniformFMax].operands.push(OperandId, "'ClusterSize'", true);
- InstructionDesc[OpGroupNonUniformBitwiseAnd].capabilities.push_back(CapabilityGroupNonUniformArithmetic);
InstructionDesc[OpGroupNonUniformBitwiseAnd].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupNonUniformBitwiseAnd].operands.push(OperandGroupOperation, "'Operation'");
InstructionDesc[OpGroupNonUniformBitwiseAnd].operands.push(OperandId, "X");
InstructionDesc[OpGroupNonUniformBitwiseAnd].operands.push(OperandId, "'ClusterSize'", true);
- InstructionDesc[OpGroupNonUniformBitwiseOr].capabilities.push_back(CapabilityGroupNonUniformArithmetic);
InstructionDesc[OpGroupNonUniformBitwiseOr].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupNonUniformBitwiseOr].operands.push(OperandGroupOperation, "'Operation'");
InstructionDesc[OpGroupNonUniformBitwiseOr].operands.push(OperandId, "X");
InstructionDesc[OpGroupNonUniformBitwiseOr].operands.push(OperandId, "'ClusterSize'", true);
- InstructionDesc[OpGroupNonUniformBitwiseXor].capabilities.push_back(CapabilityGroupNonUniformArithmetic);
InstructionDesc[OpGroupNonUniformBitwiseXor].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupNonUniformBitwiseXor].operands.push(OperandGroupOperation, "'Operation'");
InstructionDesc[OpGroupNonUniformBitwiseXor].operands.push(OperandId, "X");
InstructionDesc[OpGroupNonUniformBitwiseXor].operands.push(OperandId, "'ClusterSize'", true);
- InstructionDesc[OpGroupNonUniformLogicalAnd].capabilities.push_back(CapabilityGroupNonUniformArithmetic);
InstructionDesc[OpGroupNonUniformLogicalAnd].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupNonUniformLogicalAnd].operands.push(OperandGroupOperation, "'Operation'");
InstructionDesc[OpGroupNonUniformLogicalAnd].operands.push(OperandId, "X");
InstructionDesc[OpGroupNonUniformLogicalAnd].operands.push(OperandId, "'ClusterSize'", true);
- InstructionDesc[OpGroupNonUniformLogicalOr].capabilities.push_back(CapabilityGroupNonUniformArithmetic);
InstructionDesc[OpGroupNonUniformLogicalOr].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupNonUniformLogicalOr].operands.push(OperandGroupOperation, "'Operation'");
InstructionDesc[OpGroupNonUniformLogicalOr].operands.push(OperandId, "X");
InstructionDesc[OpGroupNonUniformLogicalOr].operands.push(OperandId, "'ClusterSize'", true);
- InstructionDesc[OpGroupNonUniformLogicalXor].capabilities.push_back(CapabilityGroupNonUniformArithmetic);
InstructionDesc[OpGroupNonUniformLogicalXor].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupNonUniformLogicalXor].operands.push(OperandGroupOperation, "'Operation'");
InstructionDesc[OpGroupNonUniformLogicalXor].operands.push(OperandId, "X");
InstructionDesc[OpGroupNonUniformLogicalXor].operands.push(OperandId, "'ClusterSize'", true);
- InstructionDesc[OpGroupNonUniformQuadBroadcast].capabilities.push_back(CapabilityGroupNonUniformQuad);
InstructionDesc[OpGroupNonUniformQuadBroadcast].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupNonUniformQuadBroadcast].operands.push(OperandId, "X");
InstructionDesc[OpGroupNonUniformQuadBroadcast].operands.push(OperandId, "'Id'");
- InstructionDesc[OpGroupNonUniformQuadSwap].capabilities.push_back(CapabilityGroupNonUniformQuad);
InstructionDesc[OpGroupNonUniformQuadSwap].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupNonUniformQuadSwap].operands.push(OperandId, "X");
InstructionDesc[OpGroupNonUniformQuadSwap].operands.push(OperandLiteralNumber, "'Direction'");
InstructionDesc[OpSubgroupFirstInvocationKHR].operands.push(OperandId, "'Value'");
- InstructionDesc[OpSubgroupAnyKHR].capabilities.push_back(CapabilitySubgroupVoteKHR);
InstructionDesc[OpSubgroupAnyKHR].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpSubgroupAnyKHR].operands.push(OperandId, "'Predicate'");
- InstructionDesc[OpSubgroupAllKHR].capabilities.push_back(CapabilitySubgroupVoteKHR);
InstructionDesc[OpSubgroupAllKHR].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpSubgroupAllKHR].operands.push(OperandId, "'Predicate'");
- InstructionDesc[OpSubgroupAllEqualKHR].capabilities.push_back(CapabilitySubgroupVoteKHR);
InstructionDesc[OpSubgroupAllEqualKHR].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpSubgroupAllEqualKHR].operands.push(OperandId, "'Predicate'");
- InstructionDesc[OpSubgroupReadInvocationKHR].capabilities.push_back(CapabilityGroups);
InstructionDesc[OpSubgroupReadInvocationKHR].operands.push(OperandId, "'Value'");
InstructionDesc[OpSubgroupReadInvocationKHR].operands.push(OperandId, "'Index'");
InstructionDesc[OpModuleProcessed].operands.push(OperandLiteralString, "'process'");
#ifdef AMD_EXTENSIONS
- InstructionDesc[OpGroupIAddNonUniformAMD].capabilities.push_back(CapabilityGroups);
InstructionDesc[OpGroupIAddNonUniformAMD].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupIAddNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'");
InstructionDesc[OpGroupIAddNonUniformAMD].operands.push(OperandId, "'X'");
- InstructionDesc[OpGroupFAddNonUniformAMD].capabilities.push_back(CapabilityGroups);
InstructionDesc[OpGroupFAddNonUniformAMD].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupFAddNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'");
InstructionDesc[OpGroupFAddNonUniformAMD].operands.push(OperandId, "'X'");
- InstructionDesc[OpGroupUMinNonUniformAMD].capabilities.push_back(CapabilityGroups);
InstructionDesc[OpGroupUMinNonUniformAMD].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupUMinNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'");
InstructionDesc[OpGroupUMinNonUniformAMD].operands.push(OperandId, "'X'");
- InstructionDesc[OpGroupSMinNonUniformAMD].capabilities.push_back(CapabilityGroups);
InstructionDesc[OpGroupSMinNonUniformAMD].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupSMinNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'");
InstructionDesc[OpGroupSMinNonUniformAMD].operands.push(OperandId, "X");
- InstructionDesc[OpGroupFMinNonUniformAMD].capabilities.push_back(CapabilityGroups);
InstructionDesc[OpGroupFMinNonUniformAMD].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupFMinNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'");
InstructionDesc[OpGroupFMinNonUniformAMD].operands.push(OperandId, "X");
- InstructionDesc[OpGroupUMaxNonUniformAMD].capabilities.push_back(CapabilityGroups);
InstructionDesc[OpGroupUMaxNonUniformAMD].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupUMaxNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'");
InstructionDesc[OpGroupUMaxNonUniformAMD].operands.push(OperandId, "X");
- InstructionDesc[OpGroupSMaxNonUniformAMD].capabilities.push_back(CapabilityGroups);
InstructionDesc[OpGroupSMaxNonUniformAMD].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupSMaxNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'");
InstructionDesc[OpGroupSMaxNonUniformAMD].operands.push(OperandId, "X");
- InstructionDesc[OpGroupFMaxNonUniformAMD].capabilities.push_back(CapabilityGroups);
InstructionDesc[OpGroupFMaxNonUniformAMD].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupFMaxNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'");
InstructionDesc[OpGroupFMaxNonUniformAMD].operands.push(OperandId, "X");
- InstructionDesc[OpFragmentMaskFetchAMD].capabilities.push_back(CapabilityFragmentMaskAMD);
InstructionDesc[OpFragmentMaskFetchAMD].operands.push(OperandId, "'Image'");
InstructionDesc[OpFragmentMaskFetchAMD].operands.push(OperandId, "'Coordinate'");
- InstructionDesc[OpFragmentFetchAMD].capabilities.push_back(CapabilityFragmentMaskAMD);
InstructionDesc[OpFragmentFetchAMD].operands.push(OperandId, "'Image'");
InstructionDesc[OpFragmentFetchAMD].operands.push(OperandId, "'Coordinate'");
InstructionDesc[OpFragmentFetchAMD].operands.push(OperandId, "'Fragment Index'");
#endif
#ifdef NV_EXTENSIONS
- InstructionDesc[OpGroupNonUniformPartitionNV].capabilities.push_back(CapabilityGroupNonUniformPartitionedNV);
InstructionDesc[OpGroupNonUniformPartitionNV].operands.push(OperandId, "X");
#endif
}