// 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 = 6u8; pub const REVISION: u8 = 4u8; 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)"] # [derive (Clone , Copy , Debug , PartialEq , Eq , Hash)] # [cfg_attr (feature = "serialize" , derive (serde :: Serialize))] # [cfg_attr (feature = "deserialize" , derive (serde :: Deserialize))] 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 = 256u32 ; const MAKE_TEXEL_VISIBLE = 512u32 ; const NON_PRIVATE_TEXEL = 1024u32 ; const VOLATILE_TEXEL = 2048u32 ; const SIGN_EXTEND = 4096u32 ; const ZERO_EXTEND = 8192u32 ; const NONTEMPORAL = 16384u32 ; const OFFSETS = 65536u32 ; } } 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)"] # [derive (Clone , Copy , Debug , PartialEq , Eq , Hash)] # [cfg_attr (feature = "serialize" , derive (serde :: Serialize))] # [cfg_attr (feature = "deserialize" , derive (serde :: Deserialize))] 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 ; const ALLOW_CONTRACT = 65536u32 ; const ALLOW_REASSOC = 131072u32 ; const ALLOW_TRANSFORM = 262144u32 ; } } 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)"] # [derive (Clone , Copy , Debug , PartialEq , Eq , Hash)] # [cfg_attr (feature = "serialize" , derive (serde :: Serialize))] # [cfg_attr (feature = "deserialize" , derive (serde :: Deserialize))] 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)"] # [derive (Clone , Copy , Debug , PartialEq , Eq , Hash)] # [cfg_attr (feature = "serialize" , derive (serde :: Serialize))] # [cfg_attr (feature = "deserialize" , derive (serde :: Deserialize))] 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 ; const INITIATION_INTERVAL_ALTERA = 65536u32 ; const MAX_CONCURRENCY_ALTERA = 131072u32 ; const DEPENDENCY_ARRAY_ALTERA = 262144u32 ; const PIPELINE_ENABLE_ALTERA = 524288u32 ; const LOOP_COALESCE_ALTERA = 1048576u32 ; const MAX_INTERLEAVING_ALTERA = 2097152u32 ; const SPECULATED_ITERATIONS_ALTERA = 4194304u32 ; const NO_FUSION_ALTERA = 8388608u32 ; const LOOP_COUNT_ALTERA = 16777216u32 ; const MAX_REINVOCATION_DELAY_ALTERA = 33554432u32 ; } } 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)"] # [derive (Clone , Copy , Debug , PartialEq , Eq , Hash)] # [cfg_attr (feature = "serialize" , derive (serde :: Serialize))] # [cfg_attr (feature = "deserialize" , derive (serde :: Deserialize))] pub struct FunctionControl : u32 { const NONE = 0u32 ; const INLINE = 1u32 ; const DONT_INLINE = 2u32 ; const PURE = 4u32 ; const CONST = 8u32 ; const OPT_NONE_EXT = 65536u32 ; } } 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)"] # [derive (Clone , Copy , Debug , PartialEq , Eq , Hash)] # [cfg_attr (feature = "serialize" , derive (serde :: Serialize))] # [cfg_attr (feature = "deserialize" , derive (serde :: Deserialize))] pub struct MemorySemantics : u32 { const RELAXED = 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 = 4096u32 ; const MAKE_AVAILABLE = 8192u32 ; const MAKE_VISIBLE = 16384u32 ; const VOLATILE = 32768u32 ; } } 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)"] # [derive (Clone , Copy , Debug , PartialEq , Eq , Hash)] # [cfg_attr (feature = "serialize" , derive (serde :: Serialize))] # [cfg_attr (feature = "deserialize" , derive (serde :: Deserialize))] pub struct MemoryAccess : u32 { const NONE = 0u32 ; const VOLATILE = 1u32 ; const ALIGNED = 2u32 ; const NONTEMPORAL = 4u32 ; const MAKE_POINTER_AVAILABLE = 8u32 ; const MAKE_POINTER_VISIBLE = 16u32 ; const NON_PRIVATE_POINTER = 32u32 ; const ALIAS_SCOPE_INTEL_MASK = 65536u32 ; const NO_ALIAS_INTEL_MASK = 131072u32 ; } } 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)"] # [derive (Clone , Copy , Debug , PartialEq , Eq , Hash)] # [cfg_attr (feature = "serialize" , derive (serde :: Serialize))] # [cfg_attr (feature = "deserialize" , derive (serde :: Deserialize))] pub struct KernelProfilingInfo : u32 { const NONE = 0u32 ; const CMD_EXEC_TIME = 1u32 ; } } bitflags! { # [doc = "SPIR-V operand kind: [RayFlags](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_ray_flags_a_ray_flags)"] # [derive (Clone , Copy , Debug , PartialEq , Eq , Hash)] # [cfg_attr (feature = "serialize" , derive (serde :: Serialize))] # [cfg_attr (feature = "deserialize" , derive (serde :: Deserialize))] pub struct RayFlags : u32 { const NONE_KHR = 0u32 ; const OPAQUE_KHR = 1u32 ; const NO_OPAQUE_KHR = 2u32 ; const TERMINATE_ON_FIRST_HIT_KHR = 4u32 ; const SKIP_CLOSEST_HIT_SHADER_KHR = 8u32 ; const CULL_BACK_FACING_TRIANGLES_KHR = 16u32 ; const CULL_FRONT_FACING_TRIANGLES_KHR = 32u32 ; const CULL_OPAQUE_KHR = 64u32 ; const CULL_NO_OPAQUE_KHR = 128u32 ; const SKIP_TRIANGLES_KHR = 256u32 ; const SKIP_AAB_BS_KHR = 512u32 ; const FORCE_OPACITY_MICROMAP2_STATE_EXT = 1024u32 ; } } bitflags! { # [doc = "SPIR-V operand kind: [FragmentShadingRate](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_fragment_shading_rate_a_fragment_shading_rate)"] # [derive (Clone , Copy , Debug , PartialEq , Eq , Hash)] # [cfg_attr (feature = "serialize" , derive (serde :: Serialize))] # [cfg_attr (feature = "deserialize" , derive (serde :: Deserialize))] pub struct FragmentShadingRate : u32 { const VERTICAL2_PIXELS = 1u32 ; const VERTICAL4_PIXELS = 2u32 ; const HORIZONTAL2_PIXELS = 4u32 ; const HORIZONTAL4_PIXELS = 8u32 ; } } bitflags! { # [doc = "SPIR-V operand kind: [RawAccessChainOperands](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_raw_access_chain_operands_a_raw_access_chain_operands)"] # [derive (Clone , Copy , Debug , PartialEq , Eq , Hash)] # [cfg_attr (feature = "serialize" , derive (serde :: Serialize))] # [cfg_attr (feature = "deserialize" , derive (serde :: Deserialize))] pub struct RawAccessChainOperands : u32 { const NONE = 0u32 ; const ROBUSTNESS_PER_COMPONENT_NV = 1u32 ; const ROBUSTNESS_PER_ELEMENT_NV = 2u32 ; } } #[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)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] pub enum SourceLanguage { Unknown = 0u32, ESSL = 1u32, GLSL = 2u32, OpenCL_C = 3u32, OpenCL_CPP = 4u32, HLSL = 5u32, CPP_for_OpenCL = 6u32, SYCL = 7u32, HERO_C = 8u32, NZSL = 9u32, WGSL = 10u32, Slang = 11u32, Zig = 12u32, Rust = 13u32, } impl SourceLanguage { pub fn from_u32(n: u32) -> Option { Some(match n { 0u32..=13u32 => unsafe { core::mem::transmute::(n) }, _ => return None, }) } } #[allow(non_upper_case_globals)] impl SourceLanguage {} impl core::str::FromStr for SourceLanguage { type Err = (); fn from_str(s: &str) -> Result { Ok(match s { "Unknown" => Self::Unknown, "ESSL" => Self::ESSL, "GLSL" => Self::GLSL, "OpenCL_C" => Self::OpenCL_C, "OpenCL_CPP" => Self::OpenCL_CPP, "HLSL" => Self::HLSL, "CPP_for_OpenCL" => Self::CPP_for_OpenCL, "SYCL" => Self::SYCL, "HERO_C" => Self::HERO_C, "NZSL" => Self::NZSL, "WGSL" => Self::WGSL, "Slang" => Self::Slang, "Zig" => Self::Zig, "Rust" => Self::Rust, _ => return Err(()), }) } } #[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)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] pub enum ExecutionModel { Vertex = 0u32, TessellationControl = 1u32, TessellationEvaluation = 2u32, Geometry = 3u32, Fragment = 4u32, GLCompute = 5u32, Kernel = 6u32, TaskNV = 5267u32, MeshNV = 5268u32, RayGenerationKHR = 5313u32, IntersectionKHR = 5314u32, AnyHitKHR = 5315u32, ClosestHitKHR = 5316u32, MissKHR = 5317u32, CallableKHR = 5318u32, TaskEXT = 5364u32, MeshEXT = 5365u32, } impl ExecutionModel { pub fn from_u32(n: u32) -> Option { Some(match n { 0u32..=6u32 => unsafe { core::mem::transmute::(n) }, 5267u32..=5268u32 => unsafe { core::mem::transmute::(n) }, 5313u32..=5318u32 => unsafe { core::mem::transmute::(n) }, 5364u32..=5365u32 => unsafe { core::mem::transmute::(n) }, _ => return None, }) } } #[allow(non_upper_case_globals)] impl ExecutionModel { pub const RayGenerationNV: Self = Self::RayGenerationKHR; pub const IntersectionNV: Self = Self::IntersectionKHR; pub const AnyHitNV: Self = Self::AnyHitKHR; pub const ClosestHitNV: Self = Self::ClosestHitKHR; pub const MissNV: Self = Self::MissKHR; pub const CallableNV: Self = Self::CallableKHR; } impl core::str::FromStr for ExecutionModel { type Err = (); fn from_str(s: &str) -> Result { Ok(match s { "Vertex" => Self::Vertex, "TessellationControl" => Self::TessellationControl, "TessellationEvaluation" => Self::TessellationEvaluation, "Geometry" => Self::Geometry, "Fragment" => Self::Fragment, "GLCompute" => Self::GLCompute, "Kernel" => Self::Kernel, "TaskNV" => Self::TaskNV, "MeshNV" => Self::MeshNV, "RayGenerationKHR" => Self::RayGenerationKHR, "RayGenerationNV" => Self::RayGenerationKHR, "IntersectionKHR" => Self::IntersectionKHR, "IntersectionNV" => Self::IntersectionKHR, "AnyHitKHR" => Self::AnyHitKHR, "AnyHitNV" => Self::AnyHitKHR, "ClosestHitKHR" => Self::ClosestHitKHR, "ClosestHitNV" => Self::ClosestHitKHR, "MissKHR" => Self::MissKHR, "MissNV" => Self::MissKHR, "CallableKHR" => Self::CallableKHR, "CallableNV" => Self::CallableKHR, "TaskEXT" => Self::TaskEXT, "MeshEXT" => Self::MeshEXT, _ => return Err(()), }) } } #[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)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] pub enum AddressingModel { Logical = 0u32, Physical32 = 1u32, Physical64 = 2u32, PhysicalStorageBuffer64 = 5348u32, } impl AddressingModel { pub fn from_u32(n: u32) -> Option { Some(match n { 0u32..=2u32 => unsafe { core::mem::transmute::(n) }, 5348u32 => unsafe { core::mem::transmute::(5348u32) }, _ => return None, }) } } #[allow(non_upper_case_globals)] impl AddressingModel { pub const PhysicalStorageBuffer64EXT: Self = Self::PhysicalStorageBuffer64; } impl core::str::FromStr for AddressingModel { type Err = (); fn from_str(s: &str) -> Result { Ok(match s { "Logical" => Self::Logical, "Physical32" => Self::Physical32, "Physical64" => Self::Physical64, "PhysicalStorageBuffer64" => Self::PhysicalStorageBuffer64, "PhysicalStorageBuffer64EXT" => Self::PhysicalStorageBuffer64, _ => return Err(()), }) } } #[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)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] pub enum MemoryModel { Simple = 0u32, GLSL450 = 1u32, OpenCL = 2u32, Vulkan = 3u32, } impl MemoryModel { pub fn from_u32(n: u32) -> Option { Some(match n { 0u32..=3u32 => unsafe { core::mem::transmute::(n) }, _ => return None, }) } } #[allow(non_upper_case_globals)] impl MemoryModel { pub const VulkanKHR: Self = Self::Vulkan; } impl core::str::FromStr for MemoryModel { type Err = (); fn from_str(s: &str) -> Result { Ok(match s { "Simple" => Self::Simple, "GLSL450" => Self::GLSL450, "OpenCL" => Self::OpenCL, "Vulkan" => Self::Vulkan, "VulkanKHR" => Self::Vulkan, _ => return Err(()), }) } } #[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)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] 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, NonCoherentColorAttachmentReadEXT = 4169u32, NonCoherentDepthAttachmentReadEXT = 4170u32, NonCoherentStencilAttachmentReadEXT = 4171u32, SubgroupUniformControlFlowKHR = 4421u32, PostDepthCoverage = 4446u32, DenormPreserve = 4459u32, DenormFlushToZero = 4460u32, SignedZeroInfNanPreserve = 4461u32, RoundingModeRTE = 4462u32, RoundingModeRTZ = 4463u32, NonCoherentTileAttachmentReadQCOM = 4489u32, TileShadingRateQCOM = 4490u32, EarlyAndLateFragmentTestsAMD = 5017u32, StencilRefReplacingEXT = 5027u32, CoalescingAMDX = 5069u32, IsApiEntryAMDX = 5070u32, MaxNodeRecursionAMDX = 5071u32, StaticNumWorkgroupsAMDX = 5072u32, ShaderIndexAMDX = 5073u32, MaxNumWorkgroupsAMDX = 5077u32, StencilRefUnchangedFrontAMD = 5079u32, StencilRefGreaterFrontAMD = 5080u32, StencilRefLessFrontAMD = 5081u32, StencilRefUnchangedBackAMD = 5082u32, StencilRefGreaterBackAMD = 5083u32, StencilRefLessBackAMD = 5084u32, QuadDerivativesKHR = 5088u32, RequireFullQuadsKHR = 5089u32, SharesInputWithAMDX = 5102u32, OutputLinesEXT = 5269u32, OutputPrimitivesEXT = 5270u32, DerivativeGroupQuadsKHR = 5289u32, DerivativeGroupLinearKHR = 5290u32, OutputTrianglesEXT = 5298u32, PixelInterlockOrderedEXT = 5366u32, PixelInterlockUnorderedEXT = 5367u32, SampleInterlockOrderedEXT = 5368u32, SampleInterlockUnorderedEXT = 5369u32, ShadingRateInterlockOrderedEXT = 5370u32, ShadingRateInterlockUnorderedEXT = 5371u32, Shader64BitIndexingEXT = 5427u32, SharedLocalMemorySizeINTEL = 5618u32, RoundingModeRTPINTEL = 5620u32, RoundingModeRTNINTEL = 5621u32, FloatingPointModeALTINTEL = 5622u32, FloatingPointModeIEEEINTEL = 5623u32, MaxWorkgroupSizeINTEL = 5893u32, MaxWorkDimINTEL = 5894u32, NoGlobalOffsetINTEL = 5895u32, NumSIMDWorkitemsINTEL = 5896u32, SchedulerTargetFmaxMhzINTEL = 5903u32, MaximallyReconvergesKHR = 6023u32, FPFastMathDefault = 6028u32, StreamingInterfaceINTEL = 6154u32, RegisterMapInterfaceINTEL = 6160u32, NamedBarrierCountINTEL = 6417u32, MaximumRegistersINTEL = 6461u32, MaximumRegistersIdINTEL = 6462u32, NamedMaximumRegistersINTEL = 6463u32, } impl ExecutionMode { pub fn from_u32(n: u32) -> Option { Some(match n { 0u32..=12u32 => unsafe { core::mem::transmute::(n) }, 14u32..=31u32 => unsafe { core::mem::transmute::(n) }, 33u32..=39u32 => unsafe { core::mem::transmute::(n) }, 4169u32..=4171u32 => unsafe { core::mem::transmute::(n) }, 4421u32 => unsafe { core::mem::transmute::(4421u32) }, 4446u32 => unsafe { core::mem::transmute::(4446u32) }, 4459u32..=4463u32 => unsafe { core::mem::transmute::(n) }, 4489u32..=4490u32 => unsafe { core::mem::transmute::(n) }, 5017u32 => unsafe { core::mem::transmute::(5017u32) }, 5027u32 => unsafe { core::mem::transmute::(5027u32) }, 5069u32..=5073u32 => unsafe { core::mem::transmute::(n) }, 5077u32 => unsafe { core::mem::transmute::(5077u32) }, 5079u32..=5084u32 => unsafe { core::mem::transmute::(n) }, 5088u32..=5089u32 => unsafe { core::mem::transmute::(n) }, 5102u32 => unsafe { core::mem::transmute::(5102u32) }, 5269u32..=5270u32 => unsafe { core::mem::transmute::(n) }, 5289u32..=5290u32 => unsafe { core::mem::transmute::(n) }, 5298u32 => unsafe { core::mem::transmute::(5298u32) }, 5366u32..=5371u32 => unsafe { core::mem::transmute::(n) }, 5427u32 => unsafe { core::mem::transmute::(5427u32) }, 5618u32 => unsafe { core::mem::transmute::(5618u32) }, 5620u32..=5623u32 => unsafe { core::mem::transmute::(n) }, 5893u32..=5896u32 => unsafe { core::mem::transmute::(n) }, 5903u32 => unsafe { core::mem::transmute::(5903u32) }, 6023u32 => unsafe { core::mem::transmute::(6023u32) }, 6028u32 => unsafe { core::mem::transmute::(6028u32) }, 6154u32 => unsafe { core::mem::transmute::(6154u32) }, 6160u32 => unsafe { core::mem::transmute::(6160u32) }, 6417u32 => unsafe { core::mem::transmute::(6417u32) }, 6461u32..=6463u32 => unsafe { core::mem::transmute::(n) }, _ => return None, }) } } #[allow(non_upper_case_globals)] impl ExecutionMode { pub const OutputLinesNV: Self = Self::OutputLinesEXT; pub const OutputPrimitivesNV: Self = Self::OutputPrimitivesEXT; pub const DerivativeGroupQuadsNV: Self = Self::DerivativeGroupQuadsKHR; pub const DerivativeGroupLinearNV: Self = Self::DerivativeGroupLinearKHR; pub const OutputTrianglesNV: Self = Self::OutputTrianglesEXT; } impl core::str::FromStr for ExecutionMode { type Err = (); fn from_str(s: &str) -> Result { Ok(match s { "Invocations" => Self::Invocations, "SpacingEqual" => Self::SpacingEqual, "SpacingFractionalEven" => Self::SpacingFractionalEven, "SpacingFractionalOdd" => Self::SpacingFractionalOdd, "VertexOrderCw" => Self::VertexOrderCw, "VertexOrderCcw" => Self::VertexOrderCcw, "PixelCenterInteger" => Self::PixelCenterInteger, "OriginUpperLeft" => Self::OriginUpperLeft, "OriginLowerLeft" => Self::OriginLowerLeft, "EarlyFragmentTests" => Self::EarlyFragmentTests, "PointMode" => Self::PointMode, "Xfb" => Self::Xfb, "DepthReplacing" => Self::DepthReplacing, "DepthGreater" => Self::DepthGreater, "DepthLess" => Self::DepthLess, "DepthUnchanged" => Self::DepthUnchanged, "LocalSize" => Self::LocalSize, "LocalSizeHint" => Self::LocalSizeHint, "InputPoints" => Self::InputPoints, "InputLines" => Self::InputLines, "InputLinesAdjacency" => Self::InputLinesAdjacency, "Triangles" => Self::Triangles, "InputTrianglesAdjacency" => Self::InputTrianglesAdjacency, "Quads" => Self::Quads, "Isolines" => Self::Isolines, "OutputVertices" => Self::OutputVertices, "OutputPoints" => Self::OutputPoints, "OutputLineStrip" => Self::OutputLineStrip, "OutputTriangleStrip" => Self::OutputTriangleStrip, "VecTypeHint" => Self::VecTypeHint, "ContractionOff" => Self::ContractionOff, "Initializer" => Self::Initializer, "Finalizer" => Self::Finalizer, "SubgroupSize" => Self::SubgroupSize, "SubgroupsPerWorkgroup" => Self::SubgroupsPerWorkgroup, "SubgroupsPerWorkgroupId" => Self::SubgroupsPerWorkgroupId, "LocalSizeId" => Self::LocalSizeId, "LocalSizeHintId" => Self::LocalSizeHintId, "NonCoherentColorAttachmentReadEXT" => Self::NonCoherentColorAttachmentReadEXT, "NonCoherentDepthAttachmentReadEXT" => Self::NonCoherentDepthAttachmentReadEXT, "NonCoherentStencilAttachmentReadEXT" => Self::NonCoherentStencilAttachmentReadEXT, "SubgroupUniformControlFlowKHR" => Self::SubgroupUniformControlFlowKHR, "PostDepthCoverage" => Self::PostDepthCoverage, "DenormPreserve" => Self::DenormPreserve, "DenormFlushToZero" => Self::DenormFlushToZero, "SignedZeroInfNanPreserve" => Self::SignedZeroInfNanPreserve, "RoundingModeRTE" => Self::RoundingModeRTE, "RoundingModeRTZ" => Self::RoundingModeRTZ, "NonCoherentTileAttachmentReadQCOM" => Self::NonCoherentTileAttachmentReadQCOM, "TileShadingRateQCOM" => Self::TileShadingRateQCOM, "EarlyAndLateFragmentTestsAMD" => Self::EarlyAndLateFragmentTestsAMD, "StencilRefReplacingEXT" => Self::StencilRefReplacingEXT, "CoalescingAMDX" => Self::CoalescingAMDX, "IsApiEntryAMDX" => Self::IsApiEntryAMDX, "MaxNodeRecursionAMDX" => Self::MaxNodeRecursionAMDX, "StaticNumWorkgroupsAMDX" => Self::StaticNumWorkgroupsAMDX, "ShaderIndexAMDX" => Self::ShaderIndexAMDX, "MaxNumWorkgroupsAMDX" => Self::MaxNumWorkgroupsAMDX, "StencilRefUnchangedFrontAMD" => Self::StencilRefUnchangedFrontAMD, "StencilRefGreaterFrontAMD" => Self::StencilRefGreaterFrontAMD, "StencilRefLessFrontAMD" => Self::StencilRefLessFrontAMD, "StencilRefUnchangedBackAMD" => Self::StencilRefUnchangedBackAMD, "StencilRefGreaterBackAMD" => Self::StencilRefGreaterBackAMD, "StencilRefLessBackAMD" => Self::StencilRefLessBackAMD, "QuadDerivativesKHR" => Self::QuadDerivativesKHR, "RequireFullQuadsKHR" => Self::RequireFullQuadsKHR, "SharesInputWithAMDX" => Self::SharesInputWithAMDX, "OutputLinesEXT" => Self::OutputLinesEXT, "OutputLinesNV" => Self::OutputLinesEXT, "OutputPrimitivesEXT" => Self::OutputPrimitivesEXT, "OutputPrimitivesNV" => Self::OutputPrimitivesEXT, "DerivativeGroupQuadsKHR" => Self::DerivativeGroupQuadsKHR, "DerivativeGroupQuadsNV" => Self::DerivativeGroupQuadsKHR, "DerivativeGroupLinearKHR" => Self::DerivativeGroupLinearKHR, "DerivativeGroupLinearNV" => Self::DerivativeGroupLinearKHR, "OutputTrianglesEXT" => Self::OutputTrianglesEXT, "OutputTrianglesNV" => Self::OutputTrianglesEXT, "PixelInterlockOrderedEXT" => Self::PixelInterlockOrderedEXT, "PixelInterlockUnorderedEXT" => Self::PixelInterlockUnorderedEXT, "SampleInterlockOrderedEXT" => Self::SampleInterlockOrderedEXT, "SampleInterlockUnorderedEXT" => Self::SampleInterlockUnorderedEXT, "ShadingRateInterlockOrderedEXT" => Self::ShadingRateInterlockOrderedEXT, "ShadingRateInterlockUnorderedEXT" => Self::ShadingRateInterlockUnorderedEXT, "Shader64BitIndexingEXT" => Self::Shader64BitIndexingEXT, "SharedLocalMemorySizeINTEL" => Self::SharedLocalMemorySizeINTEL, "RoundingModeRTPINTEL" => Self::RoundingModeRTPINTEL, "RoundingModeRTNINTEL" => Self::RoundingModeRTNINTEL, "FloatingPointModeALTINTEL" => Self::FloatingPointModeALTINTEL, "FloatingPointModeIEEEINTEL" => Self::FloatingPointModeIEEEINTEL, "MaxWorkgroupSizeINTEL" => Self::MaxWorkgroupSizeINTEL, "MaxWorkDimINTEL" => Self::MaxWorkDimINTEL, "NoGlobalOffsetINTEL" => Self::NoGlobalOffsetINTEL, "NumSIMDWorkitemsINTEL" => Self::NumSIMDWorkitemsINTEL, "SchedulerTargetFmaxMhzINTEL" => Self::SchedulerTargetFmaxMhzINTEL, "MaximallyReconvergesKHR" => Self::MaximallyReconvergesKHR, "FPFastMathDefault" => Self::FPFastMathDefault, "StreamingInterfaceINTEL" => Self::StreamingInterfaceINTEL, "RegisterMapInterfaceINTEL" => Self::RegisterMapInterfaceINTEL, "NamedBarrierCountINTEL" => Self::NamedBarrierCountINTEL, "MaximumRegistersINTEL" => Self::MaximumRegistersINTEL, "MaximumRegistersIdINTEL" => Self::MaximumRegistersIdINTEL, "NamedMaximumRegistersINTEL" => Self::NamedMaximumRegistersINTEL, _ => return Err(()), }) } } #[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)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] 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, TileImageEXT = 4172u32, TileAttachmentQCOM = 4491u32, NodePayloadAMDX = 5068u32, CallableDataKHR = 5328u32, IncomingCallableDataKHR = 5329u32, RayPayloadKHR = 5338u32, HitAttributeKHR = 5339u32, IncomingRayPayloadKHR = 5342u32, ShaderRecordBufferKHR = 5343u32, PhysicalStorageBuffer = 5349u32, HitObjectAttributeNV = 5385u32, TaskPayloadWorkgroupEXT = 5402u32, HitObjectAttributeEXT = 5411u32, CodeSectionINTEL = 5605u32, DeviceOnlyALTERA = 5936u32, HostOnlyALTERA = 5937u32, } impl StorageClass { pub fn from_u32(n: u32) -> Option { Some(match n { 0u32..=12u32 => unsafe { core::mem::transmute::(n) }, 4172u32 => unsafe { core::mem::transmute::(4172u32) }, 4491u32 => unsafe { core::mem::transmute::(4491u32) }, 5068u32 => unsafe { core::mem::transmute::(5068u32) }, 5328u32..=5329u32 => unsafe { core::mem::transmute::(n) }, 5338u32..=5339u32 => unsafe { core::mem::transmute::(n) }, 5342u32..=5343u32 => unsafe { core::mem::transmute::(n) }, 5349u32 => unsafe { core::mem::transmute::(5349u32) }, 5385u32 => unsafe { core::mem::transmute::(5385u32) }, 5402u32 => unsafe { core::mem::transmute::(5402u32) }, 5411u32 => unsafe { core::mem::transmute::(5411u32) }, 5605u32 => unsafe { core::mem::transmute::(5605u32) }, 5936u32..=5937u32 => unsafe { core::mem::transmute::(n) }, _ => return None, }) } } #[allow(non_upper_case_globals)] impl StorageClass { pub const CallableDataNV: Self = Self::CallableDataKHR; pub const IncomingCallableDataNV: Self = Self::IncomingCallableDataKHR; pub const RayPayloadNV: Self = Self::RayPayloadKHR; pub const HitAttributeNV: Self = Self::HitAttributeKHR; pub const IncomingRayPayloadNV: Self = Self::IncomingRayPayloadKHR; pub const ShaderRecordBufferNV: Self = Self::ShaderRecordBufferKHR; pub const PhysicalStorageBufferEXT: Self = Self::PhysicalStorageBuffer; pub const DeviceOnlyINTEL: Self = Self::DeviceOnlyALTERA; pub const HostOnlyINTEL: Self = Self::HostOnlyALTERA; } impl core::str::FromStr for StorageClass { type Err = (); fn from_str(s: &str) -> Result { Ok(match s { "UniformConstant" => Self::UniformConstant, "Input" => Self::Input, "Uniform" => Self::Uniform, "Output" => Self::Output, "Workgroup" => Self::Workgroup, "CrossWorkgroup" => Self::CrossWorkgroup, "Private" => Self::Private, "Function" => Self::Function, "Generic" => Self::Generic, "PushConstant" => Self::PushConstant, "AtomicCounter" => Self::AtomicCounter, "Image" => Self::Image, "StorageBuffer" => Self::StorageBuffer, "TileImageEXT" => Self::TileImageEXT, "TileAttachmentQCOM" => Self::TileAttachmentQCOM, "NodePayloadAMDX" => Self::NodePayloadAMDX, "CallableDataKHR" => Self::CallableDataKHR, "CallableDataNV" => Self::CallableDataKHR, "IncomingCallableDataKHR" => Self::IncomingCallableDataKHR, "IncomingCallableDataNV" => Self::IncomingCallableDataKHR, "RayPayloadKHR" => Self::RayPayloadKHR, "RayPayloadNV" => Self::RayPayloadKHR, "HitAttributeKHR" => Self::HitAttributeKHR, "HitAttributeNV" => Self::HitAttributeKHR, "IncomingRayPayloadKHR" => Self::IncomingRayPayloadKHR, "IncomingRayPayloadNV" => Self::IncomingRayPayloadKHR, "ShaderRecordBufferKHR" => Self::ShaderRecordBufferKHR, "ShaderRecordBufferNV" => Self::ShaderRecordBufferKHR, "PhysicalStorageBuffer" => Self::PhysicalStorageBuffer, "PhysicalStorageBufferEXT" => Self::PhysicalStorageBuffer, "HitObjectAttributeNV" => Self::HitObjectAttributeNV, "TaskPayloadWorkgroupEXT" => Self::TaskPayloadWorkgroupEXT, "HitObjectAttributeEXT" => Self::HitObjectAttributeEXT, "CodeSectionINTEL" => Self::CodeSectionINTEL, "DeviceOnlyALTERA" => Self::DeviceOnlyALTERA, "DeviceOnlyINTEL" => Self::DeviceOnlyALTERA, "HostOnlyALTERA" => Self::HostOnlyALTERA, "HostOnlyINTEL" => Self::HostOnlyALTERA, _ => return Err(()), }) } } #[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)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] pub enum Dim { Dim1D = 0u32, Dim2D = 1u32, Dim3D = 2u32, DimCube = 3u32, DimRect = 4u32, DimBuffer = 5u32, DimSubpassData = 6u32, DimTileImageDataEXT = 4173u32, } impl Dim { pub fn from_u32(n: u32) -> Option { Some(match n { 0u32..=6u32 => unsafe { core::mem::transmute::(n) }, 4173u32 => unsafe { core::mem::transmute::(4173u32) }, _ => return None, }) } } #[allow(non_upper_case_globals)] impl Dim {} impl core::str::FromStr for Dim { type Err = (); fn from_str(s: &str) -> Result { Ok(match s { "Dim1D" => Self::Dim1D, "Dim2D" => Self::Dim2D, "Dim3D" => Self::Dim3D, "DimCube" => Self::DimCube, "DimRect" => Self::DimRect, "DimBuffer" => Self::DimBuffer, "DimSubpassData" => Self::DimSubpassData, "DimTileImageDataEXT" => Self::DimTileImageDataEXT, _ => return Err(()), }) } } #[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)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] pub enum SamplerAddressingMode { None = 0u32, ClampToEdge = 1u32, Clamp = 2u32, Repeat = 3u32, RepeatMirrored = 4u32, } impl SamplerAddressingMode { pub fn from_u32(n: u32) -> Option { Some(match n { 0u32..=4u32 => unsafe { core::mem::transmute::(n) }, _ => return None, }) } } #[allow(non_upper_case_globals)] impl SamplerAddressingMode {} impl core::str::FromStr for SamplerAddressingMode { type Err = (); fn from_str(s: &str) -> Result { Ok(match s { "None" => Self::None, "ClampToEdge" => Self::ClampToEdge, "Clamp" => Self::Clamp, "Repeat" => Self::Repeat, "RepeatMirrored" => Self::RepeatMirrored, _ => return Err(()), }) } } #[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)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] pub enum SamplerFilterMode { Nearest = 0u32, Linear = 1u32, } impl SamplerFilterMode { pub fn from_u32(n: u32) -> Option { Some(match n { 0u32..=1u32 => unsafe { core::mem::transmute::(n) }, _ => return None, }) } } #[allow(non_upper_case_globals)] impl SamplerFilterMode {} impl core::str::FromStr for SamplerFilterMode { type Err = (); fn from_str(s: &str) -> Result { Ok(match s { "Nearest" => Self::Nearest, "Linear" => Self::Linear, _ => return Err(()), }) } } #[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)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] 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, R64ui = 40u32, R64i = 41u32, } impl ImageFormat { pub fn from_u32(n: u32) -> Option { Some(match n { 0u32..=41u32 => unsafe { core::mem::transmute::(n) }, _ => return None, }) } } #[allow(non_upper_case_globals)] impl ImageFormat {} impl core::str::FromStr for ImageFormat { type Err = (); fn from_str(s: &str) -> Result { Ok(match s { "Unknown" => Self::Unknown, "Rgba32f" => Self::Rgba32f, "Rgba16f" => Self::Rgba16f, "R32f" => Self::R32f, "Rgba8" => Self::Rgba8, "Rgba8Snorm" => Self::Rgba8Snorm, "Rg32f" => Self::Rg32f, "Rg16f" => Self::Rg16f, "R11fG11fB10f" => Self::R11fG11fB10f, "R16f" => Self::R16f, "Rgba16" => Self::Rgba16, "Rgb10A2" => Self::Rgb10A2, "Rg16" => Self::Rg16, "Rg8" => Self::Rg8, "R16" => Self::R16, "R8" => Self::R8, "Rgba16Snorm" => Self::Rgba16Snorm, "Rg16Snorm" => Self::Rg16Snorm, "Rg8Snorm" => Self::Rg8Snorm, "R16Snorm" => Self::R16Snorm, "R8Snorm" => Self::R8Snorm, "Rgba32i" => Self::Rgba32i, "Rgba16i" => Self::Rgba16i, "Rgba8i" => Self::Rgba8i, "R32i" => Self::R32i, "Rg32i" => Self::Rg32i, "Rg16i" => Self::Rg16i, "Rg8i" => Self::Rg8i, "R16i" => Self::R16i, "R8i" => Self::R8i, "Rgba32ui" => Self::Rgba32ui, "Rgba16ui" => Self::Rgba16ui, "Rgba8ui" => Self::Rgba8ui, "R32ui" => Self::R32ui, "Rgb10a2ui" => Self::Rgb10a2ui, "Rg32ui" => Self::Rg32ui, "Rg16ui" => Self::Rg16ui, "Rg8ui" => Self::Rg8ui, "R16ui" => Self::R16ui, "R8ui" => Self::R8ui, "R64ui" => Self::R64ui, "R64i" => Self::R64i, _ => return Err(()), }) } } #[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)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] 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, } impl ImageChannelOrder { pub fn from_u32(n: u32) -> Option { Some(match n { 0u32..=19u32 => unsafe { core::mem::transmute::(n) }, _ => return None, }) } } #[allow(non_upper_case_globals)] impl ImageChannelOrder {} impl core::str::FromStr for ImageChannelOrder { type Err = (); fn from_str(s: &str) -> Result { Ok(match s { "R" => Self::R, "A" => Self::A, "RG" => Self::RG, "RA" => Self::RA, "RGB" => Self::RGB, "RGBA" => Self::RGBA, "BGRA" => Self::BGRA, "ARGB" => Self::ARGB, "Intensity" => Self::Intensity, "Luminance" => Self::Luminance, "Rx" => Self::Rx, "RGx" => Self::RGx, "RGBx" => Self::RGBx, "Depth" => Self::Depth, "DepthStencil" => Self::DepthStencil, "sRGB" => Self::sRGB, "sRGBx" => Self::sRGBx, "sRGBA" => Self::sRGBA, "sBGRA" => Self::sBGRA, "ABGR" => Self::ABGR, _ => return Err(()), }) } } #[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)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] 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, UnormInt10X6EXT = 17u32, UnsignedIntRaw10EXT = 19u32, UnsignedIntRaw12EXT = 20u32, UnormInt2_101010EXT = 21u32, UnsignedInt10X6EXT = 22u32, UnsignedInt12X4EXT = 23u32, UnsignedInt14X2EXT = 24u32, UnormInt12X4EXT = 25u32, UnormInt14X2EXT = 26u32, } impl ImageChannelDataType { pub fn from_u32(n: u32) -> Option { Some(match n { 0u32..=17u32 => unsafe { core::mem::transmute::(n) }, 19u32..=26u32 => unsafe { core::mem::transmute::(n) }, _ => return None, }) } } #[allow(non_upper_case_globals)] impl ImageChannelDataType {} impl core::str::FromStr for ImageChannelDataType { type Err = (); fn from_str(s: &str) -> Result { Ok(match s { "SnormInt8" => Self::SnormInt8, "SnormInt16" => Self::SnormInt16, "UnormInt8" => Self::UnormInt8, "UnormInt16" => Self::UnormInt16, "UnormShort565" => Self::UnormShort565, "UnormShort555" => Self::UnormShort555, "UnormInt101010" => Self::UnormInt101010, "SignedInt8" => Self::SignedInt8, "SignedInt16" => Self::SignedInt16, "SignedInt32" => Self::SignedInt32, "UnsignedInt8" => Self::UnsignedInt8, "UnsignedInt16" => Self::UnsignedInt16, "UnsignedInt32" => Self::UnsignedInt32, "HalfFloat" => Self::HalfFloat, "Float" => Self::Float, "UnormInt24" => Self::UnormInt24, "UnormInt101010_2" => Self::UnormInt101010_2, "UnormInt10X6EXT" => Self::UnormInt10X6EXT, "UnsignedIntRaw10EXT" => Self::UnsignedIntRaw10EXT, "UnsignedIntRaw12EXT" => Self::UnsignedIntRaw12EXT, "UnormInt2_101010EXT" => Self::UnormInt2_101010EXT, "UnsignedInt10X6EXT" => Self::UnsignedInt10X6EXT, "UnsignedInt12X4EXT" => Self::UnsignedInt12X4EXT, "UnsignedInt14X2EXT" => Self::UnsignedInt14X2EXT, "UnormInt12X4EXT" => Self::UnormInt12X4EXT, "UnormInt14X2EXT" => Self::UnormInt14X2EXT, _ => return Err(()), }) } } #[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)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] pub enum FPRoundingMode { RTE = 0u32, RTZ = 1u32, RTP = 2u32, RTN = 3u32, } impl FPRoundingMode { pub fn from_u32(n: u32) -> Option { Some(match n { 0u32..=3u32 => unsafe { core::mem::transmute::(n) }, _ => return None, }) } } #[allow(non_upper_case_globals)] impl FPRoundingMode {} impl core::str::FromStr for FPRoundingMode { type Err = (); fn from_str(s: &str) -> Result { Ok(match s { "RTE" => Self::RTE, "RTZ" => Self::RTZ, "RTP" => Self::RTP, "RTN" => Self::RTN, _ => return Err(()), }) } } #[doc = "SPIR-V operand kind: [FPDenormMode](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_fp_denorm_mode_a_fp_denorm_mode)"] #[repr(u32)] #[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] pub enum FPDenormMode { Preserve = 0u32, FlushToZero = 1u32, } impl FPDenormMode { pub fn from_u32(n: u32) -> Option { Some(match n { 0u32..=1u32 => unsafe { core::mem::transmute::(n) }, _ => return None, }) } } #[allow(non_upper_case_globals)] impl FPDenormMode {} impl core::str::FromStr for FPDenormMode { type Err = (); fn from_str(s: &str) -> Result { Ok(match s { "Preserve" => Self::Preserve, "FlushToZero" => Self::FlushToZero, _ => return Err(()), }) } } #[doc = "SPIR-V operand kind: [QuantizationModes](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_quantization_modes_a_quantization_modes)"] #[repr(u32)] #[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] pub enum QuantizationModes { TRN = 0u32, TRN_ZERO = 1u32, RND = 2u32, RND_ZERO = 3u32, RND_INF = 4u32, RND_MIN_INF = 5u32, RND_CONV = 6u32, RND_CONV_ODD = 7u32, } impl QuantizationModes { pub fn from_u32(n: u32) -> Option { Some(match n { 0u32..=7u32 => unsafe { core::mem::transmute::(n) }, _ => return None, }) } } #[allow(non_upper_case_globals)] impl QuantizationModes {} impl core::str::FromStr for QuantizationModes { type Err = (); fn from_str(s: &str) -> Result { Ok(match s { "TRN" => Self::TRN, "TRN_ZERO" => Self::TRN_ZERO, "RND" => Self::RND, "RND_ZERO" => Self::RND_ZERO, "RND_INF" => Self::RND_INF, "RND_MIN_INF" => Self::RND_MIN_INF, "RND_CONV" => Self::RND_CONV, "RND_CONV_ODD" => Self::RND_CONV_ODD, _ => return Err(()), }) } } #[doc = "SPIR-V operand kind: [FPOperationMode](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_fp_operation_mode_a_fp_operation_mode)"] #[repr(u32)] #[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] pub enum FPOperationMode { IEEE = 0u32, ALT = 1u32, } impl FPOperationMode { pub fn from_u32(n: u32) -> Option { Some(match n { 0u32..=1u32 => unsafe { core::mem::transmute::(n) }, _ => return None, }) } } #[allow(non_upper_case_globals)] impl FPOperationMode {} impl core::str::FromStr for FPOperationMode { type Err = (); fn from_str(s: &str) -> Result { Ok(match s { "IEEE" => Self::IEEE, "ALT" => Self::ALT, _ => return Err(()), }) } } #[doc = "SPIR-V operand kind: [OverflowModes](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_overflow_modes_a_overflow_modes)"] #[repr(u32)] #[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] pub enum OverflowModes { WRAP = 0u32, SAT = 1u32, SAT_ZERO = 2u32, SAT_SYM = 3u32, } impl OverflowModes { pub fn from_u32(n: u32) -> Option { Some(match n { 0u32..=3u32 => unsafe { core::mem::transmute::(n) }, _ => return None, }) } } #[allow(non_upper_case_globals)] impl OverflowModes {} impl core::str::FromStr for OverflowModes { type Err = (); fn from_str(s: &str) -> Result { Ok(match s { "WRAP" => Self::WRAP, "SAT" => Self::SAT, "SAT_ZERO" => Self::SAT_ZERO, "SAT_SYM" => Self::SAT_SYM, _ => return Err(()), }) } } #[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)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] pub enum LinkageType { Export = 0u32, Import = 1u32, LinkOnceODR = 2u32, } impl LinkageType { pub fn from_u32(n: u32) -> Option { Some(match n { 0u32..=2u32 => unsafe { core::mem::transmute::(n) }, _ => return None, }) } } #[allow(non_upper_case_globals)] impl LinkageType {} impl core::str::FromStr for LinkageType { type Err = (); fn from_str(s: &str) -> Result { Ok(match s { "Export" => Self::Export, "Import" => Self::Import, "LinkOnceODR" => Self::LinkOnceODR, _ => return Err(()), }) } } #[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)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] pub enum AccessQualifier { ReadOnly = 0u32, WriteOnly = 1u32, ReadWrite = 2u32, } impl AccessQualifier { pub fn from_u32(n: u32) -> Option { Some(match n { 0u32..=2u32 => unsafe { core::mem::transmute::(n) }, _ => return None, }) } } #[allow(non_upper_case_globals)] impl AccessQualifier {} impl core::str::FromStr for AccessQualifier { type Err = (); fn from_str(s: &str) -> Result { Ok(match s { "ReadOnly" => Self::ReadOnly, "WriteOnly" => Self::WriteOnly, "ReadWrite" => Self::ReadWrite, _ => return Err(()), }) } } #[doc = "SPIR-V operand kind: [HostAccessQualifier](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_host_access_qualifier_a_host_access_qualifier)"] #[repr(u32)] #[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] pub enum HostAccessQualifier { NoneINTEL = 0u32, ReadINTEL = 1u32, WriteINTEL = 2u32, ReadWriteINTEL = 3u32, } impl HostAccessQualifier { pub fn from_u32(n: u32) -> Option { Some(match n { 0u32..=3u32 => unsafe { core::mem::transmute::(n) }, _ => return None, }) } } #[allow(non_upper_case_globals)] impl HostAccessQualifier {} impl core::str::FromStr for HostAccessQualifier { type Err = (); fn from_str(s: &str) -> Result { Ok(match s { "NoneINTEL" => Self::NoneINTEL, "ReadINTEL" => Self::ReadINTEL, "WriteINTEL" => Self::WriteINTEL, "ReadWriteINTEL" => Self::ReadWriteINTEL, _ => return Err(()), }) } } #[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)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] pub enum FunctionParameterAttribute { Zext = 0u32, Sext = 1u32, ByVal = 2u32, Sret = 3u32, NoAlias = 4u32, NoCapture = 5u32, NoWrite = 6u32, NoReadWrite = 7u32, RuntimeAlignedALTERA = 5940u32, } impl FunctionParameterAttribute { pub fn from_u32(n: u32) -> Option { Some(match n { 0u32..=7u32 => unsafe { core::mem::transmute::(n) }, 5940u32 => unsafe { core::mem::transmute::(5940u32) }, _ => return None, }) } } #[allow(non_upper_case_globals)] impl FunctionParameterAttribute { pub const RuntimeAlignedINTEL: Self = Self::RuntimeAlignedALTERA; } impl core::str::FromStr for FunctionParameterAttribute { type Err = (); fn from_str(s: &str) -> Result { Ok(match s { "Zext" => Self::Zext, "Sext" => Self::Sext, "ByVal" => Self::ByVal, "Sret" => Self::Sret, "NoAlias" => Self::NoAlias, "NoCapture" => Self::NoCapture, "NoWrite" => Self::NoWrite, "NoReadWrite" => Self::NoReadWrite, "RuntimeAlignedALTERA" => Self::RuntimeAlignedALTERA, "RuntimeAlignedINTEL" => Self::RuntimeAlignedALTERA, _ => return Err(()), }) } } #[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)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] 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, SaturatedToLargestFloat8NormalConversionEXT = 4216u32, NoSignedWrap = 4469u32, NoUnsignedWrap = 4470u32, WeightTextureQCOM = 4487u32, BlockMatchTextureQCOM = 4488u32, BlockMatchSamplerQCOM = 4499u32, ExplicitInterpAMD = 4999u32, NodeSharesPayloadLimitsWithAMDX = 5019u32, NodeMaxPayloadsAMDX = 5020u32, TrackFinishWritingAMDX = 5078u32, PayloadNodeNameAMDX = 5091u32, PayloadNodeBaseIndexAMDX = 5098u32, PayloadNodeSparseArrayAMDX = 5099u32, PayloadNodeArraySizeAMDX = 5100u32, PayloadDispatchIndirectAMDX = 5105u32, ArrayStrideIdEXT = 5124u32, OffsetIdEXT = 5125u32, OverrideCoverageNV = 5248u32, PassthroughNV = 5250u32, ViewportRelativeNV = 5252u32, SecondaryViewportRelativeNV = 5256u32, PerPrimitiveEXT = 5271u32, PerViewNV = 5272u32, PerTaskNV = 5273u32, PerVertexKHR = 5285u32, NonUniform = 5300u32, RestrictPointer = 5355u32, AliasedPointer = 5356u32, MemberOffsetNV = 5358u32, HitObjectShaderRecordBufferNV = 5386u32, HitObjectShaderRecordBufferEXT = 5389u32, BankNV = 5397u32, BindlessSamplerNV = 5398u32, BindlessImageNV = 5399u32, BoundSamplerNV = 5400u32, BoundImageNV = 5401u32, SIMTCallINTEL = 5599u32, ReferencedIndirectlyINTEL = 5602u32, ClobberINTEL = 5607u32, SideEffectsINTEL = 5608u32, VectorComputeVariableINTEL = 5624u32, FuncParamIOKindINTEL = 5625u32, VectorComputeFunctionINTEL = 5626u32, StackCallINTEL = 5627u32, GlobalVariableOffsetINTEL = 5628u32, CounterBuffer = 5634u32, UserSemantic = 5635u32, UserTypeGOOGLE = 5636u32, FunctionRoundingModeINTEL = 5822u32, FunctionDenormModeINTEL = 5823u32, RegisterALTERA = 5825u32, MemoryALTERA = 5826u32, NumbanksALTERA = 5827u32, BankwidthALTERA = 5828u32, MaxPrivateCopiesALTERA = 5829u32, SinglepumpALTERA = 5830u32, DoublepumpALTERA = 5831u32, MaxReplicatesALTERA = 5832u32, SimpleDualPortALTERA = 5833u32, MergeALTERA = 5834u32, BankBitsALTERA = 5835u32, ForcePow2DepthALTERA = 5836u32, StridesizeALTERA = 5883u32, WordsizeALTERA = 5884u32, TrueDualPortALTERA = 5885u32, BurstCoalesceALTERA = 5899u32, CacheSizeALTERA = 5900u32, DontStaticallyCoalesceALTERA = 5901u32, PrefetchALTERA = 5902u32, StallEnableALTERA = 5905u32, FuseLoopsInFunctionALTERA = 5907u32, MathOpDSPModeALTERA = 5909u32, AliasScopeINTEL = 5914u32, NoAliasINTEL = 5915u32, InitiationIntervalALTERA = 5917u32, MaxConcurrencyALTERA = 5918u32, PipelineEnableALTERA = 5919u32, BufferLocationALTERA = 5921u32, IOPipeStorageALTERA = 5944u32, FunctionFloatingPointModeINTEL = 6080u32, SingleElementVectorINTEL = 6085u32, VectorComputeCallableFunctionINTEL = 6087u32, MediaBlockIOINTEL = 6140u32, StallFreeALTERA = 6151u32, FPMaxErrorDecorationINTEL = 6170u32, LatencyControlLabelALTERA = 6172u32, LatencyControlConstraintALTERA = 6173u32, ConduitKernelArgumentALTERA = 6175u32, RegisterMapKernelArgumentALTERA = 6176u32, MMHostInterfaceAddressWidthALTERA = 6177u32, MMHostInterfaceDataWidthALTERA = 6178u32, MMHostInterfaceLatencyALTERA = 6179u32, MMHostInterfaceReadWriteModeALTERA = 6180u32, MMHostInterfaceMaxBurstALTERA = 6181u32, MMHostInterfaceWaitRequestALTERA = 6182u32, StableKernelArgumentALTERA = 6183u32, HostAccessINTEL = 6188u32, InitModeALTERA = 6190u32, ImplementInRegisterMapALTERA = 6191u32, ConditionalINTEL = 6247u32, CacheControlLoadINTEL = 6442u32, CacheControlStoreINTEL = 6443u32, } impl Decoration { pub fn from_u32(n: u32) -> Option { Some(match n { 0u32..=11u32 => unsafe { core::mem::transmute::(n) }, 13u32..=47u32 => unsafe { core::mem::transmute::(n) }, 4216u32 => unsafe { core::mem::transmute::(4216u32) }, 4469u32..=4470u32 => unsafe { core::mem::transmute::(n) }, 4487u32..=4488u32 => unsafe { core::mem::transmute::(n) }, 4499u32 => unsafe { core::mem::transmute::(4499u32) }, 4999u32 => unsafe { core::mem::transmute::(4999u32) }, 5019u32..=5020u32 => unsafe { core::mem::transmute::(n) }, 5078u32 => unsafe { core::mem::transmute::(5078u32) }, 5091u32 => unsafe { core::mem::transmute::(5091u32) }, 5098u32..=5100u32 => unsafe { core::mem::transmute::(n) }, 5105u32 => unsafe { core::mem::transmute::(5105u32) }, 5124u32..=5125u32 => unsafe { core::mem::transmute::(n) }, 5248u32 => unsafe { core::mem::transmute::(5248u32) }, 5250u32 => unsafe { core::mem::transmute::(5250u32) }, 5252u32 => unsafe { core::mem::transmute::(5252u32) }, 5256u32 => unsafe { core::mem::transmute::(5256u32) }, 5271u32..=5273u32 => unsafe { core::mem::transmute::(n) }, 5285u32 => unsafe { core::mem::transmute::(5285u32) }, 5300u32 => unsafe { core::mem::transmute::(5300u32) }, 5355u32..=5356u32 => unsafe { core::mem::transmute::(n) }, 5358u32 => unsafe { core::mem::transmute::(5358u32) }, 5386u32 => unsafe { core::mem::transmute::(5386u32) }, 5389u32 => unsafe { core::mem::transmute::(5389u32) }, 5397u32..=5401u32 => unsafe { core::mem::transmute::(n) }, 5599u32 => unsafe { core::mem::transmute::(5599u32) }, 5602u32 => unsafe { core::mem::transmute::(5602u32) }, 5607u32..=5608u32 => unsafe { core::mem::transmute::(n) }, 5624u32..=5628u32 => unsafe { core::mem::transmute::(n) }, 5634u32..=5636u32 => unsafe { core::mem::transmute::(n) }, 5822u32..=5823u32 => unsafe { core::mem::transmute::(n) }, 5825u32..=5836u32 => unsafe { core::mem::transmute::(n) }, 5883u32..=5885u32 => unsafe { core::mem::transmute::(n) }, 5899u32..=5902u32 => unsafe { core::mem::transmute::(n) }, 5905u32 => unsafe { core::mem::transmute::(5905u32) }, 5907u32 => unsafe { core::mem::transmute::(5907u32) }, 5909u32 => unsafe { core::mem::transmute::(5909u32) }, 5914u32..=5915u32 => unsafe { core::mem::transmute::(n) }, 5917u32..=5919u32 => unsafe { core::mem::transmute::(n) }, 5921u32 => unsafe { core::mem::transmute::(5921u32) }, 5944u32 => unsafe { core::mem::transmute::(5944u32) }, 6080u32 => unsafe { core::mem::transmute::(6080u32) }, 6085u32 => unsafe { core::mem::transmute::(6085u32) }, 6087u32 => unsafe { core::mem::transmute::(6087u32) }, 6140u32 => unsafe { core::mem::transmute::(6140u32) }, 6151u32 => unsafe { core::mem::transmute::(6151u32) }, 6170u32 => unsafe { core::mem::transmute::(6170u32) }, 6172u32..=6173u32 => unsafe { core::mem::transmute::(n) }, 6175u32..=6183u32 => unsafe { core::mem::transmute::(n) }, 6188u32 => unsafe { core::mem::transmute::(6188u32) }, 6190u32..=6191u32 => unsafe { core::mem::transmute::(n) }, 6247u32 => unsafe { core::mem::transmute::(6247u32) }, 6442u32..=6443u32 => unsafe { core::mem::transmute::(n) }, _ => return None, }) } } #[allow(non_upper_case_globals)] impl Decoration { pub const PerPrimitiveNV: Self = Self::PerPrimitiveEXT; pub const PerVertexNV: Self = Self::PerVertexKHR; pub const NonUniformEXT: Self = Self::NonUniform; pub const RestrictPointerEXT: Self = Self::RestrictPointer; pub const AliasedPointerEXT: Self = Self::AliasedPointer; pub const HlslCounterBufferGOOGLE: Self = Self::CounterBuffer; pub const HlslSemanticGOOGLE: Self = Self::UserSemantic; pub const RegisterINTEL: Self = Self::RegisterALTERA; pub const MemoryINTEL: Self = Self::MemoryALTERA; pub const NumbanksINTEL: Self = Self::NumbanksALTERA; pub const BankwidthINTEL: Self = Self::BankwidthALTERA; pub const MaxPrivateCopiesINTEL: Self = Self::MaxPrivateCopiesALTERA; pub const SinglepumpINTEL: Self = Self::SinglepumpALTERA; pub const DoublepumpINTEL: Self = Self::DoublepumpALTERA; pub const MaxReplicatesINTEL: Self = Self::MaxReplicatesALTERA; pub const SimpleDualPortINTEL: Self = Self::SimpleDualPortALTERA; pub const MergeINTEL: Self = Self::MergeALTERA; pub const BankBitsINTEL: Self = Self::BankBitsALTERA; pub const ForcePow2DepthINTEL: Self = Self::ForcePow2DepthALTERA; pub const StridesizeINTEL: Self = Self::StridesizeALTERA; pub const WordsizeINTEL: Self = Self::WordsizeALTERA; pub const TrueDualPortINTEL: Self = Self::TrueDualPortALTERA; pub const BurstCoalesceINTEL: Self = Self::BurstCoalesceALTERA; pub const CacheSizeINTEL: Self = Self::CacheSizeALTERA; pub const DontStaticallyCoalesceINTEL: Self = Self::DontStaticallyCoalesceALTERA; pub const PrefetchINTEL: Self = Self::PrefetchALTERA; pub const StallEnableINTEL: Self = Self::StallEnableALTERA; pub const FuseLoopsInFunctionINTEL: Self = Self::FuseLoopsInFunctionALTERA; pub const MathOpDSPModeINTEL: Self = Self::MathOpDSPModeALTERA; pub const InitiationIntervalINTEL: Self = Self::InitiationIntervalALTERA; pub const MaxConcurrencyINTEL: Self = Self::MaxConcurrencyALTERA; pub const PipelineEnableINTEL: Self = Self::PipelineEnableALTERA; pub const BufferLocationINTEL: Self = Self::BufferLocationALTERA; pub const IOPipeStorageINTEL: Self = Self::IOPipeStorageALTERA; pub const StallFreeINTEL: Self = Self::StallFreeALTERA; pub const LatencyControlLabelINTEL: Self = Self::LatencyControlLabelALTERA; pub const LatencyControlConstraintINTEL: Self = Self::LatencyControlConstraintALTERA; pub const ConduitKernelArgumentINTEL: Self = Self::ConduitKernelArgumentALTERA; pub const RegisterMapKernelArgumentINTEL: Self = Self::RegisterMapKernelArgumentALTERA; pub const MMHostInterfaceAddressWidthINTEL: Self = Self::MMHostInterfaceAddressWidthALTERA; pub const MMHostInterfaceDataWidthINTEL: Self = Self::MMHostInterfaceDataWidthALTERA; pub const MMHostInterfaceLatencyINTEL: Self = Self::MMHostInterfaceLatencyALTERA; pub const MMHostInterfaceReadWriteModeINTEL: Self = Self::MMHostInterfaceReadWriteModeALTERA; pub const MMHostInterfaceMaxBurstINTEL: Self = Self::MMHostInterfaceMaxBurstALTERA; pub const MMHostInterfaceWaitRequestINTEL: Self = Self::MMHostInterfaceWaitRequestALTERA; pub const StableKernelArgumentINTEL: Self = Self::StableKernelArgumentALTERA; pub const InitModeINTEL: Self = Self::InitModeALTERA; pub const ImplementInRegisterMapINTEL: Self = Self::ImplementInRegisterMapALTERA; } impl core::str::FromStr for Decoration { type Err = (); fn from_str(s: &str) -> Result { Ok(match s { "RelaxedPrecision" => Self::RelaxedPrecision, "SpecId" => Self::SpecId, "Block" => Self::Block, "BufferBlock" => Self::BufferBlock, "RowMajor" => Self::RowMajor, "ColMajor" => Self::ColMajor, "ArrayStride" => Self::ArrayStride, "MatrixStride" => Self::MatrixStride, "GLSLShared" => Self::GLSLShared, "GLSLPacked" => Self::GLSLPacked, "CPacked" => Self::CPacked, "BuiltIn" => Self::BuiltIn, "NoPerspective" => Self::NoPerspective, "Flat" => Self::Flat, "Patch" => Self::Patch, "Centroid" => Self::Centroid, "Sample" => Self::Sample, "Invariant" => Self::Invariant, "Restrict" => Self::Restrict, "Aliased" => Self::Aliased, "Volatile" => Self::Volatile, "Constant" => Self::Constant, "Coherent" => Self::Coherent, "NonWritable" => Self::NonWritable, "NonReadable" => Self::NonReadable, "Uniform" => Self::Uniform, "UniformId" => Self::UniformId, "SaturatedConversion" => Self::SaturatedConversion, "Stream" => Self::Stream, "Location" => Self::Location, "Component" => Self::Component, "Index" => Self::Index, "Binding" => Self::Binding, "DescriptorSet" => Self::DescriptorSet, "Offset" => Self::Offset, "XfbBuffer" => Self::XfbBuffer, "XfbStride" => Self::XfbStride, "FuncParamAttr" => Self::FuncParamAttr, "FPRoundingMode" => Self::FPRoundingMode, "FPFastMathMode" => Self::FPFastMathMode, "LinkageAttributes" => Self::LinkageAttributes, "NoContraction" => Self::NoContraction, "InputAttachmentIndex" => Self::InputAttachmentIndex, "Alignment" => Self::Alignment, "MaxByteOffset" => Self::MaxByteOffset, "AlignmentId" => Self::AlignmentId, "MaxByteOffsetId" => Self::MaxByteOffsetId, "SaturatedToLargestFloat8NormalConversionEXT" => { Self::SaturatedToLargestFloat8NormalConversionEXT } "NoSignedWrap" => Self::NoSignedWrap, "NoUnsignedWrap" => Self::NoUnsignedWrap, "WeightTextureQCOM" => Self::WeightTextureQCOM, "BlockMatchTextureQCOM" => Self::BlockMatchTextureQCOM, "BlockMatchSamplerQCOM" => Self::BlockMatchSamplerQCOM, "ExplicitInterpAMD" => Self::ExplicitInterpAMD, "NodeSharesPayloadLimitsWithAMDX" => Self::NodeSharesPayloadLimitsWithAMDX, "NodeMaxPayloadsAMDX" => Self::NodeMaxPayloadsAMDX, "TrackFinishWritingAMDX" => Self::TrackFinishWritingAMDX, "PayloadNodeNameAMDX" => Self::PayloadNodeNameAMDX, "PayloadNodeBaseIndexAMDX" => Self::PayloadNodeBaseIndexAMDX, "PayloadNodeSparseArrayAMDX" => Self::PayloadNodeSparseArrayAMDX, "PayloadNodeArraySizeAMDX" => Self::PayloadNodeArraySizeAMDX, "PayloadDispatchIndirectAMDX" => Self::PayloadDispatchIndirectAMDX, "ArrayStrideIdEXT" => Self::ArrayStrideIdEXT, "OffsetIdEXT" => Self::OffsetIdEXT, "OverrideCoverageNV" => Self::OverrideCoverageNV, "PassthroughNV" => Self::PassthroughNV, "ViewportRelativeNV" => Self::ViewportRelativeNV, "SecondaryViewportRelativeNV" => Self::SecondaryViewportRelativeNV, "PerPrimitiveEXT" => Self::PerPrimitiveEXT, "PerPrimitiveNV" => Self::PerPrimitiveEXT, "PerViewNV" => Self::PerViewNV, "PerTaskNV" => Self::PerTaskNV, "PerVertexKHR" => Self::PerVertexKHR, "PerVertexNV" => Self::PerVertexKHR, "NonUniform" => Self::NonUniform, "NonUniformEXT" => Self::NonUniform, "RestrictPointer" => Self::RestrictPointer, "RestrictPointerEXT" => Self::RestrictPointer, "AliasedPointer" => Self::AliasedPointer, "AliasedPointerEXT" => Self::AliasedPointer, "MemberOffsetNV" => Self::MemberOffsetNV, "HitObjectShaderRecordBufferNV" => Self::HitObjectShaderRecordBufferNV, "HitObjectShaderRecordBufferEXT" => Self::HitObjectShaderRecordBufferEXT, "BankNV" => Self::BankNV, "BindlessSamplerNV" => Self::BindlessSamplerNV, "BindlessImageNV" => Self::BindlessImageNV, "BoundSamplerNV" => Self::BoundSamplerNV, "BoundImageNV" => Self::BoundImageNV, "SIMTCallINTEL" => Self::SIMTCallINTEL, "ReferencedIndirectlyINTEL" => Self::ReferencedIndirectlyINTEL, "ClobberINTEL" => Self::ClobberINTEL, "SideEffectsINTEL" => Self::SideEffectsINTEL, "VectorComputeVariableINTEL" => Self::VectorComputeVariableINTEL, "FuncParamIOKindINTEL" => Self::FuncParamIOKindINTEL, "VectorComputeFunctionINTEL" => Self::VectorComputeFunctionINTEL, "StackCallINTEL" => Self::StackCallINTEL, "GlobalVariableOffsetINTEL" => Self::GlobalVariableOffsetINTEL, "CounterBuffer" => Self::CounterBuffer, "HlslCounterBufferGOOGLE" => Self::CounterBuffer, "UserSemantic" => Self::UserSemantic, "HlslSemanticGOOGLE" => Self::UserSemantic, "UserTypeGOOGLE" => Self::UserTypeGOOGLE, "FunctionRoundingModeINTEL" => Self::FunctionRoundingModeINTEL, "FunctionDenormModeINTEL" => Self::FunctionDenormModeINTEL, "RegisterALTERA" => Self::RegisterALTERA, "RegisterINTEL" => Self::RegisterALTERA, "MemoryALTERA" => Self::MemoryALTERA, "MemoryINTEL" => Self::MemoryALTERA, "NumbanksALTERA" => Self::NumbanksALTERA, "NumbanksINTEL" => Self::NumbanksALTERA, "BankwidthALTERA" => Self::BankwidthALTERA, "BankwidthINTEL" => Self::BankwidthALTERA, "MaxPrivateCopiesALTERA" => Self::MaxPrivateCopiesALTERA, "MaxPrivateCopiesINTEL" => Self::MaxPrivateCopiesALTERA, "SinglepumpALTERA" => Self::SinglepumpALTERA, "SinglepumpINTEL" => Self::SinglepumpALTERA, "DoublepumpALTERA" => Self::DoublepumpALTERA, "DoublepumpINTEL" => Self::DoublepumpALTERA, "MaxReplicatesALTERA" => Self::MaxReplicatesALTERA, "MaxReplicatesINTEL" => Self::MaxReplicatesALTERA, "SimpleDualPortALTERA" => Self::SimpleDualPortALTERA, "SimpleDualPortINTEL" => Self::SimpleDualPortALTERA, "MergeALTERA" => Self::MergeALTERA, "MergeINTEL" => Self::MergeALTERA, "BankBitsALTERA" => Self::BankBitsALTERA, "BankBitsINTEL" => Self::BankBitsALTERA, "ForcePow2DepthALTERA" => Self::ForcePow2DepthALTERA, "ForcePow2DepthINTEL" => Self::ForcePow2DepthALTERA, "StridesizeALTERA" => Self::StridesizeALTERA, "StridesizeINTEL" => Self::StridesizeALTERA, "WordsizeALTERA" => Self::WordsizeALTERA, "WordsizeINTEL" => Self::WordsizeALTERA, "TrueDualPortALTERA" => Self::TrueDualPortALTERA, "TrueDualPortINTEL" => Self::TrueDualPortALTERA, "BurstCoalesceALTERA" => Self::BurstCoalesceALTERA, "BurstCoalesceINTEL" => Self::BurstCoalesceALTERA, "CacheSizeALTERA" => Self::CacheSizeALTERA, "CacheSizeINTEL" => Self::CacheSizeALTERA, "DontStaticallyCoalesceALTERA" => Self::DontStaticallyCoalesceALTERA, "DontStaticallyCoalesceINTEL" => Self::DontStaticallyCoalesceALTERA, "PrefetchALTERA" => Self::PrefetchALTERA, "PrefetchINTEL" => Self::PrefetchALTERA, "StallEnableALTERA" => Self::StallEnableALTERA, "StallEnableINTEL" => Self::StallEnableALTERA, "FuseLoopsInFunctionALTERA" => Self::FuseLoopsInFunctionALTERA, "FuseLoopsInFunctionINTEL" => Self::FuseLoopsInFunctionALTERA, "MathOpDSPModeALTERA" => Self::MathOpDSPModeALTERA, "MathOpDSPModeINTEL" => Self::MathOpDSPModeALTERA, "AliasScopeINTEL" => Self::AliasScopeINTEL, "NoAliasINTEL" => Self::NoAliasINTEL, "InitiationIntervalALTERA" => Self::InitiationIntervalALTERA, "InitiationIntervalINTEL" => Self::InitiationIntervalALTERA, "MaxConcurrencyALTERA" => Self::MaxConcurrencyALTERA, "MaxConcurrencyINTEL" => Self::MaxConcurrencyALTERA, "PipelineEnableALTERA" => Self::PipelineEnableALTERA, "PipelineEnableINTEL" => Self::PipelineEnableALTERA, "BufferLocationALTERA" => Self::BufferLocationALTERA, "BufferLocationINTEL" => Self::BufferLocationALTERA, "IOPipeStorageALTERA" => Self::IOPipeStorageALTERA, "IOPipeStorageINTEL" => Self::IOPipeStorageALTERA, "FunctionFloatingPointModeINTEL" => Self::FunctionFloatingPointModeINTEL, "SingleElementVectorINTEL" => Self::SingleElementVectorINTEL, "VectorComputeCallableFunctionINTEL" => Self::VectorComputeCallableFunctionINTEL, "MediaBlockIOINTEL" => Self::MediaBlockIOINTEL, "StallFreeALTERA" => Self::StallFreeALTERA, "StallFreeINTEL" => Self::StallFreeALTERA, "FPMaxErrorDecorationINTEL" => Self::FPMaxErrorDecorationINTEL, "LatencyControlLabelALTERA" => Self::LatencyControlLabelALTERA, "LatencyControlLabelINTEL" => Self::LatencyControlLabelALTERA, "LatencyControlConstraintALTERA" => Self::LatencyControlConstraintALTERA, "LatencyControlConstraintINTEL" => Self::LatencyControlConstraintALTERA, "ConduitKernelArgumentALTERA" => Self::ConduitKernelArgumentALTERA, "ConduitKernelArgumentINTEL" => Self::ConduitKernelArgumentALTERA, "RegisterMapKernelArgumentALTERA" => Self::RegisterMapKernelArgumentALTERA, "RegisterMapKernelArgumentINTEL" => Self::RegisterMapKernelArgumentALTERA, "MMHostInterfaceAddressWidthALTERA" => Self::MMHostInterfaceAddressWidthALTERA, "MMHostInterfaceAddressWidthINTEL" => Self::MMHostInterfaceAddressWidthALTERA, "MMHostInterfaceDataWidthALTERA" => Self::MMHostInterfaceDataWidthALTERA, "MMHostInterfaceDataWidthINTEL" => Self::MMHostInterfaceDataWidthALTERA, "MMHostInterfaceLatencyALTERA" => Self::MMHostInterfaceLatencyALTERA, "MMHostInterfaceLatencyINTEL" => Self::MMHostInterfaceLatencyALTERA, "MMHostInterfaceReadWriteModeALTERA" => Self::MMHostInterfaceReadWriteModeALTERA, "MMHostInterfaceReadWriteModeINTEL" => Self::MMHostInterfaceReadWriteModeALTERA, "MMHostInterfaceMaxBurstALTERA" => Self::MMHostInterfaceMaxBurstALTERA, "MMHostInterfaceMaxBurstINTEL" => Self::MMHostInterfaceMaxBurstALTERA, "MMHostInterfaceWaitRequestALTERA" => Self::MMHostInterfaceWaitRequestALTERA, "MMHostInterfaceWaitRequestINTEL" => Self::MMHostInterfaceWaitRequestALTERA, "StableKernelArgumentALTERA" => Self::StableKernelArgumentALTERA, "StableKernelArgumentINTEL" => Self::StableKernelArgumentALTERA, "HostAccessINTEL" => Self::HostAccessINTEL, "InitModeALTERA" => Self::InitModeALTERA, "InitModeINTEL" => Self::InitModeALTERA, "ImplementInRegisterMapALTERA" => Self::ImplementInRegisterMapALTERA, "ImplementInRegisterMapINTEL" => Self::ImplementInRegisterMapALTERA, "ConditionalINTEL" => Self::ConditionalINTEL, "CacheControlLoadINTEL" => Self::CacheControlLoadINTEL, "CacheControlStoreINTEL" => Self::CacheControlStoreINTEL, _ => return Err(()), }) } } #[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)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] 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, CoreIDARM = 4160u32, CoreCountARM = 4161u32, CoreMaxIDARM = 4162u32, WarpIDARM = 4163u32, WarpMaxIDARM = 4164u32, SubgroupEqMask = 4416u32, SubgroupGeMask = 4417u32, SubgroupGtMask = 4418u32, SubgroupLeMask = 4419u32, SubgroupLtMask = 4420u32, BaseVertex = 4424u32, BaseInstance = 4425u32, DrawIndex = 4426u32, PrimitiveShadingRateKHR = 4432u32, DeviceIndex = 4438u32, ViewIndex = 4440u32, ShadingRateKHR = 4444u32, TileOffsetQCOM = 4492u32, TileDimensionQCOM = 4493u32, TileApronSizeQCOM = 4494u32, BaryCoordNoPerspAMD = 4992u32, BaryCoordNoPerspCentroidAMD = 4993u32, BaryCoordNoPerspSampleAMD = 4994u32, BaryCoordSmoothAMD = 4995u32, BaryCoordSmoothCentroidAMD = 4996u32, BaryCoordSmoothSampleAMD = 4997u32, BaryCoordPullModelAMD = 4998u32, FragStencilRefEXT = 5014u32, RemainingRecursionLevelsAMDX = 5021u32, ShaderIndexAMDX = 5073u32, SamplerHeapEXT = 5122u32, ResourceHeapEXT = 5123u32, 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, BaryCoordKHR = 5286u32, BaryCoordNoPerspKHR = 5287u32, FragSizeEXT = 5292u32, FragInvocationCountEXT = 5293u32, PrimitivePointIndicesEXT = 5294u32, PrimitiveLineIndicesEXT = 5295u32, PrimitiveTriangleIndicesEXT = 5296u32, CullPrimitiveEXT = 5299u32, LaunchIdKHR = 5319u32, LaunchSizeKHR = 5320u32, WorldRayOriginKHR = 5321u32, WorldRayDirectionKHR = 5322u32, ObjectRayOriginKHR = 5323u32, ObjectRayDirectionKHR = 5324u32, RayTminKHR = 5325u32, RayTmaxKHR = 5326u32, InstanceCustomIndexKHR = 5327u32, ObjectToWorldKHR = 5330u32, WorldToObjectKHR = 5331u32, HitTNV = 5332u32, HitKindKHR = 5333u32, CurrentRayTimeNV = 5334u32, HitTriangleVertexPositionsKHR = 5335u32, HitMicroTriangleVertexPositionsNV = 5337u32, HitMicroTriangleVertexBarycentricsNV = 5344u32, IncomingRayFlagsKHR = 5351u32, RayGeometryIndexKHR = 5352u32, HitIsSphereNV = 5359u32, HitIsLSSNV = 5360u32, HitSpherePositionNV = 5361u32, WarpsPerSMNV = 5374u32, SMCountNV = 5375u32, WarpIDNV = 5376u32, SMIDNV = 5377u32, HitLSSPositionsNV = 5396u32, HitKindFrontFacingMicroTriangleNV = 5405u32, HitKindBackFacingMicroTriangleNV = 5406u32, HitSphereRadiusNV = 5420u32, HitLSSRadiiNV = 5421u32, ClusterIDNV = 5436u32, CullMaskKHR = 6021u32, } impl BuiltIn { pub fn from_u32(n: u32) -> Option { Some(match n { 0u32..=1u32 => unsafe { core::mem::transmute::(n) }, 3u32..=20u32 => unsafe { core::mem::transmute::(n) }, 22u32..=34u32 => unsafe { core::mem::transmute::(n) }, 36u32..=43u32 => unsafe { core::mem::transmute::(n) }, 4160u32..=4164u32 => unsafe { core::mem::transmute::(n) }, 4416u32..=4420u32 => unsafe { core::mem::transmute::(n) }, 4424u32..=4426u32 => unsafe { core::mem::transmute::(n) }, 4432u32 => unsafe { core::mem::transmute::(4432u32) }, 4438u32 => unsafe { core::mem::transmute::(4438u32) }, 4440u32 => unsafe { core::mem::transmute::(4440u32) }, 4444u32 => unsafe { core::mem::transmute::(4444u32) }, 4492u32..=4494u32 => unsafe { core::mem::transmute::(n) }, 4992u32..=4998u32 => unsafe { core::mem::transmute::(n) }, 5014u32 => unsafe { core::mem::transmute::(5014u32) }, 5021u32 => unsafe { core::mem::transmute::(5021u32) }, 5073u32 => unsafe { core::mem::transmute::(5073u32) }, 5122u32..=5123u32 => unsafe { core::mem::transmute::(n) }, 5253u32 => unsafe { core::mem::transmute::(5253u32) }, 5257u32..=5258u32 => unsafe { core::mem::transmute::(n) }, 5261u32..=5262u32 => unsafe { core::mem::transmute::(n) }, 5264u32 => unsafe { core::mem::transmute::(5264u32) }, 5274u32..=5281u32 => unsafe { core::mem::transmute::(n) }, 5286u32..=5287u32 => unsafe { core::mem::transmute::(n) }, 5292u32..=5296u32 => unsafe { core::mem::transmute::(n) }, 5299u32 => unsafe { core::mem::transmute::(5299u32) }, 5319u32..=5327u32 => unsafe { core::mem::transmute::(n) }, 5330u32..=5335u32 => unsafe { core::mem::transmute::(n) }, 5337u32 => unsafe { core::mem::transmute::(5337u32) }, 5344u32 => unsafe { core::mem::transmute::(5344u32) }, 5351u32..=5352u32 => unsafe { core::mem::transmute::(n) }, 5359u32..=5361u32 => unsafe { core::mem::transmute::(n) }, 5374u32..=5377u32 => unsafe { core::mem::transmute::(n) }, 5396u32 => unsafe { core::mem::transmute::(5396u32) }, 5405u32..=5406u32 => unsafe { core::mem::transmute::(n) }, 5420u32..=5421u32 => unsafe { core::mem::transmute::(n) }, 5436u32 => unsafe { core::mem::transmute::(5436u32) }, 6021u32 => unsafe { core::mem::transmute::(6021u32) }, _ => return None, }) } } #[allow(non_upper_case_globals)] impl BuiltIn { pub const SubgroupEqMaskKHR: Self = Self::SubgroupEqMask; pub const SubgroupGeMaskKHR: Self = Self::SubgroupGeMask; pub const SubgroupGtMaskKHR: Self = Self::SubgroupGtMask; pub const SubgroupLeMaskKHR: Self = Self::SubgroupLeMask; pub const SubgroupLtMaskKHR: Self = Self::SubgroupLtMask; pub const BaryCoordNV: Self = Self::BaryCoordKHR; pub const BaryCoordNoPerspNV: Self = Self::BaryCoordNoPerspKHR; pub const FragmentSizeNV: Self = Self::FragSizeEXT; pub const InvocationsPerPixelNV: Self = Self::FragInvocationCountEXT; pub const LaunchIdNV: Self = Self::LaunchIdKHR; pub const LaunchSizeNV: Self = Self::LaunchSizeKHR; pub const WorldRayOriginNV: Self = Self::WorldRayOriginKHR; pub const WorldRayDirectionNV: Self = Self::WorldRayDirectionKHR; pub const ObjectRayOriginNV: Self = Self::ObjectRayOriginKHR; pub const ObjectRayDirectionNV: Self = Self::ObjectRayDirectionKHR; pub const RayTminNV: Self = Self::RayTminKHR; pub const RayTmaxNV: Self = Self::RayTmaxKHR; pub const InstanceCustomIndexNV: Self = Self::InstanceCustomIndexKHR; pub const ObjectToWorldNV: Self = Self::ObjectToWorldKHR; pub const WorldToObjectNV: Self = Self::WorldToObjectKHR; pub const HitKindNV: Self = Self::HitKindKHR; pub const IncomingRayFlagsNV: Self = Self::IncomingRayFlagsKHR; } impl core::str::FromStr for BuiltIn { type Err = (); fn from_str(s: &str) -> Result { Ok(match s { "Position" => Self::Position, "PointSize" => Self::PointSize, "ClipDistance" => Self::ClipDistance, "CullDistance" => Self::CullDistance, "VertexId" => Self::VertexId, "InstanceId" => Self::InstanceId, "PrimitiveId" => Self::PrimitiveId, "InvocationId" => Self::InvocationId, "Layer" => Self::Layer, "ViewportIndex" => Self::ViewportIndex, "TessLevelOuter" => Self::TessLevelOuter, "TessLevelInner" => Self::TessLevelInner, "TessCoord" => Self::TessCoord, "PatchVertices" => Self::PatchVertices, "FragCoord" => Self::FragCoord, "PointCoord" => Self::PointCoord, "FrontFacing" => Self::FrontFacing, "SampleId" => Self::SampleId, "SamplePosition" => Self::SamplePosition, "SampleMask" => Self::SampleMask, "FragDepth" => Self::FragDepth, "HelperInvocation" => Self::HelperInvocation, "NumWorkgroups" => Self::NumWorkgroups, "WorkgroupSize" => Self::WorkgroupSize, "WorkgroupId" => Self::WorkgroupId, "LocalInvocationId" => Self::LocalInvocationId, "GlobalInvocationId" => Self::GlobalInvocationId, "LocalInvocationIndex" => Self::LocalInvocationIndex, "WorkDim" => Self::WorkDim, "GlobalSize" => Self::GlobalSize, "EnqueuedWorkgroupSize" => Self::EnqueuedWorkgroupSize, "GlobalOffset" => Self::GlobalOffset, "GlobalLinearId" => Self::GlobalLinearId, "SubgroupSize" => Self::SubgroupSize, "SubgroupMaxSize" => Self::SubgroupMaxSize, "NumSubgroups" => Self::NumSubgroups, "NumEnqueuedSubgroups" => Self::NumEnqueuedSubgroups, "SubgroupId" => Self::SubgroupId, "SubgroupLocalInvocationId" => Self::SubgroupLocalInvocationId, "VertexIndex" => Self::VertexIndex, "InstanceIndex" => Self::InstanceIndex, "CoreIDARM" => Self::CoreIDARM, "CoreCountARM" => Self::CoreCountARM, "CoreMaxIDARM" => Self::CoreMaxIDARM, "WarpIDARM" => Self::WarpIDARM, "WarpMaxIDARM" => Self::WarpMaxIDARM, "SubgroupEqMask" => Self::SubgroupEqMask, "SubgroupEqMaskKHR" => Self::SubgroupEqMask, "SubgroupGeMask" => Self::SubgroupGeMask, "SubgroupGeMaskKHR" => Self::SubgroupGeMask, "SubgroupGtMask" => Self::SubgroupGtMask, "SubgroupGtMaskKHR" => Self::SubgroupGtMask, "SubgroupLeMask" => Self::SubgroupLeMask, "SubgroupLeMaskKHR" => Self::SubgroupLeMask, "SubgroupLtMask" => Self::SubgroupLtMask, "SubgroupLtMaskKHR" => Self::SubgroupLtMask, "BaseVertex" => Self::BaseVertex, "BaseInstance" => Self::BaseInstance, "DrawIndex" => Self::DrawIndex, "PrimitiveShadingRateKHR" => Self::PrimitiveShadingRateKHR, "DeviceIndex" => Self::DeviceIndex, "ViewIndex" => Self::ViewIndex, "ShadingRateKHR" => Self::ShadingRateKHR, "TileOffsetQCOM" => Self::TileOffsetQCOM, "TileDimensionQCOM" => Self::TileDimensionQCOM, "TileApronSizeQCOM" => Self::TileApronSizeQCOM, "BaryCoordNoPerspAMD" => Self::BaryCoordNoPerspAMD, "BaryCoordNoPerspCentroidAMD" => Self::BaryCoordNoPerspCentroidAMD, "BaryCoordNoPerspSampleAMD" => Self::BaryCoordNoPerspSampleAMD, "BaryCoordSmoothAMD" => Self::BaryCoordSmoothAMD, "BaryCoordSmoothCentroidAMD" => Self::BaryCoordSmoothCentroidAMD, "BaryCoordSmoothSampleAMD" => Self::BaryCoordSmoothSampleAMD, "BaryCoordPullModelAMD" => Self::BaryCoordPullModelAMD, "FragStencilRefEXT" => Self::FragStencilRefEXT, "RemainingRecursionLevelsAMDX" => Self::RemainingRecursionLevelsAMDX, "ShaderIndexAMDX" => Self::ShaderIndexAMDX, "SamplerHeapEXT" => Self::SamplerHeapEXT, "ResourceHeapEXT" => Self::ResourceHeapEXT, "ViewportMaskNV" => Self::ViewportMaskNV, "SecondaryPositionNV" => Self::SecondaryPositionNV, "SecondaryViewportMaskNV" => Self::SecondaryViewportMaskNV, "PositionPerViewNV" => Self::PositionPerViewNV, "ViewportMaskPerViewNV" => Self::ViewportMaskPerViewNV, "FullyCoveredEXT" => Self::FullyCoveredEXT, "TaskCountNV" => Self::TaskCountNV, "PrimitiveCountNV" => Self::PrimitiveCountNV, "PrimitiveIndicesNV" => Self::PrimitiveIndicesNV, "ClipDistancePerViewNV" => Self::ClipDistancePerViewNV, "CullDistancePerViewNV" => Self::CullDistancePerViewNV, "LayerPerViewNV" => Self::LayerPerViewNV, "MeshViewCountNV" => Self::MeshViewCountNV, "MeshViewIndicesNV" => Self::MeshViewIndicesNV, "BaryCoordKHR" => Self::BaryCoordKHR, "BaryCoordNV" => Self::BaryCoordKHR, "BaryCoordNoPerspKHR" => Self::BaryCoordNoPerspKHR, "BaryCoordNoPerspNV" => Self::BaryCoordNoPerspKHR, "FragSizeEXT" => Self::FragSizeEXT, "FragmentSizeNV" => Self::FragSizeEXT, "FragInvocationCountEXT" => Self::FragInvocationCountEXT, "InvocationsPerPixelNV" => Self::FragInvocationCountEXT, "PrimitivePointIndicesEXT" => Self::PrimitivePointIndicesEXT, "PrimitiveLineIndicesEXT" => Self::PrimitiveLineIndicesEXT, "PrimitiveTriangleIndicesEXT" => Self::PrimitiveTriangleIndicesEXT, "CullPrimitiveEXT" => Self::CullPrimitiveEXT, "LaunchIdKHR" => Self::LaunchIdKHR, "LaunchIdNV" => Self::LaunchIdKHR, "LaunchSizeKHR" => Self::LaunchSizeKHR, "LaunchSizeNV" => Self::LaunchSizeKHR, "WorldRayOriginKHR" => Self::WorldRayOriginKHR, "WorldRayOriginNV" => Self::WorldRayOriginKHR, "WorldRayDirectionKHR" => Self::WorldRayDirectionKHR, "WorldRayDirectionNV" => Self::WorldRayDirectionKHR, "ObjectRayOriginKHR" => Self::ObjectRayOriginKHR, "ObjectRayOriginNV" => Self::ObjectRayOriginKHR, "ObjectRayDirectionKHR" => Self::ObjectRayDirectionKHR, "ObjectRayDirectionNV" => Self::ObjectRayDirectionKHR, "RayTminKHR" => Self::RayTminKHR, "RayTminNV" => Self::RayTminKHR, "RayTmaxKHR" => Self::RayTmaxKHR, "RayTmaxNV" => Self::RayTmaxKHR, "InstanceCustomIndexKHR" => Self::InstanceCustomIndexKHR, "InstanceCustomIndexNV" => Self::InstanceCustomIndexKHR, "ObjectToWorldKHR" => Self::ObjectToWorldKHR, "ObjectToWorldNV" => Self::ObjectToWorldKHR, "WorldToObjectKHR" => Self::WorldToObjectKHR, "WorldToObjectNV" => Self::WorldToObjectKHR, "HitTNV" => Self::HitTNV, "HitKindKHR" => Self::HitKindKHR, "HitKindNV" => Self::HitKindKHR, "CurrentRayTimeNV" => Self::CurrentRayTimeNV, "HitTriangleVertexPositionsKHR" => Self::HitTriangleVertexPositionsKHR, "HitMicroTriangleVertexPositionsNV" => Self::HitMicroTriangleVertexPositionsNV, "HitMicroTriangleVertexBarycentricsNV" => Self::HitMicroTriangleVertexBarycentricsNV, "IncomingRayFlagsKHR" => Self::IncomingRayFlagsKHR, "IncomingRayFlagsNV" => Self::IncomingRayFlagsKHR, "RayGeometryIndexKHR" => Self::RayGeometryIndexKHR, "HitIsSphereNV" => Self::HitIsSphereNV, "HitIsLSSNV" => Self::HitIsLSSNV, "HitSpherePositionNV" => Self::HitSpherePositionNV, "WarpsPerSMNV" => Self::WarpsPerSMNV, "SMCountNV" => Self::SMCountNV, "WarpIDNV" => Self::WarpIDNV, "SMIDNV" => Self::SMIDNV, "HitLSSPositionsNV" => Self::HitLSSPositionsNV, "HitKindFrontFacingMicroTriangleNV" => Self::HitKindFrontFacingMicroTriangleNV, "HitKindBackFacingMicroTriangleNV" => Self::HitKindBackFacingMicroTriangleNV, "HitSphereRadiusNV" => Self::HitSphereRadiusNV, "HitLSSRadiiNV" => Self::HitLSSRadiiNV, "ClusterIDNV" => Self::ClusterIDNV, "CullMaskKHR" => Self::CullMaskKHR, _ => return Err(()), }) } } #[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)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] pub enum Scope { CrossDevice = 0u32, Device = 1u32, Workgroup = 2u32, Subgroup = 3u32, Invocation = 4u32, QueueFamily = 5u32, ShaderCallKHR = 6u32, } impl Scope { pub fn from_u32(n: u32) -> Option { Some(match n { 0u32..=6u32 => unsafe { core::mem::transmute::(n) }, _ => return None, }) } } #[allow(non_upper_case_globals)] impl Scope { pub const QueueFamilyKHR: Self = Self::QueueFamily; } impl core::str::FromStr for Scope { type Err = (); fn from_str(s: &str) -> Result { Ok(match s { "CrossDevice" => Self::CrossDevice, "Device" => Self::Device, "Workgroup" => Self::Workgroup, "Subgroup" => Self::Subgroup, "Invocation" => Self::Invocation, "QueueFamily" => Self::QueueFamily, "QueueFamilyKHR" => Self::QueueFamily, "ShaderCallKHR" => Self::ShaderCallKHR, _ => return Err(()), }) } } #[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)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] pub enum GroupOperation { Reduce = 0u32, InclusiveScan = 1u32, ExclusiveScan = 2u32, ClusteredReduce = 3u32, PartitionedReduceEXT = 6u32, PartitionedInclusiveScanEXT = 7u32, PartitionedExclusiveScanEXT = 8u32, } impl GroupOperation { pub fn from_u32(n: u32) -> Option { Some(match n { 0u32..=3u32 => unsafe { core::mem::transmute::(n) }, 6u32..=8u32 => unsafe { core::mem::transmute::(n) }, _ => return None, }) } } #[allow(non_upper_case_globals)] impl GroupOperation { pub const PartitionedReduceNV: Self = Self::PartitionedReduceEXT; pub const PartitionedInclusiveScanNV: Self = Self::PartitionedInclusiveScanEXT; pub const PartitionedExclusiveScanNV: Self = Self::PartitionedExclusiveScanEXT; } impl core::str::FromStr for GroupOperation { type Err = (); fn from_str(s: &str) -> Result { Ok(match s { "Reduce" => Self::Reduce, "InclusiveScan" => Self::InclusiveScan, "ExclusiveScan" => Self::ExclusiveScan, "ClusteredReduce" => Self::ClusteredReduce, "PartitionedReduceEXT" => Self::PartitionedReduceEXT, "PartitionedReduceNV" => Self::PartitionedReduceEXT, "PartitionedInclusiveScanEXT" => Self::PartitionedInclusiveScanEXT, "PartitionedInclusiveScanNV" => Self::PartitionedInclusiveScanEXT, "PartitionedExclusiveScanEXT" => Self::PartitionedExclusiveScanEXT, "PartitionedExclusiveScanNV" => Self::PartitionedExclusiveScanEXT, _ => return Err(()), }) } } #[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)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] pub enum KernelEnqueueFlags { NoWait = 0u32, WaitKernel = 1u32, WaitWorkGroup = 2u32, } impl KernelEnqueueFlags { pub fn from_u32(n: u32) -> Option { Some(match n { 0u32..=2u32 => unsafe { core::mem::transmute::(n) }, _ => return None, }) } } #[allow(non_upper_case_globals)] impl KernelEnqueueFlags {} impl core::str::FromStr for KernelEnqueueFlags { type Err = (); fn from_str(s: &str) -> Result { Ok(match s { "NoWait" => Self::NoWait, "WaitKernel" => Self::WaitKernel, "WaitWorkGroup" => Self::WaitWorkGroup, _ => return Err(()), }) } } #[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)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] 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, ShaderLayer = 69u32, ShaderViewportIndex = 70u32, UniformDecoration = 71u32, CoreBuiltinsARM = 4165u32, TileImageColorReadAccessEXT = 4166u32, TileImageDepthReadAccessEXT = 4167u32, TileImageStencilReadAccessEXT = 4168u32, TensorsARM = 4174u32, StorageTensorArrayDynamicIndexingARM = 4175u32, StorageTensorArrayNonUniformIndexingARM = 4176u32, GraphARM = 4191u32, CooperativeMatrixLayoutsARM = 4201u32, Float8EXT = 4212u32, Float8CooperativeMatrixEXT = 4213u32, FragmentShadingRateKHR = 4422u32, SubgroupBallotKHR = 4423u32, DrawParameters = 4427u32, WorkgroupMemoryExplicitLayoutKHR = 4428u32, WorkgroupMemoryExplicitLayout8BitAccessKHR = 4429u32, WorkgroupMemoryExplicitLayout16BitAccessKHR = 4430u32, 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, RayQueryProvisionalKHR = 4471u32, RayQueryKHR = 4472u32, UntypedPointersKHR = 4473u32, RayTraversalPrimitiveCullingKHR = 4478u32, RayTracingKHR = 4479u32, TextureSampleWeightedQCOM = 4484u32, TextureBoxFilterQCOM = 4485u32, TextureBlockMatchQCOM = 4486u32, TileShadingQCOM = 4495u32, CooperativeMatrixConversionQCOM = 4496u32, TextureBlockMatch2QCOM = 4498u32, Float16ImageAMD = 5008u32, ImageGatherBiasLodAMD = 5009u32, FragmentMaskAMD = 5010u32, StencilExportEXT = 5013u32, ImageReadWriteLodAMD = 5015u32, Int64ImageEXT = 5016u32, ShaderClockKHR = 5055u32, ShaderEnqueueAMDX = 5067u32, QuadControlKHR = 5087u32, Int4TypeINTEL = 5112u32, Int4CooperativeMatrixINTEL = 5114u32, BFloat16TypeKHR = 5116u32, BFloat16DotProductKHR = 5117u32, BFloat16CooperativeMatrixKHR = 5118u32, DescriptorHeapEXT = 5128u32, SampleMaskOverrideCoverageNV = 5249u32, GeometryShaderPassthroughNV = 5251u32, ShaderViewportIndexLayerEXT = 5254u32, ShaderViewportMaskNV = 5255u32, ShaderStereoViewNV = 5259u32, PerViewAttributesNV = 5260u32, FragmentFullyCoveredEXT = 5265u32, MeshShadingNV = 5266u32, ImageFootprintNV = 5282u32, MeshShadingEXT = 5283u32, FragmentBarycentricKHR = 5284u32, ComputeDerivativeGroupQuadsKHR = 5288u32, FragmentDensityEXT = 5291u32, GroupNonUniformPartitionedEXT = 5297u32, ShaderNonUniform = 5301u32, RuntimeDescriptorArray = 5302u32, InputAttachmentArrayDynamicIndexing = 5303u32, UniformTexelBufferArrayDynamicIndexing = 5304u32, StorageTexelBufferArrayDynamicIndexing = 5305u32, UniformBufferArrayNonUniformIndexing = 5306u32, SampledImageArrayNonUniformIndexing = 5307u32, StorageBufferArrayNonUniformIndexing = 5308u32, StorageImageArrayNonUniformIndexing = 5309u32, InputAttachmentArrayNonUniformIndexing = 5310u32, UniformTexelBufferArrayNonUniformIndexing = 5311u32, StorageTexelBufferArrayNonUniformIndexing = 5312u32, RayTracingPositionFetchKHR = 5336u32, RayTracingNV = 5340u32, RayTracingMotionBlurNV = 5341u32, VulkanMemoryModel = 5345u32, VulkanMemoryModelDeviceScope = 5346u32, PhysicalStorageBufferAddresses = 5347u32, ComputeDerivativeGroupLinearKHR = 5350u32, RayTracingProvisionalKHR = 5353u32, CooperativeMatrixNV = 5357u32, FragmentShaderSampleInterlockEXT = 5363u32, FragmentShaderShadingRateInterlockEXT = 5372u32, ShaderSMBuiltinsNV = 5373u32, FragmentShaderPixelInterlockEXT = 5378u32, DemoteToHelperInvocation = 5379u32, DisplacementMicromapNV = 5380u32, RayTracingOpacityMicromapEXT = 5381u32, ShaderInvocationReorderNV = 5383u32, ShaderInvocationReorderEXT = 5388u32, BindlessTextureNV = 5390u32, RayQueryPositionFetchKHR = 5391u32, CooperativeVectorNV = 5394u32, AtomicFloat16VectorNV = 5404u32, RayTracingDisplacementMicromapNV = 5409u32, RawAccessChainsNV = 5414u32, RayTracingSpheresGeometryNV = 5418u32, RayTracingLinearSweptSpheresGeometryNV = 5419u32, PushConstantBanksNV = 5423u32, LongVectorEXT = 5425u32, Shader64BitIndexingEXT = 5426u32, CooperativeMatrixReductionsNV = 5430u32, CooperativeMatrixConversionsNV = 5431u32, CooperativeMatrixPerElementOperationsNV = 5432u32, CooperativeMatrixTensorAddressingNV = 5433u32, CooperativeMatrixBlockLoadsNV = 5434u32, CooperativeVectorTrainingNV = 5435u32, RayTracingClusterAccelerationStructureNV = 5437u32, TensorAddressingNV = 5439u32, SubgroupShuffleINTEL = 5568u32, SubgroupBufferBlockIOINTEL = 5569u32, SubgroupImageBlockIOINTEL = 5570u32, SubgroupImageMediaBlockIOINTEL = 5579u32, RoundToInfinityINTEL = 5582u32, FloatingPointModeINTEL = 5583u32, IntegerFunctions2INTEL = 5584u32, FunctionPointersINTEL = 5603u32, IndirectReferencesINTEL = 5604u32, AsmINTEL = 5606u32, AtomicFloat32MinMaxEXT = 5612u32, AtomicFloat64MinMaxEXT = 5613u32, AtomicFloat16MinMaxEXT = 5616u32, VectorComputeINTEL = 5617u32, VectorAnyINTEL = 5619u32, ExpectAssumeKHR = 5629u32, SubgroupAvcMotionEstimationINTEL = 5696u32, SubgroupAvcMotionEstimationIntraINTEL = 5697u32, SubgroupAvcMotionEstimationChromaINTEL = 5698u32, VariableLengthArrayINTEL = 5817u32, FunctionFloatControlINTEL = 5821u32, FPGAMemoryAttributesALTERA = 5824u32, FPFastMathModeINTEL = 5837u32, ArbitraryPrecisionIntegersALTERA = 5844u32, ArbitraryPrecisionFloatingPointALTERA = 5845u32, UnstructuredLoopControlsINTEL = 5886u32, FPGALoopControlsALTERA = 5888u32, KernelAttributesINTEL = 5892u32, FPGAKernelAttributesINTEL = 5897u32, FPGAMemoryAccessesALTERA = 5898u32, FPGAClusterAttributesALTERA = 5904u32, LoopFuseALTERA = 5906u32, FPGADSPControlALTERA = 5908u32, MemoryAccessAliasingINTEL = 5910u32, FPGAInvocationPipeliningAttributesALTERA = 5916u32, FPGABufferLocationALTERA = 5920u32, ArbitraryPrecisionFixedPointALTERA = 5922u32, USMStorageClassesALTERA = 5935u32, RuntimeAlignedAttributeALTERA = 5939u32, IOPipesALTERA = 5943u32, BlockingPipesALTERA = 5945u32, FPGARegALTERA = 5948u32, DotProductInputAll = 6016u32, DotProductInput4x8Bit = 6017u32, DotProductInput4x8BitPacked = 6018u32, DotProduct = 6019u32, RayCullMaskKHR = 6020u32, CooperativeMatrixKHR = 6022u32, ReplicatedCompositesEXT = 6024u32, BitInstructions = 6025u32, GroupNonUniformRotateKHR = 6026u32, FloatControls2 = 6029u32, FMAKHR = 6030u32, AtomicFloat32AddEXT = 6033u32, AtomicFloat64AddEXT = 6034u32, LongCompositesINTEL = 6089u32, OptNoneEXT = 6094u32, AtomicFloat16AddEXT = 6095u32, DebugInfoModuleINTEL = 6114u32, BFloat16ConversionINTEL = 6115u32, SplitBarrierINTEL = 6141u32, ArithmeticFenceEXT = 6144u32, FPGAClusterAttributesV2ALTERA = 6150u32, FPGAKernelAttributesv2INTEL = 6161u32, TaskSequenceALTERA = 6162u32, FPMaxErrorINTEL = 6169u32, FPGALatencyControlALTERA = 6171u32, FPGAArgumentInterfacesALTERA = 6174u32, GlobalVariableHostAccessINTEL = 6187u32, GlobalVariableFPGADecorationsALTERA = 6189u32, SubgroupBufferPrefetchINTEL = 6220u32, Subgroup2DBlockIOINTEL = 6228u32, Subgroup2DBlockTransformINTEL = 6229u32, Subgroup2DBlockTransposeINTEL = 6230u32, SubgroupMatrixMultiplyAccumulateINTEL = 6236u32, TernaryBitwiseFunctionINTEL = 6241u32, UntypedVariableLengthArrayINTEL = 6243u32, SpecConditionalINTEL = 6245u32, FunctionVariantsINTEL = 6246u32, GroupUniformArithmeticKHR = 6400u32, TensorFloat32RoundingINTEL = 6425u32, MaskedGatherScatterINTEL = 6427u32, CacheControlsINTEL = 6441u32, RegisterLimitsINTEL = 6460u32, BindlessImagesINTEL = 6528u32, } impl Capability { pub fn from_u32(n: u32) -> Option { Some(match n { 0u32..=15u32 => unsafe { core::mem::transmute::(n) }, 17u32..=25u32 => unsafe { core::mem::transmute::(n) }, 27u32..=71u32 => unsafe { core::mem::transmute::(n) }, 4165u32..=4168u32 => unsafe { core::mem::transmute::(n) }, 4174u32..=4176u32 => unsafe { core::mem::transmute::(n) }, 4191u32 => unsafe { core::mem::transmute::(4191u32) }, 4201u32 => unsafe { core::mem::transmute::(4201u32) }, 4212u32..=4213u32 => unsafe { core::mem::transmute::(n) }, 4422u32..=4423u32 => unsafe { core::mem::transmute::(n) }, 4427u32..=4431u32 => unsafe { core::mem::transmute::(n) }, 4433u32..=4437u32 => unsafe { core::mem::transmute::(n) }, 4439u32 => unsafe { core::mem::transmute::(4439u32) }, 4441u32..=4442u32 => unsafe { core::mem::transmute::(n) }, 4445u32 => unsafe { core::mem::transmute::(4445u32) }, 4447u32..=4450u32 => unsafe { core::mem::transmute::(n) }, 4464u32..=4468u32 => unsafe { core::mem::transmute::(n) }, 4471u32..=4473u32 => unsafe { core::mem::transmute::(n) }, 4478u32..=4479u32 => unsafe { core::mem::transmute::(n) }, 4484u32..=4486u32 => unsafe { core::mem::transmute::(n) }, 4495u32..=4496u32 => unsafe { core::mem::transmute::(n) }, 4498u32 => unsafe { core::mem::transmute::(4498u32) }, 5008u32..=5010u32 => unsafe { core::mem::transmute::(n) }, 5013u32 => unsafe { core::mem::transmute::(5013u32) }, 5015u32..=5016u32 => unsafe { core::mem::transmute::(n) }, 5055u32 => unsafe { core::mem::transmute::(5055u32) }, 5067u32 => unsafe { core::mem::transmute::(5067u32) }, 5087u32 => unsafe { core::mem::transmute::(5087u32) }, 5112u32 => unsafe { core::mem::transmute::(5112u32) }, 5114u32 => unsafe { core::mem::transmute::(5114u32) }, 5116u32..=5118u32 => unsafe { core::mem::transmute::(n) }, 5128u32 => unsafe { core::mem::transmute::(5128u32) }, 5249u32 => unsafe { core::mem::transmute::(5249u32) }, 5251u32 => unsafe { core::mem::transmute::(5251u32) }, 5254u32..=5255u32 => unsafe { core::mem::transmute::(n) }, 5259u32..=5260u32 => unsafe { core::mem::transmute::(n) }, 5265u32..=5266u32 => unsafe { core::mem::transmute::(n) }, 5282u32..=5284u32 => unsafe { core::mem::transmute::(n) }, 5288u32 => unsafe { core::mem::transmute::(5288u32) }, 5291u32 => unsafe { core::mem::transmute::(5291u32) }, 5297u32 => unsafe { core::mem::transmute::(5297u32) }, 5301u32..=5312u32 => unsafe { core::mem::transmute::(n) }, 5336u32 => unsafe { core::mem::transmute::(5336u32) }, 5340u32..=5341u32 => unsafe { core::mem::transmute::(n) }, 5345u32..=5347u32 => unsafe { core::mem::transmute::(n) }, 5350u32 => unsafe { core::mem::transmute::(5350u32) }, 5353u32 => unsafe { core::mem::transmute::(5353u32) }, 5357u32 => unsafe { core::mem::transmute::(5357u32) }, 5363u32 => unsafe { core::mem::transmute::(5363u32) }, 5372u32..=5373u32 => unsafe { core::mem::transmute::(n) }, 5378u32..=5381u32 => unsafe { core::mem::transmute::(n) }, 5383u32 => unsafe { core::mem::transmute::(5383u32) }, 5388u32 => unsafe { core::mem::transmute::(5388u32) }, 5390u32..=5391u32 => unsafe { core::mem::transmute::(n) }, 5394u32 => unsafe { core::mem::transmute::(5394u32) }, 5404u32 => unsafe { core::mem::transmute::(5404u32) }, 5409u32 => unsafe { core::mem::transmute::(5409u32) }, 5414u32 => unsafe { core::mem::transmute::(5414u32) }, 5418u32..=5419u32 => unsafe { core::mem::transmute::(n) }, 5423u32 => unsafe { core::mem::transmute::(5423u32) }, 5425u32..=5426u32 => unsafe { core::mem::transmute::(n) }, 5430u32..=5435u32 => unsafe { core::mem::transmute::(n) }, 5437u32 => unsafe { core::mem::transmute::(5437u32) }, 5439u32 => unsafe { core::mem::transmute::(5439u32) }, 5568u32..=5570u32 => unsafe { core::mem::transmute::(n) }, 5579u32 => unsafe { core::mem::transmute::(5579u32) }, 5582u32..=5584u32 => unsafe { core::mem::transmute::(n) }, 5603u32..=5604u32 => unsafe { core::mem::transmute::(n) }, 5606u32 => unsafe { core::mem::transmute::(5606u32) }, 5612u32..=5613u32 => unsafe { core::mem::transmute::(n) }, 5616u32..=5617u32 => unsafe { core::mem::transmute::(n) }, 5619u32 => unsafe { core::mem::transmute::(5619u32) }, 5629u32 => unsafe { core::mem::transmute::(5629u32) }, 5696u32..=5698u32 => unsafe { core::mem::transmute::(n) }, 5817u32 => unsafe { core::mem::transmute::(5817u32) }, 5821u32 => unsafe { core::mem::transmute::(5821u32) }, 5824u32 => unsafe { core::mem::transmute::(5824u32) }, 5837u32 => unsafe { core::mem::transmute::(5837u32) }, 5844u32..=5845u32 => unsafe { core::mem::transmute::(n) }, 5886u32 => unsafe { core::mem::transmute::(5886u32) }, 5888u32 => unsafe { core::mem::transmute::(5888u32) }, 5892u32 => unsafe { core::mem::transmute::(5892u32) }, 5897u32..=5898u32 => unsafe { core::mem::transmute::(n) }, 5904u32 => unsafe { core::mem::transmute::(5904u32) }, 5906u32 => unsafe { core::mem::transmute::(5906u32) }, 5908u32 => unsafe { core::mem::transmute::(5908u32) }, 5910u32 => unsafe { core::mem::transmute::(5910u32) }, 5916u32 => unsafe { core::mem::transmute::(5916u32) }, 5920u32 => unsafe { core::mem::transmute::(5920u32) }, 5922u32 => unsafe { core::mem::transmute::(5922u32) }, 5935u32 => unsafe { core::mem::transmute::(5935u32) }, 5939u32 => unsafe { core::mem::transmute::(5939u32) }, 5943u32 => unsafe { core::mem::transmute::(5943u32) }, 5945u32 => unsafe { core::mem::transmute::(5945u32) }, 5948u32 => unsafe { core::mem::transmute::(5948u32) }, 6016u32..=6020u32 => unsafe { core::mem::transmute::(n) }, 6022u32 => unsafe { core::mem::transmute::(6022u32) }, 6024u32..=6026u32 => unsafe { core::mem::transmute::(n) }, 6029u32..=6030u32 => unsafe { core::mem::transmute::(n) }, 6033u32..=6034u32 => unsafe { core::mem::transmute::(n) }, 6089u32 => unsafe { core::mem::transmute::(6089u32) }, 6094u32..=6095u32 => unsafe { core::mem::transmute::(n) }, 6114u32..=6115u32 => unsafe { core::mem::transmute::(n) }, 6141u32 => unsafe { core::mem::transmute::(6141u32) }, 6144u32 => unsafe { core::mem::transmute::(6144u32) }, 6150u32 => unsafe { core::mem::transmute::(6150u32) }, 6161u32..=6162u32 => unsafe { core::mem::transmute::(n) }, 6169u32 => unsafe { core::mem::transmute::(6169u32) }, 6171u32 => unsafe { core::mem::transmute::(6171u32) }, 6174u32 => unsafe { core::mem::transmute::(6174u32) }, 6187u32 => unsafe { core::mem::transmute::(6187u32) }, 6189u32 => unsafe { core::mem::transmute::(6189u32) }, 6220u32 => unsafe { core::mem::transmute::(6220u32) }, 6228u32..=6230u32 => unsafe { core::mem::transmute::(n) }, 6236u32 => unsafe { core::mem::transmute::(6236u32) }, 6241u32 => unsafe { core::mem::transmute::(6241u32) }, 6243u32 => unsafe { core::mem::transmute::(6243u32) }, 6245u32..=6246u32 => unsafe { core::mem::transmute::(n) }, 6400u32 => unsafe { core::mem::transmute::(6400u32) }, 6425u32 => unsafe { core::mem::transmute::(6425u32) }, 6427u32 => unsafe { core::mem::transmute::(6427u32) }, 6441u32 => unsafe { core::mem::transmute::(6441u32) }, 6460u32 => unsafe { core::mem::transmute::(6460u32) }, 6528u32 => unsafe { core::mem::transmute::(6528u32) }, _ => return None, }) } } #[allow(non_upper_case_globals)] impl Capability { pub const StorageUniformBufferBlock16: Self = Self::StorageBuffer16BitAccess; pub const StorageUniform16: Self = Self::UniformAndStorageBuffer16BitAccess; pub const ShaderViewportIndexLayerNV: Self = Self::ShaderViewportIndexLayerEXT; pub const FragmentBarycentricNV: Self = Self::FragmentBarycentricKHR; pub const ComputeDerivativeGroupQuadsNV: Self = Self::ComputeDerivativeGroupQuadsKHR; pub const ShadingRateNV: Self = Self::FragmentDensityEXT; pub const GroupNonUniformPartitionedNV: Self = Self::GroupNonUniformPartitionedEXT; pub const ShaderNonUniformEXT: Self = Self::ShaderNonUniform; pub const RuntimeDescriptorArrayEXT: Self = Self::RuntimeDescriptorArray; pub const InputAttachmentArrayDynamicIndexingEXT: Self = Self::InputAttachmentArrayDynamicIndexing; pub const UniformTexelBufferArrayDynamicIndexingEXT: Self = Self::UniformTexelBufferArrayDynamicIndexing; pub const StorageTexelBufferArrayDynamicIndexingEXT: Self = Self::StorageTexelBufferArrayDynamicIndexing; pub const UniformBufferArrayNonUniformIndexingEXT: Self = Self::UniformBufferArrayNonUniformIndexing; pub const SampledImageArrayNonUniformIndexingEXT: Self = Self::SampledImageArrayNonUniformIndexing; pub const StorageBufferArrayNonUniformIndexingEXT: Self = Self::StorageBufferArrayNonUniformIndexing; pub const StorageImageArrayNonUniformIndexingEXT: Self = Self::StorageImageArrayNonUniformIndexing; pub const InputAttachmentArrayNonUniformIndexingEXT: Self = Self::InputAttachmentArrayNonUniformIndexing; pub const UniformTexelBufferArrayNonUniformIndexingEXT: Self = Self::UniformTexelBufferArrayNonUniformIndexing; pub const StorageTexelBufferArrayNonUniformIndexingEXT: Self = Self::StorageTexelBufferArrayNonUniformIndexing; pub const VulkanMemoryModelKHR: Self = Self::VulkanMemoryModel; pub const VulkanMemoryModelDeviceScopeKHR: Self = Self::VulkanMemoryModelDeviceScope; pub const PhysicalStorageBufferAddressesEXT: Self = Self::PhysicalStorageBufferAddresses; pub const ComputeDerivativeGroupLinearNV: Self = Self::ComputeDerivativeGroupLinearKHR; pub const DemoteToHelperInvocationEXT: Self = Self::DemoteToHelperInvocation; pub const FPGAMemoryAttributesINTEL: Self = Self::FPGAMemoryAttributesALTERA; pub const ArbitraryPrecisionIntegersINTEL: Self = Self::ArbitraryPrecisionIntegersALTERA; pub const ArbitraryPrecisionFloatingPointINTEL: Self = Self::ArbitraryPrecisionFloatingPointALTERA; pub const FPGALoopControlsINTEL: Self = Self::FPGALoopControlsALTERA; pub const FPGAMemoryAccessesINTEL: Self = Self::FPGAMemoryAccessesALTERA; pub const FPGAClusterAttributesINTEL: Self = Self::FPGAClusterAttributesALTERA; pub const LoopFuseINTEL: Self = Self::LoopFuseALTERA; pub const FPGADSPControlINTEL: Self = Self::FPGADSPControlALTERA; pub const FPGAInvocationPipeliningAttributesINTEL: Self = Self::FPGAInvocationPipeliningAttributesALTERA; pub const FPGABufferLocationINTEL: Self = Self::FPGABufferLocationALTERA; pub const ArbitraryPrecisionFixedPointINTEL: Self = Self::ArbitraryPrecisionFixedPointALTERA; pub const USMStorageClassesINTEL: Self = Self::USMStorageClassesALTERA; pub const RuntimeAlignedAttributeINTEL: Self = Self::RuntimeAlignedAttributeALTERA; pub const IOPipesINTEL: Self = Self::IOPipesALTERA; pub const BlockingPipesINTEL: Self = Self::BlockingPipesALTERA; pub const FPGARegINTEL: Self = Self::FPGARegALTERA; pub const DotProductInputAllKHR: Self = Self::DotProductInputAll; pub const DotProductInput4x8BitKHR: Self = Self::DotProductInput4x8Bit; pub const DotProductInput4x8BitPackedKHR: Self = Self::DotProductInput4x8BitPacked; pub const DotProductKHR: Self = Self::DotProduct; pub const OptNoneINTEL: Self = Self::OptNoneEXT; pub const FPGAClusterAttributesV2INTEL: Self = Self::FPGAClusterAttributesV2ALTERA; pub const TaskSequenceINTEL: Self = Self::TaskSequenceALTERA; pub const FPGALatencyControlINTEL: Self = Self::FPGALatencyControlALTERA; pub const FPGAArgumentInterfacesINTEL: Self = Self::FPGAArgumentInterfacesALTERA; pub const GlobalVariableFPGADecorationsINTEL: Self = Self::GlobalVariableFPGADecorationsALTERA; } impl core::str::FromStr for Capability { type Err = (); fn from_str(s: &str) -> Result { Ok(match s { "Matrix" => Self::Matrix, "Shader" => Self::Shader, "Geometry" => Self::Geometry, "Tessellation" => Self::Tessellation, "Addresses" => Self::Addresses, "Linkage" => Self::Linkage, "Kernel" => Self::Kernel, "Vector16" => Self::Vector16, "Float16Buffer" => Self::Float16Buffer, "Float16" => Self::Float16, "Float64" => Self::Float64, "Int64" => Self::Int64, "Int64Atomics" => Self::Int64Atomics, "ImageBasic" => Self::ImageBasic, "ImageReadWrite" => Self::ImageReadWrite, "ImageMipmap" => Self::ImageMipmap, "Pipes" => Self::Pipes, "Groups" => Self::Groups, "DeviceEnqueue" => Self::DeviceEnqueue, "LiteralSampler" => Self::LiteralSampler, "AtomicStorage" => Self::AtomicStorage, "Int16" => Self::Int16, "TessellationPointSize" => Self::TessellationPointSize, "GeometryPointSize" => Self::GeometryPointSize, "ImageGatherExtended" => Self::ImageGatherExtended, "StorageImageMultisample" => Self::StorageImageMultisample, "UniformBufferArrayDynamicIndexing" => Self::UniformBufferArrayDynamicIndexing, "SampledImageArrayDynamicIndexing" => Self::SampledImageArrayDynamicIndexing, "StorageBufferArrayDynamicIndexing" => Self::StorageBufferArrayDynamicIndexing, "StorageImageArrayDynamicIndexing" => Self::StorageImageArrayDynamicIndexing, "ClipDistance" => Self::ClipDistance, "CullDistance" => Self::CullDistance, "ImageCubeArray" => Self::ImageCubeArray, "SampleRateShading" => Self::SampleRateShading, "ImageRect" => Self::ImageRect, "SampledRect" => Self::SampledRect, "GenericPointer" => Self::GenericPointer, "Int8" => Self::Int8, "InputAttachment" => Self::InputAttachment, "SparseResidency" => Self::SparseResidency, "MinLod" => Self::MinLod, "Sampled1D" => Self::Sampled1D, "Image1D" => Self::Image1D, "SampledCubeArray" => Self::SampledCubeArray, "SampledBuffer" => Self::SampledBuffer, "ImageBuffer" => Self::ImageBuffer, "ImageMSArray" => Self::ImageMSArray, "StorageImageExtendedFormats" => Self::StorageImageExtendedFormats, "ImageQuery" => Self::ImageQuery, "DerivativeControl" => Self::DerivativeControl, "InterpolationFunction" => Self::InterpolationFunction, "TransformFeedback" => Self::TransformFeedback, "GeometryStreams" => Self::GeometryStreams, "StorageImageReadWithoutFormat" => Self::StorageImageReadWithoutFormat, "StorageImageWriteWithoutFormat" => Self::StorageImageWriteWithoutFormat, "MultiViewport" => Self::MultiViewport, "SubgroupDispatch" => Self::SubgroupDispatch, "NamedBarrier" => Self::NamedBarrier, "PipeStorage" => Self::PipeStorage, "GroupNonUniform" => Self::GroupNonUniform, "GroupNonUniformVote" => Self::GroupNonUniformVote, "GroupNonUniformArithmetic" => Self::GroupNonUniformArithmetic, "GroupNonUniformBallot" => Self::GroupNonUniformBallot, "GroupNonUniformShuffle" => Self::GroupNonUniformShuffle, "GroupNonUniformShuffleRelative" => Self::GroupNonUniformShuffleRelative, "GroupNonUniformClustered" => Self::GroupNonUniformClustered, "GroupNonUniformQuad" => Self::GroupNonUniformQuad, "ShaderLayer" => Self::ShaderLayer, "ShaderViewportIndex" => Self::ShaderViewportIndex, "UniformDecoration" => Self::UniformDecoration, "CoreBuiltinsARM" => Self::CoreBuiltinsARM, "TileImageColorReadAccessEXT" => Self::TileImageColorReadAccessEXT, "TileImageDepthReadAccessEXT" => Self::TileImageDepthReadAccessEXT, "TileImageStencilReadAccessEXT" => Self::TileImageStencilReadAccessEXT, "TensorsARM" => Self::TensorsARM, "StorageTensorArrayDynamicIndexingARM" => Self::StorageTensorArrayDynamicIndexingARM, "StorageTensorArrayNonUniformIndexingARM" => { Self::StorageTensorArrayNonUniformIndexingARM } "GraphARM" => Self::GraphARM, "CooperativeMatrixLayoutsARM" => Self::CooperativeMatrixLayoutsARM, "Float8EXT" => Self::Float8EXT, "Float8CooperativeMatrixEXT" => Self::Float8CooperativeMatrixEXT, "FragmentShadingRateKHR" => Self::FragmentShadingRateKHR, "SubgroupBallotKHR" => Self::SubgroupBallotKHR, "DrawParameters" => Self::DrawParameters, "WorkgroupMemoryExplicitLayoutKHR" => Self::WorkgroupMemoryExplicitLayoutKHR, "WorkgroupMemoryExplicitLayout8BitAccessKHR" => { Self::WorkgroupMemoryExplicitLayout8BitAccessKHR } "WorkgroupMemoryExplicitLayout16BitAccessKHR" => { Self::WorkgroupMemoryExplicitLayout16BitAccessKHR } "SubgroupVoteKHR" => Self::SubgroupVoteKHR, "StorageBuffer16BitAccess" => Self::StorageBuffer16BitAccess, "StorageUniformBufferBlock16" => Self::StorageBuffer16BitAccess, "UniformAndStorageBuffer16BitAccess" => Self::UniformAndStorageBuffer16BitAccess, "StorageUniform16" => Self::UniformAndStorageBuffer16BitAccess, "StoragePushConstant16" => Self::StoragePushConstant16, "StorageInputOutput16" => Self::StorageInputOutput16, "DeviceGroup" => Self::DeviceGroup, "MultiView" => Self::MultiView, "VariablePointersStorageBuffer" => Self::VariablePointersStorageBuffer, "VariablePointers" => Self::VariablePointers, "AtomicStorageOps" => Self::AtomicStorageOps, "SampleMaskPostDepthCoverage" => Self::SampleMaskPostDepthCoverage, "StorageBuffer8BitAccess" => Self::StorageBuffer8BitAccess, "UniformAndStorageBuffer8BitAccess" => Self::UniformAndStorageBuffer8BitAccess, "StoragePushConstant8" => Self::StoragePushConstant8, "DenormPreserve" => Self::DenormPreserve, "DenormFlushToZero" => Self::DenormFlushToZero, "SignedZeroInfNanPreserve" => Self::SignedZeroInfNanPreserve, "RoundingModeRTE" => Self::RoundingModeRTE, "RoundingModeRTZ" => Self::RoundingModeRTZ, "RayQueryProvisionalKHR" => Self::RayQueryProvisionalKHR, "RayQueryKHR" => Self::RayQueryKHR, "UntypedPointersKHR" => Self::UntypedPointersKHR, "RayTraversalPrimitiveCullingKHR" => Self::RayTraversalPrimitiveCullingKHR, "RayTracingKHR" => Self::RayTracingKHR, "TextureSampleWeightedQCOM" => Self::TextureSampleWeightedQCOM, "TextureBoxFilterQCOM" => Self::TextureBoxFilterQCOM, "TextureBlockMatchQCOM" => Self::TextureBlockMatchQCOM, "TileShadingQCOM" => Self::TileShadingQCOM, "CooperativeMatrixConversionQCOM" => Self::CooperativeMatrixConversionQCOM, "TextureBlockMatch2QCOM" => Self::TextureBlockMatch2QCOM, "Float16ImageAMD" => Self::Float16ImageAMD, "ImageGatherBiasLodAMD" => Self::ImageGatherBiasLodAMD, "FragmentMaskAMD" => Self::FragmentMaskAMD, "StencilExportEXT" => Self::StencilExportEXT, "ImageReadWriteLodAMD" => Self::ImageReadWriteLodAMD, "Int64ImageEXT" => Self::Int64ImageEXT, "ShaderClockKHR" => Self::ShaderClockKHR, "ShaderEnqueueAMDX" => Self::ShaderEnqueueAMDX, "QuadControlKHR" => Self::QuadControlKHR, "Int4TypeINTEL" => Self::Int4TypeINTEL, "Int4CooperativeMatrixINTEL" => Self::Int4CooperativeMatrixINTEL, "BFloat16TypeKHR" => Self::BFloat16TypeKHR, "BFloat16DotProductKHR" => Self::BFloat16DotProductKHR, "BFloat16CooperativeMatrixKHR" => Self::BFloat16CooperativeMatrixKHR, "DescriptorHeapEXT" => Self::DescriptorHeapEXT, "SampleMaskOverrideCoverageNV" => Self::SampleMaskOverrideCoverageNV, "GeometryShaderPassthroughNV" => Self::GeometryShaderPassthroughNV, "ShaderViewportIndexLayerEXT" => Self::ShaderViewportIndexLayerEXT, "ShaderViewportIndexLayerNV" => Self::ShaderViewportIndexLayerEXT, "ShaderViewportMaskNV" => Self::ShaderViewportMaskNV, "ShaderStereoViewNV" => Self::ShaderStereoViewNV, "PerViewAttributesNV" => Self::PerViewAttributesNV, "FragmentFullyCoveredEXT" => Self::FragmentFullyCoveredEXT, "MeshShadingNV" => Self::MeshShadingNV, "ImageFootprintNV" => Self::ImageFootprintNV, "MeshShadingEXT" => Self::MeshShadingEXT, "FragmentBarycentricKHR" => Self::FragmentBarycentricKHR, "FragmentBarycentricNV" => Self::FragmentBarycentricKHR, "ComputeDerivativeGroupQuadsKHR" => Self::ComputeDerivativeGroupQuadsKHR, "ComputeDerivativeGroupQuadsNV" => Self::ComputeDerivativeGroupQuadsKHR, "FragmentDensityEXT" => Self::FragmentDensityEXT, "ShadingRateNV" => Self::FragmentDensityEXT, "GroupNonUniformPartitionedEXT" => Self::GroupNonUniformPartitionedEXT, "GroupNonUniformPartitionedNV" => Self::GroupNonUniformPartitionedEXT, "ShaderNonUniform" => Self::ShaderNonUniform, "ShaderNonUniformEXT" => Self::ShaderNonUniform, "RuntimeDescriptorArray" => Self::RuntimeDescriptorArray, "RuntimeDescriptorArrayEXT" => Self::RuntimeDescriptorArray, "InputAttachmentArrayDynamicIndexing" => Self::InputAttachmentArrayDynamicIndexing, "InputAttachmentArrayDynamicIndexingEXT" => Self::InputAttachmentArrayDynamicIndexing, "UniformTexelBufferArrayDynamicIndexing" => { Self::UniformTexelBufferArrayDynamicIndexing } "UniformTexelBufferArrayDynamicIndexingEXT" => { Self::UniformTexelBufferArrayDynamicIndexing } "StorageTexelBufferArrayDynamicIndexing" => { Self::StorageTexelBufferArrayDynamicIndexing } "StorageTexelBufferArrayDynamicIndexingEXT" => { Self::StorageTexelBufferArrayDynamicIndexing } "UniformBufferArrayNonUniformIndexing" => Self::UniformBufferArrayNonUniformIndexing, "UniformBufferArrayNonUniformIndexingEXT" => Self::UniformBufferArrayNonUniformIndexing, "SampledImageArrayNonUniformIndexing" => Self::SampledImageArrayNonUniformIndexing, "SampledImageArrayNonUniformIndexingEXT" => Self::SampledImageArrayNonUniformIndexing, "StorageBufferArrayNonUniformIndexing" => Self::StorageBufferArrayNonUniformIndexing, "StorageBufferArrayNonUniformIndexingEXT" => Self::StorageBufferArrayNonUniformIndexing, "StorageImageArrayNonUniformIndexing" => Self::StorageImageArrayNonUniformIndexing, "StorageImageArrayNonUniformIndexingEXT" => Self::StorageImageArrayNonUniformIndexing, "InputAttachmentArrayNonUniformIndexing" => { Self::InputAttachmentArrayNonUniformIndexing } "InputAttachmentArrayNonUniformIndexingEXT" => { Self::InputAttachmentArrayNonUniformIndexing } "UniformTexelBufferArrayNonUniformIndexing" => { Self::UniformTexelBufferArrayNonUniformIndexing } "UniformTexelBufferArrayNonUniformIndexingEXT" => { Self::UniformTexelBufferArrayNonUniformIndexing } "StorageTexelBufferArrayNonUniformIndexing" => { Self::StorageTexelBufferArrayNonUniformIndexing } "StorageTexelBufferArrayNonUniformIndexingEXT" => { Self::StorageTexelBufferArrayNonUniformIndexing } "RayTracingPositionFetchKHR" => Self::RayTracingPositionFetchKHR, "RayTracingNV" => Self::RayTracingNV, "RayTracingMotionBlurNV" => Self::RayTracingMotionBlurNV, "VulkanMemoryModel" => Self::VulkanMemoryModel, "VulkanMemoryModelKHR" => Self::VulkanMemoryModel, "VulkanMemoryModelDeviceScope" => Self::VulkanMemoryModelDeviceScope, "VulkanMemoryModelDeviceScopeKHR" => Self::VulkanMemoryModelDeviceScope, "PhysicalStorageBufferAddresses" => Self::PhysicalStorageBufferAddresses, "PhysicalStorageBufferAddressesEXT" => Self::PhysicalStorageBufferAddresses, "ComputeDerivativeGroupLinearKHR" => Self::ComputeDerivativeGroupLinearKHR, "ComputeDerivativeGroupLinearNV" => Self::ComputeDerivativeGroupLinearKHR, "RayTracingProvisionalKHR" => Self::RayTracingProvisionalKHR, "CooperativeMatrixNV" => Self::CooperativeMatrixNV, "FragmentShaderSampleInterlockEXT" => Self::FragmentShaderSampleInterlockEXT, "FragmentShaderShadingRateInterlockEXT" => Self::FragmentShaderShadingRateInterlockEXT, "ShaderSMBuiltinsNV" => Self::ShaderSMBuiltinsNV, "FragmentShaderPixelInterlockEXT" => Self::FragmentShaderPixelInterlockEXT, "DemoteToHelperInvocation" => Self::DemoteToHelperInvocation, "DemoteToHelperInvocationEXT" => Self::DemoteToHelperInvocation, "DisplacementMicromapNV" => Self::DisplacementMicromapNV, "RayTracingOpacityMicromapEXT" => Self::RayTracingOpacityMicromapEXT, "ShaderInvocationReorderNV" => Self::ShaderInvocationReorderNV, "ShaderInvocationReorderEXT" => Self::ShaderInvocationReorderEXT, "BindlessTextureNV" => Self::BindlessTextureNV, "RayQueryPositionFetchKHR" => Self::RayQueryPositionFetchKHR, "CooperativeVectorNV" => Self::CooperativeVectorNV, "AtomicFloat16VectorNV" => Self::AtomicFloat16VectorNV, "RayTracingDisplacementMicromapNV" => Self::RayTracingDisplacementMicromapNV, "RawAccessChainsNV" => Self::RawAccessChainsNV, "RayTracingSpheresGeometryNV" => Self::RayTracingSpheresGeometryNV, "RayTracingLinearSweptSpheresGeometryNV" => { Self::RayTracingLinearSweptSpheresGeometryNV } "PushConstantBanksNV" => Self::PushConstantBanksNV, "LongVectorEXT" => Self::LongVectorEXT, "Shader64BitIndexingEXT" => Self::Shader64BitIndexingEXT, "CooperativeMatrixReductionsNV" => Self::CooperativeMatrixReductionsNV, "CooperativeMatrixConversionsNV" => Self::CooperativeMatrixConversionsNV, "CooperativeMatrixPerElementOperationsNV" => { Self::CooperativeMatrixPerElementOperationsNV } "CooperativeMatrixTensorAddressingNV" => Self::CooperativeMatrixTensorAddressingNV, "CooperativeMatrixBlockLoadsNV" => Self::CooperativeMatrixBlockLoadsNV, "CooperativeVectorTrainingNV" => Self::CooperativeVectorTrainingNV, "RayTracingClusterAccelerationStructureNV" => { Self::RayTracingClusterAccelerationStructureNV } "TensorAddressingNV" => Self::TensorAddressingNV, "SubgroupShuffleINTEL" => Self::SubgroupShuffleINTEL, "SubgroupBufferBlockIOINTEL" => Self::SubgroupBufferBlockIOINTEL, "SubgroupImageBlockIOINTEL" => Self::SubgroupImageBlockIOINTEL, "SubgroupImageMediaBlockIOINTEL" => Self::SubgroupImageMediaBlockIOINTEL, "RoundToInfinityINTEL" => Self::RoundToInfinityINTEL, "FloatingPointModeINTEL" => Self::FloatingPointModeINTEL, "IntegerFunctions2INTEL" => Self::IntegerFunctions2INTEL, "FunctionPointersINTEL" => Self::FunctionPointersINTEL, "IndirectReferencesINTEL" => Self::IndirectReferencesINTEL, "AsmINTEL" => Self::AsmINTEL, "AtomicFloat32MinMaxEXT" => Self::AtomicFloat32MinMaxEXT, "AtomicFloat64MinMaxEXT" => Self::AtomicFloat64MinMaxEXT, "AtomicFloat16MinMaxEXT" => Self::AtomicFloat16MinMaxEXT, "VectorComputeINTEL" => Self::VectorComputeINTEL, "VectorAnyINTEL" => Self::VectorAnyINTEL, "ExpectAssumeKHR" => Self::ExpectAssumeKHR, "SubgroupAvcMotionEstimationINTEL" => Self::SubgroupAvcMotionEstimationINTEL, "SubgroupAvcMotionEstimationIntraINTEL" => Self::SubgroupAvcMotionEstimationIntraINTEL, "SubgroupAvcMotionEstimationChromaINTEL" => { Self::SubgroupAvcMotionEstimationChromaINTEL } "VariableLengthArrayINTEL" => Self::VariableLengthArrayINTEL, "FunctionFloatControlINTEL" => Self::FunctionFloatControlINTEL, "FPGAMemoryAttributesALTERA" => Self::FPGAMemoryAttributesALTERA, "FPGAMemoryAttributesINTEL" => Self::FPGAMemoryAttributesALTERA, "FPFastMathModeINTEL" => Self::FPFastMathModeINTEL, "ArbitraryPrecisionIntegersALTERA" => Self::ArbitraryPrecisionIntegersALTERA, "ArbitraryPrecisionIntegersINTEL" => Self::ArbitraryPrecisionIntegersALTERA, "ArbitraryPrecisionFloatingPointALTERA" => Self::ArbitraryPrecisionFloatingPointALTERA, "ArbitraryPrecisionFloatingPointINTEL" => Self::ArbitraryPrecisionFloatingPointALTERA, "UnstructuredLoopControlsINTEL" => Self::UnstructuredLoopControlsINTEL, "FPGALoopControlsALTERA" => Self::FPGALoopControlsALTERA, "FPGALoopControlsINTEL" => Self::FPGALoopControlsALTERA, "KernelAttributesINTEL" => Self::KernelAttributesINTEL, "FPGAKernelAttributesINTEL" => Self::FPGAKernelAttributesINTEL, "FPGAMemoryAccessesALTERA" => Self::FPGAMemoryAccessesALTERA, "FPGAMemoryAccessesINTEL" => Self::FPGAMemoryAccessesALTERA, "FPGAClusterAttributesALTERA" => Self::FPGAClusterAttributesALTERA, "FPGAClusterAttributesINTEL" => Self::FPGAClusterAttributesALTERA, "LoopFuseALTERA" => Self::LoopFuseALTERA, "LoopFuseINTEL" => Self::LoopFuseALTERA, "FPGADSPControlALTERA" => Self::FPGADSPControlALTERA, "FPGADSPControlINTEL" => Self::FPGADSPControlALTERA, "MemoryAccessAliasingINTEL" => Self::MemoryAccessAliasingINTEL, "FPGAInvocationPipeliningAttributesALTERA" => { Self::FPGAInvocationPipeliningAttributesALTERA } "FPGAInvocationPipeliningAttributesINTEL" => { Self::FPGAInvocationPipeliningAttributesALTERA } "FPGABufferLocationALTERA" => Self::FPGABufferLocationALTERA, "FPGABufferLocationINTEL" => Self::FPGABufferLocationALTERA, "ArbitraryPrecisionFixedPointALTERA" => Self::ArbitraryPrecisionFixedPointALTERA, "ArbitraryPrecisionFixedPointINTEL" => Self::ArbitraryPrecisionFixedPointALTERA, "USMStorageClassesALTERA" => Self::USMStorageClassesALTERA, "USMStorageClassesINTEL" => Self::USMStorageClassesALTERA, "RuntimeAlignedAttributeALTERA" => Self::RuntimeAlignedAttributeALTERA, "RuntimeAlignedAttributeINTEL" => Self::RuntimeAlignedAttributeALTERA, "IOPipesALTERA" => Self::IOPipesALTERA, "IOPipesINTEL" => Self::IOPipesALTERA, "BlockingPipesALTERA" => Self::BlockingPipesALTERA, "BlockingPipesINTEL" => Self::BlockingPipesALTERA, "FPGARegALTERA" => Self::FPGARegALTERA, "FPGARegINTEL" => Self::FPGARegALTERA, "DotProductInputAll" => Self::DotProductInputAll, "DotProductInputAllKHR" => Self::DotProductInputAll, "DotProductInput4x8Bit" => Self::DotProductInput4x8Bit, "DotProductInput4x8BitKHR" => Self::DotProductInput4x8Bit, "DotProductInput4x8BitPacked" => Self::DotProductInput4x8BitPacked, "DotProductInput4x8BitPackedKHR" => Self::DotProductInput4x8BitPacked, "DotProduct" => Self::DotProduct, "DotProductKHR" => Self::DotProduct, "RayCullMaskKHR" => Self::RayCullMaskKHR, "CooperativeMatrixKHR" => Self::CooperativeMatrixKHR, "ReplicatedCompositesEXT" => Self::ReplicatedCompositesEXT, "BitInstructions" => Self::BitInstructions, "GroupNonUniformRotateKHR" => Self::GroupNonUniformRotateKHR, "FloatControls2" => Self::FloatControls2, "FMAKHR" => Self::FMAKHR, "AtomicFloat32AddEXT" => Self::AtomicFloat32AddEXT, "AtomicFloat64AddEXT" => Self::AtomicFloat64AddEXT, "LongCompositesINTEL" => Self::LongCompositesINTEL, "OptNoneEXT" => Self::OptNoneEXT, "OptNoneINTEL" => Self::OptNoneEXT, "AtomicFloat16AddEXT" => Self::AtomicFloat16AddEXT, "DebugInfoModuleINTEL" => Self::DebugInfoModuleINTEL, "BFloat16ConversionINTEL" => Self::BFloat16ConversionINTEL, "SplitBarrierINTEL" => Self::SplitBarrierINTEL, "ArithmeticFenceEXT" => Self::ArithmeticFenceEXT, "FPGAClusterAttributesV2ALTERA" => Self::FPGAClusterAttributesV2ALTERA, "FPGAClusterAttributesV2INTEL" => Self::FPGAClusterAttributesV2ALTERA, "FPGAKernelAttributesv2INTEL" => Self::FPGAKernelAttributesv2INTEL, "TaskSequenceALTERA" => Self::TaskSequenceALTERA, "TaskSequenceINTEL" => Self::TaskSequenceALTERA, "FPMaxErrorINTEL" => Self::FPMaxErrorINTEL, "FPGALatencyControlALTERA" => Self::FPGALatencyControlALTERA, "FPGALatencyControlINTEL" => Self::FPGALatencyControlALTERA, "FPGAArgumentInterfacesALTERA" => Self::FPGAArgumentInterfacesALTERA, "FPGAArgumentInterfacesINTEL" => Self::FPGAArgumentInterfacesALTERA, "GlobalVariableHostAccessINTEL" => Self::GlobalVariableHostAccessINTEL, "GlobalVariableFPGADecorationsALTERA" => Self::GlobalVariableFPGADecorationsALTERA, "GlobalVariableFPGADecorationsINTEL" => Self::GlobalVariableFPGADecorationsALTERA, "SubgroupBufferPrefetchINTEL" => Self::SubgroupBufferPrefetchINTEL, "Subgroup2DBlockIOINTEL" => Self::Subgroup2DBlockIOINTEL, "Subgroup2DBlockTransformINTEL" => Self::Subgroup2DBlockTransformINTEL, "Subgroup2DBlockTransposeINTEL" => Self::Subgroup2DBlockTransposeINTEL, "SubgroupMatrixMultiplyAccumulateINTEL" => Self::SubgroupMatrixMultiplyAccumulateINTEL, "TernaryBitwiseFunctionINTEL" => Self::TernaryBitwiseFunctionINTEL, "UntypedVariableLengthArrayINTEL" => Self::UntypedVariableLengthArrayINTEL, "SpecConditionalINTEL" => Self::SpecConditionalINTEL, "FunctionVariantsINTEL" => Self::FunctionVariantsINTEL, "GroupUniformArithmeticKHR" => Self::GroupUniformArithmeticKHR, "TensorFloat32RoundingINTEL" => Self::TensorFloat32RoundingINTEL, "MaskedGatherScatterINTEL" => Self::MaskedGatherScatterINTEL, "CacheControlsINTEL" => Self::CacheControlsINTEL, "RegisterLimitsINTEL" => Self::RegisterLimitsINTEL, "BindlessImagesINTEL" => Self::BindlessImagesINTEL, _ => return Err(()), }) } } #[doc = "SPIR-V operand kind: [RayQueryIntersection](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_ray_query_intersection_a_ray_query_intersection)"] #[repr(u32)] #[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] pub enum RayQueryIntersection { RayQueryCandidateIntersectionKHR = 0u32, RayQueryCommittedIntersectionKHR = 1u32, } impl RayQueryIntersection { pub fn from_u32(n: u32) -> Option { Some(match n { 0u32..=1u32 => unsafe { core::mem::transmute::(n) }, _ => return None, }) } } #[allow(non_upper_case_globals)] impl RayQueryIntersection {} impl core::str::FromStr for RayQueryIntersection { type Err = (); fn from_str(s: &str) -> Result { Ok(match s { "RayQueryCandidateIntersectionKHR" => Self::RayQueryCandidateIntersectionKHR, "RayQueryCommittedIntersectionKHR" => Self::RayQueryCommittedIntersectionKHR, _ => return Err(()), }) } } #[doc = "SPIR-V operand kind: [RayQueryCommittedIntersectionType](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_ray_query_committed_intersection_type_a_ray_query_committed_intersection_type)"] #[repr(u32)] #[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] pub enum RayQueryCommittedIntersectionType { RayQueryCommittedIntersectionNoneKHR = 0u32, RayQueryCommittedIntersectionTriangleKHR = 1u32, RayQueryCommittedIntersectionGeneratedKHR = 2u32, } impl RayQueryCommittedIntersectionType { pub fn from_u32(n: u32) -> Option { Some(match n { 0u32..=2u32 => unsafe { core::mem::transmute::(n) }, _ => return None, }) } } #[allow(non_upper_case_globals)] impl RayQueryCommittedIntersectionType {} impl core::str::FromStr for RayQueryCommittedIntersectionType { type Err = (); fn from_str(s: &str) -> Result { Ok(match s { "RayQueryCommittedIntersectionNoneKHR" => Self::RayQueryCommittedIntersectionNoneKHR, "RayQueryCommittedIntersectionTriangleKHR" => { Self::RayQueryCommittedIntersectionTriangleKHR } "RayQueryCommittedIntersectionGeneratedKHR" => { Self::RayQueryCommittedIntersectionGeneratedKHR } _ => return Err(()), }) } } #[doc = "SPIR-V operand kind: [RayQueryCandidateIntersectionType](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_ray_query_candidate_intersection_type_a_ray_query_candidate_intersection_type)"] #[repr(u32)] #[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] pub enum RayQueryCandidateIntersectionType { RayQueryCandidateIntersectionTriangleKHR = 0u32, RayQueryCandidateIntersectionAABBKHR = 1u32, } impl RayQueryCandidateIntersectionType { pub fn from_u32(n: u32) -> Option { Some(match n { 0u32..=1u32 => unsafe { core::mem::transmute::(n) }, _ => return None, }) } } #[allow(non_upper_case_globals)] impl RayQueryCandidateIntersectionType {} impl core::str::FromStr for RayQueryCandidateIntersectionType { type Err = (); fn from_str(s: &str) -> Result { Ok(match s { "RayQueryCandidateIntersectionTriangleKHR" => { Self::RayQueryCandidateIntersectionTriangleKHR } "RayQueryCandidateIntersectionAABBKHR" => Self::RayQueryCandidateIntersectionAABBKHR, _ => return Err(()), }) } } #[doc = "SPIR-V operand kind: [PackedVectorFormat](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_packed_vector_format_a_packed_vector_format)"] #[repr(u32)] #[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] pub enum PackedVectorFormat { PackedVectorFormat4x8Bit = 0u32, } impl PackedVectorFormat { pub fn from_u32(n: u32) -> Option { Some(match n { 0u32 => unsafe { core::mem::transmute::(0u32) }, _ => return None, }) } } #[allow(non_upper_case_globals)] impl PackedVectorFormat { pub const PackedVectorFormat4x8BitKHR: Self = Self::PackedVectorFormat4x8Bit; } impl core::str::FromStr for PackedVectorFormat { type Err = (); fn from_str(s: &str) -> Result { Ok(match s { "PackedVectorFormat4x8Bit" => Self::PackedVectorFormat4x8Bit, "PackedVectorFormat4x8BitKHR" => Self::PackedVectorFormat4x8Bit, _ => return Err(()), }) } } bitflags! { # [doc = "SPIR-V operand kind: [CooperativeMatrixOperands](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_cooperative_matrix_operands_a_cooperative_matrix_operands)"] # [derive (Clone , Copy , Debug , PartialEq , Eq , Hash)] # [cfg_attr (feature = "serialize" , derive (serde :: Serialize))] # [cfg_attr (feature = "deserialize" , derive (serde :: Deserialize))] pub struct CooperativeMatrixOperands : u32 { const NONE_KHR = 0u32 ; const MATRIX_A_SIGNED_COMPONENTS_KHR = 1u32 ; const MATRIX_B_SIGNED_COMPONENTS_KHR = 2u32 ; const MATRIX_C_SIGNED_COMPONENTS_KHR = 4u32 ; const MATRIX_RESULT_SIGNED_COMPONENTS_KHR = 8u32 ; const SATURATING_ACCUMULATION_KHR = 16u32 ; } } #[doc = "SPIR-V operand kind: [CooperativeMatrixLayout](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_cooperative_matrix_layout_a_cooperative_matrix_layout)"] #[repr(u32)] #[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] pub enum CooperativeMatrixLayout { RowMajorKHR = 0u32, ColumnMajorKHR = 1u32, RowBlockedInterleavedARM = 4202u32, ColumnBlockedInterleavedARM = 4203u32, } impl CooperativeMatrixLayout { pub fn from_u32(n: u32) -> Option { Some(match n { 0u32..=1u32 => unsafe { core::mem::transmute::(n) }, 4202u32..=4203u32 => unsafe { core::mem::transmute::(n) }, _ => return None, }) } } #[allow(non_upper_case_globals)] impl CooperativeMatrixLayout {} impl core::str::FromStr for CooperativeMatrixLayout { type Err = (); fn from_str(s: &str) -> Result { Ok(match s { "RowMajorKHR" => Self::RowMajorKHR, "ColumnMajorKHR" => Self::ColumnMajorKHR, "RowBlockedInterleavedARM" => Self::RowBlockedInterleavedARM, "ColumnBlockedInterleavedARM" => Self::ColumnBlockedInterleavedARM, _ => return Err(()), }) } } #[doc = "SPIR-V operand kind: [CooperativeMatrixUse](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_cooperative_matrix_use_a_cooperative_matrix_use)"] #[repr(u32)] #[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] pub enum CooperativeMatrixUse { MatrixAKHR = 0u32, MatrixBKHR = 1u32, MatrixAccumulatorKHR = 2u32, } impl CooperativeMatrixUse { pub fn from_u32(n: u32) -> Option { Some(match n { 0u32..=2u32 => unsafe { core::mem::transmute::(n) }, _ => return None, }) } } #[allow(non_upper_case_globals)] impl CooperativeMatrixUse {} impl core::str::FromStr for CooperativeMatrixUse { type Err = (); fn from_str(s: &str) -> Result { Ok(match s { "MatrixAKHR" => Self::MatrixAKHR, "MatrixBKHR" => Self::MatrixBKHR, "MatrixAccumulatorKHR" => Self::MatrixAccumulatorKHR, _ => return Err(()), }) } } bitflags! { # [doc = "SPIR-V operand kind: [CooperativeMatrixReduce](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_cooperative_matrix_reduce_a_cooperative_matrix_reduce)"] # [derive (Clone , Copy , Debug , PartialEq , Eq , Hash)] # [cfg_attr (feature = "serialize" , derive (serde :: Serialize))] # [cfg_attr (feature = "deserialize" , derive (serde :: Deserialize))] pub struct CooperativeMatrixReduce : u32 { const ROW = 1u32 ; const COLUMN = 2u32 ; const _2X2 = 4u32 ; } } #[doc = "SPIR-V operand kind: [TensorClampMode](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_tensor_clamp_mode_a_tensor_clamp_mode)"] #[repr(u32)] #[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] pub enum TensorClampMode { Undefined = 0u32, Constant = 1u32, ClampToEdge = 2u32, Repeat = 3u32, RepeatMirrored = 4u32, } impl TensorClampMode { pub fn from_u32(n: u32) -> Option { Some(match n { 0u32..=4u32 => unsafe { core::mem::transmute::(n) }, _ => return None, }) } } #[allow(non_upper_case_globals)] impl TensorClampMode {} impl core::str::FromStr for TensorClampMode { type Err = (); fn from_str(s: &str) -> Result { Ok(match s { "Undefined" => Self::Undefined, "Constant" => Self::Constant, "ClampToEdge" => Self::ClampToEdge, "Repeat" => Self::Repeat, "RepeatMirrored" => Self::RepeatMirrored, _ => return Err(()), }) } } bitflags! { # [doc = "SPIR-V operand kind: [TensorAddressingOperands](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_tensor_addressing_operands_a_tensor_addressing_operands)"] # [derive (Clone , Copy , Debug , PartialEq , Eq , Hash)] # [cfg_attr (feature = "serialize" , derive (serde :: Serialize))] # [cfg_attr (feature = "deserialize" , derive (serde :: Deserialize))] pub struct TensorAddressingOperands : u32 { const NONE = 0u32 ; const TENSOR_VIEW = 1u32 ; const DECODE_FUNC = 2u32 ; } } #[doc = "SPIR-V operand kind: [InitializationModeQualifier](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_initialization_mode_qualifier_a_initialization_mode_qualifier)"] #[repr(u32)] #[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] pub enum InitializationModeQualifier { InitOnDeviceReprogramALTERA = 0u32, InitOnDeviceResetALTERA = 1u32, } impl InitializationModeQualifier { pub fn from_u32(n: u32) -> Option { Some(match n { 0u32..=1u32 => unsafe { core::mem::transmute::(n) }, _ => return None, }) } } #[allow(non_upper_case_globals)] impl InitializationModeQualifier { pub const InitOnDeviceReprogramINTEL: Self = Self::InitOnDeviceReprogramALTERA; pub const InitOnDeviceResetINTEL: Self = Self::InitOnDeviceResetALTERA; } impl core::str::FromStr for InitializationModeQualifier { type Err = (); fn from_str(s: &str) -> Result { Ok(match s { "InitOnDeviceReprogramALTERA" => Self::InitOnDeviceReprogramALTERA, "InitOnDeviceReprogramINTEL" => Self::InitOnDeviceReprogramALTERA, "InitOnDeviceResetALTERA" => Self::InitOnDeviceResetALTERA, "InitOnDeviceResetINTEL" => Self::InitOnDeviceResetALTERA, _ => return Err(()), }) } } #[doc = "SPIR-V operand kind: [LoadCacheControl](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_load_cache_control_a_load_cache_control)"] #[repr(u32)] #[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] pub enum LoadCacheControl { UncachedINTEL = 0u32, CachedINTEL = 1u32, StreamingINTEL = 2u32, InvalidateAfterReadINTEL = 3u32, ConstCachedINTEL = 4u32, } impl LoadCacheControl { pub fn from_u32(n: u32) -> Option { Some(match n { 0u32..=4u32 => unsafe { core::mem::transmute::(n) }, _ => return None, }) } } #[allow(non_upper_case_globals)] impl LoadCacheControl {} impl core::str::FromStr for LoadCacheControl { type Err = (); fn from_str(s: &str) -> Result { Ok(match s { "UncachedINTEL" => Self::UncachedINTEL, "CachedINTEL" => Self::CachedINTEL, "StreamingINTEL" => Self::StreamingINTEL, "InvalidateAfterReadINTEL" => Self::InvalidateAfterReadINTEL, "ConstCachedINTEL" => Self::ConstCachedINTEL, _ => return Err(()), }) } } #[doc = "SPIR-V operand kind: [StoreCacheControl](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_store_cache_control_a_store_cache_control)"] #[repr(u32)] #[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] pub enum StoreCacheControl { UncachedINTEL = 0u32, WriteThroughINTEL = 1u32, WriteBackINTEL = 2u32, StreamingINTEL = 3u32, } impl StoreCacheControl { pub fn from_u32(n: u32) -> Option { Some(match n { 0u32..=3u32 => unsafe { core::mem::transmute::(n) }, _ => return None, }) } } #[allow(non_upper_case_globals)] impl StoreCacheControl {} impl core::str::FromStr for StoreCacheControl { type Err = (); fn from_str(s: &str) -> Result { Ok(match s { "UncachedINTEL" => Self::UncachedINTEL, "WriteThroughINTEL" => Self::WriteThroughINTEL, "WriteBackINTEL" => Self::WriteBackINTEL, "StreamingINTEL" => Self::StreamingINTEL, _ => return Err(()), }) } } #[doc = "SPIR-V operand kind: [NamedMaximumNumberOfRegisters](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_named_maximum_number_of_registers_a_named_maximum_number_of_registers)"] #[repr(u32)] #[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] pub enum NamedMaximumNumberOfRegisters { AutoINTEL = 0u32, } impl NamedMaximumNumberOfRegisters { pub fn from_u32(n: u32) -> Option { Some(match n { 0u32 => unsafe { core::mem::transmute::(0u32) }, _ => return None, }) } } #[allow(non_upper_case_globals)] impl NamedMaximumNumberOfRegisters {} impl core::str::FromStr for NamedMaximumNumberOfRegisters { type Err = (); fn from_str(s: &str) -> Result { Ok(match s { "AutoINTEL" => Self::AutoINTEL, _ => return Err(()), }) } } bitflags! { # [doc = "SPIR-V operand kind: [MatrixMultiplyAccumulateOperands](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_matrix_multiply_accumulate_operands_a_matrix_multiply_accumulate_operands)"] # [derive (Clone , Copy , Debug , PartialEq , Eq , Hash)] # [cfg_attr (feature = "serialize" , derive (serde :: Serialize))] # [cfg_attr (feature = "deserialize" , derive (serde :: Deserialize))] pub struct MatrixMultiplyAccumulateOperands : u32 { const NONE = 0u32 ; const MATRIX_A_SIGNED_COMPONENTS_INTEL = 1u32 ; const MATRIX_B_SIGNED_COMPONENTS_INTEL = 2u32 ; const MATRIX_CB_FLOAT16_INTEL = 4u32 ; const MATRIX_RESULT_B_FLOAT16_INTEL = 8u32 ; const MATRIX_A_PACKED_INT8_INTEL = 16u32 ; const MATRIX_B_PACKED_INT8_INTEL = 32u32 ; const MATRIX_A_PACKED_INT4_INTEL = 64u32 ; const MATRIX_B_PACKED_INT4_INTEL = 128u32 ; const MATRIX_ATF32INTEL = 256u32 ; const MATRIX_BTF32INTEL = 512u32 ; const MATRIX_A_PACKED_FLOAT16_INTEL = 1024u32 ; const MATRIX_B_PACKED_FLOAT16_INTEL = 2048u32 ; const MATRIX_A_PACKED_B_FLOAT16_INTEL = 4096u32 ; const MATRIX_B_PACKED_B_FLOAT16_INTEL = 8192u32 ; } } #[doc = "SPIR-V operand kind: [FPEncoding](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_fp_encoding_a_fp_encoding)"] #[repr(u32)] #[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] pub enum FPEncoding { BFloat16KHR = 0u32, Float8E4M3EXT = 4214u32, Float8E5M2EXT = 4215u32, } impl FPEncoding { pub fn from_u32(n: u32) -> Option { Some(match n { 0u32 => unsafe { core::mem::transmute::(0u32) }, 4214u32..=4215u32 => unsafe { core::mem::transmute::(n) }, _ => return None, }) } } #[allow(non_upper_case_globals)] impl FPEncoding {} impl core::str::FromStr for FPEncoding { type Err = (); fn from_str(s: &str) -> Result { Ok(match s { "BFloat16KHR" => Self::BFloat16KHR, "Float8E4M3EXT" => Self::Float8E4M3EXT, "Float8E5M2EXT" => Self::Float8E5M2EXT, _ => return Err(()), }) } } #[doc = "SPIR-V operand kind: [CooperativeVectorMatrixLayout](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_cooperative_vector_matrix_layout_a_cooperative_vector_matrix_layout)"] #[repr(u32)] #[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] pub enum CooperativeVectorMatrixLayout { RowMajorNV = 0u32, ColumnMajorNV = 1u32, InferencingOptimalNV = 2u32, TrainingOptimalNV = 3u32, } impl CooperativeVectorMatrixLayout { pub fn from_u32(n: u32) -> Option { Some(match n { 0u32..=3u32 => unsafe { core::mem::transmute::(n) }, _ => return None, }) } } #[allow(non_upper_case_globals)] impl CooperativeVectorMatrixLayout {} impl core::str::FromStr for CooperativeVectorMatrixLayout { type Err = (); fn from_str(s: &str) -> Result { Ok(match s { "RowMajorNV" => Self::RowMajorNV, "ColumnMajorNV" => Self::ColumnMajorNV, "InferencingOptimalNV" => Self::InferencingOptimalNV, "TrainingOptimalNV" => Self::TrainingOptimalNV, _ => return Err(()), }) } } #[doc = "SPIR-V operand kind: [ComponentType](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_component_type_a_component_type)"] #[repr(u32)] #[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] pub enum ComponentType { Float16NV = 0u32, Float32NV = 1u32, Float64NV = 2u32, SignedInt8NV = 3u32, SignedInt16NV = 4u32, SignedInt32NV = 5u32, SignedInt64NV = 6u32, UnsignedInt8NV = 7u32, UnsignedInt16NV = 8u32, UnsignedInt32NV = 9u32, UnsignedInt64NV = 10u32, SignedInt8PackedNV = 1000491000u32, UnsignedInt8PackedNV = 1000491001u32, FloatE4M3NV = 1000491002u32, FloatE5M2NV = 1000491003u32, } impl ComponentType { pub fn from_u32(n: u32) -> Option { Some(match n { 0u32..=10u32 => unsafe { core::mem::transmute::(n) }, 1000491000u32..=1000491003u32 => unsafe { core::mem::transmute::(n) }, _ => return None, }) } } #[allow(non_upper_case_globals)] impl ComponentType {} impl core::str::FromStr for ComponentType { type Err = (); fn from_str(s: &str) -> Result { Ok(match s { "Float16NV" => Self::Float16NV, "Float32NV" => Self::Float32NV, "Float64NV" => Self::Float64NV, "SignedInt8NV" => Self::SignedInt8NV, "SignedInt16NV" => Self::SignedInt16NV, "SignedInt32NV" => Self::SignedInt32NV, "SignedInt64NV" => Self::SignedInt64NV, "UnsignedInt8NV" => Self::UnsignedInt8NV, "UnsignedInt16NV" => Self::UnsignedInt16NV, "UnsignedInt32NV" => Self::UnsignedInt32NV, "UnsignedInt64NV" => Self::UnsignedInt64NV, "SignedInt8PackedNV" => Self::SignedInt8PackedNV, "UnsignedInt8PackedNV" => Self::UnsignedInt8PackedNV, "FloatE4M3NV" => Self::FloatE4M3NV, "FloatE5M2NV" => Self::FloatE5M2NV, _ => return Err(()), }) } } bitflags! { # [doc = "SPIR-V operand kind: [TensorOperands](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_tensor_operands_a_tensor_operands)"] # [derive (Clone , Copy , Debug , PartialEq , Eq , Hash)] # [cfg_attr (feature = "serialize" , derive (serde :: Serialize))] # [cfg_attr (feature = "deserialize" , derive (serde :: Deserialize))] pub struct TensorOperands : u32 { const NONE_ARM = 0u32 ; const NONTEMPORAL_ARM = 1u32 ; const OUT_OF_BOUNDS_VALUE_ARM = 2u32 ; const MAKE_ELEMENT_AVAILABLE_ARM = 4u32 ; const MAKE_ELEMENT_VISIBLE_ARM = 8u32 ; const NON_PRIVATE_ELEMENT_ARM = 16u32 ; } } #[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)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] 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, ColorAttachmentReadEXT = 4160u32, DepthAttachmentReadEXT = 4161u32, StencilAttachmentReadEXT = 4162u32, TypeTensorARM = 4163u32, TensorReadARM = 4164u32, TensorWriteARM = 4165u32, TensorQuerySizeARM = 4166u32, GraphConstantARM = 4181u32, GraphEntryPointARM = 4182u32, GraphARM = 4183u32, GraphInputARM = 4184u32, GraphSetOutputARM = 4185u32, GraphEndARM = 4186u32, TypeGraphARM = 4190u32, TerminateInvocation = 4416u32, TypeUntypedPointerKHR = 4417u32, UntypedVariableKHR = 4418u32, UntypedAccessChainKHR = 4419u32, UntypedInBoundsAccessChainKHR = 4420u32, SubgroupBallotKHR = 4421u32, SubgroupFirstInvocationKHR = 4422u32, UntypedPtrAccessChainKHR = 4423u32, UntypedInBoundsPtrAccessChainKHR = 4424u32, UntypedArrayLengthKHR = 4425u32, UntypedPrefetchKHR = 4426u32, FmaKHR = 4427u32, SubgroupAllKHR = 4428u32, SubgroupAnyKHR = 4429u32, SubgroupAllEqualKHR = 4430u32, GroupNonUniformRotateKHR = 4431u32, SubgroupReadInvocationKHR = 4432u32, ExtInstWithForwardRefsKHR = 4433u32, UntypedGroupAsyncCopyKHR = 4434u32, TraceRayKHR = 4445u32, ExecuteCallableKHR = 4446u32, ConvertUToAccelerationStructureKHR = 4447u32, IgnoreIntersectionKHR = 4448u32, TerminateRayKHR = 4449u32, SDot = 4450u32, UDot = 4451u32, SUDot = 4452u32, SDotAccSat = 4453u32, UDotAccSat = 4454u32, SUDotAccSat = 4455u32, TypeCooperativeMatrixKHR = 4456u32, CooperativeMatrixLoadKHR = 4457u32, CooperativeMatrixStoreKHR = 4458u32, CooperativeMatrixMulAddKHR = 4459u32, CooperativeMatrixLengthKHR = 4460u32, ConstantCompositeReplicateEXT = 4461u32, SpecConstantCompositeReplicateEXT = 4462u32, CompositeConstructReplicateEXT = 4463u32, TypeRayQueryKHR = 4472u32, RayQueryInitializeKHR = 4473u32, RayQueryTerminateKHR = 4474u32, RayQueryGenerateIntersectionKHR = 4475u32, RayQueryConfirmIntersectionKHR = 4476u32, RayQueryProceedKHR = 4477u32, RayQueryGetIntersectionTypeKHR = 4479u32, ImageSampleWeightedQCOM = 4480u32, ImageBoxFilterQCOM = 4481u32, ImageBlockMatchSSDQCOM = 4482u32, ImageBlockMatchSADQCOM = 4483u32, BitCastArrayQCOM = 4497u32, ImageBlockMatchWindowSSDQCOM = 4500u32, ImageBlockMatchWindowSADQCOM = 4501u32, ImageBlockMatchGatherSSDQCOM = 4502u32, ImageBlockMatchGatherSADQCOM = 4503u32, CompositeConstructCoopMatQCOM = 4540u32, CompositeExtractCoopMatQCOM = 4541u32, ExtractSubArrayQCOM = 4542u32, GroupIAddNonUniformAMD = 5000u32, GroupFAddNonUniformAMD = 5001u32, GroupFMinNonUniformAMD = 5002u32, GroupUMinNonUniformAMD = 5003u32, GroupSMinNonUniformAMD = 5004u32, GroupFMaxNonUniformAMD = 5005u32, GroupUMaxNonUniformAMD = 5006u32, GroupSMaxNonUniformAMD = 5007u32, FragmentMaskFetchAMD = 5011u32, FragmentFetchAMD = 5012u32, ReadClockKHR = 5056u32, AllocateNodePayloadsAMDX = 5074u32, EnqueueNodePayloadsAMDX = 5075u32, TypeNodePayloadArrayAMDX = 5076u32, FinishWritingNodePayloadAMDX = 5078u32, NodePayloadArrayLengthAMDX = 5090u32, IsNodePayloadValidAMDX = 5101u32, ConstantStringAMDX = 5103u32, SpecConstantStringAMDX = 5104u32, GroupNonUniformQuadAllKHR = 5110u32, GroupNonUniformQuadAnyKHR = 5111u32, TypeBufferEXT = 5115u32, BufferPointerEXT = 5119u32, UntypedImageTexelPointerEXT = 5126u32, MemberDecorateIdEXT = 5127u32, ConstantSizeOfEXT = 5129u32, HitObjectRecordHitMotionNV = 5249u32, HitObjectRecordHitWithIndexMotionNV = 5250u32, HitObjectRecordMissMotionNV = 5251u32, HitObjectGetWorldToObjectNV = 5252u32, HitObjectGetObjectToWorldNV = 5253u32, HitObjectGetObjectRayDirectionNV = 5254u32, HitObjectGetObjectRayOriginNV = 5255u32, HitObjectTraceRayMotionNV = 5256u32, HitObjectGetShaderRecordBufferHandleNV = 5257u32, HitObjectGetShaderBindingTableRecordIndexNV = 5258u32, HitObjectRecordEmptyNV = 5259u32, HitObjectTraceRayNV = 5260u32, HitObjectRecordHitNV = 5261u32, HitObjectRecordHitWithIndexNV = 5262u32, HitObjectRecordMissNV = 5263u32, HitObjectExecuteShaderNV = 5264u32, HitObjectGetCurrentTimeNV = 5265u32, HitObjectGetAttributesNV = 5266u32, HitObjectGetHitKindNV = 5267u32, HitObjectGetPrimitiveIndexNV = 5268u32, HitObjectGetGeometryIndexNV = 5269u32, HitObjectGetInstanceIdNV = 5270u32, HitObjectGetInstanceCustomIndexNV = 5271u32, HitObjectGetWorldRayDirectionNV = 5272u32, HitObjectGetWorldRayOriginNV = 5273u32, HitObjectGetRayTMaxNV = 5274u32, HitObjectGetRayTMinNV = 5275u32, HitObjectIsEmptyNV = 5276u32, HitObjectIsHitNV = 5277u32, HitObjectIsMissNV = 5278u32, ReorderThreadWithHitObjectNV = 5279u32, ReorderThreadWithHintNV = 5280u32, TypeHitObjectNV = 5281u32, ImageSampleFootprintNV = 5283u32, TypeVectorIdEXT = 5288u32, CooperativeVectorMatrixMulNV = 5289u32, CooperativeVectorOuterProductAccumulateNV = 5290u32, CooperativeVectorReduceSumAccumulateNV = 5291u32, CooperativeVectorMatrixMulAddNV = 5292u32, CooperativeMatrixConvertNV = 5293u32, EmitMeshTasksEXT = 5294u32, SetMeshOutputsEXT = 5295u32, GroupNonUniformPartitionEXT = 5296u32, WritePackedPrimitiveIndices4x8NV = 5299u32, FetchMicroTriangleVertexPositionNV = 5300u32, FetchMicroTriangleVertexBarycentricNV = 5301u32, CooperativeVectorLoadNV = 5302u32, CooperativeVectorStoreNV = 5303u32, HitObjectRecordFromQueryEXT = 5304u32, HitObjectRecordMissEXT = 5305u32, HitObjectRecordMissMotionEXT = 5306u32, HitObjectGetIntersectionTriangleVertexPositionsEXT = 5307u32, HitObjectGetRayFlagsEXT = 5308u32, HitObjectSetShaderBindingTableRecordIndexEXT = 5309u32, HitObjectReorderExecuteShaderEXT = 5310u32, HitObjectTraceReorderExecuteEXT = 5311u32, HitObjectTraceMotionReorderExecuteEXT = 5312u32, TypeHitObjectEXT = 5313u32, ReorderThreadWithHintEXT = 5314u32, ReorderThreadWithHitObjectEXT = 5315u32, HitObjectTraceRayEXT = 5316u32, HitObjectTraceRayMotionEXT = 5317u32, HitObjectRecordEmptyEXT = 5318u32, HitObjectExecuteShaderEXT = 5319u32, HitObjectGetCurrentTimeEXT = 5320u32, HitObjectGetAttributesEXT = 5321u32, HitObjectGetHitKindEXT = 5322u32, HitObjectGetPrimitiveIndexEXT = 5323u32, HitObjectGetGeometryIndexEXT = 5324u32, HitObjectGetInstanceIdEXT = 5325u32, HitObjectGetInstanceCustomIndexEXT = 5326u32, HitObjectGetObjectRayOriginEXT = 5327u32, HitObjectGetObjectRayDirectionEXT = 5328u32, HitObjectGetWorldRayDirectionEXT = 5329u32, HitObjectGetWorldRayOriginEXT = 5330u32, HitObjectGetObjectToWorldEXT = 5331u32, HitObjectGetWorldToObjectEXT = 5332u32, HitObjectGetRayTMaxEXT = 5333u32, ReportIntersectionKHR = 5334u32, IgnoreIntersectionNV = 5335u32, TerminateRayNV = 5336u32, TraceNV = 5337u32, TraceMotionNV = 5338u32, TraceRayMotionNV = 5339u32, RayQueryGetIntersectionTriangleVertexPositionsKHR = 5340u32, TypeAccelerationStructureKHR = 5341u32, ExecuteCallableNV = 5344u32, RayQueryGetIntersectionClusterIdNV = 5345u32, HitObjectGetClusterIdNV = 5346u32, HitObjectGetRayTMinEXT = 5347u32, HitObjectGetShaderBindingTableRecordIndexEXT = 5348u32, HitObjectGetShaderRecordBufferHandleEXT = 5349u32, HitObjectIsEmptyEXT = 5350u32, HitObjectIsHitEXT = 5351u32, HitObjectIsMissEXT = 5352u32, TypeCooperativeMatrixNV = 5358u32, CooperativeMatrixLoadNV = 5359u32, CooperativeMatrixStoreNV = 5360u32, CooperativeMatrixMulAddNV = 5361u32, CooperativeMatrixLengthNV = 5362u32, BeginInvocationInterlockEXT = 5364u32, EndInvocationInterlockEXT = 5365u32, CooperativeMatrixReduceNV = 5366u32, CooperativeMatrixLoadTensorNV = 5367u32, CooperativeMatrixStoreTensorNV = 5368u32, CooperativeMatrixPerElementOpNV = 5369u32, TypeTensorLayoutNV = 5370u32, TypeTensorViewNV = 5371u32, CreateTensorLayoutNV = 5372u32, TensorLayoutSetDimensionNV = 5373u32, TensorLayoutSetStrideNV = 5374u32, TensorLayoutSliceNV = 5375u32, TensorLayoutSetClampValueNV = 5376u32, CreateTensorViewNV = 5377u32, TensorViewSetDimensionNV = 5378u32, TensorViewSetStrideNV = 5379u32, DemoteToHelperInvocation = 5380u32, IsHelperInvocationEXT = 5381u32, TensorViewSetClipNV = 5382u32, TensorLayoutSetBlockSizeNV = 5384u32, CooperativeMatrixTransposeNV = 5390u32, ConvertUToImageNV = 5391u32, ConvertUToSamplerNV = 5392u32, ConvertImageToUNV = 5393u32, ConvertSamplerToUNV = 5394u32, ConvertUToSampledImageNV = 5395u32, ConvertSampledImageToUNV = 5396u32, SamplerImageAddressingModeNV = 5397u32, RawAccessChainNV = 5398u32, RayQueryGetIntersectionSpherePositionNV = 5427u32, RayQueryGetIntersectionSphereRadiusNV = 5428u32, RayQueryGetIntersectionLSSPositionsNV = 5429u32, RayQueryGetIntersectionLSSRadiiNV = 5430u32, RayQueryGetIntersectionLSSHitValueNV = 5431u32, HitObjectGetSpherePositionNV = 5432u32, HitObjectGetSphereRadiusNV = 5433u32, HitObjectGetLSSPositionsNV = 5434u32, HitObjectGetLSSRadiiNV = 5435u32, HitObjectIsSphereHitNV = 5436u32, HitObjectIsLSSHitNV = 5437u32, RayQueryIsSphereHitNV = 5438u32, RayQueryIsLSSHitNV = 5439u32, SubgroupShuffleINTEL = 5571u32, SubgroupShuffleDownINTEL = 5572u32, SubgroupShuffleUpINTEL = 5573u32, SubgroupShuffleXorINTEL = 5574u32, SubgroupBlockReadINTEL = 5575u32, SubgroupBlockWriteINTEL = 5576u32, SubgroupImageBlockReadINTEL = 5577u32, SubgroupImageBlockWriteINTEL = 5578u32, SubgroupImageMediaBlockReadINTEL = 5580u32, SubgroupImageMediaBlockWriteINTEL = 5581u32, UCountLeadingZerosINTEL = 5585u32, UCountTrailingZerosINTEL = 5586u32, AbsISubINTEL = 5587u32, AbsUSubINTEL = 5588u32, IAddSatINTEL = 5589u32, UAddSatINTEL = 5590u32, IAverageINTEL = 5591u32, UAverageINTEL = 5592u32, IAverageRoundedINTEL = 5593u32, UAverageRoundedINTEL = 5594u32, ISubSatINTEL = 5595u32, USubSatINTEL = 5596u32, IMul32x16INTEL = 5597u32, UMul32x16INTEL = 5598u32, ConstantFunctionPointerINTEL = 5600u32, FunctionPointerCallINTEL = 5601u32, AsmTargetINTEL = 5609u32, AsmINTEL = 5610u32, AsmCallINTEL = 5611u32, AtomicFMinEXT = 5614u32, AtomicFMaxEXT = 5615u32, AssumeTrueKHR = 5630u32, ExpectKHR = 5631u32, 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, VariableLengthArrayINTEL = 5818u32, SaveMemoryINTEL = 5819u32, RestoreMemoryINTEL = 5820u32, ArbitraryFloatSinCosPiALTERA = 5840u32, ArbitraryFloatCastALTERA = 5841u32, ArbitraryFloatCastFromIntALTERA = 5842u32, ArbitraryFloatCastToIntALTERA = 5843u32, ArbitraryFloatAddALTERA = 5846u32, ArbitraryFloatSubALTERA = 5847u32, ArbitraryFloatMulALTERA = 5848u32, ArbitraryFloatDivALTERA = 5849u32, ArbitraryFloatGTALTERA = 5850u32, ArbitraryFloatGEALTERA = 5851u32, ArbitraryFloatLTALTERA = 5852u32, ArbitraryFloatLEALTERA = 5853u32, ArbitraryFloatEQALTERA = 5854u32, ArbitraryFloatRecipALTERA = 5855u32, ArbitraryFloatRSqrtALTERA = 5856u32, ArbitraryFloatCbrtALTERA = 5857u32, ArbitraryFloatHypotALTERA = 5858u32, ArbitraryFloatSqrtALTERA = 5859u32, ArbitraryFloatLogINTEL = 5860u32, ArbitraryFloatLog2INTEL = 5861u32, ArbitraryFloatLog10INTEL = 5862u32, ArbitraryFloatLog1pINTEL = 5863u32, ArbitraryFloatExpINTEL = 5864u32, ArbitraryFloatExp2INTEL = 5865u32, ArbitraryFloatExp10INTEL = 5866u32, ArbitraryFloatExpm1INTEL = 5867u32, ArbitraryFloatSinINTEL = 5868u32, ArbitraryFloatCosINTEL = 5869u32, ArbitraryFloatSinCosINTEL = 5870u32, ArbitraryFloatSinPiINTEL = 5871u32, ArbitraryFloatCosPiINTEL = 5872u32, ArbitraryFloatASinINTEL = 5873u32, ArbitraryFloatASinPiINTEL = 5874u32, ArbitraryFloatACosINTEL = 5875u32, ArbitraryFloatACosPiINTEL = 5876u32, ArbitraryFloatATanINTEL = 5877u32, ArbitraryFloatATanPiINTEL = 5878u32, ArbitraryFloatATan2INTEL = 5879u32, ArbitraryFloatPowINTEL = 5880u32, ArbitraryFloatPowRINTEL = 5881u32, ArbitraryFloatPowNINTEL = 5882u32, LoopControlINTEL = 5887u32, AliasDomainDeclINTEL = 5911u32, AliasScopeDeclINTEL = 5912u32, AliasScopeListDeclINTEL = 5913u32, FixedSqrtALTERA = 5923u32, FixedRecipALTERA = 5924u32, FixedRsqrtALTERA = 5925u32, FixedSinALTERA = 5926u32, FixedCosALTERA = 5927u32, FixedSinCosALTERA = 5928u32, FixedSinPiALTERA = 5929u32, FixedCosPiALTERA = 5930u32, FixedSinCosPiALTERA = 5931u32, FixedLogALTERA = 5932u32, FixedExpALTERA = 5933u32, PtrCastToCrossWorkgroupALTERA = 5934u32, CrossWorkgroupCastToPtrALTERA = 5938u32, ReadPipeBlockingALTERA = 5946u32, WritePipeBlockingALTERA = 5947u32, FPGARegALTERA = 5949u32, RayQueryGetRayTMinKHR = 6016u32, RayQueryGetRayFlagsKHR = 6017u32, RayQueryGetIntersectionTKHR = 6018u32, RayQueryGetIntersectionInstanceCustomIndexKHR = 6019u32, RayQueryGetIntersectionInstanceIdKHR = 6020u32, RayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR = 6021u32, RayQueryGetIntersectionGeometryIndexKHR = 6022u32, RayQueryGetIntersectionPrimitiveIndexKHR = 6023u32, RayQueryGetIntersectionBarycentricsKHR = 6024u32, RayQueryGetIntersectionFrontFaceKHR = 6025u32, RayQueryGetIntersectionCandidateAABBOpaqueKHR = 6026u32, RayQueryGetIntersectionObjectRayDirectionKHR = 6027u32, RayQueryGetIntersectionObjectRayOriginKHR = 6028u32, RayQueryGetWorldRayDirectionKHR = 6029u32, RayQueryGetWorldRayOriginKHR = 6030u32, RayQueryGetIntersectionObjectToWorldKHR = 6031u32, RayQueryGetIntersectionWorldToObjectKHR = 6032u32, AtomicFAddEXT = 6035u32, TypeBufferSurfaceINTEL = 6086u32, TypeStructContinuedINTEL = 6090u32, ConstantCompositeContinuedINTEL = 6091u32, SpecConstantCompositeContinuedINTEL = 6092u32, CompositeConstructContinuedINTEL = 6096u32, ConvertFToBF16INTEL = 6116u32, ConvertBF16ToFINTEL = 6117u32, ControlBarrierArriveINTEL = 6142u32, ControlBarrierWaitINTEL = 6143u32, ArithmeticFenceEXT = 6145u32, TaskSequenceCreateALTERA = 6163u32, TaskSequenceAsyncALTERA = 6164u32, TaskSequenceGetALTERA = 6165u32, TaskSequenceReleaseALTERA = 6166u32, TypeTaskSequenceALTERA = 6199u32, SubgroupBlockPrefetchINTEL = 6221u32, Subgroup2DBlockLoadINTEL = 6231u32, Subgroup2DBlockLoadTransformINTEL = 6232u32, Subgroup2DBlockLoadTransposeINTEL = 6233u32, Subgroup2DBlockPrefetchINTEL = 6234u32, Subgroup2DBlockStoreINTEL = 6235u32, SubgroupMatrixMultiplyAccumulateINTEL = 6237u32, BitwiseFunctionINTEL = 6242u32, UntypedVariableLengthArrayINTEL = 6244u32, ConditionalExtensionINTEL = 6248u32, ConditionalEntryPointINTEL = 6249u32, ConditionalCapabilityINTEL = 6250u32, SpecConstantTargetINTEL = 6251u32, SpecConstantArchitectureINTEL = 6252u32, SpecConstantCapabilitiesINTEL = 6253u32, ConditionalCopyObjectINTEL = 6254u32, GroupIMulKHR = 6401u32, GroupFMulKHR = 6402u32, GroupBitwiseAndKHR = 6403u32, GroupBitwiseOrKHR = 6404u32, GroupBitwiseXorKHR = 6405u32, GroupLogicalAndKHR = 6406u32, GroupLogicalOrKHR = 6407u32, GroupLogicalXorKHR = 6408u32, RoundFToTF32INTEL = 6426u32, MaskedGatherINTEL = 6428u32, MaskedScatterINTEL = 6429u32, ConvertHandleToImageINTEL = 6529u32, ConvertHandleToSamplerINTEL = 6530u32, ConvertHandleToSampledImageINTEL = 6531u32, } impl Op { pub fn from_u32(n: u32) -> Option { Some(match n { 0u32..=8u32 => unsafe { core::mem::transmute::(n) }, 10u32..=12u32 => unsafe { core::mem::transmute::(n) }, 14u32..=17u32 => unsafe { core::mem::transmute::(n) }, 19u32..=39u32 => unsafe { core::mem::transmute::(n) }, 41u32..=46u32 => unsafe { core::mem::transmute::(n) }, 48u32..=52u32 => unsafe { core::mem::transmute::(n) }, 54u32..=57u32 => unsafe { core::mem::transmute::(n) }, 59u32..=75u32 => unsafe { core::mem::transmute::(n) }, 77u32..=84u32 => unsafe { core::mem::transmute::(n) }, 86u32..=107u32 => unsafe { core::mem::transmute::(n) }, 109u32..=124u32 => unsafe { core::mem::transmute::(n) }, 126u32..=152u32 => unsafe { core::mem::transmute::(n) }, 154u32..=191u32 => unsafe { core::mem::transmute::(n) }, 194u32..=205u32 => unsafe { core::mem::transmute::(n) }, 207u32..=215u32 => unsafe { core::mem::transmute::(n) }, 218u32..=221u32 => unsafe { core::mem::transmute::(n) }, 224u32..=225u32 => unsafe { core::mem::transmute::(n) }, 227u32..=242u32 => unsafe { core::mem::transmute::(n) }, 245u32..=257u32 => unsafe { core::mem::transmute::(n) }, 259u32..=271u32 => unsafe { core::mem::transmute::(n) }, 274u32..=288u32 => unsafe { core::mem::transmute::(n) }, 291u32..=366u32 => unsafe { core::mem::transmute::(n) }, 400u32..=403u32 => unsafe { core::mem::transmute::(n) }, 4160u32..=4166u32 => unsafe { core::mem::transmute::(n) }, 4181u32..=4186u32 => unsafe { core::mem::transmute::(n) }, 4190u32 => unsafe { core::mem::transmute::(4190u32) }, 4416u32..=4434u32 => unsafe { core::mem::transmute::(n) }, 4445u32..=4463u32 => unsafe { core::mem::transmute::(n) }, 4472u32..=4477u32 => unsafe { core::mem::transmute::(n) }, 4479u32..=4483u32 => unsafe { core::mem::transmute::(n) }, 4497u32 => unsafe { core::mem::transmute::(4497u32) }, 4500u32..=4503u32 => unsafe { core::mem::transmute::(n) }, 4540u32..=4542u32 => unsafe { core::mem::transmute::(n) }, 5000u32..=5007u32 => unsafe { core::mem::transmute::(n) }, 5011u32..=5012u32 => unsafe { core::mem::transmute::(n) }, 5056u32 => unsafe { core::mem::transmute::(5056u32) }, 5074u32..=5076u32 => unsafe { core::mem::transmute::(n) }, 5078u32 => unsafe { core::mem::transmute::(5078u32) }, 5090u32 => unsafe { core::mem::transmute::(5090u32) }, 5101u32 => unsafe { core::mem::transmute::(5101u32) }, 5103u32..=5104u32 => unsafe { core::mem::transmute::(n) }, 5110u32..=5111u32 => unsafe { core::mem::transmute::(n) }, 5115u32 => unsafe { core::mem::transmute::(5115u32) }, 5119u32 => unsafe { core::mem::transmute::(5119u32) }, 5126u32..=5127u32 => unsafe { core::mem::transmute::(n) }, 5129u32 => unsafe { core::mem::transmute::(5129u32) }, 5249u32..=5281u32 => unsafe { core::mem::transmute::(n) }, 5283u32 => unsafe { core::mem::transmute::(5283u32) }, 5288u32..=5296u32 => unsafe { core::mem::transmute::(n) }, 5299u32..=5341u32 => unsafe { core::mem::transmute::(n) }, 5344u32..=5352u32 => unsafe { core::mem::transmute::(n) }, 5358u32..=5362u32 => unsafe { core::mem::transmute::(n) }, 5364u32..=5382u32 => unsafe { core::mem::transmute::(n) }, 5384u32 => unsafe { core::mem::transmute::(5384u32) }, 5390u32..=5398u32 => unsafe { core::mem::transmute::(n) }, 5427u32..=5439u32 => unsafe { core::mem::transmute::(n) }, 5571u32..=5578u32 => unsafe { core::mem::transmute::(n) }, 5580u32..=5581u32 => unsafe { core::mem::transmute::(n) }, 5585u32..=5598u32 => unsafe { core::mem::transmute::(n) }, 5600u32..=5601u32 => unsafe { core::mem::transmute::(n) }, 5609u32..=5611u32 => unsafe { core::mem::transmute::(n) }, 5614u32..=5615u32 => unsafe { core::mem::transmute::(n) }, 5630u32..=5633u32 => unsafe { core::mem::transmute::(n) }, 5699u32..=5816u32 => unsafe { core::mem::transmute::(n) }, 5818u32..=5820u32 => unsafe { core::mem::transmute::(n) }, 5840u32..=5843u32 => unsafe { core::mem::transmute::(n) }, 5846u32..=5882u32 => unsafe { core::mem::transmute::(n) }, 5887u32 => unsafe { core::mem::transmute::(5887u32) }, 5911u32..=5913u32 => unsafe { core::mem::transmute::(n) }, 5923u32..=5934u32 => unsafe { core::mem::transmute::(n) }, 5938u32 => unsafe { core::mem::transmute::(5938u32) }, 5946u32..=5947u32 => unsafe { core::mem::transmute::(n) }, 5949u32 => unsafe { core::mem::transmute::(5949u32) }, 6016u32..=6032u32 => unsafe { core::mem::transmute::(n) }, 6035u32 => unsafe { core::mem::transmute::(6035u32) }, 6086u32 => unsafe { core::mem::transmute::(6086u32) }, 6090u32..=6092u32 => unsafe { core::mem::transmute::(n) }, 6096u32 => unsafe { core::mem::transmute::(6096u32) }, 6116u32..=6117u32 => unsafe { core::mem::transmute::(n) }, 6142u32..=6143u32 => unsafe { core::mem::transmute::(n) }, 6145u32 => unsafe { core::mem::transmute::(6145u32) }, 6163u32..=6166u32 => unsafe { core::mem::transmute::(n) }, 6199u32 => unsafe { core::mem::transmute::(6199u32) }, 6221u32 => unsafe { core::mem::transmute::(6221u32) }, 6231u32..=6235u32 => unsafe { core::mem::transmute::(n) }, 6237u32 => unsafe { core::mem::transmute::(6237u32) }, 6242u32 => unsafe { core::mem::transmute::(6242u32) }, 6244u32 => unsafe { core::mem::transmute::(6244u32) }, 6248u32..=6254u32 => unsafe { core::mem::transmute::(n) }, 6401u32..=6408u32 => unsafe { core::mem::transmute::(n) }, 6426u32 => unsafe { core::mem::transmute::(6426u32) }, 6428u32..=6429u32 => unsafe { core::mem::transmute::(n) }, 6529u32..=6531u32 => unsafe { core::mem::transmute::(n) }, _ => return None, }) } } #[allow(clippy::upper_case_acronyms)] #[allow(non_upper_case_globals)] impl Op { pub const SDotKHR: Self = Self::SDot; pub const UDotKHR: Self = Self::UDot; pub const SUDotKHR: Self = Self::SUDot; pub const SDotAccSatKHR: Self = Self::SDotAccSat; pub const UDotAccSatKHR: Self = Self::UDotAccSat; pub const SUDotAccSatKHR: Self = Self::SUDotAccSat; pub const TypeCooperativeVectorNV: Self = Self::TypeVectorIdEXT; pub const GroupNonUniformPartitionNV: Self = Self::GroupNonUniformPartitionEXT; pub const ReportIntersectionNV: Self = Self::ReportIntersectionKHR; pub const TypeAccelerationStructureNV: Self = Self::TypeAccelerationStructureKHR; pub const RayQueryGetClusterIdNV: Self = Self::RayQueryGetIntersectionClusterIdNV; pub const DemoteToHelperInvocationEXT: Self = Self::DemoteToHelperInvocation; pub const DecorateStringGOOGLE: Self = Self::DecorateString; pub const MemberDecorateStringGOOGLE: Self = Self::MemberDecorateString; pub const ArbitraryFloatSinCosPiINTEL: Self = Self::ArbitraryFloatSinCosPiALTERA; pub const ArbitraryFloatCastINTEL: Self = Self::ArbitraryFloatCastALTERA; pub const ArbitraryFloatCastFromIntINTEL: Self = Self::ArbitraryFloatCastFromIntALTERA; pub const ArbitraryFloatCastToIntINTEL: Self = Self::ArbitraryFloatCastToIntALTERA; pub const ArbitraryFloatAddINTEL: Self = Self::ArbitraryFloatAddALTERA; pub const ArbitraryFloatSubINTEL: Self = Self::ArbitraryFloatSubALTERA; pub const ArbitraryFloatMulINTEL: Self = Self::ArbitraryFloatMulALTERA; pub const ArbitraryFloatDivINTEL: Self = Self::ArbitraryFloatDivALTERA; pub const ArbitraryFloatGTINTEL: Self = Self::ArbitraryFloatGTALTERA; pub const ArbitraryFloatGEINTEL: Self = Self::ArbitraryFloatGEALTERA; pub const ArbitraryFloatLTINTEL: Self = Self::ArbitraryFloatLTALTERA; pub const ArbitraryFloatLEINTEL: Self = Self::ArbitraryFloatLEALTERA; pub const ArbitraryFloatEQINTEL: Self = Self::ArbitraryFloatEQALTERA; pub const ArbitraryFloatRecipINTEL: Self = Self::ArbitraryFloatRecipALTERA; pub const ArbitraryFloatRSqrtINTEL: Self = Self::ArbitraryFloatRSqrtALTERA; pub const ArbitraryFloatCbrtINTEL: Self = Self::ArbitraryFloatCbrtALTERA; pub const ArbitraryFloatHypotINTEL: Self = Self::ArbitraryFloatHypotALTERA; pub const ArbitraryFloatSqrtINTEL: Self = Self::ArbitraryFloatSqrtALTERA; pub const FixedSqrtINTEL: Self = Self::FixedSqrtALTERA; pub const FixedRecipINTEL: Self = Self::FixedRecipALTERA; pub const FixedRsqrtINTEL: Self = Self::FixedRsqrtALTERA; pub const FixedSinINTEL: Self = Self::FixedSinALTERA; pub const FixedCosINTEL: Self = Self::FixedCosALTERA; pub const FixedSinCosINTEL: Self = Self::FixedSinCosALTERA; pub const FixedSinPiINTEL: Self = Self::FixedSinPiALTERA; pub const FixedCosPiINTEL: Self = Self::FixedCosPiALTERA; pub const FixedSinCosPiINTEL: Self = Self::FixedSinCosPiALTERA; pub const FixedLogINTEL: Self = Self::FixedLogALTERA; pub const FixedExpINTEL: Self = Self::FixedExpALTERA; pub const PtrCastToCrossWorkgroupINTEL: Self = Self::PtrCastToCrossWorkgroupALTERA; pub const CrossWorkgroupCastToPtrINTEL: Self = Self::CrossWorkgroupCastToPtrALTERA; pub const ReadPipeBlockingINTEL: Self = Self::ReadPipeBlockingALTERA; pub const WritePipeBlockingINTEL: Self = Self::WritePipeBlockingALTERA; pub const FPGARegINTEL: Self = Self::FPGARegALTERA; pub const TaskSequenceCreateINTEL: Self = Self::TaskSequenceCreateALTERA; pub const TaskSequenceAsyncINTEL: Self = Self::TaskSequenceAsyncALTERA; pub const TaskSequenceGetINTEL: Self = Self::TaskSequenceGetALTERA; pub const TaskSequenceReleaseINTEL: Self = Self::TaskSequenceReleaseALTERA; pub const TypeTaskSequenceINTEL: Self = Self::TypeTaskSequenceALTERA; #[doc = r" Returns [`true`] if the given opcode is a type-declaring instruction."] #[doc = r""] #[doc = r" "] pub fn is_type(self) -> bool { matches!( self, Self::TypeVoid | Self::TypeBool | Self::TypeInt | Self::TypeFloat | Self::TypeVector | Self::TypeMatrix | Self::TypeImage | Self::TypeSampler | Self::TypeSampledImage | Self::TypeArray | Self::TypeRuntimeArray | Self::TypeStruct | Self::TypeOpaque | Self::TypePointer | Self::TypeFunction | Self::TypeEvent | Self::TypeDeviceEvent | Self::TypeReserveId | Self::TypeQueue | Self::TypePipe | Self::TypeForwardPointer | Self::TypePipeStorage | Self::TypeNamedBarrier | Self::TypeTensorARM | Self::TypeGraphARM | Self::TypeUntypedPointerKHR | Self::TypeCooperativeMatrixKHR | Self::TypeRayQueryKHR | Self::TypeNodePayloadArrayAMDX | Self::TypeBufferEXT | Self::TypeHitObjectNV | Self::TypeVectorIdEXT | Self::TypeHitObjectEXT | Self::TypeAccelerationStructureKHR | Self::TypeCooperativeMatrixNV | Self::TypeTensorLayoutNV | Self::TypeTensorViewNV | Self::TypeBufferSurfaceINTEL | Self::TypeStructContinuedINTEL ) } #[doc = r" Returns [`true`] if the given opcode is a constant-defining instruction."] #[doc = r""] #[doc = r" "] pub fn is_constant(self) -> bool { matches!( self, Self::ConstantTrue | Self::ConstantFalse | Self::Constant | Self::ConstantComposite | Self::ConstantSampler | Self::ConstantNull | Self::SpecConstantTrue | Self::SpecConstantFalse | Self::SpecConstant | Self::SpecConstantComposite | Self::SpecConstantOp | Self::ConstantCompositeReplicateEXT | Self::SpecConstantCompositeReplicateEXT | Self::ConstantSizeOfEXT | Self::ConstantCompositeContinuedINTEL | Self::SpecConstantCompositeContinuedINTEL | Self::SpecConstantTargetINTEL | Self::SpecConstantArchitectureINTEL | Self::SpecConstantCapabilitiesINTEL ) } #[doc = r" Returns [`true`] if the given opcode is an annotation instruction."] #[doc = r""] #[doc = r" "] pub fn is_annotation(self) -> bool { matches!( self, Self::Decorate | Self::MemberDecorate | Self::DecorationGroup | Self::GroupDecorate | Self::GroupMemberDecorate | Self::DecorateId | Self::MemberDecorateIdEXT | Self::DecorateString | Self::MemberDecorateString ) } #[doc = r" Returns [`true`] if the given opcode is a debug instruction."] #[doc = r""] #[doc = r" "] pub fn is_debug(self) -> bool { matches!( self, Self::SourceContinued | Self::Source | Self::SourceExtension | Self::Name | Self::MemberName | Self::String | Self::Line | Self::NoLine | Self::ModuleProcessed ) } #[doc = r" Returns [`true`] if the given opcode is a control-flow instruction."] #[doc = r""] #[doc = r" "] pub fn is_control_flow(self) -> bool { matches!( self, Self::Phi | Self::LoopMerge | Self::SelectionMerge | Self::Label | Self::Branch | Self::BranchConditional | Self::Switch | Self::Kill | Self::Return | Self::ReturnValue | Self::Unreachable | Self::LifetimeStart | Self::LifetimeStop | Self::TerminateInvocation | Self::DemoteToHelperInvocation ) } } #[doc = "[Arm.MotionEngine.100](https://github.com/KhronosGroup/SPIRV-Headers/blob/main/include/spirv/unified1/extinst.arm.motion-engine.100.grammar.json) extended instruction opcode"] #[repr(u32)] #[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] pub enum ArmMotionEngine100Op { MIN_SAD = 0u32, MIN_SAD_COST = 1u32, RAW_SAD = 2u32, } impl ArmMotionEngine100Op { pub fn from_u32(n: u32) -> Option { Some(match n { 0u32..=2u32 => unsafe { core::mem::transmute::(n) }, _ => return None, }) } } #[doc = "[DebugInfo](https://github.com/KhronosGroup/SPIRV-Headers/blob/main/include/spirv/unified1/extinst.debuginfo.grammar.json) extended instruction opcode"] #[repr(u32)] #[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] pub enum DebuginfoOp { DebugInfoNone = 0u32, DebugCompilationUnit = 1u32, DebugTypeBasic = 2u32, DebugTypePointer = 3u32, DebugTypeQualifier = 4u32, DebugTypeArray = 5u32, DebugTypeVector = 6u32, DebugTypedef = 7u32, DebugTypeFunction = 8u32, DebugTypeEnum = 9u32, DebugTypeComposite = 10u32, DebugTypeMember = 11u32, DebugTypeInheritance = 12u32, DebugTypePtrToMember = 13u32, DebugTypeTemplate = 14u32, DebugTypeTemplateParameter = 15u32, DebugTypeTemplateTemplateParameter = 16u32, DebugTypeTemplateParameterPack = 17u32, DebugGlobalVariable = 18u32, DebugFunctionDeclaration = 19u32, DebugFunction = 20u32, DebugLexicalBlock = 21u32, DebugLexicalBlockDiscriminator = 22u32, DebugScope = 23u32, DebugNoScope = 24u32, DebugInlinedAt = 25u32, DebugLocalVariable = 26u32, DebugInlinedVariable = 27u32, DebugDeclare = 28u32, DebugValue = 29u32, DebugOperation = 30u32, DebugExpression = 31u32, DebugMacroDef = 32u32, DebugMacroUndef = 33u32, } impl DebuginfoOp { pub fn from_u32(n: u32) -> Option { Some(match n { 0u32..=33u32 => unsafe { core::mem::transmute::(n) }, _ => return None, }) } } #[doc = "[GLSL.std.450](https://github.com/KhronosGroup/SPIRV-Headers/blob/main/include/spirv/unified1/extinst.glsl.std.450.grammar.json) extended instruction opcode"] #[repr(u32)] #[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] pub enum GlslStd450Op { 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 GlslStd450Op { pub fn from_u32(n: u32) -> Option { Some(match n { 1u32..=81u32 => unsafe { core::mem::transmute::(n) }, _ => return None, }) } } #[doc = "[NonSemantic.ClspvReflection](https://github.com/KhronosGroup/SPIRV-Headers/blob/main/include/spirv/unified1/extinst.nonsemantic.clspvreflection.grammar.json) extended instruction opcode"] #[repr(u32)] #[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] pub enum NonsemanticClspvreflectionOp { Kernel = 1u32, ArgumentInfo = 2u32, ArgumentStorageBuffer = 3u32, ArgumentUniform = 4u32, ArgumentPodStorageBuffer = 5u32, ArgumentPodUniform = 6u32, ArgumentPodPushConstant = 7u32, ArgumentSampledImage = 8u32, ArgumentStorageImage = 9u32, ArgumentSampler = 10u32, ArgumentWorkgroup = 11u32, SpecConstantWorkgroupSize = 12u32, SpecConstantGlobalOffset = 13u32, SpecConstantWorkDim = 14u32, PushConstantGlobalOffset = 15u32, PushConstantEnqueuedLocalSize = 16u32, PushConstantGlobalSize = 17u32, PushConstantRegionOffset = 18u32, PushConstantNumWorkgroups = 19u32, PushConstantRegionGroupOffset = 20u32, ConstantDataStorageBuffer = 21u32, ConstantDataUniform = 22u32, LiteralSampler = 23u32, PropertyRequiredWorkgroupSize = 24u32, SpecConstantSubgroupMaxSize = 25u32, ArgumentPointerPushConstant = 26u32, ArgumentPointerUniform = 27u32, ProgramScopeVariablesStorageBuffer = 28u32, ProgramScopeVariablePointerRelocation = 29u32, ImageArgumentInfoChannelOrderPushConstant = 30u32, ImageArgumentInfoChannelDataTypePushConstant = 31u32, ImageArgumentInfoChannelOrderUniform = 32u32, ImageArgumentInfoChannelDataTypeUniform = 33u32, ArgumentStorageTexelBuffer = 34u32, ArgumentUniformTexelBuffer = 35u32, ConstantDataPointerPushConstant = 36u32, ProgramScopeVariablePointerPushConstant = 37u32, PrintfInfo = 38u32, PrintfBufferStorageBuffer = 39u32, PrintfBufferPointerPushConstant = 40u32, NormalizedSamplerMaskPushConstant = 41u32, WorkgroupVariableSize = 42u32, } impl NonsemanticClspvreflectionOp { pub fn from_u32(n: u32) -> Option { Some(match n { 1u32..=42u32 => unsafe { core::mem::transmute::(n) }, _ => return None, }) } } #[doc = "[NonSemantic.DebugBreak](https://github.com/KhronosGroup/SPIRV-Headers/blob/main/include/spirv/unified1/extinst.nonsemantic.debugbreak.grammar.json) extended instruction opcode"] #[repr(u32)] #[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] pub enum NonsemanticDebugbreakOp { DebugBreak = 1u32, } impl NonsemanticDebugbreakOp { pub fn from_u32(n: u32) -> Option { Some(match n { 1u32 => unsafe { core::mem::transmute::(1u32) }, _ => return None, }) } } #[doc = "[NonSemantic.DebugPrintf](https://github.com/KhronosGroup/SPIRV-Headers/blob/main/include/spirv/unified1/extinst.nonsemantic.debugprintf.grammar.json) extended instruction opcode"] #[repr(u32)] #[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] pub enum NonsemanticDebugprintfOp { DebugPrintf = 1u32, } impl NonsemanticDebugprintfOp { pub fn from_u32(n: u32) -> Option { Some(match n { 1u32 => unsafe { core::mem::transmute::(1u32) }, _ => return None, }) } } #[doc = "[NonSemantic.Shader.DebugInfo.100](https://github.com/KhronosGroup/SPIRV-Headers/blob/main/include/spirv/unified1/extinst.nonsemantic.shader.debuginfo.100.grammar.json) extended instruction opcode"] #[repr(u32)] #[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] pub enum NonsemanticShaderDebuginfo100Op { DebugInfoNone = 0u32, DebugCompilationUnit = 1u32, DebugTypeBasic = 2u32, DebugTypePointer = 3u32, DebugTypeQualifier = 4u32, DebugTypeArray = 5u32, DebugTypeVector = 6u32, DebugTypedef = 7u32, DebugTypeFunction = 8u32, DebugTypeEnum = 9u32, DebugTypeComposite = 10u32, DebugTypeMember = 11u32, DebugTypeInheritance = 12u32, DebugTypePtrToMember = 13u32, DebugTypeTemplate = 14u32, DebugTypeTemplateParameter = 15u32, DebugTypeTemplateTemplateParameter = 16u32, DebugTypeTemplateParameterPack = 17u32, DebugGlobalVariable = 18u32, DebugFunctionDeclaration = 19u32, DebugFunction = 20u32, DebugLexicalBlock = 21u32, DebugLexicalBlockDiscriminator = 22u32, DebugScope = 23u32, DebugNoScope = 24u32, DebugInlinedAt = 25u32, DebugLocalVariable = 26u32, DebugInlinedVariable = 27u32, DebugDeclare = 28u32, DebugValue = 29u32, DebugOperation = 30u32, DebugExpression = 31u32, DebugMacroDef = 32u32, DebugMacroUndef = 33u32, DebugImportedEntity = 34u32, DebugSource = 35u32, DebugFunctionDefinition = 101u32, DebugSourceContinued = 102u32, DebugLine = 103u32, DebugNoLine = 104u32, DebugBuildIdentifier = 105u32, DebugStoragePath = 106u32, DebugEntryPoint = 107u32, DebugTypeMatrix = 108u32, } impl NonsemanticShaderDebuginfo100Op { pub fn from_u32(n: u32) -> Option { Some(match n { 0u32..=35u32 => unsafe { core::mem::transmute::(n) }, 101u32..=108u32 => unsafe { core::mem::transmute::(n) }, _ => return None, }) } } #[doc = "[NonSemantic.VkspReflection](https://github.com/KhronosGroup/SPIRV-Headers/blob/main/include/spirv/unified1/extinst.nonsemantic.vkspreflection.grammar.json) extended instruction opcode"] #[repr(u32)] #[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] pub enum NonsemanticVkspreflectionOp { Configuration = 1u32, StartCounter = 2u32, StopCounter = 3u32, PushConstants = 4u32, SpecializationMapEntry = 5u32, DescriptorSetBuffer = 6u32, DescriptorSetImage = 7u32, DescriptorSetSampler = 8u32, } impl NonsemanticVkspreflectionOp { pub fn from_u32(n: u32) -> Option { Some(match n { 1u32..=8u32 => unsafe { core::mem::transmute::(n) }, _ => return None, }) } } #[doc = "[OpenCL.DebugInfo.100](https://github.com/KhronosGroup/SPIRV-Headers/blob/main/include/spirv/unified1/extinst.opencl.debuginfo.100.grammar.json) extended instruction opcode"] #[repr(u32)] #[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] pub enum OpenclDebuginfo100Op { DebugInfoNone = 0u32, DebugCompilationUnit = 1u32, DebugTypeBasic = 2u32, DebugTypePointer = 3u32, DebugTypeQualifier = 4u32, DebugTypeArray = 5u32, DebugTypeVector = 6u32, DebugTypedef = 7u32, DebugTypeFunction = 8u32, DebugTypeEnum = 9u32, DebugTypeComposite = 10u32, DebugTypeMember = 11u32, DebugTypeInheritance = 12u32, DebugTypePtrToMember = 13u32, DebugTypeTemplate = 14u32, DebugTypeTemplateParameter = 15u32, DebugTypeTemplateTemplateParameter = 16u32, DebugTypeTemplateParameterPack = 17u32, DebugGlobalVariable = 18u32, DebugFunctionDeclaration = 19u32, DebugFunction = 20u32, DebugLexicalBlock = 21u32, DebugLexicalBlockDiscriminator = 22u32, DebugScope = 23u32, DebugNoScope = 24u32, DebugInlinedAt = 25u32, DebugLocalVariable = 26u32, DebugInlinedVariable = 27u32, DebugDeclare = 28u32, DebugValue = 29u32, DebugOperation = 30u32, DebugExpression = 31u32, DebugMacroDef = 32u32, DebugMacroUndef = 33u32, DebugImportedEntity = 34u32, DebugSource = 35u32, DebugModuleINTEL = 36u32, } impl OpenclDebuginfo100Op { pub fn from_u32(n: u32) -> Option { Some(match n { 0u32..=36u32 => unsafe { core::mem::transmute::(n) }, _ => return None, }) } } #[doc = "[OpenCL.std](https://github.com/KhronosGroup/SPIRV-Headers/blob/main/include/spirv/unified1/extinst.opencl.std.100.grammar.json) extended instruction opcode"] #[repr(u32)] #[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] pub enum OpenclStd100Op { 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, 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, 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, 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, bitselect = 186u32, select = 187u32, u_abs = 201u32, u_abs_diff = 202u32, u_mul_hi = 203u32, u_mad_hi = 204u32, } impl OpenclStd100Op { pub fn from_u32(n: u32) -> Option { Some(match n { 0u32..=110u32 => unsafe { core::mem::transmute::(n) }, 141u32..=187u32 => unsafe { core::mem::transmute::(n) }, 201u32..=204u32 => unsafe { core::mem::transmute::(n) }, _ => return None, }) } } #[doc = "[SPV_AMD_gcn_shader](https://github.com/KhronosGroup/SPIRV-Headers/blob/main/include/spirv/unified1/extinst.spv-amd-gcn-shader.grammar.json) extended instruction opcode"] #[repr(u32)] #[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] pub enum SpvAmdGcnShaderOp { CubeFaceIndexAMD = 1u32, CubeFaceCoordAMD = 2u32, TimeAMD = 3u32, } impl SpvAmdGcnShaderOp { pub fn from_u32(n: u32) -> Option { Some(match n { 1u32..=3u32 => unsafe { core::mem::transmute::(n) }, _ => return None, }) } } #[doc = "[SPV_AMD_shader_ballot](https://github.com/KhronosGroup/SPIRV-Headers/blob/main/include/spirv/unified1/extinst.spv-amd-shader-ballot.grammar.json) extended instruction opcode"] #[repr(u32)] #[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] pub enum SpvAmdShaderBallotOp { SwizzleInvocationsAMD = 1u32, SwizzleInvocationsMaskedAMD = 2u32, WriteInvocationAMD = 3u32, MbcntAMD = 4u32, } impl SpvAmdShaderBallotOp { pub fn from_u32(n: u32) -> Option { Some(match n { 1u32..=4u32 => unsafe { core::mem::transmute::(n) }, _ => return None, }) } } #[doc = "[SPV_AMD_shader_explicit_vertex_parameter](https://github.com/KhronosGroup/SPIRV-Headers/blob/main/include/spirv/unified1/extinst.spv-amd-shader-explicit-vertex-parameter.grammar.json) extended instruction opcode"] #[repr(u32)] #[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] pub enum SpvAmdShaderExplicitVertexParameterOp { InterpolateAtVertexAMD = 1u32, } impl SpvAmdShaderExplicitVertexParameterOp { pub fn from_u32(n: u32) -> Option { Some(match n { 1u32 => unsafe { core::mem::transmute::(1u32) }, _ => return None, }) } } #[doc = "[SPV_AMD_shader_trinary_minmax](https://github.com/KhronosGroup/SPIRV-Headers/blob/main/include/spirv/unified1/extinst.spv-amd-shader-trinary-minmax.grammar.json) extended instruction opcode"] #[repr(u32)] #[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] pub enum SpvAmdShaderTrinaryMinmaxOp { FMin3AMD = 1u32, UMin3AMD = 2u32, SMin3AMD = 3u32, FMax3AMD = 4u32, UMax3AMD = 5u32, SMax3AMD = 6u32, FMid3AMD = 7u32, UMid3AMD = 8u32, SMid3AMD = 9u32, } impl SpvAmdShaderTrinaryMinmaxOp { pub fn from_u32(n: u32) -> Option { Some(match n { 1u32..=9u32 => unsafe { core::mem::transmute::(n) }, _ => return None, }) } } #[doc = "[TOSA.001000.1](https://github.com/KhronosGroup/SPIRV-Headers/blob/main/include/spirv/unified1/extinst.tosa.001000.1.grammar.json) extended instruction opcode"] #[repr(u32)] #[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] #[cfg_attr(feature = "serialize", derive(serde::Serialize))] #[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] #[allow(clippy::upper_case_acronyms)] pub enum Tosa0010001Op { ARGMAX = 0u32, AVG_POOL2D = 1u32, CONV2D = 2u32, CONV3D = 3u32, DEPTHWISE_CONV2D = 4u32, FFT2D = 5u32, MATMUL = 6u32, MAX_POOL2D = 7u32, RFFT2D = 8u32, TRANSPOSE_CONV2D = 9u32, CLAMP = 10u32, ERF = 11u32, SIGMOID = 12u32, TANH = 13u32, ADD = 14u32, ARITHMETIC_RIGHT_SHIFT = 15u32, BITWISE_AND = 16u32, BITWISE_OR = 17u32, BITWISE_XOR = 18u32, INTDIV = 19u32, LOGICAL_AND = 20u32, LOGICAL_LEFT_SHIFT = 21u32, LOGICAL_RIGHT_SHIFT = 22u32, LOGICAL_OR = 23u32, LOGICAL_XOR = 24u32, MAXIMUM = 25u32, MINIMUM = 26u32, MUL = 27u32, POW = 28u32, SUB = 29u32, TABLE = 30u32, ABS = 31u32, BITWISE_NOT = 32u32, CEIL = 33u32, CLZ = 34u32, COS = 35u32, EXP = 36u32, FLOOR = 37u32, LOG = 38u32, LOGICAL_NOT = 39u32, NEGATE = 40u32, RECIPROCAL = 41u32, RSQRT = 42u32, SIN = 43u32, SELECT = 44u32, EQUAL = 45u32, GREATER = 46u32, GREATER_EQUAL = 47u32, REDUCE_ALL = 48u32, REDUCE_ANY = 49u32, REDUCE_MAX = 50u32, REDUCE_MIN = 51u32, REDUCE_PRODUCT = 52u32, REDUCE_SUM = 53u32, CONCAT = 54u32, PAD = 55u32, RESHAPE = 56u32, REVERSE = 57u32, SLICE = 58u32, TILE = 59u32, TRANSPOSE = 60u32, GATHER = 61u32, SCATTER = 62u32, RESIZE = 63u32, CAST = 64u32, RESCALE = 65u32, } impl Tosa0010001Op { pub fn from_u32(n: u32) -> Option { Some(match n { 0u32..=65u32 => unsafe { core::mem::transmute::(n) }, _ => return None, }) } }