diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 14:29:10 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 14:29:10 +0000 |
commit | 2aa4a82499d4becd2284cdb482213d541b8804dd (patch) | |
tree | b80bf8bf13c3766139fbacc530efd0dd9d54394c /third_party/rust/spirv_headers/autogen_spirv.rs | |
parent | Initial commit. (diff) | |
download | firefox-2aa4a82499d4becd2284cdb482213d541b8804dd.tar.xz firefox-2aa4a82499d4becd2284cdb482213d541b8804dd.zip |
Adding upstream version 86.0.1.upstream/86.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'third_party/rust/spirv_headers/autogen_spirv.rs')
-rw-r--r-- | third_party/rust/spirv_headers/autogen_spirv.rs | 3645 |
1 files changed, 3645 insertions, 0 deletions
diff --git a/third_party/rust/spirv_headers/autogen_spirv.rs b/third_party/rust/spirv_headers/autogen_spirv.rs new file mode 100644 index 0000000000..66820ec33c --- /dev/null +++ b/third_party/rust/spirv_headers/autogen_spirv.rs @@ -0,0 +1,3645 @@ +// AUTOMATICALLY GENERATED from the SPIR-V JSON grammar: +// external/spirv.core.grammar.json. +// DO NOT MODIFY! + +pub type Word = u32; +pub const MAGIC_NUMBER: u32 = 0x07230203; +pub const MAJOR_VERSION: u8 = 1u8; +pub const MINOR_VERSION: u8 = 4u8; +pub const REVISION: u8 = 1u8; +bitflags! { # [ doc = "SPIR-V operand kind: [ImageOperands](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_image_operands_a_image_operands)" ] pub struct ImageOperands : u32 { const NONE = 0u32 ; const BIAS = 1u32 ; const LOD = 2u32 ; const GRAD = 4u32 ; const CONST_OFFSET = 8u32 ; const OFFSET = 16u32 ; const CONST_OFFSETS = 32u32 ; const SAMPLE = 64u32 ; const MIN_LOD = 128u32 ; const MAKE_TEXEL_AVAILABLE_KHR = 256u32 ; const MAKE_TEXEL_VISIBLE_KHR = 512u32 ; const NON_PRIVATE_TEXEL_KHR = 1024u32 ; const VOLATILE_TEXEL_KHR = 2048u32 ; const SIGN_EXTEND = 4096u32 ; const ZERO_EXTEND = 8192u32 ; } } +bitflags! { # [ doc = "SPIR-V operand kind: [FPFastMathMode](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_fp_fast_math_mode_a_fp_fast_math_mode)" ] pub struct FPFastMathMode : u32 { const NONE = 0u32 ; const NOT_NAN = 1u32 ; const NOT_INF = 2u32 ; const NSZ = 4u32 ; const ALLOW_RECIP = 8u32 ; const FAST = 16u32 ; } } +bitflags! { # [ doc = "SPIR-V operand kind: [SelectionControl](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_selection_control_a_selection_control)" ] pub struct SelectionControl : u32 { const NONE = 0u32 ; const FLATTEN = 1u32 ; const DONT_FLATTEN = 2u32 ; } } +bitflags! { # [ doc = "SPIR-V operand kind: [LoopControl](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_loop_control_a_loop_control)" ] pub struct LoopControl : u32 { const NONE = 0u32 ; const UNROLL = 1u32 ; const DONT_UNROLL = 2u32 ; const DEPENDENCY_INFINITE = 4u32 ; const DEPENDENCY_LENGTH = 8u32 ; const MIN_ITERATIONS = 16u32 ; const MAX_ITERATIONS = 32u32 ; const ITERATION_MULTIPLE = 64u32 ; const PEEL_COUNT = 128u32 ; const PARTIAL_COUNT = 256u32 ; } } +bitflags! { # [ doc = "SPIR-V operand kind: [FunctionControl](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_function_control_a_function_control)" ] pub struct FunctionControl : u32 { const NONE = 0u32 ; const INLINE = 1u32 ; const DONT_INLINE = 2u32 ; const PURE = 4u32 ; const CONST = 8u32 ; } } +bitflags! { # [ doc = "SPIR-V operand kind: [MemorySemantics](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_memory_semantics_a_memory_semantics)" ] pub struct MemorySemantics : u32 { const RELAXED = 0u32 ; const NONE = 0u32 ; const ACQUIRE = 2u32 ; const RELEASE = 4u32 ; const ACQUIRE_RELEASE = 8u32 ; const SEQUENTIALLY_CONSISTENT = 16u32 ; const UNIFORM_MEMORY = 64u32 ; const SUBGROUP_MEMORY = 128u32 ; const WORKGROUP_MEMORY = 256u32 ; const CROSS_WORKGROUP_MEMORY = 512u32 ; const ATOMIC_COUNTER_MEMORY = 1024u32 ; const IMAGE_MEMORY = 2048u32 ; const OUTPUT_MEMORY_KHR = 4096u32 ; const MAKE_AVAILABLE_KHR = 8192u32 ; const MAKE_VISIBLE_KHR = 16384u32 ; } } +bitflags! { # [ doc = "SPIR-V operand kind: [MemoryAccess](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_memory_access_a_memory_access)" ] pub struct MemoryAccess : u32 { const NONE = 0u32 ; const VOLATILE = 1u32 ; const ALIGNED = 2u32 ; const NONTEMPORAL = 4u32 ; const MAKE_POINTER_AVAILABLE_KHR = 8u32 ; const MAKE_POINTER_VISIBLE_KHR = 16u32 ; const NON_PRIVATE_POINTER_KHR = 32u32 ; } } +bitflags! { # [ doc = "SPIR-V operand kind: [KernelProfilingInfo](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_kernel_profiling_info_a_kernel_profiling_info)" ] pub struct KernelProfilingInfo : u32 { const NONE = 0u32 ; const CMD_EXEC_TIME = 1u32 ; } } +#[doc = "/// SPIR-V operand kind: [SourceLanguage](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_source_language_a_source_language)"] +#[repr(u32)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] +pub enum SourceLanguage { + Unknown = 0u32, + ESSL = 1u32, + GLSL = 2u32, + OpenCL_C = 3u32, + OpenCL_CPP = 4u32, + HLSL = 5u32, +} +#[allow(non_upper_case_globals)] +impl SourceLanguage { + pub fn required_capabilities(self) -> &'static [Capability] { + match self { + SourceLanguage::Unknown + | SourceLanguage::ESSL + | SourceLanguage::GLSL + | SourceLanguage::OpenCL_C + | SourceLanguage::OpenCL_CPP + | SourceLanguage::HLSL => &[], + } + } +} +impl num_traits::FromPrimitive for SourceLanguage { + #[allow(trivial_numeric_casts)] + fn from_i64(n: i64) -> Option<Self> { + Some(match n as u32 { + 0u32 => SourceLanguage::Unknown, + 1u32 => SourceLanguage::ESSL, + 2u32 => SourceLanguage::GLSL, + 3u32 => SourceLanguage::OpenCL_C, + 4u32 => SourceLanguage::OpenCL_CPP, + 5u32 => SourceLanguage::HLSL, + _ => return None, + }) + } + fn from_u64(n: u64) -> Option<Self> { + Self::from_i64(n as i64) + } +} +#[doc = "/// SPIR-V operand kind: [ExecutionModel](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_execution_model_a_execution_model)"] +#[repr(u32)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] +pub enum ExecutionModel { + Vertex = 0u32, + TessellationControl = 1u32, + TessellationEvaluation = 2u32, + Geometry = 3u32, + Fragment = 4u32, + GLCompute = 5u32, + Kernel = 6u32, + TaskNV = 5267u32, + MeshNV = 5268u32, + RayGenerationNV = 5313u32, + IntersectionNV = 5314u32, + AnyHitNV = 5315u32, + ClosestHitNV = 5316u32, + MissNV = 5317u32, + CallableNV = 5318u32, +} +#[allow(non_upper_case_globals)] +impl ExecutionModel { + pub fn required_capabilities(self) -> &'static [Capability] { + match self { + ExecutionModel::Geometry => &[Capability::Geometry], + ExecutionModel::Kernel => &[Capability::Kernel], + ExecutionModel::TaskNV | ExecutionModel::MeshNV => &[Capability::MeshShadingNV], + ExecutionModel::RayGenerationNV + | ExecutionModel::IntersectionNV + | ExecutionModel::AnyHitNV + | ExecutionModel::ClosestHitNV + | ExecutionModel::MissNV + | ExecutionModel::CallableNV => &[Capability::RayTracingNV], + ExecutionModel::Vertex | ExecutionModel::Fragment | ExecutionModel::GLCompute => { + &[Capability::Shader] + } + ExecutionModel::TessellationControl | ExecutionModel::TessellationEvaluation => { + &[Capability::Tessellation] + } + } + } +} +impl num_traits::FromPrimitive for ExecutionModel { + #[allow(trivial_numeric_casts)] + fn from_i64(n: i64) -> Option<Self> { + Some(match n as u32 { + 0u32 => ExecutionModel::Vertex, + 1u32 => ExecutionModel::TessellationControl, + 2u32 => ExecutionModel::TessellationEvaluation, + 3u32 => ExecutionModel::Geometry, + 4u32 => ExecutionModel::Fragment, + 5u32 => ExecutionModel::GLCompute, + 6u32 => ExecutionModel::Kernel, + 5267u32 => ExecutionModel::TaskNV, + 5268u32 => ExecutionModel::MeshNV, + 5313u32 => ExecutionModel::RayGenerationNV, + 5314u32 => ExecutionModel::IntersectionNV, + 5315u32 => ExecutionModel::AnyHitNV, + 5316u32 => ExecutionModel::ClosestHitNV, + 5317u32 => ExecutionModel::MissNV, + 5318u32 => ExecutionModel::CallableNV, + _ => return None, + }) + } + fn from_u64(n: u64) -> Option<Self> { + Self::from_i64(n as i64) + } +} +#[doc = "/// SPIR-V operand kind: [AddressingModel](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_addressing_model_a_addressing_model)"] +#[repr(u32)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] +pub enum AddressingModel { + Logical = 0u32, + Physical32 = 1u32, + Physical64 = 2u32, + PhysicalStorageBuffer64EXT = 5348u32, +} +#[allow(non_upper_case_globals)] +impl AddressingModel { + pub fn required_capabilities(self) -> &'static [Capability] { + match self { + AddressingModel::Logical => &[], + AddressingModel::Physical32 | AddressingModel::Physical64 => &[Capability::Addresses], + AddressingModel::PhysicalStorageBuffer64EXT => { + &[Capability::PhysicalStorageBufferAddressesEXT] + } + } + } +} +impl num_traits::FromPrimitive for AddressingModel { + #[allow(trivial_numeric_casts)] + fn from_i64(n: i64) -> Option<Self> { + Some(match n as u32 { + 0u32 => AddressingModel::Logical, + 1u32 => AddressingModel::Physical32, + 2u32 => AddressingModel::Physical64, + 5348u32 => AddressingModel::PhysicalStorageBuffer64EXT, + _ => return None, + }) + } + fn from_u64(n: u64) -> Option<Self> { + Self::from_i64(n as i64) + } +} +#[doc = "/// SPIR-V operand kind: [MemoryModel](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_memory_model_a_memory_model)"] +#[repr(u32)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] +pub enum MemoryModel { + Simple = 0u32, + GLSL450 = 1u32, + OpenCL = 2u32, + VulkanKHR = 3u32, +} +#[allow(non_upper_case_globals)] +impl MemoryModel { + pub fn required_capabilities(self) -> &'static [Capability] { + match self { + MemoryModel::OpenCL => &[Capability::Kernel], + MemoryModel::Simple | MemoryModel::GLSL450 => &[Capability::Shader], + MemoryModel::VulkanKHR => &[Capability::VulkanMemoryModelKHR], + } + } +} +impl num_traits::FromPrimitive for MemoryModel { + #[allow(trivial_numeric_casts)] + fn from_i64(n: i64) -> Option<Self> { + Some(match n as u32 { + 0u32 => MemoryModel::Simple, + 1u32 => MemoryModel::GLSL450, + 2u32 => MemoryModel::OpenCL, + 3u32 => MemoryModel::VulkanKHR, + _ => return None, + }) + } + fn from_u64(n: u64) -> Option<Self> { + Self::from_i64(n as i64) + } +} +#[doc = "/// SPIR-V operand kind: [ExecutionMode](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_execution_mode_a_execution_mode)"] +#[repr(u32)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] +pub enum ExecutionMode { + Invocations = 0u32, + SpacingEqual = 1u32, + SpacingFractionalEven = 2u32, + SpacingFractionalOdd = 3u32, + VertexOrderCw = 4u32, + VertexOrderCcw = 5u32, + PixelCenterInteger = 6u32, + OriginUpperLeft = 7u32, + OriginLowerLeft = 8u32, + EarlyFragmentTests = 9u32, + PointMode = 10u32, + Xfb = 11u32, + DepthReplacing = 12u32, + DepthGreater = 14u32, + DepthLess = 15u32, + DepthUnchanged = 16u32, + LocalSize = 17u32, + LocalSizeHint = 18u32, + InputPoints = 19u32, + InputLines = 20u32, + InputLinesAdjacency = 21u32, + Triangles = 22u32, + InputTrianglesAdjacency = 23u32, + Quads = 24u32, + Isolines = 25u32, + OutputVertices = 26u32, + OutputPoints = 27u32, + OutputLineStrip = 28u32, + OutputTriangleStrip = 29u32, + VecTypeHint = 30u32, + ContractionOff = 31u32, + Initializer = 33u32, + Finalizer = 34u32, + SubgroupSize = 35u32, + SubgroupsPerWorkgroup = 36u32, + SubgroupsPerWorkgroupId = 37u32, + LocalSizeId = 38u32, + LocalSizeHintId = 39u32, + PostDepthCoverage = 4446u32, + DenormPreserve = 4459u32, + DenormFlushToZero = 4460u32, + SignedZeroInfNanPreserve = 4461u32, + RoundingModeRTE = 4462u32, + RoundingModeRTZ = 4463u32, + StencilRefReplacingEXT = 5027u32, + OutputLinesNV = 5269u32, + OutputPrimitivesNV = 5270u32, + DerivativeGroupQuadsNV = 5289u32, + DerivativeGroupLinearNV = 5290u32, + OutputTrianglesNV = 5298u32, +} +#[allow(non_upper_case_globals)] +impl ExecutionMode { + pub fn required_capabilities(self) -> &'static [Capability] { + match self { + ExecutionMode::LocalSize | ExecutionMode::LocalSizeId => &[], + ExecutionMode::DerivativeGroupLinearNV => &[Capability::ComputeDerivativeGroupLinearNV], + ExecutionMode::DerivativeGroupQuadsNV => &[Capability::ComputeDerivativeGroupQuadsNV], + ExecutionMode::DenormFlushToZero => &[Capability::DenormFlushToZero], + ExecutionMode::DenormPreserve => &[Capability::DenormPreserve], + ExecutionMode::Invocations + | ExecutionMode::InputPoints + | ExecutionMode::InputLines + | ExecutionMode::InputLinesAdjacency + | ExecutionMode::InputTrianglesAdjacency + | ExecutionMode::OutputLineStrip + | ExecutionMode::OutputTriangleStrip => &[Capability::Geometry], + ExecutionMode::OutputPoints => &[Capability::Geometry, Capability::MeshShadingNV], + ExecutionMode::Triangles => &[Capability::Geometry, Capability::Tessellation], + ExecutionMode::OutputVertices => &[ + Capability::Geometry, + Capability::Tessellation, + Capability::MeshShadingNV, + ], + ExecutionMode::LocalSizeHint + | ExecutionMode::VecTypeHint + | ExecutionMode::ContractionOff + | ExecutionMode::Initializer + | ExecutionMode::Finalizer + | ExecutionMode::LocalSizeHintId => &[Capability::Kernel], + ExecutionMode::OutputLinesNV + | ExecutionMode::OutputPrimitivesNV + | ExecutionMode::OutputTrianglesNV => &[Capability::MeshShadingNV], + ExecutionMode::RoundingModeRTE => &[Capability::RoundingModeRTE], + ExecutionMode::RoundingModeRTZ => &[Capability::RoundingModeRTZ], + ExecutionMode::PostDepthCoverage => &[Capability::SampleMaskPostDepthCoverage], + ExecutionMode::PixelCenterInteger + | ExecutionMode::OriginUpperLeft + | ExecutionMode::OriginLowerLeft + | ExecutionMode::EarlyFragmentTests + | ExecutionMode::DepthReplacing + | ExecutionMode::DepthGreater + | ExecutionMode::DepthLess + | ExecutionMode::DepthUnchanged => &[Capability::Shader], + ExecutionMode::SignedZeroInfNanPreserve => &[Capability::SignedZeroInfNanPreserve], + ExecutionMode::StencilRefReplacingEXT => &[Capability::StencilExportEXT], + ExecutionMode::SubgroupSize + | ExecutionMode::SubgroupsPerWorkgroup + | ExecutionMode::SubgroupsPerWorkgroupId => &[Capability::SubgroupDispatch], + ExecutionMode::SpacingEqual + | ExecutionMode::SpacingFractionalEven + | ExecutionMode::SpacingFractionalOdd + | ExecutionMode::VertexOrderCw + | ExecutionMode::VertexOrderCcw + | ExecutionMode::PointMode + | ExecutionMode::Quads + | ExecutionMode::Isolines => &[Capability::Tessellation], + ExecutionMode::Xfb => &[Capability::TransformFeedback], + } + } +} +impl num_traits::FromPrimitive for ExecutionMode { + #[allow(trivial_numeric_casts)] + fn from_i64(n: i64) -> Option<Self> { + Some(match n as u32 { + 0u32 => ExecutionMode::Invocations, + 1u32 => ExecutionMode::SpacingEqual, + 2u32 => ExecutionMode::SpacingFractionalEven, + 3u32 => ExecutionMode::SpacingFractionalOdd, + 4u32 => ExecutionMode::VertexOrderCw, + 5u32 => ExecutionMode::VertexOrderCcw, + 6u32 => ExecutionMode::PixelCenterInteger, + 7u32 => ExecutionMode::OriginUpperLeft, + 8u32 => ExecutionMode::OriginLowerLeft, + 9u32 => ExecutionMode::EarlyFragmentTests, + 10u32 => ExecutionMode::PointMode, + 11u32 => ExecutionMode::Xfb, + 12u32 => ExecutionMode::DepthReplacing, + 14u32 => ExecutionMode::DepthGreater, + 15u32 => ExecutionMode::DepthLess, + 16u32 => ExecutionMode::DepthUnchanged, + 17u32 => ExecutionMode::LocalSize, + 18u32 => ExecutionMode::LocalSizeHint, + 19u32 => ExecutionMode::InputPoints, + 20u32 => ExecutionMode::InputLines, + 21u32 => ExecutionMode::InputLinesAdjacency, + 22u32 => ExecutionMode::Triangles, + 23u32 => ExecutionMode::InputTrianglesAdjacency, + 24u32 => ExecutionMode::Quads, + 25u32 => ExecutionMode::Isolines, + 26u32 => ExecutionMode::OutputVertices, + 27u32 => ExecutionMode::OutputPoints, + 28u32 => ExecutionMode::OutputLineStrip, + 29u32 => ExecutionMode::OutputTriangleStrip, + 30u32 => ExecutionMode::VecTypeHint, + 31u32 => ExecutionMode::ContractionOff, + 33u32 => ExecutionMode::Initializer, + 34u32 => ExecutionMode::Finalizer, + 35u32 => ExecutionMode::SubgroupSize, + 36u32 => ExecutionMode::SubgroupsPerWorkgroup, + 37u32 => ExecutionMode::SubgroupsPerWorkgroupId, + 38u32 => ExecutionMode::LocalSizeId, + 39u32 => ExecutionMode::LocalSizeHintId, + 4446u32 => ExecutionMode::PostDepthCoverage, + 4459u32 => ExecutionMode::DenormPreserve, + 4460u32 => ExecutionMode::DenormFlushToZero, + 4461u32 => ExecutionMode::SignedZeroInfNanPreserve, + 4462u32 => ExecutionMode::RoundingModeRTE, + 4463u32 => ExecutionMode::RoundingModeRTZ, + 5027u32 => ExecutionMode::StencilRefReplacingEXT, + 5269u32 => ExecutionMode::OutputLinesNV, + 5270u32 => ExecutionMode::OutputPrimitivesNV, + 5289u32 => ExecutionMode::DerivativeGroupQuadsNV, + 5290u32 => ExecutionMode::DerivativeGroupLinearNV, + 5298u32 => ExecutionMode::OutputTrianglesNV, + _ => return None, + }) + } + fn from_u64(n: u64) -> Option<Self> { + Self::from_i64(n as i64) + } +} +#[doc = "/// SPIR-V operand kind: [StorageClass](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_storage_class_a_storage_class)"] +#[repr(u32)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] +pub enum StorageClass { + UniformConstant = 0u32, + Input = 1u32, + Uniform = 2u32, + Output = 3u32, + Workgroup = 4u32, + CrossWorkgroup = 5u32, + Private = 6u32, + Function = 7u32, + Generic = 8u32, + PushConstant = 9u32, + AtomicCounter = 10u32, + Image = 11u32, + StorageBuffer = 12u32, + CallableDataNV = 5328u32, + IncomingCallableDataNV = 5329u32, + RayPayloadNV = 5338u32, + HitAttributeNV = 5339u32, + IncomingRayPayloadNV = 5342u32, + ShaderRecordBufferNV = 5343u32, + PhysicalStorageBufferEXT = 5349u32, +} +#[allow(non_upper_case_globals)] +impl StorageClass { + pub fn required_capabilities(self) -> &'static [Capability] { + match self { + StorageClass::UniformConstant + | StorageClass::Input + | StorageClass::Workgroup + | StorageClass::CrossWorkgroup + | StorageClass::Function + | StorageClass::Image => &[], + StorageClass::AtomicCounter => &[Capability::AtomicStorage], + StorageClass::Generic => &[Capability::GenericPointer], + StorageClass::PhysicalStorageBufferEXT => { + &[Capability::PhysicalStorageBufferAddressesEXT] + } + StorageClass::CallableDataNV + | StorageClass::IncomingCallableDataNV + | StorageClass::RayPayloadNV + | StorageClass::HitAttributeNV + | StorageClass::IncomingRayPayloadNV + | StorageClass::ShaderRecordBufferNV => &[Capability::RayTracingNV], + StorageClass::Uniform + | StorageClass::Output + | StorageClass::Private + | StorageClass::PushConstant + | StorageClass::StorageBuffer => &[Capability::Shader], + } + } +} +impl num_traits::FromPrimitive for StorageClass { + #[allow(trivial_numeric_casts)] + fn from_i64(n: i64) -> Option<Self> { + Some(match n as u32 { + 0u32 => StorageClass::UniformConstant, + 1u32 => StorageClass::Input, + 2u32 => StorageClass::Uniform, + 3u32 => StorageClass::Output, + 4u32 => StorageClass::Workgroup, + 5u32 => StorageClass::CrossWorkgroup, + 6u32 => StorageClass::Private, + 7u32 => StorageClass::Function, + 8u32 => StorageClass::Generic, + 9u32 => StorageClass::PushConstant, + 10u32 => StorageClass::AtomicCounter, + 11u32 => StorageClass::Image, + 12u32 => StorageClass::StorageBuffer, + 5328u32 => StorageClass::CallableDataNV, + 5329u32 => StorageClass::IncomingCallableDataNV, + 5338u32 => StorageClass::RayPayloadNV, + 5339u32 => StorageClass::HitAttributeNV, + 5342u32 => StorageClass::IncomingRayPayloadNV, + 5343u32 => StorageClass::ShaderRecordBufferNV, + 5349u32 => StorageClass::PhysicalStorageBufferEXT, + _ => return None, + }) + } + fn from_u64(n: u64) -> Option<Self> { + Self::from_i64(n as i64) + } +} +#[doc = "/// SPIR-V operand kind: [Dim](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_dim_a_dim)"] +#[repr(u32)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] +pub enum Dim { + Dim1D = 0u32, + Dim2D = 1u32, + Dim3D = 2u32, + DimCube = 3u32, + DimRect = 4u32, + DimBuffer = 5u32, + DimSubpassData = 6u32, +} +#[allow(non_upper_case_globals)] +impl Dim { + pub fn required_capabilities(self) -> &'static [Capability] { + match self { + Dim::Dim3D => &[], + Dim::DimSubpassData => &[Capability::InputAttachment], + Dim::Dim1D => &[Capability::Sampled1D, Capability::Image1D], + Dim::DimBuffer => &[Capability::SampledBuffer, Capability::ImageBuffer], + Dim::DimRect => &[Capability::SampledRect, Capability::ImageRect], + Dim::DimCube => &[Capability::Shader, Capability::ImageCubeArray], + Dim::Dim2D => &[ + Capability::Shader, + Capability::Kernel, + Capability::ImageMSArray, + ], + } + } +} +impl num_traits::FromPrimitive for Dim { + #[allow(trivial_numeric_casts)] + fn from_i64(n: i64) -> Option<Self> { + Some(match n as u32 { + 0u32 => Dim::Dim1D, + 1u32 => Dim::Dim2D, + 2u32 => Dim::Dim3D, + 3u32 => Dim::DimCube, + 4u32 => Dim::DimRect, + 5u32 => Dim::DimBuffer, + 6u32 => Dim::DimSubpassData, + _ => return None, + }) + } + fn from_u64(n: u64) -> Option<Self> { + Self::from_i64(n as i64) + } +} +#[doc = "/// SPIR-V operand kind: [SamplerAddressingMode](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_sampler_addressing_mode_a_sampler_addressing_mode)"] +#[repr(u32)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] +pub enum SamplerAddressingMode { + None = 0u32, + ClampToEdge = 1u32, + Clamp = 2u32, + Repeat = 3u32, + RepeatMirrored = 4u32, +} +#[allow(non_upper_case_globals)] +impl SamplerAddressingMode { + pub fn required_capabilities(self) -> &'static [Capability] { + match self { + SamplerAddressingMode::None + | SamplerAddressingMode::ClampToEdge + | SamplerAddressingMode::Clamp + | SamplerAddressingMode::Repeat + | SamplerAddressingMode::RepeatMirrored => &[Capability::Kernel], + } + } +} +impl num_traits::FromPrimitive for SamplerAddressingMode { + #[allow(trivial_numeric_casts)] + fn from_i64(n: i64) -> Option<Self> { + Some(match n as u32 { + 0u32 => SamplerAddressingMode::None, + 1u32 => SamplerAddressingMode::ClampToEdge, + 2u32 => SamplerAddressingMode::Clamp, + 3u32 => SamplerAddressingMode::Repeat, + 4u32 => SamplerAddressingMode::RepeatMirrored, + _ => return None, + }) + } + fn from_u64(n: u64) -> Option<Self> { + Self::from_i64(n as i64) + } +} +#[doc = "/// SPIR-V operand kind: [SamplerFilterMode](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_sampler_filter_mode_a_sampler_filter_mode)"] +#[repr(u32)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] +pub enum SamplerFilterMode { + Nearest = 0u32, + Linear = 1u32, +} +#[allow(non_upper_case_globals)] +impl SamplerFilterMode { + pub fn required_capabilities(self) -> &'static [Capability] { + match self { + SamplerFilterMode::Nearest | SamplerFilterMode::Linear => &[Capability::Kernel], + } + } +} +impl num_traits::FromPrimitive for SamplerFilterMode { + #[allow(trivial_numeric_casts)] + fn from_i64(n: i64) -> Option<Self> { + Some(match n as u32 { + 0u32 => SamplerFilterMode::Nearest, + 1u32 => SamplerFilterMode::Linear, + _ => return None, + }) + } + fn from_u64(n: u64) -> Option<Self> { + Self::from_i64(n as i64) + } +} +#[doc = "/// SPIR-V operand kind: [ImageFormat](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_image_format_a_image_format)"] +#[repr(u32)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] +pub enum ImageFormat { + Unknown = 0u32, + Rgba32f = 1u32, + Rgba16f = 2u32, + R32f = 3u32, + Rgba8 = 4u32, + Rgba8Snorm = 5u32, + Rg32f = 6u32, + Rg16f = 7u32, + R11fG11fB10f = 8u32, + R16f = 9u32, + Rgba16 = 10u32, + Rgb10A2 = 11u32, + Rg16 = 12u32, + Rg8 = 13u32, + R16 = 14u32, + R8 = 15u32, + Rgba16Snorm = 16u32, + Rg16Snorm = 17u32, + Rg8Snorm = 18u32, + R16Snorm = 19u32, + R8Snorm = 20u32, + Rgba32i = 21u32, + Rgba16i = 22u32, + Rgba8i = 23u32, + R32i = 24u32, + Rg32i = 25u32, + Rg16i = 26u32, + Rg8i = 27u32, + R16i = 28u32, + R8i = 29u32, + Rgba32ui = 30u32, + Rgba16ui = 31u32, + Rgba8ui = 32u32, + R32ui = 33u32, + Rgb10a2ui = 34u32, + Rg32ui = 35u32, + Rg16ui = 36u32, + Rg8ui = 37u32, + R16ui = 38u32, + R8ui = 39u32, +} +#[allow(non_upper_case_globals)] +impl ImageFormat { + pub fn required_capabilities(self) -> &'static [Capability] { + match self { + ImageFormat::Unknown => &[], + ImageFormat::Rgba32f + | ImageFormat::Rgba16f + | ImageFormat::R32f + | ImageFormat::Rgba8 + | ImageFormat::Rgba8Snorm + | ImageFormat::Rgba32i + | ImageFormat::Rgba16i + | ImageFormat::Rgba8i + | ImageFormat::R32i + | ImageFormat::Rgba32ui + | ImageFormat::Rgba16ui + | ImageFormat::Rgba8ui + | ImageFormat::R32ui => &[Capability::Shader], + ImageFormat::Rg32f + | ImageFormat::Rg16f + | ImageFormat::R11fG11fB10f + | ImageFormat::R16f + | ImageFormat::Rgba16 + | ImageFormat::Rgb10A2 + | ImageFormat::Rg16 + | ImageFormat::Rg8 + | ImageFormat::R16 + | ImageFormat::R8 + | ImageFormat::Rgba16Snorm + | ImageFormat::Rg16Snorm + | ImageFormat::Rg8Snorm + | ImageFormat::R16Snorm + | ImageFormat::R8Snorm + | ImageFormat::Rg32i + | ImageFormat::Rg16i + | ImageFormat::Rg8i + | ImageFormat::R16i + | ImageFormat::R8i + | ImageFormat::Rgb10a2ui + | ImageFormat::Rg32ui + | ImageFormat::Rg16ui + | ImageFormat::Rg8ui + | ImageFormat::R16ui + | ImageFormat::R8ui => &[Capability::StorageImageExtendedFormats], + } + } +} +impl num_traits::FromPrimitive for ImageFormat { + #[allow(trivial_numeric_casts)] + fn from_i64(n: i64) -> Option<Self> { + Some(match n as u32 { + 0u32 => ImageFormat::Unknown, + 1u32 => ImageFormat::Rgba32f, + 2u32 => ImageFormat::Rgba16f, + 3u32 => ImageFormat::R32f, + 4u32 => ImageFormat::Rgba8, + 5u32 => ImageFormat::Rgba8Snorm, + 6u32 => ImageFormat::Rg32f, + 7u32 => ImageFormat::Rg16f, + 8u32 => ImageFormat::R11fG11fB10f, + 9u32 => ImageFormat::R16f, + 10u32 => ImageFormat::Rgba16, + 11u32 => ImageFormat::Rgb10A2, + 12u32 => ImageFormat::Rg16, + 13u32 => ImageFormat::Rg8, + 14u32 => ImageFormat::R16, + 15u32 => ImageFormat::R8, + 16u32 => ImageFormat::Rgba16Snorm, + 17u32 => ImageFormat::Rg16Snorm, + 18u32 => ImageFormat::Rg8Snorm, + 19u32 => ImageFormat::R16Snorm, + 20u32 => ImageFormat::R8Snorm, + 21u32 => ImageFormat::Rgba32i, + 22u32 => ImageFormat::Rgba16i, + 23u32 => ImageFormat::Rgba8i, + 24u32 => ImageFormat::R32i, + 25u32 => ImageFormat::Rg32i, + 26u32 => ImageFormat::Rg16i, + 27u32 => ImageFormat::Rg8i, + 28u32 => ImageFormat::R16i, + 29u32 => ImageFormat::R8i, + 30u32 => ImageFormat::Rgba32ui, + 31u32 => ImageFormat::Rgba16ui, + 32u32 => ImageFormat::Rgba8ui, + 33u32 => ImageFormat::R32ui, + 34u32 => ImageFormat::Rgb10a2ui, + 35u32 => ImageFormat::Rg32ui, + 36u32 => ImageFormat::Rg16ui, + 37u32 => ImageFormat::Rg8ui, + 38u32 => ImageFormat::R16ui, + 39u32 => ImageFormat::R8ui, + _ => return None, + }) + } + fn from_u64(n: u64) -> Option<Self> { + Self::from_i64(n as i64) + } +} +#[doc = "/// SPIR-V operand kind: [ImageChannelOrder](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_image_channel_order_a_image_channel_order)"] +#[repr(u32)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] +pub enum ImageChannelOrder { + R = 0u32, + A = 1u32, + RG = 2u32, + RA = 3u32, + RGB = 4u32, + RGBA = 5u32, + BGRA = 6u32, + ARGB = 7u32, + Intensity = 8u32, + Luminance = 9u32, + Rx = 10u32, + RGx = 11u32, + RGBx = 12u32, + Depth = 13u32, + DepthStencil = 14u32, + sRGB = 15u32, + sRGBx = 16u32, + sRGBA = 17u32, + sBGRA = 18u32, + ABGR = 19u32, +} +#[allow(non_upper_case_globals)] +impl ImageChannelOrder { + pub fn required_capabilities(self) -> &'static [Capability] { + match self { + ImageChannelOrder::R + | ImageChannelOrder::A + | ImageChannelOrder::RG + | ImageChannelOrder::RA + | ImageChannelOrder::RGB + | ImageChannelOrder::RGBA + | ImageChannelOrder::BGRA + | ImageChannelOrder::ARGB + | ImageChannelOrder::Intensity + | ImageChannelOrder::Luminance + | ImageChannelOrder::Rx + | ImageChannelOrder::RGx + | ImageChannelOrder::RGBx + | ImageChannelOrder::Depth + | ImageChannelOrder::DepthStencil + | ImageChannelOrder::sRGB + | ImageChannelOrder::sRGBx + | ImageChannelOrder::sRGBA + | ImageChannelOrder::sBGRA + | ImageChannelOrder::ABGR => &[Capability::Kernel], + } + } +} +impl num_traits::FromPrimitive for ImageChannelOrder { + #[allow(trivial_numeric_casts)] + fn from_i64(n: i64) -> Option<Self> { + Some(match n as u32 { + 0u32 => ImageChannelOrder::R, + 1u32 => ImageChannelOrder::A, + 2u32 => ImageChannelOrder::RG, + 3u32 => ImageChannelOrder::RA, + 4u32 => ImageChannelOrder::RGB, + 5u32 => ImageChannelOrder::RGBA, + 6u32 => ImageChannelOrder::BGRA, + 7u32 => ImageChannelOrder::ARGB, + 8u32 => ImageChannelOrder::Intensity, + 9u32 => ImageChannelOrder::Luminance, + 10u32 => ImageChannelOrder::Rx, + 11u32 => ImageChannelOrder::RGx, + 12u32 => ImageChannelOrder::RGBx, + 13u32 => ImageChannelOrder::Depth, + 14u32 => ImageChannelOrder::DepthStencil, + 15u32 => ImageChannelOrder::sRGB, + 16u32 => ImageChannelOrder::sRGBx, + 17u32 => ImageChannelOrder::sRGBA, + 18u32 => ImageChannelOrder::sBGRA, + 19u32 => ImageChannelOrder::ABGR, + _ => return None, + }) + } + fn from_u64(n: u64) -> Option<Self> { + Self::from_i64(n as i64) + } +} +#[doc = "/// SPIR-V operand kind: [ImageChannelDataType](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_image_channel_data_type_a_image_channel_data_type)"] +#[repr(u32)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] +pub enum ImageChannelDataType { + SnormInt8 = 0u32, + SnormInt16 = 1u32, + UnormInt8 = 2u32, + UnormInt16 = 3u32, + UnormShort565 = 4u32, + UnormShort555 = 5u32, + UnormInt101010 = 6u32, + SignedInt8 = 7u32, + SignedInt16 = 8u32, + SignedInt32 = 9u32, + UnsignedInt8 = 10u32, + UnsignedInt16 = 11u32, + UnsignedInt32 = 12u32, + HalfFloat = 13u32, + Float = 14u32, + UnormInt24 = 15u32, + UnormInt101010_2 = 16u32, +} +#[allow(non_upper_case_globals)] +impl ImageChannelDataType { + pub fn required_capabilities(self) -> &'static [Capability] { + match self { + ImageChannelDataType::SnormInt8 + | ImageChannelDataType::SnormInt16 + | ImageChannelDataType::UnormInt8 + | ImageChannelDataType::UnormInt16 + | ImageChannelDataType::UnormShort565 + | ImageChannelDataType::UnormShort555 + | ImageChannelDataType::UnormInt101010 + | ImageChannelDataType::SignedInt8 + | ImageChannelDataType::SignedInt16 + | ImageChannelDataType::SignedInt32 + | ImageChannelDataType::UnsignedInt8 + | ImageChannelDataType::UnsignedInt16 + | ImageChannelDataType::UnsignedInt32 + | ImageChannelDataType::HalfFloat + | ImageChannelDataType::Float + | ImageChannelDataType::UnormInt24 + | ImageChannelDataType::UnormInt101010_2 => &[Capability::Kernel], + } + } +} +impl num_traits::FromPrimitive for ImageChannelDataType { + #[allow(trivial_numeric_casts)] + fn from_i64(n: i64) -> Option<Self> { + Some(match n as u32 { + 0u32 => ImageChannelDataType::SnormInt8, + 1u32 => ImageChannelDataType::SnormInt16, + 2u32 => ImageChannelDataType::UnormInt8, + 3u32 => ImageChannelDataType::UnormInt16, + 4u32 => ImageChannelDataType::UnormShort565, + 5u32 => ImageChannelDataType::UnormShort555, + 6u32 => ImageChannelDataType::UnormInt101010, + 7u32 => ImageChannelDataType::SignedInt8, + 8u32 => ImageChannelDataType::SignedInt16, + 9u32 => ImageChannelDataType::SignedInt32, + 10u32 => ImageChannelDataType::UnsignedInt8, + 11u32 => ImageChannelDataType::UnsignedInt16, + 12u32 => ImageChannelDataType::UnsignedInt32, + 13u32 => ImageChannelDataType::HalfFloat, + 14u32 => ImageChannelDataType::Float, + 15u32 => ImageChannelDataType::UnormInt24, + 16u32 => ImageChannelDataType::UnormInt101010_2, + _ => return None, + }) + } + fn from_u64(n: u64) -> Option<Self> { + Self::from_i64(n as i64) + } +} +#[doc = "/// SPIR-V operand kind: [FPRoundingMode](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_fp_rounding_mode_a_fp_rounding_mode)"] +#[repr(u32)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] +pub enum FPRoundingMode { + RTE = 0u32, + RTZ = 1u32, + RTP = 2u32, + RTN = 3u32, +} +#[allow(non_upper_case_globals)] +impl FPRoundingMode { + pub fn required_capabilities(self) -> &'static [Capability] { + match self { + FPRoundingMode::RTE + | FPRoundingMode::RTZ + | FPRoundingMode::RTP + | FPRoundingMode::RTN => &[], + } + } +} +impl num_traits::FromPrimitive for FPRoundingMode { + #[allow(trivial_numeric_casts)] + fn from_i64(n: i64) -> Option<Self> { + Some(match n as u32 { + 0u32 => FPRoundingMode::RTE, + 1u32 => FPRoundingMode::RTZ, + 2u32 => FPRoundingMode::RTP, + 3u32 => FPRoundingMode::RTN, + _ => return None, + }) + } + fn from_u64(n: u64) -> Option<Self> { + Self::from_i64(n as i64) + } +} +#[doc = "/// SPIR-V operand kind: [LinkageType](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_linkage_type_a_linkage_type)"] +#[repr(u32)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] +pub enum LinkageType { + Export = 0u32, + Import = 1u32, +} +#[allow(non_upper_case_globals)] +impl LinkageType { + pub fn required_capabilities(self) -> &'static [Capability] { + match self { + LinkageType::Export | LinkageType::Import => &[Capability::Linkage], + } + } +} +impl num_traits::FromPrimitive for LinkageType { + #[allow(trivial_numeric_casts)] + fn from_i64(n: i64) -> Option<Self> { + Some(match n as u32 { + 0u32 => LinkageType::Export, + 1u32 => LinkageType::Import, + _ => return None, + }) + } + fn from_u64(n: u64) -> Option<Self> { + Self::from_i64(n as i64) + } +} +#[doc = "/// SPIR-V operand kind: [AccessQualifier](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_access_qualifier_a_access_qualifier)"] +#[repr(u32)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] +pub enum AccessQualifier { + ReadOnly = 0u32, + WriteOnly = 1u32, + ReadWrite = 2u32, +} +#[allow(non_upper_case_globals)] +impl AccessQualifier { + pub fn required_capabilities(self) -> &'static [Capability] { + match self { + AccessQualifier::ReadOnly | AccessQualifier::WriteOnly | AccessQualifier::ReadWrite => { + &[Capability::Kernel] + } + } + } +} +impl num_traits::FromPrimitive for AccessQualifier { + #[allow(trivial_numeric_casts)] + fn from_i64(n: i64) -> Option<Self> { + Some(match n as u32 { + 0u32 => AccessQualifier::ReadOnly, + 1u32 => AccessQualifier::WriteOnly, + 2u32 => AccessQualifier::ReadWrite, + _ => return None, + }) + } + fn from_u64(n: u64) -> Option<Self> { + Self::from_i64(n as i64) + } +} +#[doc = "/// SPIR-V operand kind: [FunctionParameterAttribute](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_function_parameter_attribute_a_function_parameter_attribute)"] +#[repr(u32)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] +pub enum FunctionParameterAttribute { + Zext = 0u32, + Sext = 1u32, + ByVal = 2u32, + Sret = 3u32, + NoAlias = 4u32, + NoCapture = 5u32, + NoWrite = 6u32, + NoReadWrite = 7u32, +} +#[allow(non_upper_case_globals)] +impl FunctionParameterAttribute { + pub fn required_capabilities(self) -> &'static [Capability] { + match self { + FunctionParameterAttribute::Zext + | FunctionParameterAttribute::Sext + | FunctionParameterAttribute::ByVal + | FunctionParameterAttribute::Sret + | FunctionParameterAttribute::NoAlias + | FunctionParameterAttribute::NoCapture + | FunctionParameterAttribute::NoWrite + | FunctionParameterAttribute::NoReadWrite => &[Capability::Kernel], + } + } +} +impl num_traits::FromPrimitive for FunctionParameterAttribute { + #[allow(trivial_numeric_casts)] + fn from_i64(n: i64) -> Option<Self> { + Some(match n as u32 { + 0u32 => FunctionParameterAttribute::Zext, + 1u32 => FunctionParameterAttribute::Sext, + 2u32 => FunctionParameterAttribute::ByVal, + 3u32 => FunctionParameterAttribute::Sret, + 4u32 => FunctionParameterAttribute::NoAlias, + 5u32 => FunctionParameterAttribute::NoCapture, + 6u32 => FunctionParameterAttribute::NoWrite, + 7u32 => FunctionParameterAttribute::NoReadWrite, + _ => return None, + }) + } + fn from_u64(n: u64) -> Option<Self> { + Self::from_i64(n as i64) + } +} +#[doc = "/// SPIR-V operand kind: [Decoration](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_decoration_a_decoration)"] +#[repr(u32)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] +pub enum Decoration { + RelaxedPrecision = 0u32, + SpecId = 1u32, + Block = 2u32, + BufferBlock = 3u32, + RowMajor = 4u32, + ColMajor = 5u32, + ArrayStride = 6u32, + MatrixStride = 7u32, + GLSLShared = 8u32, + GLSLPacked = 9u32, + CPacked = 10u32, + BuiltIn = 11u32, + NoPerspective = 13u32, + Flat = 14u32, + Patch = 15u32, + Centroid = 16u32, + Sample = 17u32, + Invariant = 18u32, + Restrict = 19u32, + Aliased = 20u32, + Volatile = 21u32, + Constant = 22u32, + Coherent = 23u32, + NonWritable = 24u32, + NonReadable = 25u32, + Uniform = 26u32, + UniformId = 27u32, + SaturatedConversion = 28u32, + Stream = 29u32, + Location = 30u32, + Component = 31u32, + Index = 32u32, + Binding = 33u32, + DescriptorSet = 34u32, + Offset = 35u32, + XfbBuffer = 36u32, + XfbStride = 37u32, + FuncParamAttr = 38u32, + FPRoundingMode = 39u32, + FPFastMathMode = 40u32, + LinkageAttributes = 41u32, + NoContraction = 42u32, + InputAttachmentIndex = 43u32, + Alignment = 44u32, + MaxByteOffset = 45u32, + AlignmentId = 46u32, + MaxByteOffsetId = 47u32, + NoSignedWrap = 4469u32, + NoUnsignedWrap = 4470u32, + ExplicitInterpAMD = 4999u32, + OverrideCoverageNV = 5248u32, + PassthroughNV = 5250u32, + ViewportRelativeNV = 5252u32, + SecondaryViewportRelativeNV = 5256u32, + PerPrimitiveNV = 5271u32, + PerViewNV = 5272u32, + PerTaskNV = 5273u32, + PerVertexNV = 5285u32, + NonUniformEXT = 5300u32, + CounterBuffer = 5634u32, + UserSemantic = 5635u32, + RestrictPointerEXT = 5355u32, + AliasedPointerEXT = 5356u32, +} +#[allow(non_upper_case_globals)] +impl Decoration { + pub const HlslCounterBufferGOOGLE: Decoration = Decoration::CounterBuffer; + pub const HlslSemanticGOOGLE: Decoration = Decoration::UserSemantic; + pub fn required_capabilities(self) -> &'static [Capability] { + match self { + Decoration::BuiltIn + | Decoration::Restrict + | Decoration::Aliased + | Decoration::Volatile + | Decoration::Coherent + | Decoration::NonWritable + | Decoration::NonReadable + | Decoration::FPRoundingMode + | Decoration::NoSignedWrap + | Decoration::NoUnsignedWrap + | Decoration::ExplicitInterpAMD + | Decoration::CounterBuffer + | Decoration::UserSemantic => &[], + Decoration::MaxByteOffset | Decoration::MaxByteOffsetId => &[Capability::Addresses], + Decoration::PerVertexNV => &[Capability::FragmentBarycentricNV], + Decoration::PassthroughNV => &[Capability::GeometryShaderPassthroughNV], + Decoration::Stream => &[Capability::GeometryStreams], + Decoration::InputAttachmentIndex => &[Capability::InputAttachment], + Decoration::CPacked + | Decoration::Constant + | Decoration::SaturatedConversion + | Decoration::FuncParamAttr + | Decoration::FPFastMathMode + | Decoration::Alignment + | Decoration::AlignmentId => &[Capability::Kernel], + Decoration::LinkageAttributes => &[Capability::Linkage], + Decoration::RowMajor | Decoration::ColMajor | Decoration::MatrixStride => { + &[Capability::Matrix] + } + Decoration::PerPrimitiveNV | Decoration::PerViewNV | Decoration::PerTaskNV => { + &[Capability::MeshShadingNV] + } + Decoration::RestrictPointerEXT | Decoration::AliasedPointerEXT => { + &[Capability::PhysicalStorageBufferAddressesEXT] + } + Decoration::OverrideCoverageNV => &[Capability::SampleMaskOverrideCoverageNV], + Decoration::Sample => &[Capability::SampleRateShading], + Decoration::RelaxedPrecision + | Decoration::Block + | Decoration::BufferBlock + | Decoration::ArrayStride + | Decoration::GLSLShared + | Decoration::GLSLPacked + | Decoration::NoPerspective + | Decoration::Flat + | Decoration::Centroid + | Decoration::Invariant + | Decoration::Uniform + | Decoration::UniformId + | Decoration::Location + | Decoration::Component + | Decoration::Index + | Decoration::Binding + | Decoration::DescriptorSet + | Decoration::Offset + | Decoration::NoContraction => &[Capability::Shader], + Decoration::SpecId => &[Capability::Shader, Capability::Kernel], + Decoration::NonUniformEXT => &[Capability::ShaderNonUniformEXT], + Decoration::SecondaryViewportRelativeNV => &[Capability::ShaderStereoViewNV], + Decoration::ViewportRelativeNV => &[Capability::ShaderViewportMaskNV], + Decoration::Patch => &[Capability::Tessellation], + Decoration::XfbBuffer | Decoration::XfbStride => &[Capability::TransformFeedback], + } + } +} +impl num_traits::FromPrimitive for Decoration { + #[allow(trivial_numeric_casts)] + fn from_i64(n: i64) -> Option<Self> { + Some(match n as u32 { + 0u32 => Decoration::RelaxedPrecision, + 1u32 => Decoration::SpecId, + 2u32 => Decoration::Block, + 3u32 => Decoration::BufferBlock, + 4u32 => Decoration::RowMajor, + 5u32 => Decoration::ColMajor, + 6u32 => Decoration::ArrayStride, + 7u32 => Decoration::MatrixStride, + 8u32 => Decoration::GLSLShared, + 9u32 => Decoration::GLSLPacked, + 10u32 => Decoration::CPacked, + 11u32 => Decoration::BuiltIn, + 13u32 => Decoration::NoPerspective, + 14u32 => Decoration::Flat, + 15u32 => Decoration::Patch, + 16u32 => Decoration::Centroid, + 17u32 => Decoration::Sample, + 18u32 => Decoration::Invariant, + 19u32 => Decoration::Restrict, + 20u32 => Decoration::Aliased, + 21u32 => Decoration::Volatile, + 22u32 => Decoration::Constant, + 23u32 => Decoration::Coherent, + 24u32 => Decoration::NonWritable, + 25u32 => Decoration::NonReadable, + 26u32 => Decoration::Uniform, + 27u32 => Decoration::UniformId, + 28u32 => Decoration::SaturatedConversion, + 29u32 => Decoration::Stream, + 30u32 => Decoration::Location, + 31u32 => Decoration::Component, + 32u32 => Decoration::Index, + 33u32 => Decoration::Binding, + 34u32 => Decoration::DescriptorSet, + 35u32 => Decoration::Offset, + 36u32 => Decoration::XfbBuffer, + 37u32 => Decoration::XfbStride, + 38u32 => Decoration::FuncParamAttr, + 39u32 => Decoration::FPRoundingMode, + 40u32 => Decoration::FPFastMathMode, + 41u32 => Decoration::LinkageAttributes, + 42u32 => Decoration::NoContraction, + 43u32 => Decoration::InputAttachmentIndex, + 44u32 => Decoration::Alignment, + 45u32 => Decoration::MaxByteOffset, + 46u32 => Decoration::AlignmentId, + 47u32 => Decoration::MaxByteOffsetId, + 4469u32 => Decoration::NoSignedWrap, + 4470u32 => Decoration::NoUnsignedWrap, + 4999u32 => Decoration::ExplicitInterpAMD, + 5248u32 => Decoration::OverrideCoverageNV, + 5250u32 => Decoration::PassthroughNV, + 5252u32 => Decoration::ViewportRelativeNV, + 5256u32 => Decoration::SecondaryViewportRelativeNV, + 5271u32 => Decoration::PerPrimitiveNV, + 5272u32 => Decoration::PerViewNV, + 5273u32 => Decoration::PerTaskNV, + 5285u32 => Decoration::PerVertexNV, + 5300u32 => Decoration::NonUniformEXT, + 5634u32 => Decoration::CounterBuffer, + 5635u32 => Decoration::UserSemantic, + 5355u32 => Decoration::RestrictPointerEXT, + 5356u32 => Decoration::AliasedPointerEXT, + _ => return None, + }) + } + fn from_u64(n: u64) -> Option<Self> { + Self::from_i64(n as i64) + } +} +#[doc = "/// SPIR-V operand kind: [BuiltIn](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_built_in_a_built_in)"] +#[repr(u32)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] +pub enum BuiltIn { + Position = 0u32, + PointSize = 1u32, + ClipDistance = 3u32, + CullDistance = 4u32, + VertexId = 5u32, + InstanceId = 6u32, + PrimitiveId = 7u32, + InvocationId = 8u32, + Layer = 9u32, + ViewportIndex = 10u32, + TessLevelOuter = 11u32, + TessLevelInner = 12u32, + TessCoord = 13u32, + PatchVertices = 14u32, + FragCoord = 15u32, + PointCoord = 16u32, + FrontFacing = 17u32, + SampleId = 18u32, + SamplePosition = 19u32, + SampleMask = 20u32, + FragDepth = 22u32, + HelperInvocation = 23u32, + NumWorkgroups = 24u32, + WorkgroupSize = 25u32, + WorkgroupId = 26u32, + LocalInvocationId = 27u32, + GlobalInvocationId = 28u32, + LocalInvocationIndex = 29u32, + WorkDim = 30u32, + GlobalSize = 31u32, + EnqueuedWorkgroupSize = 32u32, + GlobalOffset = 33u32, + GlobalLinearId = 34u32, + SubgroupSize = 36u32, + SubgroupMaxSize = 37u32, + NumSubgroups = 38u32, + NumEnqueuedSubgroups = 39u32, + SubgroupId = 40u32, + SubgroupLocalInvocationId = 41u32, + VertexIndex = 42u32, + InstanceIndex = 43u32, + SubgroupEqMask = 4416u32, + SubgroupGeMask = 4417u32, + SubgroupGtMask = 4418u32, + SubgroupLeMask = 4419u32, + SubgroupLtMask = 4420u32, + BaseVertex = 4424u32, + BaseInstance = 4425u32, + DrawIndex = 4426u32, + DeviceIndex = 4438u32, + ViewIndex = 4440u32, + BaryCoordNoPerspAMD = 4992u32, + BaryCoordNoPerspCentroidAMD = 4993u32, + BaryCoordNoPerspSampleAMD = 4994u32, + BaryCoordSmoothAMD = 4995u32, + BaryCoordSmoothCentroidAMD = 4996u32, + BaryCoordSmoothSampleAMD = 4997u32, + BaryCoordPullModelAMD = 4998u32, + FragStencilRefEXT = 5014u32, + ViewportMaskNV = 5253u32, + SecondaryPositionNV = 5257u32, + SecondaryViewportMaskNV = 5258u32, + PositionPerViewNV = 5261u32, + ViewportMaskPerViewNV = 5262u32, + FullyCoveredEXT = 5264u32, + TaskCountNV = 5274u32, + PrimitiveCountNV = 5275u32, + PrimitiveIndicesNV = 5276u32, + ClipDistancePerViewNV = 5277u32, + CullDistancePerViewNV = 5278u32, + LayerPerViewNV = 5279u32, + MeshViewCountNV = 5280u32, + MeshViewIndicesNV = 5281u32, + BaryCoordNV = 5286u32, + BaryCoordNoPerspNV = 5287u32, + FragSizeEXT = 5292u32, + FragInvocationCountEXT = 5293u32, + LaunchIdNV = 5319u32, + LaunchSizeNV = 5320u32, + WorldRayOriginNV = 5321u32, + WorldRayDirectionNV = 5322u32, + ObjectRayOriginNV = 5323u32, + ObjectRayDirectionNV = 5324u32, + RayTminNV = 5325u32, + RayTmaxNV = 5326u32, + InstanceCustomIndexNV = 5327u32, + ObjectToWorldNV = 5330u32, + WorldToObjectNV = 5331u32, + HitTNV = 5332u32, + HitKindNV = 5333u32, + IncomingRayFlagsNV = 5351u32, +} +#[allow(non_upper_case_globals)] +impl BuiltIn { + pub const SubgroupEqMaskKHR: BuiltIn = BuiltIn::SubgroupEqMask; + pub const SubgroupGeMaskKHR: BuiltIn = BuiltIn::SubgroupGeMask; + pub const SubgroupGtMaskKHR: BuiltIn = BuiltIn::SubgroupGtMask; + pub const SubgroupLeMaskKHR: BuiltIn = BuiltIn::SubgroupLeMask; + pub const SubgroupLtMaskKHR: BuiltIn = BuiltIn::SubgroupLtMask; + pub const FragmentSizeNV: BuiltIn = BuiltIn::FragSizeEXT; + pub const InvocationsPerPixelNV: BuiltIn = BuiltIn::FragInvocationCountEXT; + pub fn required_capabilities(self) -> &'static [Capability] { + match self { + BuiltIn::NumWorkgroups + | BuiltIn::WorkgroupSize + | BuiltIn::WorkgroupId + | BuiltIn::LocalInvocationId + | BuiltIn::GlobalInvocationId + | BuiltIn::LocalInvocationIndex + | BuiltIn::BaryCoordNoPerspAMD + | BuiltIn::BaryCoordNoPerspCentroidAMD + | BuiltIn::BaryCoordNoPerspSampleAMD + | BuiltIn::BaryCoordSmoothAMD + | BuiltIn::BaryCoordSmoothCentroidAMD + | BuiltIn::BaryCoordSmoothSampleAMD + | BuiltIn::BaryCoordPullModelAMD => &[], + BuiltIn::ClipDistance => &[Capability::ClipDistance], + BuiltIn::CullDistance => &[Capability::CullDistance], + BuiltIn::DeviceIndex => &[Capability::DeviceGroup], + BuiltIn::BaseVertex | BuiltIn::BaseInstance => &[Capability::DrawParameters], + BuiltIn::DrawIndex => &[Capability::DrawParameters, Capability::MeshShadingNV], + BuiltIn::BaryCoordNV | BuiltIn::BaryCoordNoPerspNV => { + &[Capability::FragmentBarycentricNV] + } + BuiltIn::FragSizeEXT | BuiltIn::FragInvocationCountEXT => { + &[Capability::FragmentDensityEXT, Capability::ShadingRateNV] + } + BuiltIn::FullyCoveredEXT => &[Capability::FragmentFullyCoveredEXT], + BuiltIn::Layer => &[Capability::Geometry], + BuiltIn::InvocationId => &[Capability::Geometry, Capability::Tessellation], + BuiltIn::PrimitiveId => &[ + Capability::Geometry, + Capability::Tessellation, + Capability::RayTracingNV, + ], + BuiltIn::WorkDim + | BuiltIn::GlobalSize + | BuiltIn::EnqueuedWorkgroupSize + | BuiltIn::GlobalOffset + | BuiltIn::GlobalLinearId + | BuiltIn::SubgroupMaxSize + | BuiltIn::NumEnqueuedSubgroups => &[Capability::Kernel], + BuiltIn::NumSubgroups | BuiltIn::SubgroupId => { + &[Capability::Kernel, Capability::GroupNonUniform] + } + BuiltIn::SubgroupSize | BuiltIn::SubgroupLocalInvocationId => &[ + Capability::Kernel, + Capability::GroupNonUniform, + Capability::SubgroupBallotKHR, + ], + BuiltIn::TaskCountNV + | BuiltIn::PrimitiveCountNV + | BuiltIn::PrimitiveIndicesNV + | BuiltIn::ClipDistancePerViewNV + | BuiltIn::CullDistancePerViewNV + | BuiltIn::LayerPerViewNV + | BuiltIn::MeshViewCountNV + | BuiltIn::MeshViewIndicesNV => &[Capability::MeshShadingNV], + BuiltIn::ViewIndex => &[Capability::MultiView], + BuiltIn::ViewportIndex => &[Capability::MultiViewport], + BuiltIn::PositionPerViewNV | BuiltIn::ViewportMaskPerViewNV => { + &[Capability::PerViewAttributesNV, Capability::MeshShadingNV] + } + BuiltIn::LaunchIdNV + | BuiltIn::LaunchSizeNV + | BuiltIn::WorldRayOriginNV + | BuiltIn::WorldRayDirectionNV + | BuiltIn::ObjectRayOriginNV + | BuiltIn::ObjectRayDirectionNV + | BuiltIn::RayTminNV + | BuiltIn::RayTmaxNV + | BuiltIn::InstanceCustomIndexNV + | BuiltIn::ObjectToWorldNV + | BuiltIn::WorldToObjectNV + | BuiltIn::HitTNV + | BuiltIn::HitKindNV + | BuiltIn::IncomingRayFlagsNV => &[Capability::RayTracingNV], + BuiltIn::SampleId | BuiltIn::SamplePosition => &[Capability::SampleRateShading], + BuiltIn::Position + | BuiltIn::PointSize + | BuiltIn::VertexId + | BuiltIn::InstanceId + | BuiltIn::FragCoord + | BuiltIn::PointCoord + | BuiltIn::FrontFacing + | BuiltIn::SampleMask + | BuiltIn::FragDepth + | BuiltIn::HelperInvocation + | BuiltIn::VertexIndex + | BuiltIn::InstanceIndex => &[Capability::Shader], + BuiltIn::SecondaryPositionNV | BuiltIn::SecondaryViewportMaskNV => { + &[Capability::ShaderStereoViewNV] + } + BuiltIn::ViewportMaskNV => { + &[Capability::ShaderViewportMaskNV, Capability::MeshShadingNV] + } + BuiltIn::FragStencilRefEXT => &[Capability::StencilExportEXT], + BuiltIn::SubgroupEqMask + | BuiltIn::SubgroupGeMask + | BuiltIn::SubgroupGtMask + | BuiltIn::SubgroupLeMask + | BuiltIn::SubgroupLtMask => &[ + Capability::SubgroupBallotKHR, + Capability::GroupNonUniformBallot, + ], + BuiltIn::TessLevelOuter + | BuiltIn::TessLevelInner + | BuiltIn::TessCoord + | BuiltIn::PatchVertices => &[Capability::Tessellation], + } + } +} +impl num_traits::FromPrimitive for BuiltIn { + #[allow(trivial_numeric_casts)] + fn from_i64(n: i64) -> Option<Self> { + Some(match n as u32 { + 0u32 => BuiltIn::Position, + 1u32 => BuiltIn::PointSize, + 3u32 => BuiltIn::ClipDistance, + 4u32 => BuiltIn::CullDistance, + 5u32 => BuiltIn::VertexId, + 6u32 => BuiltIn::InstanceId, + 7u32 => BuiltIn::PrimitiveId, + 8u32 => BuiltIn::InvocationId, + 9u32 => BuiltIn::Layer, + 10u32 => BuiltIn::ViewportIndex, + 11u32 => BuiltIn::TessLevelOuter, + 12u32 => BuiltIn::TessLevelInner, + 13u32 => BuiltIn::TessCoord, + 14u32 => BuiltIn::PatchVertices, + 15u32 => BuiltIn::FragCoord, + 16u32 => BuiltIn::PointCoord, + 17u32 => BuiltIn::FrontFacing, + 18u32 => BuiltIn::SampleId, + 19u32 => BuiltIn::SamplePosition, + 20u32 => BuiltIn::SampleMask, + 22u32 => BuiltIn::FragDepth, + 23u32 => BuiltIn::HelperInvocation, + 24u32 => BuiltIn::NumWorkgroups, + 25u32 => BuiltIn::WorkgroupSize, + 26u32 => BuiltIn::WorkgroupId, + 27u32 => BuiltIn::LocalInvocationId, + 28u32 => BuiltIn::GlobalInvocationId, + 29u32 => BuiltIn::LocalInvocationIndex, + 30u32 => BuiltIn::WorkDim, + 31u32 => BuiltIn::GlobalSize, + 32u32 => BuiltIn::EnqueuedWorkgroupSize, + 33u32 => BuiltIn::GlobalOffset, + 34u32 => BuiltIn::GlobalLinearId, + 36u32 => BuiltIn::SubgroupSize, + 37u32 => BuiltIn::SubgroupMaxSize, + 38u32 => BuiltIn::NumSubgroups, + 39u32 => BuiltIn::NumEnqueuedSubgroups, + 40u32 => BuiltIn::SubgroupId, + 41u32 => BuiltIn::SubgroupLocalInvocationId, + 42u32 => BuiltIn::VertexIndex, + 43u32 => BuiltIn::InstanceIndex, + 4416u32 => BuiltIn::SubgroupEqMask, + 4417u32 => BuiltIn::SubgroupGeMask, + 4418u32 => BuiltIn::SubgroupGtMask, + 4419u32 => BuiltIn::SubgroupLeMask, + 4420u32 => BuiltIn::SubgroupLtMask, + 4424u32 => BuiltIn::BaseVertex, + 4425u32 => BuiltIn::BaseInstance, + 4426u32 => BuiltIn::DrawIndex, + 4438u32 => BuiltIn::DeviceIndex, + 4440u32 => BuiltIn::ViewIndex, + 4992u32 => BuiltIn::BaryCoordNoPerspAMD, + 4993u32 => BuiltIn::BaryCoordNoPerspCentroidAMD, + 4994u32 => BuiltIn::BaryCoordNoPerspSampleAMD, + 4995u32 => BuiltIn::BaryCoordSmoothAMD, + 4996u32 => BuiltIn::BaryCoordSmoothCentroidAMD, + 4997u32 => BuiltIn::BaryCoordSmoothSampleAMD, + 4998u32 => BuiltIn::BaryCoordPullModelAMD, + 5014u32 => BuiltIn::FragStencilRefEXT, + 5253u32 => BuiltIn::ViewportMaskNV, + 5257u32 => BuiltIn::SecondaryPositionNV, + 5258u32 => BuiltIn::SecondaryViewportMaskNV, + 5261u32 => BuiltIn::PositionPerViewNV, + 5262u32 => BuiltIn::ViewportMaskPerViewNV, + 5264u32 => BuiltIn::FullyCoveredEXT, + 5274u32 => BuiltIn::TaskCountNV, + 5275u32 => BuiltIn::PrimitiveCountNV, + 5276u32 => BuiltIn::PrimitiveIndicesNV, + 5277u32 => BuiltIn::ClipDistancePerViewNV, + 5278u32 => BuiltIn::CullDistancePerViewNV, + 5279u32 => BuiltIn::LayerPerViewNV, + 5280u32 => BuiltIn::MeshViewCountNV, + 5281u32 => BuiltIn::MeshViewIndicesNV, + 5286u32 => BuiltIn::BaryCoordNV, + 5287u32 => BuiltIn::BaryCoordNoPerspNV, + 5292u32 => BuiltIn::FragSizeEXT, + 5293u32 => BuiltIn::FragInvocationCountEXT, + 5319u32 => BuiltIn::LaunchIdNV, + 5320u32 => BuiltIn::LaunchSizeNV, + 5321u32 => BuiltIn::WorldRayOriginNV, + 5322u32 => BuiltIn::WorldRayDirectionNV, + 5323u32 => BuiltIn::ObjectRayOriginNV, + 5324u32 => BuiltIn::ObjectRayDirectionNV, + 5325u32 => BuiltIn::RayTminNV, + 5326u32 => BuiltIn::RayTmaxNV, + 5327u32 => BuiltIn::InstanceCustomIndexNV, + 5330u32 => BuiltIn::ObjectToWorldNV, + 5331u32 => BuiltIn::WorldToObjectNV, + 5332u32 => BuiltIn::HitTNV, + 5333u32 => BuiltIn::HitKindNV, + 5351u32 => BuiltIn::IncomingRayFlagsNV, + _ => return None, + }) + } + fn from_u64(n: u64) -> Option<Self> { + Self::from_i64(n as i64) + } +} +#[doc = "/// SPIR-V operand kind: [Scope](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_scope_a_scope)"] +#[repr(u32)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] +pub enum Scope { + CrossDevice = 0u32, + Device = 1u32, + Workgroup = 2u32, + Subgroup = 3u32, + Invocation = 4u32, + QueueFamilyKHR = 5u32, +} +#[allow(non_upper_case_globals)] +impl Scope { + pub fn required_capabilities(self) -> &'static [Capability] { + match self { + Scope::CrossDevice + | Scope::Device + | Scope::Workgroup + | Scope::Subgroup + | Scope::Invocation => &[], + Scope::QueueFamilyKHR => &[Capability::VulkanMemoryModelKHR], + } + } +} +impl num_traits::FromPrimitive for Scope { + #[allow(trivial_numeric_casts)] + fn from_i64(n: i64) -> Option<Self> { + Some(match n as u32 { + 0u32 => Scope::CrossDevice, + 1u32 => Scope::Device, + 2u32 => Scope::Workgroup, + 3u32 => Scope::Subgroup, + 4u32 => Scope::Invocation, + 5u32 => Scope::QueueFamilyKHR, + _ => return None, + }) + } + fn from_u64(n: u64) -> Option<Self> { + Self::from_i64(n as i64) + } +} +#[doc = "/// SPIR-V operand kind: [GroupOperation](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_group_operation_a_group_operation)"] +#[repr(u32)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] +pub enum GroupOperation { + Reduce = 0u32, + InclusiveScan = 1u32, + ExclusiveScan = 2u32, + ClusteredReduce = 3u32, + PartitionedReduceNV = 6u32, + PartitionedInclusiveScanNV = 7u32, + PartitionedExclusiveScanNV = 8u32, +} +#[allow(non_upper_case_globals)] +impl GroupOperation { + pub fn required_capabilities(self) -> &'static [Capability] { + match self { + GroupOperation::ClusteredReduce => &[Capability::GroupNonUniformClustered], + GroupOperation::PartitionedReduceNV + | GroupOperation::PartitionedInclusiveScanNV + | GroupOperation::PartitionedExclusiveScanNV => { + &[Capability::GroupNonUniformPartitionedNV] + } + GroupOperation::Reduce + | GroupOperation::InclusiveScan + | GroupOperation::ExclusiveScan => &[ + Capability::Kernel, + Capability::GroupNonUniformArithmetic, + Capability::GroupNonUniformBallot, + ], + } + } +} +impl num_traits::FromPrimitive for GroupOperation { + #[allow(trivial_numeric_casts)] + fn from_i64(n: i64) -> Option<Self> { + Some(match n as u32 { + 0u32 => GroupOperation::Reduce, + 1u32 => GroupOperation::InclusiveScan, + 2u32 => GroupOperation::ExclusiveScan, + 3u32 => GroupOperation::ClusteredReduce, + 6u32 => GroupOperation::PartitionedReduceNV, + 7u32 => GroupOperation::PartitionedInclusiveScanNV, + 8u32 => GroupOperation::PartitionedExclusiveScanNV, + _ => return None, + }) + } + fn from_u64(n: u64) -> Option<Self> { + Self::from_i64(n as i64) + } +} +#[doc = "/// SPIR-V operand kind: [KernelEnqueueFlags](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_kernel_enqueue_flags_a_kernel_enqueue_flags)"] +#[repr(u32)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] +pub enum KernelEnqueueFlags { + NoWait = 0u32, + WaitKernel = 1u32, + WaitWorkGroup = 2u32, +} +#[allow(non_upper_case_globals)] +impl KernelEnqueueFlags { + pub fn required_capabilities(self) -> &'static [Capability] { + match self { + KernelEnqueueFlags::NoWait + | KernelEnqueueFlags::WaitKernel + | KernelEnqueueFlags::WaitWorkGroup => &[Capability::Kernel], + } + } +} +impl num_traits::FromPrimitive for KernelEnqueueFlags { + #[allow(trivial_numeric_casts)] + fn from_i64(n: i64) -> Option<Self> { + Some(match n as u32 { + 0u32 => KernelEnqueueFlags::NoWait, + 1u32 => KernelEnqueueFlags::WaitKernel, + 2u32 => KernelEnqueueFlags::WaitWorkGroup, + _ => return None, + }) + } + fn from_u64(n: u64) -> Option<Self> { + Self::from_i64(n as i64) + } +} +#[doc = "/// SPIR-V operand kind: [Capability](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_capability_a_capability)"] +#[repr(u32)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] +pub enum Capability { + Matrix = 0u32, + Shader = 1u32, + Geometry = 2u32, + Tessellation = 3u32, + Addresses = 4u32, + Linkage = 5u32, + Kernel = 6u32, + Vector16 = 7u32, + Float16Buffer = 8u32, + Float16 = 9u32, + Float64 = 10u32, + Int64 = 11u32, + Int64Atomics = 12u32, + ImageBasic = 13u32, + ImageReadWrite = 14u32, + ImageMipmap = 15u32, + Pipes = 17u32, + Groups = 18u32, + DeviceEnqueue = 19u32, + LiteralSampler = 20u32, + AtomicStorage = 21u32, + Int16 = 22u32, + TessellationPointSize = 23u32, + GeometryPointSize = 24u32, + ImageGatherExtended = 25u32, + StorageImageMultisample = 27u32, + UniformBufferArrayDynamicIndexing = 28u32, + SampledImageArrayDynamicIndexing = 29u32, + StorageBufferArrayDynamicIndexing = 30u32, + StorageImageArrayDynamicIndexing = 31u32, + ClipDistance = 32u32, + CullDistance = 33u32, + ImageCubeArray = 34u32, + SampleRateShading = 35u32, + ImageRect = 36u32, + SampledRect = 37u32, + GenericPointer = 38u32, + Int8 = 39u32, + InputAttachment = 40u32, + SparseResidency = 41u32, + MinLod = 42u32, + Sampled1D = 43u32, + Image1D = 44u32, + SampledCubeArray = 45u32, + SampledBuffer = 46u32, + ImageBuffer = 47u32, + ImageMSArray = 48u32, + StorageImageExtendedFormats = 49u32, + ImageQuery = 50u32, + DerivativeControl = 51u32, + InterpolationFunction = 52u32, + TransformFeedback = 53u32, + GeometryStreams = 54u32, + StorageImageReadWithoutFormat = 55u32, + StorageImageWriteWithoutFormat = 56u32, + MultiViewport = 57u32, + SubgroupDispatch = 58u32, + NamedBarrier = 59u32, + PipeStorage = 60u32, + GroupNonUniform = 61u32, + GroupNonUniformVote = 62u32, + GroupNonUniformArithmetic = 63u32, + GroupNonUniformBallot = 64u32, + GroupNonUniformShuffle = 65u32, + GroupNonUniformShuffleRelative = 66u32, + GroupNonUniformClustered = 67u32, + GroupNonUniformQuad = 68u32, + SubgroupBallotKHR = 4423u32, + DrawParameters = 4427u32, + SubgroupVoteKHR = 4431u32, + StorageBuffer16BitAccess = 4433u32, + UniformAndStorageBuffer16BitAccess = 4434u32, + StoragePushConstant16 = 4435u32, + StorageInputOutput16 = 4436u32, + DeviceGroup = 4437u32, + MultiView = 4439u32, + VariablePointersStorageBuffer = 4441u32, + VariablePointers = 4442u32, + AtomicStorageOps = 4445u32, + SampleMaskPostDepthCoverage = 4447u32, + StorageBuffer8BitAccess = 4448u32, + UniformAndStorageBuffer8BitAccess = 4449u32, + StoragePushConstant8 = 4450u32, + DenormPreserve = 4464u32, + DenormFlushToZero = 4465u32, + SignedZeroInfNanPreserve = 4466u32, + RoundingModeRTE = 4467u32, + RoundingModeRTZ = 4468u32, + Float16ImageAMD = 5008u32, + ImageGatherBiasLodAMD = 5009u32, + FragmentMaskAMD = 5010u32, + StencilExportEXT = 5013u32, + ImageReadWriteLodAMD = 5015u32, + SampleMaskOverrideCoverageNV = 5249u32, + GeometryShaderPassthroughNV = 5251u32, + ShaderViewportIndexLayerEXT = 5254u32, + ShaderViewportMaskNV = 5255u32, + ShaderStereoViewNV = 5259u32, + PerViewAttributesNV = 5260u32, + FragmentFullyCoveredEXT = 5265u32, + MeshShadingNV = 5266u32, + ShaderNonUniformEXT = 5301u32, + RuntimeDescriptorArrayEXT = 5302u32, + InputAttachmentArrayDynamicIndexingEXT = 5303u32, + UniformTexelBufferArrayDynamicIndexingEXT = 5304u32, + StorageTexelBufferArrayDynamicIndexingEXT = 5305u32, + UniformBufferArrayNonUniformIndexingEXT = 5306u32, + SampledImageArrayNonUniformIndexingEXT = 5307u32, + StorageBufferArrayNonUniformIndexingEXT = 5308u32, + StorageImageArrayNonUniformIndexingEXT = 5309u32, + InputAttachmentArrayNonUniformIndexingEXT = 5310u32, + UniformTexelBufferArrayNonUniformIndexingEXT = 5311u32, + StorageTexelBufferArrayNonUniformIndexingEXT = 5312u32, + RayTracingNV = 5340u32, + SubgroupShuffleINTEL = 5568u32, + SubgroupBufferBlockIOINTEL = 5569u32, + SubgroupImageBlockIOINTEL = 5570u32, + SubgroupImageMediaBlockIOINTEL = 5579u32, + SubgroupAvcMotionEstimationINTEL = 5696u32, + SubgroupAvcMotionEstimationIntraINTEL = 5697u32, + SubgroupAvcMotionEstimationChromaINTEL = 5698u32, + GroupNonUniformPartitionedNV = 5297u32, + VulkanMemoryModelKHR = 5345u32, + VulkanMemoryModelDeviceScopeKHR = 5346u32, + ImageFootprintNV = 5282u32, + FragmentBarycentricNV = 5284u32, + ComputeDerivativeGroupQuadsNV = 5288u32, + ComputeDerivativeGroupLinearNV = 5350u32, + FragmentDensityEXT = 5291u32, + PhysicalStorageBufferAddressesEXT = 5347u32, + CooperativeMatrixNV = 5357u32, +} +#[allow(non_upper_case_globals)] +impl Capability { + pub const StorageUniformBufferBlock16: Capability = Capability::StorageBuffer16BitAccess; + pub const StorageUniform16: Capability = Capability::UniformAndStorageBuffer16BitAccess; + pub const ShaderViewportIndexLayerNV: Capability = Capability::ShaderViewportIndexLayerEXT; + pub const ShadingRateNV: Capability = Capability::FragmentDensityEXT; + pub fn required_capabilities(self) -> &'static [Capability] { + match self { + Capability::Matrix + | Capability::Addresses + | Capability::Linkage + | Capability::Kernel + | Capability::Float16 + | Capability::Float64 + | Capability::Int64 + | Capability::Groups + | Capability::Int16 + | Capability::Int8 + | Capability::Sampled1D + | Capability::SampledBuffer + | Capability::GroupNonUniform + | Capability::SubgroupBallotKHR + | Capability::SubgroupVoteKHR + | Capability::StorageBuffer16BitAccess + | Capability::StoragePushConstant16 + | Capability::StorageInputOutput16 + | Capability::DeviceGroup + | Capability::AtomicStorageOps + | Capability::SampleMaskPostDepthCoverage + | Capability::StorageBuffer8BitAccess + | Capability::StoragePushConstant8 + | Capability::DenormPreserve + | Capability::DenormFlushToZero + | Capability::SignedZeroInfNanPreserve + | Capability::RoundingModeRTE + | Capability::RoundingModeRTZ + | Capability::SubgroupShuffleINTEL + | Capability::SubgroupBufferBlockIOINTEL + | Capability::SubgroupImageBlockIOINTEL + | Capability::SubgroupImageMediaBlockIOINTEL + | Capability::SubgroupAvcMotionEstimationINTEL + | Capability::SubgroupAvcMotionEstimationIntraINTEL + | Capability::SubgroupAvcMotionEstimationChromaINTEL + | Capability::GroupNonUniformPartitionedNV + | Capability::VulkanMemoryModelKHR + | Capability::VulkanMemoryModelDeviceScopeKHR + | Capability::ImageFootprintNV + | Capability::FragmentBarycentricNV + | Capability::ComputeDerivativeGroupQuadsNV + | Capability::ComputeDerivativeGroupLinearNV => &[], + Capability::GenericPointer => &[Capability::Addresses], + Capability::SubgroupDispatch => &[Capability::DeviceEnqueue], + Capability::GeometryPointSize + | Capability::GeometryStreams + | Capability::MultiViewport + | Capability::GeometryShaderPassthroughNV => &[Capability::Geometry], + Capability::GroupNonUniformVote + | Capability::GroupNonUniformArithmetic + | Capability::GroupNonUniformBallot + | Capability::GroupNonUniformShuffle + | Capability::GroupNonUniformShuffleRelative + | Capability::GroupNonUniformClustered + | Capability::GroupNonUniformQuad => &[Capability::GroupNonUniform], + Capability::ImageReadWrite | Capability::ImageMipmap => &[Capability::ImageBasic], + Capability::StorageTexelBufferArrayDynamicIndexingEXT => &[Capability::ImageBuffer], + Capability::StorageTexelBufferArrayNonUniformIndexingEXT => { + &[Capability::ImageBuffer, Capability::ShaderNonUniformEXT] + } + Capability::InputAttachmentArrayDynamicIndexingEXT => &[Capability::InputAttachment], + Capability::InputAttachmentArrayNonUniformIndexingEXT => { + &[Capability::InputAttachment, Capability::ShaderNonUniformEXT] + } + Capability::Int64Atomics => &[Capability::Int64], + Capability::Vector16 + | Capability::Float16Buffer + | Capability::ImageBasic + | Capability::Pipes + | Capability::DeviceEnqueue + | Capability::LiteralSampler + | Capability::NamedBarrier => &[Capability::Kernel], + Capability::Shader => &[Capability::Matrix], + Capability::PerViewAttributesNV => &[Capability::MultiView], + Capability::ShaderViewportIndexLayerEXT => &[Capability::MultiViewport], + Capability::PipeStorage => &[Capability::Pipes], + Capability::SampleMaskOverrideCoverageNV => &[Capability::SampleRateShading], + Capability::Image1D => &[Capability::Sampled1D], + Capability::ImageBuffer | Capability::UniformTexelBufferArrayDynamicIndexingEXT => { + &[Capability::SampledBuffer] + } + Capability::UniformTexelBufferArrayNonUniformIndexingEXT => { + &[Capability::SampledBuffer, Capability::ShaderNonUniformEXT] + } + Capability::ImageCubeArray => &[Capability::SampledCubeArray], + Capability::ImageRect => &[Capability::SampledRect], + Capability::Geometry + | Capability::Tessellation + | Capability::AtomicStorage + | Capability::ImageGatherExtended + | Capability::StorageImageMultisample + | Capability::UniformBufferArrayDynamicIndexing + | Capability::SampledImageArrayDynamicIndexing + | Capability::StorageBufferArrayDynamicIndexing + | Capability::StorageImageArrayDynamicIndexing + | Capability::ClipDistance + | Capability::CullDistance + | Capability::SampleRateShading + | Capability::SampledRect + | Capability::InputAttachment + | Capability::SparseResidency + | Capability::MinLod + | Capability::SampledCubeArray + | Capability::ImageMSArray + | Capability::StorageImageExtendedFormats + | Capability::ImageQuery + | Capability::DerivativeControl + | Capability::InterpolationFunction + | Capability::TransformFeedback + | Capability::StorageImageReadWithoutFormat + | Capability::StorageImageWriteWithoutFormat + | Capability::DrawParameters + | Capability::MultiView + | Capability::VariablePointersStorageBuffer + | Capability::Float16ImageAMD + | Capability::ImageGatherBiasLodAMD + | Capability::FragmentMaskAMD + | Capability::StencilExportEXT + | Capability::ImageReadWriteLodAMD + | Capability::FragmentFullyCoveredEXT + | Capability::MeshShadingNV + | Capability::ShaderNonUniformEXT + | Capability::RuntimeDescriptorArrayEXT + | Capability::RayTracingNV + | Capability::FragmentDensityEXT + | Capability::PhysicalStorageBufferAddressesEXT + | Capability::CooperativeMatrixNV => &[Capability::Shader], + Capability::UniformBufferArrayNonUniformIndexingEXT + | Capability::SampledImageArrayNonUniformIndexingEXT + | Capability::StorageBufferArrayNonUniformIndexingEXT + | Capability::StorageImageArrayNonUniformIndexingEXT => { + &[Capability::ShaderNonUniformEXT] + } + Capability::ShaderViewportMaskNV => &[Capability::ShaderViewportIndexLayerNV], + Capability::ShaderStereoViewNV => &[Capability::ShaderViewportMaskNV], + Capability::UniformAndStorageBuffer16BitAccess => &[ + Capability::StorageBuffer16BitAccess, + Capability::StorageUniformBufferBlock16, + ], + Capability::UniformAndStorageBuffer8BitAccess => &[Capability::StorageBuffer8BitAccess], + Capability::TessellationPointSize => &[Capability::Tessellation], + Capability::VariablePointers => &[Capability::VariablePointersStorageBuffer], + } + } +} +impl num_traits::FromPrimitive for Capability { + #[allow(trivial_numeric_casts)] + fn from_i64(n: i64) -> Option<Self> { + Some(match n as u32 { + 0u32 => Capability::Matrix, + 1u32 => Capability::Shader, + 2u32 => Capability::Geometry, + 3u32 => Capability::Tessellation, + 4u32 => Capability::Addresses, + 5u32 => Capability::Linkage, + 6u32 => Capability::Kernel, + 7u32 => Capability::Vector16, + 8u32 => Capability::Float16Buffer, + 9u32 => Capability::Float16, + 10u32 => Capability::Float64, + 11u32 => Capability::Int64, + 12u32 => Capability::Int64Atomics, + 13u32 => Capability::ImageBasic, + 14u32 => Capability::ImageReadWrite, + 15u32 => Capability::ImageMipmap, + 17u32 => Capability::Pipes, + 18u32 => Capability::Groups, + 19u32 => Capability::DeviceEnqueue, + 20u32 => Capability::LiteralSampler, + 21u32 => Capability::AtomicStorage, + 22u32 => Capability::Int16, + 23u32 => Capability::TessellationPointSize, + 24u32 => Capability::GeometryPointSize, + 25u32 => Capability::ImageGatherExtended, + 27u32 => Capability::StorageImageMultisample, + 28u32 => Capability::UniformBufferArrayDynamicIndexing, + 29u32 => Capability::SampledImageArrayDynamicIndexing, + 30u32 => Capability::StorageBufferArrayDynamicIndexing, + 31u32 => Capability::StorageImageArrayDynamicIndexing, + 32u32 => Capability::ClipDistance, + 33u32 => Capability::CullDistance, + 34u32 => Capability::ImageCubeArray, + 35u32 => Capability::SampleRateShading, + 36u32 => Capability::ImageRect, + 37u32 => Capability::SampledRect, + 38u32 => Capability::GenericPointer, + 39u32 => Capability::Int8, + 40u32 => Capability::InputAttachment, + 41u32 => Capability::SparseResidency, + 42u32 => Capability::MinLod, + 43u32 => Capability::Sampled1D, + 44u32 => Capability::Image1D, + 45u32 => Capability::SampledCubeArray, + 46u32 => Capability::SampledBuffer, + 47u32 => Capability::ImageBuffer, + 48u32 => Capability::ImageMSArray, + 49u32 => Capability::StorageImageExtendedFormats, + 50u32 => Capability::ImageQuery, + 51u32 => Capability::DerivativeControl, + 52u32 => Capability::InterpolationFunction, + 53u32 => Capability::TransformFeedback, + 54u32 => Capability::GeometryStreams, + 55u32 => Capability::StorageImageReadWithoutFormat, + 56u32 => Capability::StorageImageWriteWithoutFormat, + 57u32 => Capability::MultiViewport, + 58u32 => Capability::SubgroupDispatch, + 59u32 => Capability::NamedBarrier, + 60u32 => Capability::PipeStorage, + 61u32 => Capability::GroupNonUniform, + 62u32 => Capability::GroupNonUniformVote, + 63u32 => Capability::GroupNonUniformArithmetic, + 64u32 => Capability::GroupNonUniformBallot, + 65u32 => Capability::GroupNonUniformShuffle, + 66u32 => Capability::GroupNonUniformShuffleRelative, + 67u32 => Capability::GroupNonUniformClustered, + 68u32 => Capability::GroupNonUniformQuad, + 4423u32 => Capability::SubgroupBallotKHR, + 4427u32 => Capability::DrawParameters, + 4431u32 => Capability::SubgroupVoteKHR, + 4433u32 => Capability::StorageBuffer16BitAccess, + 4434u32 => Capability::UniformAndStorageBuffer16BitAccess, + 4435u32 => Capability::StoragePushConstant16, + 4436u32 => Capability::StorageInputOutput16, + 4437u32 => Capability::DeviceGroup, + 4439u32 => Capability::MultiView, + 4441u32 => Capability::VariablePointersStorageBuffer, + 4442u32 => Capability::VariablePointers, + 4445u32 => Capability::AtomicStorageOps, + 4447u32 => Capability::SampleMaskPostDepthCoverage, + 4448u32 => Capability::StorageBuffer8BitAccess, + 4449u32 => Capability::UniformAndStorageBuffer8BitAccess, + 4450u32 => Capability::StoragePushConstant8, + 4464u32 => Capability::DenormPreserve, + 4465u32 => Capability::DenormFlushToZero, + 4466u32 => Capability::SignedZeroInfNanPreserve, + 4467u32 => Capability::RoundingModeRTE, + 4468u32 => Capability::RoundingModeRTZ, + 5008u32 => Capability::Float16ImageAMD, + 5009u32 => Capability::ImageGatherBiasLodAMD, + 5010u32 => Capability::FragmentMaskAMD, + 5013u32 => Capability::StencilExportEXT, + 5015u32 => Capability::ImageReadWriteLodAMD, + 5249u32 => Capability::SampleMaskOverrideCoverageNV, + 5251u32 => Capability::GeometryShaderPassthroughNV, + 5254u32 => Capability::ShaderViewportIndexLayerEXT, + 5255u32 => Capability::ShaderViewportMaskNV, + 5259u32 => Capability::ShaderStereoViewNV, + 5260u32 => Capability::PerViewAttributesNV, + 5265u32 => Capability::FragmentFullyCoveredEXT, + 5266u32 => Capability::MeshShadingNV, + 5301u32 => Capability::ShaderNonUniformEXT, + 5302u32 => Capability::RuntimeDescriptorArrayEXT, + 5303u32 => Capability::InputAttachmentArrayDynamicIndexingEXT, + 5304u32 => Capability::UniformTexelBufferArrayDynamicIndexingEXT, + 5305u32 => Capability::StorageTexelBufferArrayDynamicIndexingEXT, + 5306u32 => Capability::UniformBufferArrayNonUniformIndexingEXT, + 5307u32 => Capability::SampledImageArrayNonUniformIndexingEXT, + 5308u32 => Capability::StorageBufferArrayNonUniformIndexingEXT, + 5309u32 => Capability::StorageImageArrayNonUniformIndexingEXT, + 5310u32 => Capability::InputAttachmentArrayNonUniformIndexingEXT, + 5311u32 => Capability::UniformTexelBufferArrayNonUniformIndexingEXT, + 5312u32 => Capability::StorageTexelBufferArrayNonUniformIndexingEXT, + 5340u32 => Capability::RayTracingNV, + 5568u32 => Capability::SubgroupShuffleINTEL, + 5569u32 => Capability::SubgroupBufferBlockIOINTEL, + 5570u32 => Capability::SubgroupImageBlockIOINTEL, + 5579u32 => Capability::SubgroupImageMediaBlockIOINTEL, + 5696u32 => Capability::SubgroupAvcMotionEstimationINTEL, + 5697u32 => Capability::SubgroupAvcMotionEstimationIntraINTEL, + 5698u32 => Capability::SubgroupAvcMotionEstimationChromaINTEL, + 5297u32 => Capability::GroupNonUniformPartitionedNV, + 5345u32 => Capability::VulkanMemoryModelKHR, + 5346u32 => Capability::VulkanMemoryModelDeviceScopeKHR, + 5282u32 => Capability::ImageFootprintNV, + 5284u32 => Capability::FragmentBarycentricNV, + 5288u32 => Capability::ComputeDerivativeGroupQuadsNV, + 5350u32 => Capability::ComputeDerivativeGroupLinearNV, + 5291u32 => Capability::FragmentDensityEXT, + 5347u32 => Capability::PhysicalStorageBufferAddressesEXT, + 5357u32 => Capability::CooperativeMatrixNV, + _ => return None, + }) + } + fn from_u64(n: u64) -> Option<Self> { + Self::from_i64(n as i64) + } +} +#[doc = "SPIR-V [instructions](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_instructions_a_instructions) opcodes"] +#[repr(u32)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] +pub enum Op { + Nop = 0u32, + Undef = 1u32, + SourceContinued = 2u32, + Source = 3u32, + SourceExtension = 4u32, + Name = 5u32, + MemberName = 6u32, + String = 7u32, + Line = 8u32, + Extension = 10u32, + ExtInstImport = 11u32, + ExtInst = 12u32, + MemoryModel = 14u32, + EntryPoint = 15u32, + ExecutionMode = 16u32, + Capability = 17u32, + TypeVoid = 19u32, + TypeBool = 20u32, + TypeInt = 21u32, + TypeFloat = 22u32, + TypeVector = 23u32, + TypeMatrix = 24u32, + TypeImage = 25u32, + TypeSampler = 26u32, + TypeSampledImage = 27u32, + TypeArray = 28u32, + TypeRuntimeArray = 29u32, + TypeStruct = 30u32, + TypeOpaque = 31u32, + TypePointer = 32u32, + TypeFunction = 33u32, + TypeEvent = 34u32, + TypeDeviceEvent = 35u32, + TypeReserveId = 36u32, + TypeQueue = 37u32, + TypePipe = 38u32, + TypeForwardPointer = 39u32, + ConstantTrue = 41u32, + ConstantFalse = 42u32, + Constant = 43u32, + ConstantComposite = 44u32, + ConstantSampler = 45u32, + ConstantNull = 46u32, + SpecConstantTrue = 48u32, + SpecConstantFalse = 49u32, + SpecConstant = 50u32, + SpecConstantComposite = 51u32, + SpecConstantOp = 52u32, + Function = 54u32, + FunctionParameter = 55u32, + FunctionEnd = 56u32, + FunctionCall = 57u32, + Variable = 59u32, + ImageTexelPointer = 60u32, + Load = 61u32, + Store = 62u32, + CopyMemory = 63u32, + CopyMemorySized = 64u32, + AccessChain = 65u32, + InBoundsAccessChain = 66u32, + PtrAccessChain = 67u32, + ArrayLength = 68u32, + GenericPtrMemSemantics = 69u32, + InBoundsPtrAccessChain = 70u32, + Decorate = 71u32, + MemberDecorate = 72u32, + DecorationGroup = 73u32, + GroupDecorate = 74u32, + GroupMemberDecorate = 75u32, + VectorExtractDynamic = 77u32, + VectorInsertDynamic = 78u32, + VectorShuffle = 79u32, + CompositeConstruct = 80u32, + CompositeExtract = 81u32, + CompositeInsert = 82u32, + CopyObject = 83u32, + Transpose = 84u32, + SampledImage = 86u32, + ImageSampleImplicitLod = 87u32, + ImageSampleExplicitLod = 88u32, + ImageSampleDrefImplicitLod = 89u32, + ImageSampleDrefExplicitLod = 90u32, + ImageSampleProjImplicitLod = 91u32, + ImageSampleProjExplicitLod = 92u32, + ImageSampleProjDrefImplicitLod = 93u32, + ImageSampleProjDrefExplicitLod = 94u32, + ImageFetch = 95u32, + ImageGather = 96u32, + ImageDrefGather = 97u32, + ImageRead = 98u32, + ImageWrite = 99u32, + Image = 100u32, + ImageQueryFormat = 101u32, + ImageQueryOrder = 102u32, + ImageQuerySizeLod = 103u32, + ImageQuerySize = 104u32, + ImageQueryLod = 105u32, + ImageQueryLevels = 106u32, + ImageQuerySamples = 107u32, + ConvertFToU = 109u32, + ConvertFToS = 110u32, + ConvertSToF = 111u32, + ConvertUToF = 112u32, + UConvert = 113u32, + SConvert = 114u32, + FConvert = 115u32, + QuantizeToF16 = 116u32, + ConvertPtrToU = 117u32, + SatConvertSToU = 118u32, + SatConvertUToS = 119u32, + ConvertUToPtr = 120u32, + PtrCastToGeneric = 121u32, + GenericCastToPtr = 122u32, + GenericCastToPtrExplicit = 123u32, + Bitcast = 124u32, + SNegate = 126u32, + FNegate = 127u32, + IAdd = 128u32, + FAdd = 129u32, + ISub = 130u32, + FSub = 131u32, + IMul = 132u32, + FMul = 133u32, + UDiv = 134u32, + SDiv = 135u32, + FDiv = 136u32, + UMod = 137u32, + SRem = 138u32, + SMod = 139u32, + FRem = 140u32, + FMod = 141u32, + VectorTimesScalar = 142u32, + MatrixTimesScalar = 143u32, + VectorTimesMatrix = 144u32, + MatrixTimesVector = 145u32, + MatrixTimesMatrix = 146u32, + OuterProduct = 147u32, + Dot = 148u32, + IAddCarry = 149u32, + ISubBorrow = 150u32, + UMulExtended = 151u32, + SMulExtended = 152u32, + Any = 154u32, + All = 155u32, + IsNan = 156u32, + IsInf = 157u32, + IsFinite = 158u32, + IsNormal = 159u32, + SignBitSet = 160u32, + LessOrGreater = 161u32, + Ordered = 162u32, + Unordered = 163u32, + LogicalEqual = 164u32, + LogicalNotEqual = 165u32, + LogicalOr = 166u32, + LogicalAnd = 167u32, + LogicalNot = 168u32, + Select = 169u32, + IEqual = 170u32, + INotEqual = 171u32, + UGreaterThan = 172u32, + SGreaterThan = 173u32, + UGreaterThanEqual = 174u32, + SGreaterThanEqual = 175u32, + ULessThan = 176u32, + SLessThan = 177u32, + ULessThanEqual = 178u32, + SLessThanEqual = 179u32, + FOrdEqual = 180u32, + FUnordEqual = 181u32, + FOrdNotEqual = 182u32, + FUnordNotEqual = 183u32, + FOrdLessThan = 184u32, + FUnordLessThan = 185u32, + FOrdGreaterThan = 186u32, + FUnordGreaterThan = 187u32, + FOrdLessThanEqual = 188u32, + FUnordLessThanEqual = 189u32, + FOrdGreaterThanEqual = 190u32, + FUnordGreaterThanEqual = 191u32, + ShiftRightLogical = 194u32, + ShiftRightArithmetic = 195u32, + ShiftLeftLogical = 196u32, + BitwiseOr = 197u32, + BitwiseXor = 198u32, + BitwiseAnd = 199u32, + Not = 200u32, + BitFieldInsert = 201u32, + BitFieldSExtract = 202u32, + BitFieldUExtract = 203u32, + BitReverse = 204u32, + BitCount = 205u32, + DPdx = 207u32, + DPdy = 208u32, + Fwidth = 209u32, + DPdxFine = 210u32, + DPdyFine = 211u32, + FwidthFine = 212u32, + DPdxCoarse = 213u32, + DPdyCoarse = 214u32, + FwidthCoarse = 215u32, + EmitVertex = 218u32, + EndPrimitive = 219u32, + EmitStreamVertex = 220u32, + EndStreamPrimitive = 221u32, + ControlBarrier = 224u32, + MemoryBarrier = 225u32, + AtomicLoad = 227u32, + AtomicStore = 228u32, + AtomicExchange = 229u32, + AtomicCompareExchange = 230u32, + AtomicCompareExchangeWeak = 231u32, + AtomicIIncrement = 232u32, + AtomicIDecrement = 233u32, + AtomicIAdd = 234u32, + AtomicISub = 235u32, + AtomicSMin = 236u32, + AtomicUMin = 237u32, + AtomicSMax = 238u32, + AtomicUMax = 239u32, + AtomicAnd = 240u32, + AtomicOr = 241u32, + AtomicXor = 242u32, + Phi = 245u32, + LoopMerge = 246u32, + SelectionMerge = 247u32, + Label = 248u32, + Branch = 249u32, + BranchConditional = 250u32, + Switch = 251u32, + Kill = 252u32, + Return = 253u32, + ReturnValue = 254u32, + Unreachable = 255u32, + LifetimeStart = 256u32, + LifetimeStop = 257u32, + GroupAsyncCopy = 259u32, + GroupWaitEvents = 260u32, + GroupAll = 261u32, + GroupAny = 262u32, + GroupBroadcast = 263u32, + GroupIAdd = 264u32, + GroupFAdd = 265u32, + GroupFMin = 266u32, + GroupUMin = 267u32, + GroupSMin = 268u32, + GroupFMax = 269u32, + GroupUMax = 270u32, + GroupSMax = 271u32, + ReadPipe = 274u32, + WritePipe = 275u32, + ReservedReadPipe = 276u32, + ReservedWritePipe = 277u32, + ReserveReadPipePackets = 278u32, + ReserveWritePipePackets = 279u32, + CommitReadPipe = 280u32, + CommitWritePipe = 281u32, + IsValidReserveId = 282u32, + GetNumPipePackets = 283u32, + GetMaxPipePackets = 284u32, + GroupReserveReadPipePackets = 285u32, + GroupReserveWritePipePackets = 286u32, + GroupCommitReadPipe = 287u32, + GroupCommitWritePipe = 288u32, + EnqueueMarker = 291u32, + EnqueueKernel = 292u32, + GetKernelNDrangeSubGroupCount = 293u32, + GetKernelNDrangeMaxSubGroupSize = 294u32, + GetKernelWorkGroupSize = 295u32, + GetKernelPreferredWorkGroupSizeMultiple = 296u32, + RetainEvent = 297u32, + ReleaseEvent = 298u32, + CreateUserEvent = 299u32, + IsValidEvent = 300u32, + SetUserEventStatus = 301u32, + CaptureEventProfilingInfo = 302u32, + GetDefaultQueue = 303u32, + BuildNDRange = 304u32, + ImageSparseSampleImplicitLod = 305u32, + ImageSparseSampleExplicitLod = 306u32, + ImageSparseSampleDrefImplicitLod = 307u32, + ImageSparseSampleDrefExplicitLod = 308u32, + ImageSparseSampleProjImplicitLod = 309u32, + ImageSparseSampleProjExplicitLod = 310u32, + ImageSparseSampleProjDrefImplicitLod = 311u32, + ImageSparseSampleProjDrefExplicitLod = 312u32, + ImageSparseFetch = 313u32, + ImageSparseGather = 314u32, + ImageSparseDrefGather = 315u32, + ImageSparseTexelsResident = 316u32, + NoLine = 317u32, + AtomicFlagTestAndSet = 318u32, + AtomicFlagClear = 319u32, + ImageSparseRead = 320u32, + SizeOf = 321u32, + TypePipeStorage = 322u32, + ConstantPipeStorage = 323u32, + CreatePipeFromPipeStorage = 324u32, + GetKernelLocalSizeForSubgroupCount = 325u32, + GetKernelMaxNumSubgroups = 326u32, + TypeNamedBarrier = 327u32, + NamedBarrierInitialize = 328u32, + MemoryNamedBarrier = 329u32, + ModuleProcessed = 330u32, + ExecutionModeId = 331u32, + DecorateId = 332u32, + GroupNonUniformElect = 333u32, + GroupNonUniformAll = 334u32, + GroupNonUniformAny = 335u32, + GroupNonUniformAllEqual = 336u32, + GroupNonUniformBroadcast = 337u32, + GroupNonUniformBroadcastFirst = 338u32, + GroupNonUniformBallot = 339u32, + GroupNonUniformInverseBallot = 340u32, + GroupNonUniformBallotBitExtract = 341u32, + GroupNonUniformBallotBitCount = 342u32, + GroupNonUniformBallotFindLSB = 343u32, + GroupNonUniformBallotFindMSB = 344u32, + GroupNonUniformShuffle = 345u32, + GroupNonUniformShuffleXor = 346u32, + GroupNonUniformShuffleUp = 347u32, + GroupNonUniformShuffleDown = 348u32, + GroupNonUniformIAdd = 349u32, + GroupNonUniformFAdd = 350u32, + GroupNonUniformIMul = 351u32, + GroupNonUniformFMul = 352u32, + GroupNonUniformSMin = 353u32, + GroupNonUniformUMin = 354u32, + GroupNonUniformFMin = 355u32, + GroupNonUniformSMax = 356u32, + GroupNonUniformUMax = 357u32, + GroupNonUniformFMax = 358u32, + GroupNonUniformBitwiseAnd = 359u32, + GroupNonUniformBitwiseOr = 360u32, + GroupNonUniformBitwiseXor = 361u32, + GroupNonUniformLogicalAnd = 362u32, + GroupNonUniformLogicalOr = 363u32, + GroupNonUniformLogicalXor = 364u32, + GroupNonUniformQuadBroadcast = 365u32, + GroupNonUniformQuadSwap = 366u32, + CopyLogical = 400u32, + PtrEqual = 401u32, + PtrNotEqual = 402u32, + PtrDiff = 403u32, + SubgroupBallotKHR = 4421u32, + SubgroupFirstInvocationKHR = 4422u32, + SubgroupAllKHR = 4428u32, + SubgroupAnyKHR = 4429u32, + SubgroupAllEqualKHR = 4430u32, + SubgroupReadInvocationKHR = 4432u32, + GroupIAddNonUniformAMD = 5000u32, + GroupFAddNonUniformAMD = 5001u32, + GroupFMinNonUniformAMD = 5002u32, + GroupUMinNonUniformAMD = 5003u32, + GroupSMinNonUniformAMD = 5004u32, + GroupFMaxNonUniformAMD = 5005u32, + GroupUMaxNonUniformAMD = 5006u32, + GroupSMaxNonUniformAMD = 5007u32, + FragmentMaskFetchAMD = 5011u32, + FragmentFetchAMD = 5012u32, + ImageSampleFootprintNV = 5283u32, + GroupNonUniformPartitionNV = 5296u32, + WritePackedPrimitiveIndices4x8NV = 5299u32, + ReportIntersectionNV = 5334u32, + IgnoreIntersectionNV = 5335u32, + TerminateRayNV = 5336u32, + TraceNV = 5337u32, + TypeAccelerationStructureNV = 5341u32, + ExecuteCallableNV = 5344u32, + TypeCooperativeMatrixNV = 5358u32, + CooperativeMatrixLoadNV = 5359u32, + CooperativeMatrixStoreNV = 5360u32, + CooperativeMatrixMulAddNV = 5361u32, + CooperativeMatrixLengthNV = 5362u32, + SubgroupShuffleINTEL = 5571u32, + SubgroupShuffleDownINTEL = 5572u32, + SubgroupShuffleUpINTEL = 5573u32, + SubgroupShuffleXorINTEL = 5574u32, + SubgroupBlockReadINTEL = 5575u32, + SubgroupBlockWriteINTEL = 5576u32, + SubgroupImageBlockReadINTEL = 5577u32, + SubgroupImageBlockWriteINTEL = 5578u32, + SubgroupImageMediaBlockReadINTEL = 5580u32, + SubgroupImageMediaBlockWriteINTEL = 5581u32, + DecorateString = 5632u32, + MemberDecorateString = 5633u32, + VmeImageINTEL = 5699u32, + TypeVmeImageINTEL = 5700u32, + TypeAvcImePayloadINTEL = 5701u32, + TypeAvcRefPayloadINTEL = 5702u32, + TypeAvcSicPayloadINTEL = 5703u32, + TypeAvcMcePayloadINTEL = 5704u32, + TypeAvcMceResultINTEL = 5705u32, + TypeAvcImeResultINTEL = 5706u32, + TypeAvcImeResultSingleReferenceStreamoutINTEL = 5707u32, + TypeAvcImeResultDualReferenceStreamoutINTEL = 5708u32, + TypeAvcImeSingleReferenceStreaminINTEL = 5709u32, + TypeAvcImeDualReferenceStreaminINTEL = 5710u32, + TypeAvcRefResultINTEL = 5711u32, + TypeAvcSicResultINTEL = 5712u32, + SubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL = 5713u32, + SubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL = 5714u32, + SubgroupAvcMceGetDefaultInterShapePenaltyINTEL = 5715u32, + SubgroupAvcMceSetInterShapePenaltyINTEL = 5716u32, + SubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL = 5717u32, + SubgroupAvcMceSetInterDirectionPenaltyINTEL = 5718u32, + SubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL = 5719u32, + SubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL = 5720u32, + SubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL = 5721u32, + SubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL = 5722u32, + SubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL = 5723u32, + SubgroupAvcMceSetMotionVectorCostFunctionINTEL = 5724u32, + SubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL = 5725u32, + SubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL = 5726u32, + SubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL = 5727u32, + SubgroupAvcMceSetAcOnlyHaarINTEL = 5728u32, + SubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL = 5729u32, + SubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL = 5730u32, + SubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL = 5731u32, + SubgroupAvcMceConvertToImePayloadINTEL = 5732u32, + SubgroupAvcMceConvertToImeResultINTEL = 5733u32, + SubgroupAvcMceConvertToRefPayloadINTEL = 5734u32, + SubgroupAvcMceConvertToRefResultINTEL = 5735u32, + SubgroupAvcMceConvertToSicPayloadINTEL = 5736u32, + SubgroupAvcMceConvertToSicResultINTEL = 5737u32, + SubgroupAvcMceGetMotionVectorsINTEL = 5738u32, + SubgroupAvcMceGetInterDistortionsINTEL = 5739u32, + SubgroupAvcMceGetBestInterDistortionsINTEL = 5740u32, + SubgroupAvcMceGetInterMajorShapeINTEL = 5741u32, + SubgroupAvcMceGetInterMinorShapeINTEL = 5742u32, + SubgroupAvcMceGetInterDirectionsINTEL = 5743u32, + SubgroupAvcMceGetInterMotionVectorCountINTEL = 5744u32, + SubgroupAvcMceGetInterReferenceIdsINTEL = 5745u32, + SubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL = 5746u32, + SubgroupAvcImeInitializeINTEL = 5747u32, + SubgroupAvcImeSetSingleReferenceINTEL = 5748u32, + SubgroupAvcImeSetDualReferenceINTEL = 5749u32, + SubgroupAvcImeRefWindowSizeINTEL = 5750u32, + SubgroupAvcImeAdjustRefOffsetINTEL = 5751u32, + SubgroupAvcImeConvertToMcePayloadINTEL = 5752u32, + SubgroupAvcImeSetMaxMotionVectorCountINTEL = 5753u32, + SubgroupAvcImeSetUnidirectionalMixDisableINTEL = 5754u32, + SubgroupAvcImeSetEarlySearchTerminationThresholdINTEL = 5755u32, + SubgroupAvcImeSetWeightedSadINTEL = 5756u32, + SubgroupAvcImeEvaluateWithSingleReferenceINTEL = 5757u32, + SubgroupAvcImeEvaluateWithDualReferenceINTEL = 5758u32, + SubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL = 5759u32, + SubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL = 5760u32, + SubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL = 5761u32, + SubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL = 5762u32, + SubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL = 5763u32, + SubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL = 5764u32, + SubgroupAvcImeConvertToMceResultINTEL = 5765u32, + SubgroupAvcImeGetSingleReferenceStreaminINTEL = 5766u32, + SubgroupAvcImeGetDualReferenceStreaminINTEL = 5767u32, + SubgroupAvcImeStripSingleReferenceStreamoutINTEL = 5768u32, + SubgroupAvcImeStripDualReferenceStreamoutINTEL = 5769u32, + SubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL = 5770u32, + SubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL = 5771u32, + SubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL = 5772u32, + SubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL = 5773u32, + SubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL = 5774u32, + SubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL = 5775u32, + SubgroupAvcImeGetBorderReachedINTEL = 5776u32, + SubgroupAvcImeGetTruncatedSearchIndicationINTEL = 5777u32, + SubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL = 5778u32, + SubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL = 5779u32, + SubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL = 5780u32, + SubgroupAvcFmeInitializeINTEL = 5781u32, + SubgroupAvcBmeInitializeINTEL = 5782u32, + SubgroupAvcRefConvertToMcePayloadINTEL = 5783u32, + SubgroupAvcRefSetBidirectionalMixDisableINTEL = 5784u32, + SubgroupAvcRefSetBilinearFilterEnableINTEL = 5785u32, + SubgroupAvcRefEvaluateWithSingleReferenceINTEL = 5786u32, + SubgroupAvcRefEvaluateWithDualReferenceINTEL = 5787u32, + SubgroupAvcRefEvaluateWithMultiReferenceINTEL = 5788u32, + SubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL = 5789u32, + SubgroupAvcRefConvertToMceResultINTEL = 5790u32, + SubgroupAvcSicInitializeINTEL = 5791u32, + SubgroupAvcSicConfigureSkcINTEL = 5792u32, + SubgroupAvcSicConfigureIpeLumaINTEL = 5793u32, + SubgroupAvcSicConfigureIpeLumaChromaINTEL = 5794u32, + SubgroupAvcSicGetMotionVectorMaskINTEL = 5795u32, + SubgroupAvcSicConvertToMcePayloadINTEL = 5796u32, + SubgroupAvcSicSetIntraLumaShapePenaltyINTEL = 5797u32, + SubgroupAvcSicSetIntraLumaModeCostFunctionINTEL = 5798u32, + SubgroupAvcSicSetIntraChromaModeCostFunctionINTEL = 5799u32, + SubgroupAvcSicSetBilinearFilterEnableINTEL = 5800u32, + SubgroupAvcSicSetSkcForwardTransformEnableINTEL = 5801u32, + SubgroupAvcSicSetBlockBasedRawSkipSadINTEL = 5802u32, + SubgroupAvcSicEvaluateIpeINTEL = 5803u32, + SubgroupAvcSicEvaluateWithSingleReferenceINTEL = 5804u32, + SubgroupAvcSicEvaluateWithDualReferenceINTEL = 5805u32, + SubgroupAvcSicEvaluateWithMultiReferenceINTEL = 5806u32, + SubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL = 5807u32, + SubgroupAvcSicConvertToMceResultINTEL = 5808u32, + SubgroupAvcSicGetIpeLumaShapeINTEL = 5809u32, + SubgroupAvcSicGetBestIpeLumaDistortionINTEL = 5810u32, + SubgroupAvcSicGetBestIpeChromaDistortionINTEL = 5811u32, + SubgroupAvcSicGetPackedIpeLumaModesINTEL = 5812u32, + SubgroupAvcSicGetIpeChromaModeINTEL = 5813u32, + SubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL = 5814u32, + SubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL = 5815u32, + SubgroupAvcSicGetInterRawSadsINTEL = 5816u32, +} +#[allow(non_upper_case_globals)] +impl Op { + pub const DecorateStringGOOGLE: Op = Op::DecorateString; + pub const MemberDecorateStringGOOGLE: Op = Op::MemberDecorateString; +} +impl num_traits::FromPrimitive for Op { + #[allow(trivial_numeric_casts)] + fn from_i64(n: i64) -> Option<Self> { + Some(match n as u32 { + 0u32 => Op::Nop, + 1u32 => Op::Undef, + 2u32 => Op::SourceContinued, + 3u32 => Op::Source, + 4u32 => Op::SourceExtension, + 5u32 => Op::Name, + 6u32 => Op::MemberName, + 7u32 => Op::String, + 8u32 => Op::Line, + 10u32 => Op::Extension, + 11u32 => Op::ExtInstImport, + 12u32 => Op::ExtInst, + 14u32 => Op::MemoryModel, + 15u32 => Op::EntryPoint, + 16u32 => Op::ExecutionMode, + 17u32 => Op::Capability, + 19u32 => Op::TypeVoid, + 20u32 => Op::TypeBool, + 21u32 => Op::TypeInt, + 22u32 => Op::TypeFloat, + 23u32 => Op::TypeVector, + 24u32 => Op::TypeMatrix, + 25u32 => Op::TypeImage, + 26u32 => Op::TypeSampler, + 27u32 => Op::TypeSampledImage, + 28u32 => Op::TypeArray, + 29u32 => Op::TypeRuntimeArray, + 30u32 => Op::TypeStruct, + 31u32 => Op::TypeOpaque, + 32u32 => Op::TypePointer, + 33u32 => Op::TypeFunction, + 34u32 => Op::TypeEvent, + 35u32 => Op::TypeDeviceEvent, + 36u32 => Op::TypeReserveId, + 37u32 => Op::TypeQueue, + 38u32 => Op::TypePipe, + 39u32 => Op::TypeForwardPointer, + 41u32 => Op::ConstantTrue, + 42u32 => Op::ConstantFalse, + 43u32 => Op::Constant, + 44u32 => Op::ConstantComposite, + 45u32 => Op::ConstantSampler, + 46u32 => Op::ConstantNull, + 48u32 => Op::SpecConstantTrue, + 49u32 => Op::SpecConstantFalse, + 50u32 => Op::SpecConstant, + 51u32 => Op::SpecConstantComposite, + 52u32 => Op::SpecConstantOp, + 54u32 => Op::Function, + 55u32 => Op::FunctionParameter, + 56u32 => Op::FunctionEnd, + 57u32 => Op::FunctionCall, + 59u32 => Op::Variable, + 60u32 => Op::ImageTexelPointer, + 61u32 => Op::Load, + 62u32 => Op::Store, + 63u32 => Op::CopyMemory, + 64u32 => Op::CopyMemorySized, + 65u32 => Op::AccessChain, + 66u32 => Op::InBoundsAccessChain, + 67u32 => Op::PtrAccessChain, + 68u32 => Op::ArrayLength, + 69u32 => Op::GenericPtrMemSemantics, + 70u32 => Op::InBoundsPtrAccessChain, + 71u32 => Op::Decorate, + 72u32 => Op::MemberDecorate, + 73u32 => Op::DecorationGroup, + 74u32 => Op::GroupDecorate, + 75u32 => Op::GroupMemberDecorate, + 77u32 => Op::VectorExtractDynamic, + 78u32 => Op::VectorInsertDynamic, + 79u32 => Op::VectorShuffle, + 80u32 => Op::CompositeConstruct, + 81u32 => Op::CompositeExtract, + 82u32 => Op::CompositeInsert, + 83u32 => Op::CopyObject, + 84u32 => Op::Transpose, + 86u32 => Op::SampledImage, + 87u32 => Op::ImageSampleImplicitLod, + 88u32 => Op::ImageSampleExplicitLod, + 89u32 => Op::ImageSampleDrefImplicitLod, + 90u32 => Op::ImageSampleDrefExplicitLod, + 91u32 => Op::ImageSampleProjImplicitLod, + 92u32 => Op::ImageSampleProjExplicitLod, + 93u32 => Op::ImageSampleProjDrefImplicitLod, + 94u32 => Op::ImageSampleProjDrefExplicitLod, + 95u32 => Op::ImageFetch, + 96u32 => Op::ImageGather, + 97u32 => Op::ImageDrefGather, + 98u32 => Op::ImageRead, + 99u32 => Op::ImageWrite, + 100u32 => Op::Image, + 101u32 => Op::ImageQueryFormat, + 102u32 => Op::ImageQueryOrder, + 103u32 => Op::ImageQuerySizeLod, + 104u32 => Op::ImageQuerySize, + 105u32 => Op::ImageQueryLod, + 106u32 => Op::ImageQueryLevels, + 107u32 => Op::ImageQuerySamples, + 109u32 => Op::ConvertFToU, + 110u32 => Op::ConvertFToS, + 111u32 => Op::ConvertSToF, + 112u32 => Op::ConvertUToF, + 113u32 => Op::UConvert, + 114u32 => Op::SConvert, + 115u32 => Op::FConvert, + 116u32 => Op::QuantizeToF16, + 117u32 => Op::ConvertPtrToU, + 118u32 => Op::SatConvertSToU, + 119u32 => Op::SatConvertUToS, + 120u32 => Op::ConvertUToPtr, + 121u32 => Op::PtrCastToGeneric, + 122u32 => Op::GenericCastToPtr, + 123u32 => Op::GenericCastToPtrExplicit, + 124u32 => Op::Bitcast, + 126u32 => Op::SNegate, + 127u32 => Op::FNegate, + 128u32 => Op::IAdd, + 129u32 => Op::FAdd, + 130u32 => Op::ISub, + 131u32 => Op::FSub, + 132u32 => Op::IMul, + 133u32 => Op::FMul, + 134u32 => Op::UDiv, + 135u32 => Op::SDiv, + 136u32 => Op::FDiv, + 137u32 => Op::UMod, + 138u32 => Op::SRem, + 139u32 => Op::SMod, + 140u32 => Op::FRem, + 141u32 => Op::FMod, + 142u32 => Op::VectorTimesScalar, + 143u32 => Op::MatrixTimesScalar, + 144u32 => Op::VectorTimesMatrix, + 145u32 => Op::MatrixTimesVector, + 146u32 => Op::MatrixTimesMatrix, + 147u32 => Op::OuterProduct, + 148u32 => Op::Dot, + 149u32 => Op::IAddCarry, + 150u32 => Op::ISubBorrow, + 151u32 => Op::UMulExtended, + 152u32 => Op::SMulExtended, + 154u32 => Op::Any, + 155u32 => Op::All, + 156u32 => Op::IsNan, + 157u32 => Op::IsInf, + 158u32 => Op::IsFinite, + 159u32 => Op::IsNormal, + 160u32 => Op::SignBitSet, + 161u32 => Op::LessOrGreater, + 162u32 => Op::Ordered, + 163u32 => Op::Unordered, + 164u32 => Op::LogicalEqual, + 165u32 => Op::LogicalNotEqual, + 166u32 => Op::LogicalOr, + 167u32 => Op::LogicalAnd, + 168u32 => Op::LogicalNot, + 169u32 => Op::Select, + 170u32 => Op::IEqual, + 171u32 => Op::INotEqual, + 172u32 => Op::UGreaterThan, + 173u32 => Op::SGreaterThan, + 174u32 => Op::UGreaterThanEqual, + 175u32 => Op::SGreaterThanEqual, + 176u32 => Op::ULessThan, + 177u32 => Op::SLessThan, + 178u32 => Op::ULessThanEqual, + 179u32 => Op::SLessThanEqual, + 180u32 => Op::FOrdEqual, + 181u32 => Op::FUnordEqual, + 182u32 => Op::FOrdNotEqual, + 183u32 => Op::FUnordNotEqual, + 184u32 => Op::FOrdLessThan, + 185u32 => Op::FUnordLessThan, + 186u32 => Op::FOrdGreaterThan, + 187u32 => Op::FUnordGreaterThan, + 188u32 => Op::FOrdLessThanEqual, + 189u32 => Op::FUnordLessThanEqual, + 190u32 => Op::FOrdGreaterThanEqual, + 191u32 => Op::FUnordGreaterThanEqual, + 194u32 => Op::ShiftRightLogical, + 195u32 => Op::ShiftRightArithmetic, + 196u32 => Op::ShiftLeftLogical, + 197u32 => Op::BitwiseOr, + 198u32 => Op::BitwiseXor, + 199u32 => Op::BitwiseAnd, + 200u32 => Op::Not, + 201u32 => Op::BitFieldInsert, + 202u32 => Op::BitFieldSExtract, + 203u32 => Op::BitFieldUExtract, + 204u32 => Op::BitReverse, + 205u32 => Op::BitCount, + 207u32 => Op::DPdx, + 208u32 => Op::DPdy, + 209u32 => Op::Fwidth, + 210u32 => Op::DPdxFine, + 211u32 => Op::DPdyFine, + 212u32 => Op::FwidthFine, + 213u32 => Op::DPdxCoarse, + 214u32 => Op::DPdyCoarse, + 215u32 => Op::FwidthCoarse, + 218u32 => Op::EmitVertex, + 219u32 => Op::EndPrimitive, + 220u32 => Op::EmitStreamVertex, + 221u32 => Op::EndStreamPrimitive, + 224u32 => Op::ControlBarrier, + 225u32 => Op::MemoryBarrier, + 227u32 => Op::AtomicLoad, + 228u32 => Op::AtomicStore, + 229u32 => Op::AtomicExchange, + 230u32 => Op::AtomicCompareExchange, + 231u32 => Op::AtomicCompareExchangeWeak, + 232u32 => Op::AtomicIIncrement, + 233u32 => Op::AtomicIDecrement, + 234u32 => Op::AtomicIAdd, + 235u32 => Op::AtomicISub, + 236u32 => Op::AtomicSMin, + 237u32 => Op::AtomicUMin, + 238u32 => Op::AtomicSMax, + 239u32 => Op::AtomicUMax, + 240u32 => Op::AtomicAnd, + 241u32 => Op::AtomicOr, + 242u32 => Op::AtomicXor, + 245u32 => Op::Phi, + 246u32 => Op::LoopMerge, + 247u32 => Op::SelectionMerge, + 248u32 => Op::Label, + 249u32 => Op::Branch, + 250u32 => Op::BranchConditional, + 251u32 => Op::Switch, + 252u32 => Op::Kill, + 253u32 => Op::Return, + 254u32 => Op::ReturnValue, + 255u32 => Op::Unreachable, + 256u32 => Op::LifetimeStart, + 257u32 => Op::LifetimeStop, + 259u32 => Op::GroupAsyncCopy, + 260u32 => Op::GroupWaitEvents, + 261u32 => Op::GroupAll, + 262u32 => Op::GroupAny, + 263u32 => Op::GroupBroadcast, + 264u32 => Op::GroupIAdd, + 265u32 => Op::GroupFAdd, + 266u32 => Op::GroupFMin, + 267u32 => Op::GroupUMin, + 268u32 => Op::GroupSMin, + 269u32 => Op::GroupFMax, + 270u32 => Op::GroupUMax, + 271u32 => Op::GroupSMax, + 274u32 => Op::ReadPipe, + 275u32 => Op::WritePipe, + 276u32 => Op::ReservedReadPipe, + 277u32 => Op::ReservedWritePipe, + 278u32 => Op::ReserveReadPipePackets, + 279u32 => Op::ReserveWritePipePackets, + 280u32 => Op::CommitReadPipe, + 281u32 => Op::CommitWritePipe, + 282u32 => Op::IsValidReserveId, + 283u32 => Op::GetNumPipePackets, + 284u32 => Op::GetMaxPipePackets, + 285u32 => Op::GroupReserveReadPipePackets, + 286u32 => Op::GroupReserveWritePipePackets, + 287u32 => Op::GroupCommitReadPipe, + 288u32 => Op::GroupCommitWritePipe, + 291u32 => Op::EnqueueMarker, + 292u32 => Op::EnqueueKernel, + 293u32 => Op::GetKernelNDrangeSubGroupCount, + 294u32 => Op::GetKernelNDrangeMaxSubGroupSize, + 295u32 => Op::GetKernelWorkGroupSize, + 296u32 => Op::GetKernelPreferredWorkGroupSizeMultiple, + 297u32 => Op::RetainEvent, + 298u32 => Op::ReleaseEvent, + 299u32 => Op::CreateUserEvent, + 300u32 => Op::IsValidEvent, + 301u32 => Op::SetUserEventStatus, + 302u32 => Op::CaptureEventProfilingInfo, + 303u32 => Op::GetDefaultQueue, + 304u32 => Op::BuildNDRange, + 305u32 => Op::ImageSparseSampleImplicitLod, + 306u32 => Op::ImageSparseSampleExplicitLod, + 307u32 => Op::ImageSparseSampleDrefImplicitLod, + 308u32 => Op::ImageSparseSampleDrefExplicitLod, + 309u32 => Op::ImageSparseSampleProjImplicitLod, + 310u32 => Op::ImageSparseSampleProjExplicitLod, + 311u32 => Op::ImageSparseSampleProjDrefImplicitLod, + 312u32 => Op::ImageSparseSampleProjDrefExplicitLod, + 313u32 => Op::ImageSparseFetch, + 314u32 => Op::ImageSparseGather, + 315u32 => Op::ImageSparseDrefGather, + 316u32 => Op::ImageSparseTexelsResident, + 317u32 => Op::NoLine, + 318u32 => Op::AtomicFlagTestAndSet, + 319u32 => Op::AtomicFlagClear, + 320u32 => Op::ImageSparseRead, + 321u32 => Op::SizeOf, + 322u32 => Op::TypePipeStorage, + 323u32 => Op::ConstantPipeStorage, + 324u32 => Op::CreatePipeFromPipeStorage, + 325u32 => Op::GetKernelLocalSizeForSubgroupCount, + 326u32 => Op::GetKernelMaxNumSubgroups, + 327u32 => Op::TypeNamedBarrier, + 328u32 => Op::NamedBarrierInitialize, + 329u32 => Op::MemoryNamedBarrier, + 330u32 => Op::ModuleProcessed, + 331u32 => Op::ExecutionModeId, + 332u32 => Op::DecorateId, + 333u32 => Op::GroupNonUniformElect, + 334u32 => Op::GroupNonUniformAll, + 335u32 => Op::GroupNonUniformAny, + 336u32 => Op::GroupNonUniformAllEqual, + 337u32 => Op::GroupNonUniformBroadcast, + 338u32 => Op::GroupNonUniformBroadcastFirst, + 339u32 => Op::GroupNonUniformBallot, + 340u32 => Op::GroupNonUniformInverseBallot, + 341u32 => Op::GroupNonUniformBallotBitExtract, + 342u32 => Op::GroupNonUniformBallotBitCount, + 343u32 => Op::GroupNonUniformBallotFindLSB, + 344u32 => Op::GroupNonUniformBallotFindMSB, + 345u32 => Op::GroupNonUniformShuffle, + 346u32 => Op::GroupNonUniformShuffleXor, + 347u32 => Op::GroupNonUniformShuffleUp, + 348u32 => Op::GroupNonUniformShuffleDown, + 349u32 => Op::GroupNonUniformIAdd, + 350u32 => Op::GroupNonUniformFAdd, + 351u32 => Op::GroupNonUniformIMul, + 352u32 => Op::GroupNonUniformFMul, + 353u32 => Op::GroupNonUniformSMin, + 354u32 => Op::GroupNonUniformUMin, + 355u32 => Op::GroupNonUniformFMin, + 356u32 => Op::GroupNonUniformSMax, + 357u32 => Op::GroupNonUniformUMax, + 358u32 => Op::GroupNonUniformFMax, + 359u32 => Op::GroupNonUniformBitwiseAnd, + 360u32 => Op::GroupNonUniformBitwiseOr, + 361u32 => Op::GroupNonUniformBitwiseXor, + 362u32 => Op::GroupNonUniformLogicalAnd, + 363u32 => Op::GroupNonUniformLogicalOr, + 364u32 => Op::GroupNonUniformLogicalXor, + 365u32 => Op::GroupNonUniformQuadBroadcast, + 366u32 => Op::GroupNonUniformQuadSwap, + 400u32 => Op::CopyLogical, + 401u32 => Op::PtrEqual, + 402u32 => Op::PtrNotEqual, + 403u32 => Op::PtrDiff, + 4421u32 => Op::SubgroupBallotKHR, + 4422u32 => Op::SubgroupFirstInvocationKHR, + 4428u32 => Op::SubgroupAllKHR, + 4429u32 => Op::SubgroupAnyKHR, + 4430u32 => Op::SubgroupAllEqualKHR, + 4432u32 => Op::SubgroupReadInvocationKHR, + 5000u32 => Op::GroupIAddNonUniformAMD, + 5001u32 => Op::GroupFAddNonUniformAMD, + 5002u32 => Op::GroupFMinNonUniformAMD, + 5003u32 => Op::GroupUMinNonUniformAMD, + 5004u32 => Op::GroupSMinNonUniformAMD, + 5005u32 => Op::GroupFMaxNonUniformAMD, + 5006u32 => Op::GroupUMaxNonUniformAMD, + 5007u32 => Op::GroupSMaxNonUniformAMD, + 5011u32 => Op::FragmentMaskFetchAMD, + 5012u32 => Op::FragmentFetchAMD, + 5283u32 => Op::ImageSampleFootprintNV, + 5296u32 => Op::GroupNonUniformPartitionNV, + 5299u32 => Op::WritePackedPrimitiveIndices4x8NV, + 5334u32 => Op::ReportIntersectionNV, + 5335u32 => Op::IgnoreIntersectionNV, + 5336u32 => Op::TerminateRayNV, + 5337u32 => Op::TraceNV, + 5341u32 => Op::TypeAccelerationStructureNV, + 5344u32 => Op::ExecuteCallableNV, + 5358u32 => Op::TypeCooperativeMatrixNV, + 5359u32 => Op::CooperativeMatrixLoadNV, + 5360u32 => Op::CooperativeMatrixStoreNV, + 5361u32 => Op::CooperativeMatrixMulAddNV, + 5362u32 => Op::CooperativeMatrixLengthNV, + 5571u32 => Op::SubgroupShuffleINTEL, + 5572u32 => Op::SubgroupShuffleDownINTEL, + 5573u32 => Op::SubgroupShuffleUpINTEL, + 5574u32 => Op::SubgroupShuffleXorINTEL, + 5575u32 => Op::SubgroupBlockReadINTEL, + 5576u32 => Op::SubgroupBlockWriteINTEL, + 5577u32 => Op::SubgroupImageBlockReadINTEL, + 5578u32 => Op::SubgroupImageBlockWriteINTEL, + 5580u32 => Op::SubgroupImageMediaBlockReadINTEL, + 5581u32 => Op::SubgroupImageMediaBlockWriteINTEL, + 5632u32 => Op::DecorateString, + 5633u32 => Op::MemberDecorateString, + 5699u32 => Op::VmeImageINTEL, + 5700u32 => Op::TypeVmeImageINTEL, + 5701u32 => Op::TypeAvcImePayloadINTEL, + 5702u32 => Op::TypeAvcRefPayloadINTEL, + 5703u32 => Op::TypeAvcSicPayloadINTEL, + 5704u32 => Op::TypeAvcMcePayloadINTEL, + 5705u32 => Op::TypeAvcMceResultINTEL, + 5706u32 => Op::TypeAvcImeResultINTEL, + 5707u32 => Op::TypeAvcImeResultSingleReferenceStreamoutINTEL, + 5708u32 => Op::TypeAvcImeResultDualReferenceStreamoutINTEL, + 5709u32 => Op::TypeAvcImeSingleReferenceStreaminINTEL, + 5710u32 => Op::TypeAvcImeDualReferenceStreaminINTEL, + 5711u32 => Op::TypeAvcRefResultINTEL, + 5712u32 => Op::TypeAvcSicResultINTEL, + 5713u32 => Op::SubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL, + 5714u32 => Op::SubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL, + 5715u32 => Op::SubgroupAvcMceGetDefaultInterShapePenaltyINTEL, + 5716u32 => Op::SubgroupAvcMceSetInterShapePenaltyINTEL, + 5717u32 => Op::SubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL, + 5718u32 => Op::SubgroupAvcMceSetInterDirectionPenaltyINTEL, + 5719u32 => Op::SubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL, + 5720u32 => Op::SubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL, + 5721u32 => Op::SubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL, + 5722u32 => Op::SubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL, + 5723u32 => Op::SubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL, + 5724u32 => Op::SubgroupAvcMceSetMotionVectorCostFunctionINTEL, + 5725u32 => Op::SubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL, + 5726u32 => Op::SubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL, + 5727u32 => Op::SubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL, + 5728u32 => Op::SubgroupAvcMceSetAcOnlyHaarINTEL, + 5729u32 => Op::SubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL, + 5730u32 => Op::SubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL, + 5731u32 => Op::SubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL, + 5732u32 => Op::SubgroupAvcMceConvertToImePayloadINTEL, + 5733u32 => Op::SubgroupAvcMceConvertToImeResultINTEL, + 5734u32 => Op::SubgroupAvcMceConvertToRefPayloadINTEL, + 5735u32 => Op::SubgroupAvcMceConvertToRefResultINTEL, + 5736u32 => Op::SubgroupAvcMceConvertToSicPayloadINTEL, + 5737u32 => Op::SubgroupAvcMceConvertToSicResultINTEL, + 5738u32 => Op::SubgroupAvcMceGetMotionVectorsINTEL, + 5739u32 => Op::SubgroupAvcMceGetInterDistortionsINTEL, + 5740u32 => Op::SubgroupAvcMceGetBestInterDistortionsINTEL, + 5741u32 => Op::SubgroupAvcMceGetInterMajorShapeINTEL, + 5742u32 => Op::SubgroupAvcMceGetInterMinorShapeINTEL, + 5743u32 => Op::SubgroupAvcMceGetInterDirectionsINTEL, + 5744u32 => Op::SubgroupAvcMceGetInterMotionVectorCountINTEL, + 5745u32 => Op::SubgroupAvcMceGetInterReferenceIdsINTEL, + 5746u32 => Op::SubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL, + 5747u32 => Op::SubgroupAvcImeInitializeINTEL, + 5748u32 => Op::SubgroupAvcImeSetSingleReferenceINTEL, + 5749u32 => Op::SubgroupAvcImeSetDualReferenceINTEL, + 5750u32 => Op::SubgroupAvcImeRefWindowSizeINTEL, + 5751u32 => Op::SubgroupAvcImeAdjustRefOffsetINTEL, + 5752u32 => Op::SubgroupAvcImeConvertToMcePayloadINTEL, + 5753u32 => Op::SubgroupAvcImeSetMaxMotionVectorCountINTEL, + 5754u32 => Op::SubgroupAvcImeSetUnidirectionalMixDisableINTEL, + 5755u32 => Op::SubgroupAvcImeSetEarlySearchTerminationThresholdINTEL, + 5756u32 => Op::SubgroupAvcImeSetWeightedSadINTEL, + 5757u32 => Op::SubgroupAvcImeEvaluateWithSingleReferenceINTEL, + 5758u32 => Op::SubgroupAvcImeEvaluateWithDualReferenceINTEL, + 5759u32 => Op::SubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL, + 5760u32 => Op::SubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL, + 5761u32 => Op::SubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL, + 5762u32 => Op::SubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL, + 5763u32 => Op::SubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL, + 5764u32 => Op::SubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL, + 5765u32 => Op::SubgroupAvcImeConvertToMceResultINTEL, + 5766u32 => Op::SubgroupAvcImeGetSingleReferenceStreaminINTEL, + 5767u32 => Op::SubgroupAvcImeGetDualReferenceStreaminINTEL, + 5768u32 => Op::SubgroupAvcImeStripSingleReferenceStreamoutINTEL, + 5769u32 => Op::SubgroupAvcImeStripDualReferenceStreamoutINTEL, + 5770u32 => Op::SubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL, + 5771u32 => Op::SubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL, + 5772u32 => Op::SubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL, + 5773u32 => Op::SubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL, + 5774u32 => Op::SubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL, + 5775u32 => Op::SubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL, + 5776u32 => Op::SubgroupAvcImeGetBorderReachedINTEL, + 5777u32 => Op::SubgroupAvcImeGetTruncatedSearchIndicationINTEL, + 5778u32 => Op::SubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL, + 5779u32 => Op::SubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL, + 5780u32 => Op::SubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL, + 5781u32 => Op::SubgroupAvcFmeInitializeINTEL, + 5782u32 => Op::SubgroupAvcBmeInitializeINTEL, + 5783u32 => Op::SubgroupAvcRefConvertToMcePayloadINTEL, + 5784u32 => Op::SubgroupAvcRefSetBidirectionalMixDisableINTEL, + 5785u32 => Op::SubgroupAvcRefSetBilinearFilterEnableINTEL, + 5786u32 => Op::SubgroupAvcRefEvaluateWithSingleReferenceINTEL, + 5787u32 => Op::SubgroupAvcRefEvaluateWithDualReferenceINTEL, + 5788u32 => Op::SubgroupAvcRefEvaluateWithMultiReferenceINTEL, + 5789u32 => Op::SubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL, + 5790u32 => Op::SubgroupAvcRefConvertToMceResultINTEL, + 5791u32 => Op::SubgroupAvcSicInitializeINTEL, + 5792u32 => Op::SubgroupAvcSicConfigureSkcINTEL, + 5793u32 => Op::SubgroupAvcSicConfigureIpeLumaINTEL, + 5794u32 => Op::SubgroupAvcSicConfigureIpeLumaChromaINTEL, + 5795u32 => Op::SubgroupAvcSicGetMotionVectorMaskINTEL, + 5796u32 => Op::SubgroupAvcSicConvertToMcePayloadINTEL, + 5797u32 => Op::SubgroupAvcSicSetIntraLumaShapePenaltyINTEL, + 5798u32 => Op::SubgroupAvcSicSetIntraLumaModeCostFunctionINTEL, + 5799u32 => Op::SubgroupAvcSicSetIntraChromaModeCostFunctionINTEL, + 5800u32 => Op::SubgroupAvcSicSetBilinearFilterEnableINTEL, + 5801u32 => Op::SubgroupAvcSicSetSkcForwardTransformEnableINTEL, + 5802u32 => Op::SubgroupAvcSicSetBlockBasedRawSkipSadINTEL, + 5803u32 => Op::SubgroupAvcSicEvaluateIpeINTEL, + 5804u32 => Op::SubgroupAvcSicEvaluateWithSingleReferenceINTEL, + 5805u32 => Op::SubgroupAvcSicEvaluateWithDualReferenceINTEL, + 5806u32 => Op::SubgroupAvcSicEvaluateWithMultiReferenceINTEL, + 5807u32 => Op::SubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL, + 5808u32 => Op::SubgroupAvcSicConvertToMceResultINTEL, + 5809u32 => Op::SubgroupAvcSicGetIpeLumaShapeINTEL, + 5810u32 => Op::SubgroupAvcSicGetBestIpeLumaDistortionINTEL, + 5811u32 => Op::SubgroupAvcSicGetBestIpeChromaDistortionINTEL, + 5812u32 => Op::SubgroupAvcSicGetPackedIpeLumaModesINTEL, + 5813u32 => Op::SubgroupAvcSicGetIpeChromaModeINTEL, + 5814u32 => Op::SubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL, + 5815u32 => Op::SubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL, + 5816u32 => Op::SubgroupAvcSicGetInterRawSadsINTEL, + _ => return None, + }) + } + fn from_u64(n: u64) -> Option<Self> { + Self::from_i64(n as i64) + } +} +#[doc = "[GLSL.std.450](https://www.khronos.org/registry/spir-v/specs/unified1/GLSL.std.450.html) extended instruction opcode"] +#[repr(u32)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] +pub enum GLOp { + Round = 1u32, + RoundEven = 2u32, + Trunc = 3u32, + FAbs = 4u32, + SAbs = 5u32, + FSign = 6u32, + SSign = 7u32, + Floor = 8u32, + Ceil = 9u32, + Fract = 10u32, + Radians = 11u32, + Degrees = 12u32, + Sin = 13u32, + Cos = 14u32, + Tan = 15u32, + Asin = 16u32, + Acos = 17u32, + Atan = 18u32, + Sinh = 19u32, + Cosh = 20u32, + Tanh = 21u32, + Asinh = 22u32, + Acosh = 23u32, + Atanh = 24u32, + Atan2 = 25u32, + Pow = 26u32, + Exp = 27u32, + Log = 28u32, + Exp2 = 29u32, + Log2 = 30u32, + Sqrt = 31u32, + InverseSqrt = 32u32, + Determinant = 33u32, + MatrixInverse = 34u32, + Modf = 35u32, + ModfStruct = 36u32, + FMin = 37u32, + UMin = 38u32, + SMin = 39u32, + FMax = 40u32, + UMax = 41u32, + SMax = 42u32, + FClamp = 43u32, + UClamp = 44u32, + SClamp = 45u32, + FMix = 46u32, + IMix = 47u32, + Step = 48u32, + SmoothStep = 49u32, + Fma = 50u32, + Frexp = 51u32, + FrexpStruct = 52u32, + Ldexp = 53u32, + PackSnorm4x8 = 54u32, + PackUnorm4x8 = 55u32, + PackSnorm2x16 = 56u32, + PackUnorm2x16 = 57u32, + PackHalf2x16 = 58u32, + PackDouble2x32 = 59u32, + UnpackSnorm2x16 = 60u32, + UnpackUnorm2x16 = 61u32, + UnpackHalf2x16 = 62u32, + UnpackSnorm4x8 = 63u32, + UnpackUnorm4x8 = 64u32, + UnpackDouble2x32 = 65u32, + Length = 66u32, + Distance = 67u32, + Cross = 68u32, + Normalize = 69u32, + FaceForward = 70u32, + Reflect = 71u32, + Refract = 72u32, + FindILsb = 73u32, + FindSMsb = 74u32, + FindUMsb = 75u32, + InterpolateAtCentroid = 76u32, + InterpolateAtSample = 77u32, + InterpolateAtOffset = 78u32, + NMin = 79u32, + NMax = 80u32, + NClamp = 81u32, +} +impl num_traits::FromPrimitive for GLOp { + #[allow(trivial_numeric_casts)] + fn from_i64(n: i64) -> Option<Self> { + Some(match n as u32 { + 1u32 => GLOp::Round, + 2u32 => GLOp::RoundEven, + 3u32 => GLOp::Trunc, + 4u32 => GLOp::FAbs, + 5u32 => GLOp::SAbs, + 6u32 => GLOp::FSign, + 7u32 => GLOp::SSign, + 8u32 => GLOp::Floor, + 9u32 => GLOp::Ceil, + 10u32 => GLOp::Fract, + 11u32 => GLOp::Radians, + 12u32 => GLOp::Degrees, + 13u32 => GLOp::Sin, + 14u32 => GLOp::Cos, + 15u32 => GLOp::Tan, + 16u32 => GLOp::Asin, + 17u32 => GLOp::Acos, + 18u32 => GLOp::Atan, + 19u32 => GLOp::Sinh, + 20u32 => GLOp::Cosh, + 21u32 => GLOp::Tanh, + 22u32 => GLOp::Asinh, + 23u32 => GLOp::Acosh, + 24u32 => GLOp::Atanh, + 25u32 => GLOp::Atan2, + 26u32 => GLOp::Pow, + 27u32 => GLOp::Exp, + 28u32 => GLOp::Log, + 29u32 => GLOp::Exp2, + 30u32 => GLOp::Log2, + 31u32 => GLOp::Sqrt, + 32u32 => GLOp::InverseSqrt, + 33u32 => GLOp::Determinant, + 34u32 => GLOp::MatrixInverse, + 35u32 => GLOp::Modf, + 36u32 => GLOp::ModfStruct, + 37u32 => GLOp::FMin, + 38u32 => GLOp::UMin, + 39u32 => GLOp::SMin, + 40u32 => GLOp::FMax, + 41u32 => GLOp::UMax, + 42u32 => GLOp::SMax, + 43u32 => GLOp::FClamp, + 44u32 => GLOp::UClamp, + 45u32 => GLOp::SClamp, + 46u32 => GLOp::FMix, + 47u32 => GLOp::IMix, + 48u32 => GLOp::Step, + 49u32 => GLOp::SmoothStep, + 50u32 => GLOp::Fma, + 51u32 => GLOp::Frexp, + 52u32 => GLOp::FrexpStruct, + 53u32 => GLOp::Ldexp, + 54u32 => GLOp::PackSnorm4x8, + 55u32 => GLOp::PackUnorm4x8, + 56u32 => GLOp::PackSnorm2x16, + 57u32 => GLOp::PackUnorm2x16, + 58u32 => GLOp::PackHalf2x16, + 59u32 => GLOp::PackDouble2x32, + 60u32 => GLOp::UnpackSnorm2x16, + 61u32 => GLOp::UnpackUnorm2x16, + 62u32 => GLOp::UnpackHalf2x16, + 63u32 => GLOp::UnpackSnorm4x8, + 64u32 => GLOp::UnpackUnorm4x8, + 65u32 => GLOp::UnpackDouble2x32, + 66u32 => GLOp::Length, + 67u32 => GLOp::Distance, + 68u32 => GLOp::Cross, + 69u32 => GLOp::Normalize, + 70u32 => GLOp::FaceForward, + 71u32 => GLOp::Reflect, + 72u32 => GLOp::Refract, + 73u32 => GLOp::FindILsb, + 74u32 => GLOp::FindSMsb, + 75u32 => GLOp::FindUMsb, + 76u32 => GLOp::InterpolateAtCentroid, + 77u32 => GLOp::InterpolateAtSample, + 78u32 => GLOp::InterpolateAtOffset, + 79u32 => GLOp::NMin, + 80u32 => GLOp::NMax, + 81u32 => GLOp::NClamp, + _ => return None, + }) + } + fn from_u64(n: u64) -> Option<Self> { + Self::from_i64(n as i64) + } +} +#[doc = "[OpenCL.std](https://www.khronos.org/registry/spir-v/specs/unified1/OpenCL.ExtendedInstructionSet.100.html) extended instruction opcode"] +#[repr(u32)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] +pub enum CLOp { + acos = 0u32, + acosh = 1u32, + acospi = 2u32, + asin = 3u32, + asinh = 4u32, + asinpi = 5u32, + atan = 6u32, + atan2 = 7u32, + atanh = 8u32, + atanpi = 9u32, + atan2pi = 10u32, + cbrt = 11u32, + ceil = 12u32, + copysign = 13u32, + cos = 14u32, + cosh = 15u32, + cospi = 16u32, + erfc = 17u32, + erf = 18u32, + exp = 19u32, + exp2 = 20u32, + exp10 = 21u32, + expm1 = 22u32, + fabs = 23u32, + fdim = 24u32, + floor = 25u32, + fma = 26u32, + fmax = 27u32, + fmin = 28u32, + fmod = 29u32, + fract = 30u32, + frexp = 31u32, + hypot = 32u32, + ilogb = 33u32, + ldexp = 34u32, + lgamma = 35u32, + lgamma_r = 36u32, + log = 37u32, + log2 = 38u32, + log10 = 39u32, + log1p = 40u32, + logb = 41u32, + mad = 42u32, + maxmag = 43u32, + minmag = 44u32, + modf = 45u32, + nan = 46u32, + nextafter = 47u32, + pow = 48u32, + pown = 49u32, + powr = 50u32, + remainder = 51u32, + remquo = 52u32, + rint = 53u32, + rootn = 54u32, + round = 55u32, + rsqrt = 56u32, + sin = 57u32, + sincos = 58u32, + sinh = 59u32, + sinpi = 60u32, + sqrt = 61u32, + tan = 62u32, + tanh = 63u32, + tanpi = 64u32, + tgamma = 65u32, + trunc = 66u32, + half_cos = 67u32, + half_divide = 68u32, + half_exp = 69u32, + half_exp2 = 70u32, + half_exp10 = 71u32, + half_log = 72u32, + half_log2 = 73u32, + half_log10 = 74u32, + half_powr = 75u32, + half_recip = 76u32, + half_rsqrt = 77u32, + half_sin = 78u32, + half_sqrt = 79u32, + half_tan = 80u32, + native_cos = 81u32, + native_divide = 82u32, + native_exp = 83u32, + native_exp2 = 84u32, + native_exp10 = 85u32, + native_log = 86u32, + native_log2 = 87u32, + native_log10 = 88u32, + native_powr = 89u32, + native_recip = 90u32, + native_rsqrt = 91u32, + native_sin = 92u32, + native_sqrt = 93u32, + native_tan = 94u32, + s_abs = 141u32, + s_abs_diff = 142u32, + s_add_sat = 143u32, + u_add_sat = 144u32, + s_hadd = 145u32, + u_hadd = 146u32, + s_rhadd = 147u32, + u_rhadd = 148u32, + s_clamp = 149u32, + u_clamp = 150u32, + clz = 151u32, + ctz = 152u32, + s_mad_hi = 153u32, + u_mad_sat = 154u32, + s_mad_sat = 155u32, + s_max = 156u32, + u_max = 157u32, + s_min = 158u32, + u_min = 159u32, + s_mul_hi = 160u32, + rotate = 161u32, + s_sub_sat = 162u32, + u_sub_sat = 163u32, + u_upsample = 164u32, + s_upsample = 165u32, + popcount = 166u32, + s_mad24 = 167u32, + u_mad24 = 168u32, + s_mul24 = 169u32, + u_mul24 = 170u32, + u_abs = 201u32, + u_abs_diff = 202u32, + u_mul_hi = 203u32, + u_mad_hi = 204u32, + fclamp = 95u32, + degrees = 96u32, + fmax_common = 97u32, + fmin_common = 98u32, + mix = 99u32, + radians = 100u32, + step = 101u32, + smoothstep = 102u32, + sign = 103u32, + cross = 104u32, + distance = 105u32, + length = 106u32, + normalize = 107u32, + fast_distance = 108u32, + fast_length = 109u32, + fast_normalize = 110u32, + bitselect = 186u32, + select = 187u32, + vloadn = 171u32, + vstoren = 172u32, + vload_half = 173u32, + vload_halfn = 174u32, + vstore_half = 175u32, + vstore_half_r = 176u32, + vstore_halfn = 177u32, + vstore_halfn_r = 178u32, + vloada_halfn = 179u32, + vstorea_halfn = 180u32, + vstorea_halfn_r = 181u32, + shuffle = 182u32, + shuffle2 = 183u32, + printf = 184u32, + prefetch = 185u32, +} +impl num_traits::FromPrimitive for CLOp { + #[allow(trivial_numeric_casts)] + fn from_i64(n: i64) -> Option<Self> { + Some(match n as u32 { + 0u32 => CLOp::acos, + 1u32 => CLOp::acosh, + 2u32 => CLOp::acospi, + 3u32 => CLOp::asin, + 4u32 => CLOp::asinh, + 5u32 => CLOp::asinpi, + 6u32 => CLOp::atan, + 7u32 => CLOp::atan2, + 8u32 => CLOp::atanh, + 9u32 => CLOp::atanpi, + 10u32 => CLOp::atan2pi, + 11u32 => CLOp::cbrt, + 12u32 => CLOp::ceil, + 13u32 => CLOp::copysign, + 14u32 => CLOp::cos, + 15u32 => CLOp::cosh, + 16u32 => CLOp::cospi, + 17u32 => CLOp::erfc, + 18u32 => CLOp::erf, + 19u32 => CLOp::exp, + 20u32 => CLOp::exp2, + 21u32 => CLOp::exp10, + 22u32 => CLOp::expm1, + 23u32 => CLOp::fabs, + 24u32 => CLOp::fdim, + 25u32 => CLOp::floor, + 26u32 => CLOp::fma, + 27u32 => CLOp::fmax, + 28u32 => CLOp::fmin, + 29u32 => CLOp::fmod, + 30u32 => CLOp::fract, + 31u32 => CLOp::frexp, + 32u32 => CLOp::hypot, + 33u32 => CLOp::ilogb, + 34u32 => CLOp::ldexp, + 35u32 => CLOp::lgamma, + 36u32 => CLOp::lgamma_r, + 37u32 => CLOp::log, + 38u32 => CLOp::log2, + 39u32 => CLOp::log10, + 40u32 => CLOp::log1p, + 41u32 => CLOp::logb, + 42u32 => CLOp::mad, + 43u32 => CLOp::maxmag, + 44u32 => CLOp::minmag, + 45u32 => CLOp::modf, + 46u32 => CLOp::nan, + 47u32 => CLOp::nextafter, + 48u32 => CLOp::pow, + 49u32 => CLOp::pown, + 50u32 => CLOp::powr, + 51u32 => CLOp::remainder, + 52u32 => CLOp::remquo, + 53u32 => CLOp::rint, + 54u32 => CLOp::rootn, + 55u32 => CLOp::round, + 56u32 => CLOp::rsqrt, + 57u32 => CLOp::sin, + 58u32 => CLOp::sincos, + 59u32 => CLOp::sinh, + 60u32 => CLOp::sinpi, + 61u32 => CLOp::sqrt, + 62u32 => CLOp::tan, + 63u32 => CLOp::tanh, + 64u32 => CLOp::tanpi, + 65u32 => CLOp::tgamma, + 66u32 => CLOp::trunc, + 67u32 => CLOp::half_cos, + 68u32 => CLOp::half_divide, + 69u32 => CLOp::half_exp, + 70u32 => CLOp::half_exp2, + 71u32 => CLOp::half_exp10, + 72u32 => CLOp::half_log, + 73u32 => CLOp::half_log2, + 74u32 => CLOp::half_log10, + 75u32 => CLOp::half_powr, + 76u32 => CLOp::half_recip, + 77u32 => CLOp::half_rsqrt, + 78u32 => CLOp::half_sin, + 79u32 => CLOp::half_sqrt, + 80u32 => CLOp::half_tan, + 81u32 => CLOp::native_cos, + 82u32 => CLOp::native_divide, + 83u32 => CLOp::native_exp, + 84u32 => CLOp::native_exp2, + 85u32 => CLOp::native_exp10, + 86u32 => CLOp::native_log, + 87u32 => CLOp::native_log2, + 88u32 => CLOp::native_log10, + 89u32 => CLOp::native_powr, + 90u32 => CLOp::native_recip, + 91u32 => CLOp::native_rsqrt, + 92u32 => CLOp::native_sin, + 93u32 => CLOp::native_sqrt, + 94u32 => CLOp::native_tan, + 141u32 => CLOp::s_abs, + 142u32 => CLOp::s_abs_diff, + 143u32 => CLOp::s_add_sat, + 144u32 => CLOp::u_add_sat, + 145u32 => CLOp::s_hadd, + 146u32 => CLOp::u_hadd, + 147u32 => CLOp::s_rhadd, + 148u32 => CLOp::u_rhadd, + 149u32 => CLOp::s_clamp, + 150u32 => CLOp::u_clamp, + 151u32 => CLOp::clz, + 152u32 => CLOp::ctz, + 153u32 => CLOp::s_mad_hi, + 154u32 => CLOp::u_mad_sat, + 155u32 => CLOp::s_mad_sat, + 156u32 => CLOp::s_max, + 157u32 => CLOp::u_max, + 158u32 => CLOp::s_min, + 159u32 => CLOp::u_min, + 160u32 => CLOp::s_mul_hi, + 161u32 => CLOp::rotate, + 162u32 => CLOp::s_sub_sat, + 163u32 => CLOp::u_sub_sat, + 164u32 => CLOp::u_upsample, + 165u32 => CLOp::s_upsample, + 166u32 => CLOp::popcount, + 167u32 => CLOp::s_mad24, + 168u32 => CLOp::u_mad24, + 169u32 => CLOp::s_mul24, + 170u32 => CLOp::u_mul24, + 201u32 => CLOp::u_abs, + 202u32 => CLOp::u_abs_diff, + 203u32 => CLOp::u_mul_hi, + 204u32 => CLOp::u_mad_hi, + 95u32 => CLOp::fclamp, + 96u32 => CLOp::degrees, + 97u32 => CLOp::fmax_common, + 98u32 => CLOp::fmin_common, + 99u32 => CLOp::mix, + 100u32 => CLOp::radians, + 101u32 => CLOp::step, + 102u32 => CLOp::smoothstep, + 103u32 => CLOp::sign, + 104u32 => CLOp::cross, + 105u32 => CLOp::distance, + 106u32 => CLOp::length, + 107u32 => CLOp::normalize, + 108u32 => CLOp::fast_distance, + 109u32 => CLOp::fast_length, + 110u32 => CLOp::fast_normalize, + 186u32 => CLOp::bitselect, + 187u32 => CLOp::select, + 171u32 => CLOp::vloadn, + 172u32 => CLOp::vstoren, + 173u32 => CLOp::vload_half, + 174u32 => CLOp::vload_halfn, + 175u32 => CLOp::vstore_half, + 176u32 => CLOp::vstore_half_r, + 177u32 => CLOp::vstore_halfn, + 178u32 => CLOp::vstore_halfn_r, + 179u32 => CLOp::vloada_halfn, + 180u32 => CLOp::vstorea_halfn, + 181u32 => CLOp::vstorea_halfn_r, + 182u32 => CLOp::shuffle, + 183u32 => CLOp::shuffle2, + 184u32 => CLOp::printf, + 185u32 => CLOp::prefetch, + _ => return None, + }) + } + fn from_u64(n: u64) -> Option<Self> { + Self::from_i64(n as i64) + } +} |