// 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 =
0 x07230203;
pub const MAJOR_VERSION: u8 =
1 u8;
pub const MINOR_VERSION: u8 =
6 u8;
pub const REVISION: u8 =
1 u8;
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_AVAILABLE_KHR = 256u32 ; const MAKE_TEXEL_VISIBLE = 512u32 ; const MAKE_TEXEL_VISIBLE_KHR = 512u32 ; const NON_PRIVATE_TEXEL = 1024u32 ; const NON_PRIVATE_TEXEL_KHR = 1024u32 ; const VOLATILE_TEXEL = 2048u32 ; const VOLATILE_TEXEL_KHR = 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_FAST_INTEL = 65536u32 ; const ALLOW_REASSOC_INTEL = 131072u32 ; } }
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_INTEL = 65536u32 ; const MAX_CONCURRENCY_INTEL = 131072u32 ; const DEPENDENCY_ARRAY_INTEL = 262144u32 ; const PIPELINE_ENABLE_INTEL = 524288u32 ; const LOOP_COALESCE_INTEL = 1048576u32 ; const MAX_INTERLEAVING_INTEL = 2097152u32 ; const SPECULATED_ITERATIONS_INTEL = 4194304u32 ; const NO_FUSION_INTEL = 8388608u32 ; const LOOP_COUNT_INTEL = 16777216u32 ; const MAX_REINVOCATION_DELAY_INTEL = 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_INTEL = 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 NONE = 0u32 ; const ACQUIRE = 2u32 ; const RELEASE = 4u32 ; const ACQUIRE_RELEASE = 8u32 ; const SEQUENTIALLY_CONSISTENT = 16u32 ; const UNIFORM_MEMORY = 64u32 ; const SUBGROUP_MEMORY = 128u32 ; const WORKGROUP_MEMORY = 256u32 ; const CROSS_WORKGROUP_MEMORY = 512u32 ; const ATOMIC_COUNTER_MEMORY = 1024u32 ; const IMAGE_MEMORY = 2048u32 ; const OUTPUT_MEMORY = 4096u32 ; const OUTPUT_MEMORY_KHR = 4096u32 ; const MAKE_AVAILABLE = 8192u32 ; const MAKE_AVAILABLE_KHR = 8192u32 ; const MAKE_VISIBLE = 16384u32 ; const MAKE_VISIBLE_KHR = 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_AVAILABLE_KHR = 8u32 ; const MAKE_POINTER_VISIBLE = 16u32 ; const MAKE_POINTER_VISIBLE_KHR = 16u32 ; const NON_PRIVATE_POINTER = 32u32 ; const NON_PRIVATE_POINTER_KHR = 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 ; } }
#[ 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 =
0 u32,
ESSL =
1 u32,
GLSL =
2 u32,
OpenCL_C =
3 u32,
OpenCL_CPP =
4 u32,
HLSL =
5 u32,
CPP_for_OpenCL =
6 u32,
SYCL =
7 u32,
HERO_C =
8 u32,
NZSL =
9 u32,
WGSL =
10 u32,
Slang =
11 u32,
}
impl SourceLanguage {
pub fn from_u32(n: u32) -> Option<
Self > {
Some(
match n {
0 u32..=
11 u32 =>
unsafe { core::mem::transmute::<u32, SourceLanguage>(n) },
_ =>
return None,
})
}
}
#[ allow(non_upper_case_globals)]
impl SourceLanguage {}
impl core::str::FromStr
for SourceLanguage {
type Err = ();
fn from_str(s: &str) -> Result<
Self ,
Self ::Err> {
match s {
"Unknown" => Ok(
Self ::Unknown),
"ESSL" => Ok(
Self ::ESSL),
"GLSL" => Ok(
Self ::GLSL),
"OpenCL_C" => Ok(
Self ::OpenCL_C),
"OpenCL_CPP" => Ok(
Self ::OpenCL_CPP),
"HLSL" => Ok(
Self ::HLSL),
"CPP_for_OpenCL" => Ok(
Self ::CPP_for_OpenCL),
"SYCL" => Ok(
Self ::SYCL),
"HERO_C" => Ok(
Self ::HERO_C),
"NZSL" => Ok(
Self ::NZSL),
"WGSL" => Ok(
Self ::WGSL),
"Slang" => Ok(
Self ::Slang),
_ => 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 =
0 u32,
TessellationControl =
1 u32,
TessellationEvaluation =
2 u32,
Geometry =
3 u32,
Fragment =
4 u32,
GLCompute =
5 u32,
Kernel =
6 u32,
TaskNV =
5267 u32,
MeshNV =
5268 u32,
RayGenerationNV =
5313 u32,
IntersectionNV =
5314 u32,
AnyHitNV =
5315 u32,
ClosestHitNV =
5316 u32,
MissNV =
5317 u32,
CallableNV =
5318 u32,
TaskEXT =
5364 u32,
MeshEXT =
5365 u32,
}
impl ExecutionModel {
pub fn from_u32(n: u32) -> Option<
Self > {
Some(
match n {
0 u32..=
6 u32 =>
unsafe { core::mem::transmute::<u32, ExecutionModel>(n) },
5267 u32..=
5268 u32 =>
unsafe { core::mem::transmute::<u32, ExecutionModel>(n) },
5313 u32..=
5318 u32 =>
unsafe { core::mem::transmute::<u32, ExecutionModel>(n) },
5364 u32..=
5365 u32 =>
unsafe { core::mem::transmute::<u32, ExecutionModel>(n) },
_ =>
return None,
})
}
}
#[ allow(non_upper_case_globals)]
impl ExecutionModel {
pub const RayGenerationKHR:
Self =
Self ::RayGenerationNV;
pub const IntersectionKHR:
Self =
Self ::IntersectionNV;
pub const AnyHitKHR:
Self =
Self ::AnyHitNV;
pub const ClosestHitKHR:
Self =
Self ::ClosestHitNV;
pub const MissKHR:
Self =
Self ::MissNV;
pub const CallableKHR:
Self =
Self ::CallableNV;
}
impl core::str::FromStr
for ExecutionModel {
type Err = ();
fn from_str(s: &str) -> Result<
Self ,
Self ::Err> {
match s {
"Vertex" => Ok(
Self ::Vertex),
"TessellationControl" => Ok(
Self ::TessellationControl),
"TessellationEvaluation" => Ok(
Self ::TessellationEvaluation),
"Geometry" => Ok(
Self ::Geometry),
"Fragment" => Ok(
Self ::Fragment),
"GLCompute" => Ok(
Self ::GLCompute),
"Kernel" => Ok(
Self ::Kernel),
"TaskNV" => Ok(
Self ::TaskNV),
"MeshNV" => Ok(
Self ::MeshNV),
"RayGenerationNV" => Ok(
Self ::RayGenerationNV),
"RayGenerationKHR" => Ok(
Self ::RayGenerationNV),
"IntersectionNV" => Ok(
Self ::IntersectionNV),
"IntersectionKHR" => Ok(
Self ::IntersectionNV),
"AnyHitNV" => Ok(
Self ::AnyHitNV),
"AnyHitKHR" => Ok(
Self ::AnyHitNV),
"ClosestHitNV" => Ok(
Self ::ClosestHitNV),
"ClosestHitKHR" => Ok(
Self ::ClosestHitNV),
"MissNV" => Ok(
Self ::MissNV),
"MissKHR" => Ok(
Self ::MissNV),
"CallableNV" => Ok(
Self ::CallableNV),
"CallableKHR" => Ok(
Self ::CallableNV),
"TaskEXT" => Ok(
Self ::TaskEXT),
"MeshEXT" => Ok(
Self ::MeshEXT),
_ => 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 =
0 u32,
Physical32 =
1 u32,
Physical64 =
2 u32,
PhysicalStorageBuffer64 =
5348 u32,
}
impl AddressingModel {
pub fn from_u32(n: u32) -> Option<
Self > {
Some(
match n {
0 u32..=
2 u32 =>
unsafe { core::mem::transmute::<u32, AddressingModel>(n) },
5348 u32 =>
unsafe { core::mem::transmute::<u32, AddressingModel>(
5348 u32) },
_ =>
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<
Self ,
Self ::Err> {
match s {
"Logical" => Ok(
Self ::Logical),
"Physical32" => Ok(
Self ::Physical32),
"Physical64" => Ok(
Self ::Physical64),
"PhysicalStorageBuffer64" => Ok(
Self ::PhysicalStorageBuffer64),
"PhysicalStorageBuffer64EXT" => Ok(
Self ::PhysicalStorageBuffer64),
_ => 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 =
0 u32,
GLSL450 =
1 u32,
OpenCL =
2 u32,
Vulkan =
3 u32,
}
impl MemoryModel {
pub fn from_u32(n: u32) -> Option<
Self > {
Some(
match n {
0 u32..=
3 u32 =>
unsafe { core::mem::transmute::<u32, MemoryModel>(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<
Self ,
Self ::Err> {
match s {
"Simple" => Ok(
Self ::Simple),
"GLSL450" => Ok(
Self ::GLSL450),
"OpenCL" => Ok(
Self ::OpenCL),
"Vulkan" => Ok(
Self ::Vulkan),
"VulkanKHR" => Ok(
Self ::Vulkan),
_ => 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 =
0 u32,
SpacingEqual =
1 u32,
SpacingFractionalEven =
2 u32,
SpacingFractionalOdd =
3 u32,
VertexOrderCw =
4 u32,
VertexOrderCcw =
5 u32,
PixelCenterInteger =
6 u32,
OriginUpperLeft =
7 u32,
OriginLowerLeft =
8 u32,
EarlyFragmentTests =
9 u32,
PointMode =
10 u32,
Xfb =
11 u32,
DepthReplacing =
12 u32,
DepthGreater =
14 u32,
DepthLess =
15 u32,
DepthUnchanged =
16 u32,
LocalSize =
17 u32,
LocalSizeHint =
18 u32,
InputPoints =
19 u32,
InputLines =
20 u32,
InputLinesAdjacency =
21 u32,
Triangles =
22 u32,
InputTrianglesAdjacency =
23 u32,
Quads =
24 u32,
Isolines =
25 u32,
OutputVertices =
26 u32,
OutputPoints =
27 u32,
OutputLineStrip =
28 u32,
OutputTriangleStrip =
29 u32,
VecTypeHint =
30 u32,
ContractionOff =
31 u32,
Initializer =
33 u32,
Finalizer =
34 u32,
SubgroupSize =
35 u32,
SubgroupsPerWorkgroup =
36 u32,
SubgroupsPerWorkgroupId =
37 u32,
LocalSizeId =
38 u32,
LocalSizeHintId =
39 u32,
NonCoherentColorAttachmentReadEXT =
4169 u32,
NonCoherentDepthAttachmentReadEXT =
4170 u32,
NonCoherentStencilAttachmentReadEXT =
4171 u32,
SubgroupUniformControlFlowKHR =
4421 u32,
PostDepthCoverage =
4446 u32,
DenormPreserve =
4459 u32,
DenormFlushToZero =
4460 u32,
SignedZeroInfNanPreserve =
4461 u32,
RoundingModeRTE =
4462 u32,
RoundingModeRTZ =
4463 u32,
EarlyAndLateFragmentTestsAMD =
5017 u32,
StencilRefReplacingEXT =
5027 u32,
CoalescingAMDX =
5069 u32,
MaxNodeRecursionAMDX =
5071 u32,
StaticNumWorkgroupsAMDX =
5072 u32,
ShaderIndexAMDX =
5073 u32,
MaxNumWorkgroupsAMDX =
5077 u32,
StencilRefUnchangedFrontAMD =
5079 u32,
StencilRefGreaterFrontAMD =
5080 u32,
StencilRefLessFrontAMD =
5081 u32,
StencilRefUnchangedBackAMD =
5082 u32,
StencilRefGreaterBackAMD =
5083 u32,
StencilRefLessBackAMD =
5084 u32,
OutputLinesNV =
5269 u32,
OutputPrimitivesNV =
5270 u32,
DerivativeGroupQuadsNV =
5289 u32,
DerivativeGroupLinearNV =
5290 u32,
OutputTrianglesNV =
5298 u32,
PixelInterlockOrderedEXT =
5366 u32,
PixelInterlockUnorderedEXT =
5367 u32,
SampleInterlockOrderedEXT =
5368 u32,
SampleInterlockUnorderedEXT =
5369 u32,
ShadingRateInterlockOrderedEXT =
5370 u32,
ShadingRateInterlockUnorderedEXT =
5371 u32,
SharedLocalMemorySizeINTEL =
5618 u32,
RoundingModeRTPINTEL =
5620 u32,
RoundingModeRTNINTEL =
5621 u32,
FloatingPointModeALTINTEL =
5622 u32,
FloatingPointModeIEEEINTEL =
5623 u32,
MaxWorkgroupSizeINTEL =
5893 u32,
MaxWorkDimINTEL =
5894 u32,
NoGlobalOffsetINTEL =
5895 u32,
NumSIMDWorkitemsINTEL =
5896 u32,
SchedulerTargetFmaxMhzINTEL =
5903 u32,
StreamingInterfaceINTEL =
6154 u32,
RegisterMapInterfaceINTEL =
6160 u32,
NamedBarrierCountINTEL =
6417 u32,
}
impl ExecutionMode {
pub fn from_u32(n: u32) -> Option<
Self > {
Some(
match n {
0 u32..=
12 u32 =>
unsafe { core::mem::transmute::<u32, ExecutionMode>(n) },
14 u32..=
31 u32 =>
unsafe { core::mem::transmute::<u32, ExecutionMode>(n) },
33 u32..=
39 u32 =>
unsafe { core::mem::transmute::<u32, ExecutionMode>(n) },
4169 u32..=
4171 u32 =>
unsafe { core::mem::transmute::<u32, ExecutionMode>(n) },
4421 u32 =>
unsafe { core::mem::transmute::<u32, ExecutionMode>(
4421 u32) },
4446 u32 =>
unsafe { core::mem::transmute::<u32, ExecutionMode>(
4446 u32) },
4459 u32..=
4463 u32 =>
unsafe { core::mem::transmute::<u32, ExecutionMode>(n) },
5017 u32 =>
unsafe { core::mem::transmute::<u32, ExecutionMode>(
5017 u32) },
5027 u32 =>
unsafe { core::mem::transmute::<u32, ExecutionMode>(
5027 u32) },
5069 u32 =>
unsafe { core::mem::transmute::<u32, ExecutionMode>(
5069 u32) },
5071 u32..=
5073 u32 =>
unsafe { core::mem::transmute::<u32, ExecutionMode>(n) },
5077 u32 =>
unsafe { core::mem::transmute::<u32, ExecutionMode>(
5077 u32) },
5079 u32..=
5084 u32 =>
unsafe { core::mem::transmute::<u32, ExecutionMode>(n) },
5269 u32..=
5270 u32 =>
unsafe { core::mem::transmute::<u32, ExecutionMode>(n) },
5289 u32..=
5290 u32 =>
unsafe { core::mem::transmute::<u32, ExecutionMode>(n) },
5298 u32 =>
unsafe { core::mem::transmute::<u32, ExecutionMode>(
5298 u32) },
5366 u32..=
5371 u32 =>
unsafe { core::mem::transmute::<u32, ExecutionMode>(n) },
5618 u32 =>
unsafe { core::mem::transmute::<u32, ExecutionMode>(
5618 u32) },
5620 u32..=
5623 u32 =>
unsafe { core::mem::transmute::<u32, ExecutionMode>(n) },
5893 u32..=
5896 u32 =>
unsafe { core::mem::transmute::<u32, ExecutionMode>(n) },
5903 u32 =>
unsafe { core::mem::transmute::<u32, ExecutionMode>(
5903 u32) },
6154 u32 =>
unsafe { core::mem::transmute::<u32, ExecutionMode>(
6154 u32) },
6160 u32 =>
unsafe { core::mem::transmute::<u32, ExecutionMode>(
6160 u32) },
6417 u32 =>
unsafe { core::mem::transmute::<u32, ExecutionMode>(
6417 u32) },
_ =>
return None,
})
}
}
#[ allow(non_upper_case_globals)]
impl ExecutionMode {
pub const OutputLinesEXT:
Self =
Self ::OutputLinesNV;
pub const OutputPrimitivesEXT:
Self =
Self ::OutputPrimitivesNV;
pub const OutputTrianglesEXT:
Self =
Self ::OutputTrianglesNV;
}
impl core::str::FromStr
for ExecutionMode {
type Err = ();
fn from_str(s: &str) -> Result<
Self ,
Self ::Err> {
match s {
"Invocations" => Ok(
Self ::Invocations),
"SpacingEqual" => Ok(
Self ::SpacingEqual),
"SpacingFractionalEven" => Ok(
Self ::SpacingFractionalEven),
"SpacingFractionalOdd" => Ok(
Self ::SpacingFractionalOdd),
"VertexOrderCw" => Ok(
Self ::VertexOrderCw),
"VertexOrderCcw" => Ok(
Self ::VertexOrderCcw),
"PixelCenterInteger" => Ok(
Self ::PixelCenterInteger),
"OriginUpperLeft" => Ok(
Self ::OriginUpperLeft),
"OriginLowerLeft" => Ok(
Self ::OriginLowerLeft),
"EarlyFragmentTests" => Ok(
Self ::EarlyFragmentTests),
"PointMode" => Ok(
Self ::PointMode),
"Xfb" => Ok(
Self ::Xfb),
"DepthReplacing" => Ok(
Self ::DepthReplacing),
"DepthGreater" => Ok(
Self ::DepthGreater),
"DepthLess" => Ok(
Self ::DepthLess),
"DepthUnchanged" => Ok(
Self ::DepthUnchanged),
"LocalSize" => Ok(
Self ::LocalSize),
"LocalSizeHint" => Ok(
Self ::LocalSizeHint),
"InputPoints" => Ok(
Self ::InputPoints),
"InputLines" => Ok(
Self ::InputLines),
"InputLinesAdjacency" => Ok(
Self ::InputLinesAdjacency),
"Triangles" => Ok(
Self ::Triangles),
"InputTrianglesAdjacency" => Ok(
Self ::InputTrianglesAdjacency),
"Quads" => Ok(
Self ::Quads),
"Isolines" => Ok(
Self ::Isolines),
"OutputVertices" => Ok(
Self ::OutputVertices),
"OutputPoints" => Ok(
Self ::OutputPoints),
"OutputLineStrip" => Ok(
Self ::OutputLineStrip),
"OutputTriangleStrip" => Ok(
Self ::OutputTriangleStrip),
"VecTypeHint" => Ok(
Self ::VecTypeHint),
"ContractionOff" => Ok(
Self ::ContractionOff),
"Initializer" => Ok(
Self ::Initializer),
"Finalizer" => Ok(
Self ::Finalizer),
"SubgroupSize" => Ok(
Self ::SubgroupSize),
"SubgroupsPerWorkgroup" => Ok(
Self ::SubgroupsPerWorkgroup),
"SubgroupsPerWorkgroupId" => Ok(
Self ::SubgroupsPerWorkgroupId),
"LocalSizeId" => Ok(
Self ::LocalSizeId),
"LocalSizeHintId" => Ok(
Self ::LocalSizeHintId),
"NonCoherentColorAttachmentReadEXT" => Ok(
Self ::NonCoherentColorAttachmentReadEXT),
"NonCoherentDepthAttachmentReadEXT" => Ok(
Self ::NonCoherentDepthAttachmentReadEXT),
"NonCoherentStencilAttachmentReadEXT" => Ok(
Self ::NonCoherentStencilAttachmentReadE
XT),
"SubgroupUniformControlFlowKHR" => Ok(Self ::SubgroupUniformControlFlowKHR),
"PostDepthCoverage" => Ok(Self ::PostDepthCoverage),
"DenormPreserve" => Ok(Self ::DenormPreserve),
"DenormFlushToZero" => Ok(Self ::DenormFlushToZero),
"SignedZeroInfNanPreserve" => Ok(Self ::SignedZeroInfNanPreserve),
"RoundingModeRTE" => Ok(Self ::RoundingModeRTE),
"RoundingModeRTZ" => Ok(Self ::RoundingModeRTZ),
"EarlyAndLateFragmentTestsAMD" => Ok(Self ::EarlyAndLateFragmentTestsAMD),
"StencilRefReplacingEXT" => Ok(Self ::StencilRefReplacingEXT),
"CoalescingAMDX" => Ok(Self ::CoalescingAMDX),
"MaxNodeRecursionAMDX" => Ok(Self ::MaxNodeRecursionAMDX),
"StaticNumWorkgroupsAMDX" => Ok(Self ::StaticNumWorkgroupsAMDX),
"ShaderIndexAMDX" => Ok(Self ::ShaderIndexAMDX),
"MaxNumWorkgroupsAMDX" => Ok(Self ::MaxNumWorkgroupsAMDX),
"StencilRefUnchangedFrontAMD" => Ok(Self ::StencilRefUnchangedFrontAMD),
"StencilRefGreaterFrontAMD" => Ok(Self ::StencilRefGreaterFrontAMD),
"StencilRefLessFrontAMD" => Ok(Self ::StencilRefLessFrontAMD),
"StencilRefUnchangedBackAMD" => Ok(Self ::StencilRefUnchangedBackAMD),
"StencilRefGreaterBackAMD" => Ok(Self ::StencilRefGreaterBackAMD),
"StencilRefLessBackAMD" => Ok(Self ::StencilRefLessBackAMD),
"OutputLinesNV" => Ok(Self ::OutputLinesNV),
"OutputLinesEXT" => Ok(Self ::OutputLinesNV),
"OutputPrimitivesNV" => Ok(Self ::OutputPrimitivesNV),
"OutputPrimitivesEXT" => Ok(Self ::OutputPrimitivesNV),
"DerivativeGroupQuadsNV" => Ok(Self ::DerivativeGroupQuadsNV),
"DerivativeGroupLinearNV" => Ok(Self ::DerivativeGroupLinearNV),
"OutputTrianglesNV" => Ok(Self ::OutputTrianglesNV),
"OutputTrianglesEXT" => Ok(Self ::OutputTrianglesNV),
"PixelInterlockOrderedEXT" => Ok(Self ::PixelInterlockOrderedEXT),
"PixelInterlockUnorderedEXT" => Ok(Self ::PixelInterlockUnorderedEXT),
"SampleInterlockOrderedEXT" => Ok(Self ::SampleInterlockOrderedEXT),
"SampleInterlockUnorderedEXT" => Ok(Self ::SampleInterlockUnorderedEXT),
"ShadingRateInterlockOrderedEXT" => Ok(Self ::ShadingRateInterlockOrderedEXT),
"ShadingRateInterlockUnorderedEXT" => Ok(Self ::ShadingRateInterlockUnorderedEXT),
"SharedLocalMemorySizeINTEL" => Ok(Self ::SharedLocalMemorySizeINTEL),
"RoundingModeRTPINTEL" => Ok(Self ::RoundingModeRTPINTEL),
"RoundingModeRTNINTEL" => Ok(Self ::RoundingModeRTNINTEL),
"FloatingPointModeALTINTEL" => Ok(Self ::FloatingPointModeALTINTEL),
"FloatingPointModeIEEEINTEL" => Ok(Self ::FloatingPointModeIEEEINTEL),
"MaxWorkgroupSizeINTEL" => Ok(Self ::MaxWorkgroupSizeINTEL),
"MaxWorkDimINTEL" => Ok(Self ::MaxWorkDimINTEL),
"NoGlobalOffsetINTEL" => Ok(Self ::NoGlobalOffsetINTEL),
"NumSIMDWorkitemsINTEL" => Ok(Self ::NumSIMDWorkitemsINTEL),
"SchedulerTargetFmaxMhzINTEL" => Ok(Self ::SchedulerTargetFmaxMhzINTEL),
"StreamingInterfaceINTEL" => Ok(Self ::StreamingInterfaceINTEL),
"RegisterMapInterfaceINTEL" => Ok(Self ::RegisterMapInterfaceINTEL),
"NamedBarrierCountINTEL" => Ok(Self ::NamedBarrierCountINTEL),
_ => 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 = 0 u32,
Input = 1 u32,
Uniform = 2 u32,
Output = 3 u32,
Workgroup = 4 u32,
CrossWorkgroup = 5 u32,
Private = 6 u32,
Function = 7 u32,
Generic = 8 u32,
PushConstant = 9 u32,
AtomicCounter = 10 u32,
Image = 11 u32,
StorageBuffer = 12 u32,
TileImageEXT = 4172 u32,
NodePayloadAMDX = 5068 u32,
NodeOutputPayloadAMDX = 5076 u32,
CallableDataNV = 5328 u32,
IncomingCallableDataNV = 5329 u32,
RayPayloadNV = 5338 u32,
HitAttributeNV = 5339 u32,
IncomingRayPayloadNV = 5342 u32,
ShaderRecordBufferNV = 5343 u32,
PhysicalStorageBuffer = 5349 u32,
HitObjectAttributeNV = 5385 u32,
TaskPayloadWorkgroupEXT = 5402 u32,
CodeSectionINTEL = 5605 u32,
DeviceOnlyINTEL = 5936 u32,
HostOnlyINTEL = 5937 u32,
}
impl StorageClass {
pub fn from_u32(n: u32) -> Option<Self > {
Some(match n {
0 u32..=12 u32 => unsafe { core::mem::transmute::<u32, StorageClass>(n) },
4172 u32 => unsafe { core::mem::transmute::<u32, StorageClass>(4172 u32) },
5068 u32 => unsafe { core::mem::transmute::<u32, StorageClass>(5068 u32) },
5076 u32 => unsafe { core::mem::transmute::<u32, StorageClass>(5076 u32) },
5328 u32..=5329 u32 => unsafe { core::mem::transmute::<u32, StorageClass>(n) },
5338 u32..=5339 u32 => unsafe { core::mem::transmute::<u32, StorageClass>(n) },
5342 u32..=5343 u32 => unsafe { core::mem::transmute::<u32, StorageClass>(n) },
5349 u32 => unsafe { core::mem::transmute::<u32, StorageClass>(5349 u32) },
5385 u32 => unsafe { core::mem::transmute::<u32, StorageClass>(5385 u32) },
5402 u32 => unsafe { core::mem::transmute::<u32, StorageClass>(5402 u32) },
5605 u32 => unsafe { core::mem::transmute::<u32, StorageClass>(5605 u32) },
5936 u32..=5937 u32 => unsafe { core::mem::transmute::<u32, StorageClass>(n) },
_ => return None,
})
}
}
#[ allow(non_upper_case_globals)]
impl StorageClass {
pub const CallableDataKHR: Self = Self ::CallableDataNV;
pub const IncomingCallableDataKHR: Self = Self ::IncomingCallableDataNV;
pub const RayPayloadKHR: Self = Self ::RayPayloadNV;
pub const HitAttributeKHR: Self = Self ::HitAttributeNV;
pub const IncomingRayPayloadKHR: Self = Self ::IncomingRayPayloadNV;
pub const ShaderRecordBufferKHR: Self = Self ::ShaderRecordBufferNV;
pub const PhysicalStorageBufferEXT: Self = Self ::PhysicalStorageBuffer;
}
impl core::str::FromStr for StorageClass {
type Err = ();
fn from_str(s: &str) -> Result<Self , Self ::Err> {
match s {
"UniformConstant" => Ok(Self ::UniformConstant),
"Input" => Ok(Self ::Input),
"Uniform" => Ok(Self ::Uniform),
"Output" => Ok(Self ::Output),
"Workgroup" => Ok(Self ::Workgroup),
"CrossWorkgroup" => Ok(Self ::CrossWorkgroup),
"Private" => Ok(Self ::Private),
"Function" => Ok(Self ::Function),
"Generic" => Ok(Self ::Generic),
"PushConstant" => Ok(Self ::PushConstant),
"AtomicCounter" => Ok(Self ::AtomicCounter),
"Image" => Ok(Self ::Image),
"StorageBuffer" => Ok(Self ::StorageBuffer),
"TileImageEXT" => Ok(Self ::TileImageEXT),
"NodePayloadAMDX" => Ok(Self ::NodePayloadAMDX),
"NodeOutputPayloadAMDX" => Ok(Self ::NodeOutputPayloadAMDX),
"CallableDataNV" => Ok(Self ::CallableDataNV),
"CallableDataKHR" => Ok(Self ::CallableDataNV),
"IncomingCallableDataNV" => Ok(Self ::IncomingCallableDataNV),
"IncomingCallableDataKHR" => Ok(Self ::IncomingCallableDataNV),
"RayPayloadNV" => Ok(Self ::RayPayloadNV),
"RayPayloadKHR" => Ok(Self ::RayPayloadNV),
"HitAttributeNV" => Ok(Self ::HitAttributeNV),
"HitAttributeKHR" => Ok(Self ::HitAttributeNV),
"IncomingRayPayloadNV" => Ok(Self ::IncomingRayPayloadNV),
"IncomingRayPayloadKHR" => Ok(Self ::IncomingRayPayloadNV),
"ShaderRecordBufferNV" => Ok(Self ::ShaderRecordBufferNV),
"ShaderRecordBufferKHR" => Ok(Self ::ShaderRecordBufferNV),
"PhysicalStorageBuffer" => Ok(Self ::PhysicalStorageBuffer),
"PhysicalStorageBufferEXT" => Ok(Self ::PhysicalStorageBuffer),
"HitObjectAttributeNV" => Ok(Self ::HitObjectAttributeNV),
"TaskPayloadWorkgroupEXT" => Ok(Self ::TaskPayloadWorkgroupEXT),
"CodeSectionINTEL" => Ok(Self ::CodeSectionINTEL),
"DeviceOnlyINTEL" => Ok(Self ::DeviceOnlyINTEL),
"HostOnlyINTEL" => Ok(Self ::HostOnlyINTEL),
_ => 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 = 0 u32,
Dim2D = 1 u32,
Dim3D = 2 u32,
DimCube = 3 u32,
DimRect = 4 u32,
DimBuffer = 5 u32,
DimSubpassData = 6 u32,
DimTileImageDataEXT = 4173 u32,
}
impl Dim {
pub fn from_u32(n: u32) -> Option<Self > {
Some(match n {
0 u32..=6 u32 => unsafe { core::mem::transmute::<u32, Dim>(n) },
4173 u32 => unsafe { core::mem::transmute::<u32, Dim>(4173 u32) },
_ => return None,
})
}
}
#[ allow(non_upper_case_globals)]
impl Dim {}
impl core::str::FromStr for Dim {
type Err = ();
fn from_str(s: &str) -> Result<Self , Self ::Err> {
match s {
"Dim1D" => Ok(Self ::Dim1D),
"Dim2D" => Ok(Self ::Dim2D),
"Dim3D" => Ok(Self ::Dim3D),
"DimCube" => Ok(Self ::DimCube),
"DimRect" => Ok(Self ::DimRect),
"DimBuffer" => Ok(Self ::DimBuffer),
"DimSubpassData" => Ok(Self ::DimSubpassData),
"DimTileImageDataEXT" => Ok(Self ::DimTileImageDataEXT),
_ => 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 = 0 u32,
ClampToEdge = 1 u32,
Clamp = 2 u32,
Repeat = 3 u32,
RepeatMirrored = 4 u32,
}
impl SamplerAddressingMode {
pub fn from_u32(n: u32) -> Option<Self > {
Some(match n {
0 u32..=4 u32 => unsafe { core::mem::transmute::<u32, SamplerAddressingMode>(n) },
_ => return None,
})
}
}
#[ allow(non_upper_case_globals)]
impl SamplerAddressingMode {}
impl core::str::FromStr for SamplerAddressingMode {
type Err = ();
fn from_str(s: &str) -> Result<Self , Self ::Err> {
match s {
"None" => Ok(Self ::None),
"ClampToEdge" => Ok(Self ::ClampToEdge),
"Clamp" => Ok(Self ::Clamp),
"Repeat" => Ok(Self ::Repeat),
"RepeatMirrored" => Ok(Self ::RepeatMirrored),
_ => 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 = 0 u32,
Linear = 1 u32,
}
impl SamplerFilterMode {
pub fn from_u32(n: u32) -> Option<Self > {
Some(match n {
0 u32..=1 u32 => unsafe { core::mem::transmute::<u32, SamplerFilterMode>(n) },
_ => return None,
})
}
}
#[ allow(non_upper_case_globals)]
impl SamplerFilterMode {}
impl core::str::FromStr for SamplerFilterMode {
type Err = ();
fn from_str(s: &str) -> Result<Self , Self ::Err> {
match s {
"Nearest" => Ok(Self ::Nearest),
"Linear" => Ok(Self ::Linear),
_ => 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 = 0 u32,
Rgba32f = 1 u32,
Rgba16f = 2 u32,
R32f = 3 u32,
Rgba8 = 4 u32,
Rgba8Snorm = 5 u32,
Rg32f = 6 u32,
Rg16f = 7 u32,
R11fG11fB10f = 8 u32,
R16f = 9 u32,
Rgba16 = 10 u32,
Rgb10A2 = 11 u32,
Rg16 = 12 u32,
Rg8 = 13 u32,
R16 = 14 u32,
R8 = 15 u32,
Rgba16Snorm = 16 u32,
Rg16Snorm = 17 u32,
Rg8Snorm = 18 u32,
R16Snorm = 19 u32,
R8Snorm = 20 u32,
Rgba32i = 21 u32,
Rgba16i = 22 u32,
Rgba8i = 23 u32,
R32i = 24 u32,
Rg32i = 25 u32,
Rg16i = 26 u32,
Rg8i = 27 u32,
R16i = 28 u32,
R8i = 29 u32,
Rgba32ui = 30 u32,
Rgba16ui = 31 u32,
Rgba8ui = 32 u32,
R32ui = 33 u32,
Rgb10a2ui = 34 u32,
Rg32ui = 35 u32,
Rg16ui = 36 u32,
Rg8ui = 37 u32,
R16ui = 38 u32,
R8ui = 39 u32,
R64ui = 40 u32,
R64i = 41 u32,
}
impl ImageFormat {
pub fn from_u32(n: u32) -> Option<Self > {
Some(match n {
0 u32..=41 u32 => unsafe { core::mem::transmute::<u32, ImageFormat>(n) },
_ => return None,
})
}
}
#[ allow(non_upper_case_globals)]
impl ImageFormat {}
impl core::str::FromStr for ImageFormat {
type Err = ();
fn from_str(s: &str) -> Result<Self , Self ::Err> {
match s {
"Unknown" => Ok(Self ::Unknown),
"Rgba32f" => Ok(Self ::Rgba32f),
"Rgba16f" => Ok(Self ::Rgba16f),
"R32f" => Ok(Self ::R32f),
"Rgba8" => Ok(Self ::Rgba8),
"Rgba8Snorm" => Ok(Self ::Rgba8Snorm),
"Rg32f" => Ok(Self ::Rg32f),
"Rg16f" => Ok(Self ::Rg16f),
"R11fG11fB10f" => Ok(Self ::R11fG11fB10f),
"R16f" => Ok(Self ::R16f),
"Rgba16" => Ok(Self ::Rgba16),
"Rgb10A2" => Ok(Self ::Rgb10A2),
"Rg16" => Ok(Self ::Rg16),
"Rg8" => Ok(Self ::Rg8),
"R16" => Ok(Self ::R16),
"R8" => Ok(Self ::R8),
"Rgba16Snorm" => Ok(Self ::Rgba16Snorm),
"Rg16Snorm" => Ok(Self ::Rg16Snorm),
"Rg8Snorm" => Ok(Self ::Rg8Snorm),
"R16Snorm" => Ok(Self ::R16Snorm),
"R8Snorm" => Ok(Self ::R8Snorm),
"Rgba32i" => Ok(Self ::Rgba32i),
"Rgba16i" => Ok(Self ::Rgba16i),
"Rgba8i" => Ok(Self ::Rgba8i),
"R32i" => Ok(Self ::R32i),
"Rg32i" => Ok(Self ::Rg32i),
"Rg16i" => Ok(Self ::Rg16i),
"Rg8i" => Ok(Self ::Rg8i),
"R16i" => Ok(Self ::R16i),
"R8i" => Ok(Self ::R8i),
"Rgba32ui" => Ok(Self ::Rgba32ui),
"Rgba16ui" => Ok(Self ::Rgba16ui),
"Rgba8ui" => Ok(Self ::Rgba8ui),
"R32ui" => Ok(Self ::R32ui),
"Rgb10a2ui" => Ok(Self ::Rgb10a2ui),
"Rg32ui" => Ok(Self ::Rg32ui),
"Rg16ui" => Ok(Self ::Rg16ui),
"Rg8ui" => Ok(Self ::Rg8ui),
"R16ui" => Ok(Self ::R16ui),
"R8ui" => Ok(Self ::R8ui),
"R64ui" => Ok(Self ::R64ui),
"R64i" => Ok(Self ::R64i),
_ => 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 = 0 u32,
A = 1 u32,
RG = 2 u32,
RA = 3 u32,
RGB = 4 u32,
RGBA = 5 u32,
BGRA = 6 u32,
ARGB = 7 u32,
Intensity = 8 u32,
Luminance = 9 u32,
Rx = 10 u32,
RGx = 11 u32,
RGBx = 12 u32,
Depth = 13 u32,
DepthStencil = 14 u32,
sRGB = 15 u32,
sRGBx = 16 u32,
sRGBA = 17 u32,
sBGRA = 18 u32,
ABGR = 19 u32,
}
impl ImageChannelOrder {
pub fn from_u32(n: u32) -> Option<Self > {
Some(match n {
0 u32..=19 u32 => unsafe { core::mem::transmute::<u32, ImageChannelOrder>(n) },
_ => return None,
})
}
}
#[ allow(non_upper_case_globals)]
impl ImageChannelOrder {}
impl core::str::FromStr for ImageChannelOrder {
type Err = ();
fn from_str(s: &str) -> Result<Self , Self ::Err> {
match s {
"R" => Ok(Self ::R),
"A" => Ok(Self ::A),
"RG" => Ok(Self ::RG),
"RA" => Ok(Self ::RA),
"RGB" => Ok(Self ::RGB),
"RGBA" => Ok(Self ::RGBA),
"BGRA" => Ok(Self ::BGRA),
"ARGB" => Ok(Self ::ARGB),
"Intensity" => Ok(Self ::Intensity),
"Luminance" => Ok(Self ::Luminance),
"Rx" => Ok(Self ::Rx),
"RGx" => Ok(Self ::RGx),
"RGBx" => Ok(Self ::RGBx),
"Depth" => Ok(Self ::Depth),
"DepthStencil" => Ok(Self ::DepthStencil),
"sRGB" => Ok(Self ::sRGB),
"sRGBx" => Ok(Self ::sRGBx),
"sRGBA" => Ok(Self ::sRGBA),
"sBGRA" => Ok(Self ::sBGRA),
"ABGR" => Ok(Self ::ABGR),
_ => 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 = 0 u32,
SnormInt16 = 1 u32,
UnormInt8 = 2 u32,
UnormInt16 = 3 u32,
UnormShort565 = 4 u32,
UnormShort555 = 5 u32,
UnormInt101010 = 6 u32,
SignedInt8 = 7 u32,
SignedInt16 = 8 u32,
SignedInt32 = 9 u32,
UnsignedInt8 = 10 u32,
UnsignedInt16 = 11 u32,
UnsignedInt32 = 12 u32,
HalfFloat = 13 u32,
Float = 14 u32,
UnormInt24 = 15 u32,
UnormInt101010_2 = 16 u32,
UnsignedIntRaw10EXT = 19 u32,
UnsignedIntRaw12EXT = 20 u32,
}
impl ImageChannelDataType {
pub fn from_u32(n: u32) -> Option<Self > {
Some(match n {
0 u32..=16 u32 => unsafe { core::mem::transmute::<u32, ImageChannelDataType>(n) },
19 u32..=20 u32 => unsafe { core::mem::transmute::<u32, ImageChannelDataType>(n) },
_ => return None,
})
}
}
#[ allow(non_upper_case_globals)]
impl ImageChannelDataType {}
impl core::str::FromStr for ImageChannelDataType {
type Err = ();
fn from_str(s: &str) -> Result<Self , Self ::Err> {
match s {
"SnormInt8" => Ok(Self ::SnormInt8),
"SnormInt16" => Ok(Self ::SnormInt16),
"UnormInt8" => Ok(Self ::UnormInt8),
"UnormInt16" => Ok(Self ::UnormInt16),
"UnormShort565" => Ok(Self ::UnormShort565),
"UnormShort555" => Ok(Self ::UnormShort555),
"UnormInt101010" => Ok(Self ::UnormInt101010),
"SignedInt8" => Ok(Self ::SignedInt8),
"SignedInt16" => Ok(Self ::SignedInt16),
"SignedInt32" => Ok(Self ::SignedInt32),
"UnsignedInt8" => Ok(Self ::UnsignedInt8),
"UnsignedInt16" => Ok(Self ::UnsignedInt16),
"UnsignedInt32" => Ok(Self ::UnsignedInt32),
"HalfFloat" => Ok(Self ::HalfFloat),
"Float" => Ok(Self ::Float),
"UnormInt24" => Ok(Self ::UnormInt24),
"UnormInt101010_2" => Ok(Self ::UnormInt101010_2),
"UnsignedIntRaw10EXT" => Ok(Self ::UnsignedIntRaw10EXT),
"UnsignedIntRaw12EXT" => Ok(Self ::UnsignedIntRaw12EXT),
_ => 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 = 0 u32,
RTZ = 1 u32,
RTP = 2 u32,
RTN = 3 u32,
}
impl FPRoundingMode {
pub fn from_u32(n: u32) -> Option<Self > {
Some(match n {
0 u32..=3 u32 => unsafe { core::mem::transmute::<u32, FPRoundingMode>(n) },
_ => return None,
})
}
}
#[ allow(non_upper_case_globals)]
impl FPRoundingMode {}
impl core::str::FromStr for FPRoundingMode {
type Err = ();
fn from_str(s: &str) -> Result<Self , Self ::Err> {
match s {
"RTE" => Ok(Self ::RTE),
"RTZ" => Ok(Self ::RTZ),
"RTP" => Ok(Self ::RTP),
"RTN" => Ok(Self ::RTN),
_ => 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 = 0 u32,
FlushToZero = 1 u32,
}
impl FPDenormMode {
pub fn from_u32(n: u32) -> Option<Self > {
Some(match n {
0 u32..=1 u32 => unsafe { core::mem::transmute::<u32, FPDenormMode>(n) },
_ => return None,
})
}
}
#[ allow(non_upper_case_globals)]
impl FPDenormMode {}
impl core::str::FromStr for FPDenormMode {
type Err = ();
fn from_str(s: &str) -> Result<Self , Self ::Err> {
match s {
"Preserve" => Ok(Self ::Preserve),
"FlushToZero" => Ok(Self ::FlushToZero),
_ => 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 = 0 u32,
TRN_ZERO = 1 u32,
RND = 2 u32,
RND_ZERO = 3 u32,
RND_INF = 4 u32,
RND_MIN_INF = 5 u32,
RND_CONV = 6 u32,
RND_CONV_ODD = 7 u32,
}
impl QuantizationModes {
pub fn from_u32(n: u32) -> Option<Self > {
Some(match n {
0 u32..=7 u32 => unsafe { core::mem::transmute::<u32, QuantizationModes>(n) },
_ => return None,
})
}
}
#[ allow(non_upper_case_globals)]
impl QuantizationModes {}
impl core::str::FromStr for QuantizationModes {
type Err = ();
fn from_str(s: &str) -> Result<Self , Self ::Err> {
match s {
"TRN" => Ok(Self ::TRN),
"TRN_ZERO" => Ok(Self ::TRN_ZERO),
"RND" => Ok(Self ::RND),
"RND_ZERO" => Ok(Self ::RND_ZERO),
"RND_INF" => Ok(Self ::RND_INF),
"RND_MIN_INF" => Ok(Self ::RND_MIN_INF),
"RND_CONV" => Ok(Self ::RND_CONV),
"RND_CONV_ODD" => Ok(Self ::RND_CONV_ODD),
_ => 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 = 0 u32,
ALT = 1 u32,
}
impl FPOperationMode {
pub fn from_u32(n: u32) -> Option<Self > {
Some(match n {
0 u32..=1 u32 => unsafe { core::mem::transmute::<u32, FPOperationMode>(n) },
_ => return None,
})
}
}
#[ allow(non_upper_case_globals)]
impl FPOperationMode {}
impl core::str::FromStr for FPOperationMode {
type Err = ();
fn from_str(s: &str) -> Result<Self , Self ::Err> {
match s {
"IEEE" => Ok(Self ::IEEE),
"ALT" => Ok(Self ::ALT),
_ => 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 = 0 u32,
SAT = 1 u32,
SAT_ZERO = 2 u32,
SAT_SYM = 3 u32,
}
impl OverflowModes {
pub fn from_u32(n: u32) -> Option<Self > {
Some(match n {
0 u32..=3 u32 => unsafe { core::mem::transmute::<u32, OverflowModes>(n) },
_ => return None,
})
}
}
#[ allow(non_upper_case_globals)]
impl OverflowModes {}
impl core::str::FromStr for OverflowModes {
type Err = ();
fn from_str(s: &str) -> Result<Self , Self ::Err> {
match s {
"WRAP" => Ok(Self ::WRAP),
"SAT" => Ok(Self ::SAT),
"SAT_ZERO" => Ok(Self ::SAT_ZERO),
"SAT_SYM" => Ok(Self ::SAT_SYM),
_ => 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 = 0 u32,
Import = 1 u32,
LinkOnceODR = 2 u32,
}
impl LinkageType {
pub fn from_u32(n: u32) -> Option<Self > {
Some(match n {
0 u32..=2 u32 => unsafe { core::mem::transmute::<u32, LinkageType>(n) },
_ => return None,
})
}
}
#[ allow(non_upper_case_globals)]
impl LinkageType {}
impl core::str::FromStr for LinkageType {
type Err = ();
fn from_str(s: &str) -> Result<Self , Self ::Err> {
match s {
"Export" => Ok(Self ::Export),
"Import" => Ok(Self ::Import),
"LinkOnceODR" => Ok(Self ::LinkOnceODR),
_ => 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 = 0 u32,
WriteOnly = 1 u32,
ReadWrite = 2 u32,
}
impl AccessQualifier {
pub fn from_u32(n: u32) -> Option<Self > {
Some(match n {
0 u32..=2 u32 => unsafe { core::mem::transmute::<u32, AccessQualifier>(n) },
_ => return None,
})
}
}
#[ allow(non_upper_case_globals)]
impl AccessQualifier {}
impl core::str::FromStr for AccessQualifier {
type Err = ();
fn from_str(s: &str) -> Result<Self , Self ::Err> {
match s {
"ReadOnly" => Ok(Self ::ReadOnly),
"WriteOnly" => Ok(Self ::WriteOnly),
"ReadWrite" => Ok(Self ::ReadWrite),
_ => 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 = 0 u32,
ReadINTEL = 1 u32,
WriteINTEL = 2 u32,
ReadWriteINTEL = 3 u32,
}
impl HostAccessQualifier {
pub fn from_u32(n: u32) -> Option<Self > {
Some(match n {
0 u32..=3 u32 => unsafe { core::mem::transmute::<u32, HostAccessQualifier>(n) },
_ => return None,
})
}
}
#[ allow(non_upper_case_globals)]
impl HostAccessQualifier {}
impl core::str::FromStr for HostAccessQualifier {
type Err = ();
fn from_str(s: &str) -> Result<Self , Self ::Err> {
match s {
"NoneINTEL" => Ok(Self ::NoneINTEL),
"ReadINTEL" => Ok(Self ::ReadINTEL),
"WriteINTEL" => Ok(Self ::WriteINTEL),
"ReadWriteINTEL" => Ok(Self ::ReadWriteINTEL),
_ => 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 = 0 u32,
Sext = 1 u32,
ByVal = 2 u32,
Sret = 3 u32,
NoAlias = 4 u32,
NoCapture = 5 u32,
NoWrite = 6 u32,
NoReadWrite = 7 u32,
RuntimeAlignedINTEL = 5940 u32,
}
impl FunctionParameterAttribute {
pub fn from_u32(n: u32) -> Option<Self > {
Some(match n {
0 u32..=7 u32 => unsafe { core::mem::transmute::<u32, FunctionParameterAttribute>(n) },
5940 u32 => unsafe { core::mem::transmute::<u32, FunctionParameterAttribute>(5940 u32) },
_ => return None,
})
}
}
#[ allow(non_upper_case_globals)]
impl FunctionParameterAttribute {}
impl core::str::FromStr for FunctionParameterAttribute {
type Err = ();
fn from_str(s: &str) -> Result<Self , Self ::Err> {
match s {
"Zext" => Ok(Self ::Zext),
"Sext" => Ok(Self ::Sext),
"ByVal" => Ok(Self ::ByVal),
"Sret" => Ok(Self ::Sret),
"NoAlias" => Ok(Self ::NoAlias),
"NoCapture" => Ok(Self ::NoCapture),
"NoWrite" => Ok(Self ::NoWrite),
"NoReadWrite" => Ok(Self ::NoReadWrite),
"RuntimeAlignedINTEL" => Ok(Self ::RuntimeAlignedINTEL),
_ => 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 = 0 u32,
SpecId = 1 u32,
Block = 2 u32,
BufferBlock = 3 u32,
RowMajor = 4 u32,
ColMajor = 5 u32,
ArrayStride = 6 u32,
MatrixStride = 7 u32,
GLSLShared = 8 u32,
GLSLPacked = 9 u32,
CPacked = 10 u32,
BuiltIn = 11 u32,
NoPerspective = 13 u32,
Flat = 14 u32,
Patch = 15 u32,
Centroid = 16 u32,
Sample = 17 u32,
Invariant = 18 u32,
Restrict = 19 u32,
Aliased = 20 u32,
Volatile = 21 u32,
Constant = 22 u32,
Coherent = 23 u32,
NonWritable = 24 u32,
NonReadable = 25 u32,
Uniform = 26 u32,
UniformId = 27 u32,
SaturatedConversion = 28 u32,
Stream = 29 u32,
Location = 30 u32,
Component = 31 u32,
Index = 32 u32,
Binding = 33 u32,
DescriptorSet = 34 u32,
Offset = 35 u32,
XfbBuffer = 36 u32,
XfbStride = 37 u32,
FuncParamAttr = 38 u32,
FPRoundingMode = 39 u32,
FPFastMathMode = 40 u32,
LinkageAttributes = 41 u32,
NoContraction = 42 u32,
InputAttachmentIndex = 43 u32,
Alignment = 44 u32,
MaxByteOffset = 45 u32,
AlignmentId = 46 u32,
MaxByteOffsetId = 47 u32,
NoSignedWrap = 4469 u32,
NoUnsignedWrap = 4470 u32,
WeightTextureQCOM = 4487 u32,
BlockMatchTextureQCOM = 4488 u32,
ExplicitInterpAMD = 4999 u32,
NodeSharesPayloadLimitsWithAMDX = 5019 u32,
NodeMaxPayloadsAMDX = 5020 u32,
TrackFinishWritingAMDX = 5078 u32,
PayloadNodeNameAMDX = 5091 u32,
OverrideCoverageNV = 5248 u32,
PassthroughNV = 5250 u32,
ViewportRelativeNV = 5252 u32,
SecondaryViewportRelativeNV = 5256 u32,
PerPrimitiveNV = 5271 u32,
PerViewNV = 5272 u32,
PerTaskNV = 5273 u32,
PerVertexKHR = 5285 u32,
NonUniform = 5300 u32,
RestrictPointer = 5355 u32,
AliasedPointer = 5356 u32,
HitObjectShaderRecordBufferNV = 5386 u32,
BindlessSamplerNV = 5398 u32,
BindlessImageNV = 5399 u32,
BoundSamplerNV = 5400 u32,
BoundImageNV = 5401 u32,
SIMTCallINTEL = 5599 u32,
ReferencedIndirectlyINTEL = 5602 u32,
ClobberINTEL = 5607 u32,
SideEffectsINTEL = 5608 u32,
VectorComputeVariableINTEL = 5624 u32,
FuncParamIOKindINTEL = 5625 u32,
VectorComputeFunctionINTEL = 5626 u32,
StackCallINTEL = 5627 u32,
GlobalVariableOffsetINTEL = 5628 u32,
CounterBuffer = 5634 u32,
UserSemantic = 5635 u32,
UserTypeGOOGLE = 5636 u32,
FunctionRoundingModeINTEL = 5822 u32,
FunctionDenormModeINTEL = 5823 u32,
RegisterINTEL = 5825 u32,
MemoryINTEL = 5826 u32,
NumbanksINTEL = 5827 u32,
BankwidthINTEL = 5828 u32,
MaxPrivateCopiesINTEL = 5829 u32,
SinglepumpINTEL = 5830 u32,
DoublepumpINTEL = 5831 u32,
MaxReplicatesINTEL = 5832 u32,
SimpleDualPortINTEL = 5833 u32,
MergeINTEL = 5834 u32,
BankBitsINTEL = 5835 u32,
ForcePow2DepthINTEL = 5836 u32,
BurstCoalesceINTEL = 5899 u32,
CacheSizeINTEL = 5900 u32,
DontStaticallyCoalesceINTEL = 5901 u32,
PrefetchINTEL = 5902 u32,
StallEnableINTEL = 5905 u32,
FuseLoopsInFunctionINTEL = 5907 u32,
MathOpDSPModeINTEL = 5909 u32,
AliasScopeINTEL = 5914 u32,
NoAliasINTEL = 5915 u32,
InitiationIntervalINTEL = 5917 u32,
MaxConcurrencyINTEL = 5918 u32,
PipelineEnableINTEL = 5919 u32,
BufferLocationINTEL = 5921 u32,
IOPipeStorageINTEL = 5944 u32,
FunctionFloatingPointModeINTEL = 6080 u32,
SingleElementVectorINTEL = 6085 u32,
VectorComputeCallableFunctionINTEL = 6087 u32,
MediaBlockIOINTEL = 6140 u32,
InitModeINTEL = 6147 u32,
ImplementInRegisterMapINTEL = 6148 u32,
HostAccessINTEL = 6168 u32,
FPMaxErrorDecorationINTEL = 6170 u32,
LatencyControlLabelINTEL = 6172 u32,
LatencyControlConstraintINTEL = 6173 u32,
ConduitKernelArgumentINTEL = 6175 u32,
RegisterMapKernelArgumentINTEL = 6176 u32,
MMHostInterfaceAddressWidthINTEL = 6177 u32,
MMHostInterfaceDataWidthINTEL = 6178 u32,
MMHostInterfaceLatencyINTEL = 6179 u32,
MMHostInterfaceReadWriteModeINTEL = 6180 u32,
MMHostInterfaceMaxBurstINTEL = 6181 u32,
MMHostInterfaceWaitRequestINTEL = 6182 u32,
StableKernelArgumentINTEL = 6183 u32,
CacheControlLoadINTEL = 6442 u32,
CacheControlStoreINTEL = 6443 u32,
}
impl Decoration {
pub fn from_u32(n: u32) -> Option<Self > {
Some(match n {
0 u32..=11 u32 => unsafe { core::mem::transmute::<u32, Decoration>(n) },
13 u32..=47 u32 => unsafe { core::mem::transmute::<u32, Decoration>(n) },
4469 u32..=4470 u32 => unsafe { core::mem::transmute::<u32, Decoration>(n) },
4487 u32..=4488 u32 => unsafe { core::mem::transmute::<u32, Decoration>(n) },
4999 u32 => unsafe { core::mem::transmute::<u32, Decoration>(4999 u32) },
5019 u32..=5020 u32 => unsafe { core::mem::transmute::<u32, Decoration>(n) },
5078 u32 => unsafe { core::mem::transmute::<u32, Decoration>(5078 u32) },
5091 u32 => unsafe { core::mem::transmute::<u32, Decoration>(5091 u32) },
5248 u32 => unsafe { core::mem::transmute::<u32, Decoration>(5248 u32) },
5250 u32 => unsafe { core::mem::transmute::<u32, Decoration>(5250 u32) },
5252 u32 => unsafe { core::mem::transmute::<u32, Decoration>(5252 u32) },
5256 u32 => unsafe { core::mem::transmute::<u32, Decoration>(5256 u32) },
5271 u32..=5273 u32 => unsafe { core::mem::transmute::<u32, Decoration>(n) },
5285 u32 => unsafe { core::mem::transmute::<u32, Decoration>(5285 u32) },
5300 u32 => unsafe { core::mem::transmute::<u32, Decoration>(5300 u32) },
5355 u32..=5356 u32 => unsafe { core::mem::transmute::<u32, Decoration>(n) },
5386 u32 => unsafe { core::mem::transmute::<u32, Decoration>(5386 u32) },
5398 u32..=5401 u32 => unsafe { core::mem::transmute::<u32, Decoration>(n) },
5599 u32 => unsafe { core::mem::transmute::<u32, Decoration>(5599 u32) },
5602 u32 => unsafe { core::mem::transmute::<u32, Decoration>(5602 u32) },
5607 u32..=5608 u32 => unsafe { core::mem::transmute::<u32, Decoration>(n) },
5624 u32..=5628 u32 => unsafe { core::mem::transmute::<u32, Decoration>(n) },
5634 u32..=5636 u32 => unsafe { core::mem::transmute::<u32, Decoration>(n) },
5822 u32..=5823 u32 => unsafe { core::mem::transmute::<u32, Decoration>(n) },
5825 u32..=5836 u32 => unsafe { core::mem::transmute::<u32, Decoration>(n) },
5899 u32..=5902 u32 => unsafe { core::mem::transmute::<u32, Decoration>(n) },
5905 u32 => unsafe { core::mem::transmute::<u32, Decoration>(5905 u32) },
5907 u32 => unsafe { core::mem::transmute::<u32, Decoration>(5907 u32) },
5909 u32 => unsafe { core::mem::transmute::<u32, Decoration>(5909 u32) },
5914 u32..=5915 u32 => unsafe { core::mem::transmute::<u32, Decoration>(n) },
5917 u32..=5919 u32 => unsafe { core::mem::transmute::<u32, Decoration>(n) },
5921 u32 => unsafe { core::mem::transmute::<u32, Decoration>(5921 u32) },
5944 u32 => unsafe { core::mem::transmute::<u32, Decoration>(5944 u32) },
6080 u32 => unsafe { core::mem::transmute::<u32, Decoration>(6080 u32) },
6085 u32 => unsafe { core::mem::transmute::<u32, Decoration>(6085 u32) },
6087 u32 => unsafe { core::mem::transmute::<u32, Decoration>(6087 u32) },
6140 u32 => unsafe { core::mem::transmute::<u32, Decoration>(6140 u32) },
6147 u32..=6148 u32 => unsafe { core::mem::transmute::<u32, Decoration>(n) },
6168 u32 => unsafe { core::mem::transmute::<u32, Decoration>(6168 u32) },
6170 u32 => unsafe { core::mem::transmute::<u32, Decoration>(6170 u32) },
6172 u32..=6173 u32 => unsafe { core::mem::transmute::<u32, Decoration>(n) },
6175 u32..=6183 u32 => unsafe { core::mem::transmute::<u32, Decoration>(n) },
6442 u32..=6443 u32 => unsafe { core::mem::transmute::<u32, Decoration>(n) },
_ => return None,
})
}
}
#[ allow(non_upper_case_globals)]
impl Decoration {
pub const PerPrimitiveEXT: Self = Self ::PerPrimitiveNV;
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;
}
impl core::str::FromStr for Decoration {
type Err = ();
fn from_str(s: &str) -> Result<Self , Self ::Err> {
match s {
"RelaxedPrecision" => Ok(Self ::RelaxedPrecision),
"SpecId" => Ok(Self ::SpecId),
"Block" => Ok(Self ::Block),
"BufferBlock" => Ok(Self ::BufferBlock),
"RowMajor" => Ok(Self ::RowMajor),
"ColMajor" => Ok(Self ::ColMajor),
"ArrayStride" => Ok(Self ::ArrayStride),
"MatrixStride" => Ok(Self ::MatrixStride),
"GLSLShared" => Ok(Self ::GLSLShared),
"GLSLPacked" => Ok(Self ::GLSLPacked),
"CPacked" => Ok(Self ::CPacked),
"BuiltIn" => Ok(Self ::BuiltIn),
"NoPerspective" => Ok(Self ::NoPerspective),
"Flat" => Ok(Self ::Flat),
"Patch" => Ok(Self ::Patch),
"Centroid" => Ok(Self ::Centroid),
"Sample" => Ok(Self ::Sample),
"Invariant" => Ok(Self ::Invariant),
"Restrict" => Ok(Self ::Restrict),
"Aliased" => Ok(Self ::Aliased),
"Volatile" => Ok(Self ::Volatile),
"Constant" => Ok(Self ::Constant),
"Coherent" => Ok(Self ::Coherent),
"NonWritable" => Ok(Self ::NonWritable),
"NonReadable" => Ok(Self ::NonReadable),
"Uniform" => Ok(Self ::Uniform),
"UniformId" => Ok(Self ::UniformId),
"SaturatedConversion" => Ok(Self ::SaturatedConversion),
"Stream" => Ok(Self ::Stream),
"Location" => Ok(Self ::Location),
"Component" => Ok(Self ::Component),
"Index" => Ok(Self ::Index),
"Binding" => Ok(Self ::Binding),
"DescriptorSet" => Ok(Self ::DescriptorSet),
"Offset" => Ok(Self ::Offset),
"XfbBuffer" => Ok(Self ::XfbBuffer),
"XfbStride" => Ok(Self ::XfbStride),
"FuncParamAttr" => Ok(Self ::FuncParamAttr),
"FPRoundingMode" => Ok(Self ::FPRoundingMode),
"FPFastMathMode" => Ok(Self ::FPFastMathMode),
"LinkageAttributes" => Ok(Self ::LinkageAttributes),
"NoContraction" => Ok(Self ::NoContraction),
"InputAttachmentIndex" => Ok(Self ::InputAttachmentIndex),
"Alignment" => Ok(Self ::Alignment),
"MaxByteOffset" => Ok(Self ::MaxByteOffset),
"AlignmentId" => Ok(Self ::AlignmentId),
"MaxByteOffsetId" => Ok(Self ::MaxByteOffsetId),
"NoSignedWrap" => Ok(Self ::NoSignedWrap),
"NoUnsignedWrap" => Ok(Self ::NoUnsignedWrap),
"WeightTextureQCOM" => Ok(Self ::WeightTextureQCOM),
"BlockMatchTextureQCOM" => Ok(Self ::BlockMatchTextureQCOM),
"ExplicitInterpAMD" => Ok(Self ::ExplicitInterpAMD),
"NodeSharesPayloadLimitsWithAMDX" => Ok(Self ::NodeSharesPayloadLimitsWithAMDX),
"NodeMaxPayloadsAMDX" => Ok(Self ::NodeMaxPayloadsAMDX),
"TrackFinishWritingAMDX" => Ok(Self ::TrackFinishWritingAMDX),
"PayloadNodeNameAMDX" => Ok(Self ::PayloadNodeNameAMDX),
"OverrideCoverageNV" => Ok(Self ::OverrideCoverageNV),
"PassthroughNV" => Ok(Self ::PassthroughNV),
"ViewportRelativeNV" => Ok(Self ::ViewportRelativeNV),
"SecondaryViewportRelativeNV" => Ok(Self ::SecondaryViewportRelativeNV),
"PerPrimitiveNV" => Ok(Self ::PerPrimitiveNV),
"PerPrimitiveEXT" => Ok(Self ::PerPrimitiveNV),
"PerViewNV" => Ok(Self ::PerViewNV),
"PerTaskNV" => Ok(Self ::PerTaskNV),
"PerVertexKHR" => Ok(Self ::PerVertexKHR),
"PerVertexNV" => Ok(Self ::PerVertexKHR),
"NonUniform" => Ok(Self ::NonUniform),
"NonUniformEXT" => Ok(Self ::NonUniform),
"RestrictPointer" => Ok(Self ::RestrictPointer),
"RestrictPointerEXT" => Ok(Self ::RestrictPointer),
"AliasedPointer" => Ok(Self ::AliasedPointer),
"AliasedPointerEXT" => Ok(Self ::AliasedPointer),
"HitObjectShaderRecordBufferNV" => Ok(Self ::HitObjectShaderRecordBufferNV),
"BindlessSamplerNV" => Ok(Self ::BindlessSamplerNV),
"BindlessImageNV" => Ok(Self ::BindlessImageNV),
"BoundSamplerNV" => Ok(Self ::BoundSamplerNV),
"BoundImageNV" => Ok(Self ::BoundImageNV),
"SIMTCallINTEL" => Ok(Self ::SIMTCallINTEL),
"ReferencedIndirectlyINTEL" => Ok(Self ::ReferencedIndirectlyINTEL),
"ClobberINTEL" => Ok(Self ::ClobberINTEL),
"SideEffectsINTEL" => Ok(Self ::SideEffectsINTEL),
"VectorComputeVariableINTEL" => Ok(Self ::VectorComputeVariableINTEL),
"FuncParamIOKindINTEL" => Ok(Self ::FuncParamIOKindINTEL),
"VectorComputeFunctionINTEL" => Ok(Self ::VectorComputeFunctionINTEL),
"StackCallINTEL" => Ok(Self ::StackCallINTEL),
"GlobalVariableOffsetINTEL" => Ok(Self ::GlobalVariableOffsetINTEL),
"CounterBuffer" => Ok(Self ::CounterBuffer),
"HlslCounterBufferGOOGLE" => Ok(Self ::CounterBuffer),
"UserSemantic" => Ok(Self ::UserSemantic),
"HlslSemanticGOOGLE" => Ok(Self ::UserSemantic),
"UserTypeGOOGLE" => Ok(Self ::UserTypeGOOGLE),
"FunctionRoundingModeINTEL" => Ok(Self ::FunctionRoundingModeINTEL),
"FunctionDenormModeINTEL" => Ok(Self ::FunctionDenormModeINTEL),
"RegisterINTEL" => Ok(Self ::RegisterINTEL),
"MemoryINTEL" => Ok(Self ::MemoryINTEL),
"NumbanksINTEL" => Ok(Self ::NumbanksINTEL),
"BankwidthINTEL" => Ok(Self ::BankwidthINTEL),
"MaxPrivateCopiesINTEL" => Ok(Self ::MaxPrivateCopiesINTEL),
"SinglepumpINTEL" => Ok(Self ::SinglepumpINTEL),
"DoublepumpINTEL" => Ok(Self ::DoublepumpINTEL),
"MaxReplicatesINTEL" => Ok(Self ::MaxReplicatesINTEL),
"SimpleDualPortINTEL" => Ok(Self ::SimpleDualPortINTEL),
"MergeINTEL" => Ok(Self ::MergeINTEL),
"BankBitsINTEL" => Ok(Self ::BankBitsINTEL),
"ForcePow2DepthINTEL" => Ok(Self ::ForcePow2DepthINTEL),
"BurstCoalesceINTEL" => Ok(Self ::BurstCoalesceINTEL),
"CacheSizeINTEL" => Ok(Self ::CacheSizeINTEL),
"DontStaticallyCoalesceINTEL" => Ok(Self ::DontStaticallyCoalesceINTEL),
"PrefetchINTEL" => Ok(Self ::PrefetchINTEL),
"StallEnableINTEL" => Ok(Self ::StallEnableINTEL),
"FuseLoopsInFunctionINTEL" => Ok(Self ::FuseLoopsInFunctionINTEL),
"MathOpDSPModeINTEL" => Ok(Self ::MathOpDSPModeINTEL),
"AliasScopeINTEL" => Ok(Self ::AliasScopeINTEL),
"NoAliasINTEL" => Ok(Self ::NoAliasINTEL),
"InitiationIntervalINTEL" => Ok(Self ::InitiationIntervalINTEL),
"MaxConcurrencyINTEL" => Ok(Self ::MaxConcurrencyINTEL),
"PipelineEnableINTEL" => Ok(Self ::PipelineEnableINTEL),
"BufferLocationINTEL" => Ok(Self ::BufferLocationINTEL),
"IOPipeStorageINTEL" => Ok(Self ::IOPipeStorageINTEL),
"FunctionFloatingPointModeINTEL" => Ok(Self ::FunctionFloatingPointModeINTEL),
"SingleElementVectorINTEL" => Ok(Self ::SingleElementVectorINTEL),
"VectorComputeCallableFunctionINTEL" => Ok(Self ::VectorComputeCallableFunctionINTEL),
"MediaBlockIOINTEL" => Ok(Self ::MediaBlockIOINTEL),
"InitModeINTEL" => Ok(Self ::InitModeINTEL),
"ImplementInRegisterMapINTEL" => Ok(Self ::ImplementInRegisterMapINTEL),
"HostAccessINTEL" => Ok(Self ::HostAccessINTEL),
"FPMaxErrorDecorationINTEL" => Ok(Self ::FPMaxErrorDecorationINTEL),
"LatencyControlLabelINTEL" => Ok(Self ::LatencyControlLabelINTEL),
"LatencyControlConstraintINTEL" => Ok(Self ::LatencyControlConstraintINTEL),
"ConduitKernelArgumentINTEL" => Ok(Self ::ConduitKernelArgumentINTEL),
"RegisterMapKernelArgumentINTEL" => Ok(Self ::RegisterMapKernelArgumentINTEL),
"MMHostInterfaceAddressWidthINTEL" => Ok(Self ::MMHostInterfaceAddressWidthINTEL),
"MMHostInterfaceDataWidthINTEL" => Ok(Self ::MMHostInterfaceDataWidthINTEL),
"MMHostInterfaceLatencyINTEL" => Ok(Self ::MMHostInterfaceLatencyINTEL),
"MMHostInterfaceReadWriteModeINTEL" => Ok(Self ::MMHostInterfaceReadWriteModeINTEL),
"MMHostInterfaceMaxBurstINTEL" => Ok(Self ::MMHostInterfaceMaxBurstINTEL),
"MMHostInterfaceWaitRequestINTEL" => Ok(Self ::MMHostInterfaceWaitRequestINTEL),
"StableKernelArgumentINTEL" => Ok(Self ::StableKernelArgumentINTEL),
"CacheControlLoadINTEL" => Ok(Self ::CacheControlLoadINTEL),
"CacheControlStoreINTEL" => Ok(Self ::CacheControlStoreINTEL),
_ => 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 = 0 u32,
PointSize = 1 u32,
ClipDistance = 3 u32,
CullDistance = 4 u32,
VertexId = 5 u32,
InstanceId = 6 u32,
PrimitiveId = 7 u32,
InvocationId = 8 u32,
Layer = 9 u32,
ViewportIndex = 10 u32,
TessLevelOuter = 11 u32,
TessLevelInner = 12 u32,
TessCoord = 13 u32,
PatchVertices = 14 u32,
FragCoord = 15 u32,
PointCoord = 16 u32,
FrontFacing = 17 u32,
SampleId = 18 u32,
SamplePosition = 19 u32,
SampleMask = 20 u32,
FragDepth = 22 u32,
HelperInvocation = 23 u32,
NumWorkgroups = 24 u32,
WorkgroupSize = 25 u32,
WorkgroupId = 26 u32,
LocalInvocationId = 27 u32,
GlobalInvocationId = 28 u32,
LocalInvocationIndex = 29 u32,
WorkDim = 30 u32,
GlobalSize = 31 u32,
EnqueuedWorkgroupSize = 32 u32,
GlobalOffset = 33 u32,
GlobalLinearId = 34 u32,
SubgroupSize = 36 u32,
SubgroupMaxSize = 37 u32,
NumSubgroups = 38 u32,
NumEnqueuedSubgroups = 39 u32,
SubgroupId = 40 u32,
SubgroupLocalInvocationId = 41 u32,
VertexIndex = 42 u32,
InstanceIndex = 43 u32,
CoreIDARM = 4160 u32,
CoreCountARM = 4161 u32,
CoreMaxIDARM = 4162 u32,
WarpIDARM = 4163 u32,
WarpMaxIDARM = 4164 u32,
SubgroupEqMask = 4416 u32,
SubgroupGeMask = 4417 u32,
SubgroupGtMask = 4418 u32,
SubgroupLeMask = 4419 u32,
SubgroupLtMask = 4420 u32,
BaseVertex = 4424 u32,
BaseInstance = 4425 u32,
DrawIndex = 4426 u32,
PrimitiveShadingRateKHR = 4432 u32,
DeviceIndex = 4438 u32,
ViewIndex = 4440 u32,
ShadingRateKHR = 4444 u32,
BaryCoordNoPerspAMD = 4992 u32,
BaryCoordNoPerspCentroidAMD = 4993 u32,
BaryCoordNoPerspSampleAMD = 4994 u32,
BaryCoordSmoothAMD = 4995 u32,
BaryCoordSmoothCentroidAMD = 4996 u32,
BaryCoordSmoothSampleAMD = 4997 u32,
BaryCoordPullModelAMD = 4998 u32,
FragStencilRefEXT = 5014 u32,
CoalescedInputCountAMDX = 5021 u32,
ShaderIndexAMDX = 5073 u32,
ViewportMaskNV = 5253 u32,
SecondaryPositionNV = 5257 u32,
SecondaryViewportMaskNV = 5258 u32,
PositionPerViewNV = 5261 u32,
ViewportMaskPerViewNV = 5262 u32,
FullyCoveredEXT = 5264 u32,
TaskCountNV = 5274 u32,
PrimitiveCountNV = 5275 u32,
PrimitiveIndicesNV = 5276 u32,
ClipDistancePerViewNV = 5277 u32,
CullDistancePerViewNV = 5278 u32,
LayerPerViewNV = 5279 u32,
MeshViewCountNV = 5280 u32,
MeshViewIndicesNV = 5281 u32,
BaryCoordKHR = 5286 u32,
BaryCoordNoPerspKHR = 5287 u32,
FragSizeEXT = 5292 u32,
FragInvocationCountEXT = 5293 u32,
PrimitivePointIndicesEXT = 5294 u32,
PrimitiveLineIndicesEXT = 5295 u32,
PrimitiveTriangleIndicesEXT = 5296 u32,
CullPrimitiveEXT = 5299 u32,
LaunchIdNV = 5319 u32,
LaunchSizeNV = 5320 u32,
WorldRayOriginNV = 5321 u32,
WorldRayDirectionNV = 5322 u32,
ObjectRayOriginNV = 5323 u32,
ObjectRayDirectionNV = 5324 u32,
RayTminNV = 5325 u32,
RayTmaxNV = 5326 u32,
InstanceCustomIndexNV = 5327 u32,
ObjectToWorldNV = 5330 u32,
WorldToObjectNV = 5331 u32,
HitTNV = 5332 u32,
HitKindNV = 5333 u32,
CurrentRayTimeNV = 5334 u32,
HitTriangleVertexPositionsKHR = 5335 u32,
HitMicroTriangleVertexPositionsNV = 5337 u32,
HitMicroTriangleVertexBarycentricsNV = 5344 u32,
IncomingRayFlagsNV = 5351 u32,
RayGeometryIndexKHR = 5352 u32,
WarpsPerSMNV = 5374 u32,
SMCountNV = 5375 u32,
WarpIDNV = 5376 u32,
SMIDNV = 5377 u32,
HitKindFrontFacingMicroTriangleNV = 5405 u32,
HitKindBackFacingMicroTriangleNV = 5406 u32,
CullMaskKHR = 6021 u32,
}
impl BuiltIn {
pub fn from_u32(n: u32) -> Option<Self > {
Some(match n {
0 u32..=1 u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(n) },
3 u32..=20 u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(n) },
22 u32..=34 u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(n) },
36 u32..=43 u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(n) },
4160 u32..=4164 u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(n) },
4416 u32..=4420 u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(n) },
4424 u32..=4426 u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(n) },
4432 u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(4432 u32) },
4438 u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(4438 u32) },
4440 u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(4440 u32) },
4444 u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(4444 u32) },
4992 u32..=4998 u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(n) },
5014 u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(5014 u32) },
5021 u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(5021 u32) },
5073 u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(5073 u32) },
5253 u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(5253 u32) },
5257 u32..=5258 u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(n) },
5261 u32..=5262 u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(n) },
5264 u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(5264 u32) },
5274 u32..=5281 u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(n) },
5286 u32..=5287 u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(n) },
5292 u32..=5296 u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(n) },
5299 u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(5299 u32) },
5319 u32..=5327 u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(n) },
5330 u32..=5335 u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(n) },
5337 u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(5337 u32) },
5344 u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(5344 u32) },
5351 u32..=5352 u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(n) },
5374 u32..=5377 u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(n) },
5405 u32..=5406 u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(n) },
6021 u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(6021 u32) },
_ => 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 LaunchIdKHR: Self = Self ::LaunchIdNV;
pub const LaunchSizeKHR: Self = Self ::LaunchSizeNV;
pub const WorldRayOriginKHR: Self = Self ::WorldRayOriginNV;
pub const WorldRayDirectionKHR: Self = Self ::WorldRayDirectionNV;
pub const ObjectRayOriginKHR: Self = Self ::ObjectRayOriginNV;
pub const ObjectRayDirectionKHR: Self = Self ::ObjectRayDirectionNV;
pub const RayTminKHR: Self = Self ::RayTminNV;
pub const RayTmaxKHR: Self = Self ::RayTmaxNV;
pub const InstanceCustomIndexKHR: Self = Self ::InstanceCustomIndexNV;
pub const ObjectToWorldKHR: Self = Self ::ObjectToWorldNV;
pub const WorldToObjectKHR: Self = Self ::WorldToObjectNV;
pub const HitKindKHR: Self = Self ::HitKindNV;
pub const IncomingRayFlagsKHR: Self = Self ::IncomingRayFlagsNV;
}
impl core::str::FromStr for BuiltIn {
type Err = ();
fn from_str(s: &str) -> Result<Self , Self ::Err> {
match s {
"Position" => Ok(Self ::Position),
"PointSize" => Ok(Self ::PointSize),
"ClipDistance" => Ok(Self ::ClipDistance),
"CullDistance" => Ok(Self ::CullDistance),
"VertexId" => Ok(Self ::VertexId),
"InstanceId" => Ok(Self ::InstanceId),
"PrimitiveId" => Ok(Self ::PrimitiveId),
"InvocationId" => Ok(Self ::InvocationId),
"Layer" => Ok(Self ::Layer),
"ViewportIndex" => Ok(Self ::ViewportIndex),
"TessLevelOuter" => Ok(Self ::TessLevelOuter),
"TessLevelInner" => Ok(Self ::TessLevelInner),
"TessCoord" => Ok(Self ::TessCoord),
"PatchVertices" => Ok(Self ::PatchVertices),
"FragCoord" => Ok(Self ::FragCoord),
"PointCoord" => Ok(Self ::PointCoord),
"FrontFacing" => Ok(Self ::FrontFacing),
"SampleId" => Ok(Self ::SampleId),
"SamplePosition" => Ok(Self ::SamplePosition),
"SampleMask" => Ok(Self ::SampleMask),
"FragDepth" => Ok(Self ::FragDepth),
"HelperInvocation" => Ok(Self ::HelperInvocation),
"NumWorkgroups" => Ok(Self ::NumWorkgroups),
"WorkgroupSize" => Ok(Self ::WorkgroupSize),
"WorkgroupId" => Ok(Self ::WorkgroupId),
"LocalInvocationId" => Ok(Self ::LocalInvocationId),
"GlobalInvocationId" => Ok(Self ::GlobalInvocationId),
"LocalInvocationIndex" => Ok(Self ::LocalInvocationIndex),
"WorkDim" => Ok(Self ::WorkDim),
"GlobalSize" => Ok(Self ::GlobalSize),
"EnqueuedWorkgroupSize" => Ok(Self ::EnqueuedWorkgroupSize),
"GlobalOffset" => Ok(Self ::GlobalOffset),
"GlobalLinearId" => Ok(Self ::GlobalLinearId),
"SubgroupSize" => Ok(Self ::SubgroupSize),
"SubgroupMaxSize" => Ok(Self ::SubgroupMaxSize),
"NumSubgroups" => Ok(Self ::NumSubgroups),
"NumEnqueuedSubgroups" => Ok(Self ::NumEnqueuedSubgroups),
"SubgroupId" => Ok(Self ::SubgroupId),
"SubgroupLocalInvocationId" => Ok(Self ::SubgroupLocalInvocationId),
"VertexIndex" => Ok(Self ::VertexIndex),
"InstanceIndex" => Ok(Self ::InstanceIndex),
"CoreIDARM" => Ok(Self ::CoreIDARM),
"CoreCountARM" => Ok(Self ::CoreCountARM),
"CoreMaxIDARM" => Ok(Self ::CoreMaxIDARM),
"WarpIDARM" => Ok(Self ::WarpIDARM),
"WarpMaxIDARM" => Ok(Self ::WarpMaxIDARM),
"SubgroupEqMask" => Ok(Self ::SubgroupEqMask),
"SubgroupEqMaskKHR" => Ok(Self ::SubgroupEqMask),
"SubgroupGeMask" => Ok(Self ::SubgroupGeMask),
"SubgroupGeMaskKHR" => Ok(Self ::SubgroupGeMask),
"SubgroupGtMask" => Ok(Self ::SubgroupGtMask),
"SubgroupGtMaskKHR" => Ok(Self ::SubgroupGtMask),
"SubgroupLeMask" => Ok(Self ::SubgroupLeMask),
"SubgroupLeMaskKHR" => Ok(Self ::SubgroupLeMask),
"SubgroupLtMask" => Ok(Self ::SubgroupLtMask),
"SubgroupLtMaskKHR" => Ok(Self ::SubgroupLtMask),
"BaseVertex" => Ok(Self ::BaseVertex),
"BaseInstance" => Ok(Self ::BaseInstance),
"DrawIndex" => Ok(Self ::DrawIndex),
"PrimitiveShadingRateKHR" => Ok(Self ::PrimitiveShadingRateKHR),
"DeviceIndex" => Ok(Self ::DeviceIndex),
"ViewIndex" => Ok(Self ::ViewIndex),
"ShadingRateKHR" => Ok(Self ::ShadingRateKHR),
"BaryCoordNoPerspAMD" => Ok(Self ::BaryCoordNoPerspAMD),
"BaryCoordNoPerspCentroidAMD" => Ok(Self ::BaryCoordNoPerspCentroidAMD),
"BaryCoordNoPerspSampleAMD" => Ok(Self ::BaryCoordNoPerspSampleAMD),
"BaryCoordSmoothAMD" => Ok(Self ::BaryCoordSmoothAMD),
"BaryCoordSmoothCentroidAMD" => Ok(Self ::BaryCoordSmoothCentroidAMD),
"BaryCoordSmoothSampleAMD" => Ok(Self ::BaryCoordSmoothSampleAMD),
"BaryCoordPullModelAMD" => Ok(Self ::BaryCoordPullModelAMD),
"FragStencilRefEXT" => Ok(Self ::FragStencilRefEXT),
"CoalescedInputCountAMDX" => Ok(Self ::CoalescedInputCountAMDX),
"ShaderIndexAMDX" => Ok(Self ::ShaderIndexAMDX),
"ViewportMaskNV" => Ok(Self ::ViewportMaskNV),
"SecondaryPositionNV" => Ok(Self ::SecondaryPositionNV),
"SecondaryViewportMaskNV" => Ok(Self ::SecondaryViewportMaskNV),
"PositionPerViewNV" => Ok(Self ::PositionPerViewNV),
"ViewportMaskPerViewNV" => Ok(Self ::ViewportMaskPerViewNV),
"FullyCoveredEXT" => Ok(Self ::FullyCoveredEXT),
"TaskCountNV" => Ok(Self ::TaskCountNV),
"PrimitiveCountNV" => Ok(Self ::PrimitiveCountNV),
"PrimitiveIndicesNV" => Ok(Self ::PrimitiveIndicesNV),
"ClipDistancePerViewNV" => Ok(Self ::ClipDistancePerViewNV),
"CullDistancePerViewNV" => Ok(Self ::CullDistancePerViewNV),
"LayerPerViewNV" => Ok(Self ::LayerPerViewNV),
"MeshViewCountNV" => Ok(Self ::MeshViewCountNV),
"MeshViewIndicesNV" => Ok(Self ::MeshViewIndicesNV),
"BaryCoordKHR" => Ok(Self ::BaryCoordKHR),
"BaryCoordNV" => Ok(Self ::BaryCoordKHR),
"BaryCoordNoPerspKHR" => Ok(Self ::BaryCoordNoPerspKHR),
"BaryCoordNoPerspNV" => Ok(Self ::BaryCoordNoPerspKHR),
"FragSizeEXT" => Ok(Self ::FragSizeEXT),
"FragmentSizeNV" => Ok(Self ::FragSizeEXT),
"FragInvocationCountEXT" => Ok(Self ::FragInvocationCountEXT),
"InvocationsPerPixelNV" => Ok(Self ::FragInvocationCountEXT),
"PrimitivePointIndicesEXT" => Ok(Self ::PrimitivePointIndicesEXT),
"PrimitiveLineIndicesEXT" => Ok(Self ::PrimitiveLineIndicesEXT),
"PrimitiveTriangleIndicesEXT" => Ok(Self ::PrimitiveTriangleIndicesEXT),
"CullPrimitiveEXT" => Ok(Self ::CullPrimitiveEXT),
"LaunchIdNV" => Ok(Self ::LaunchIdNV),
"LaunchIdKHR" => Ok(Self ::LaunchIdNV),
"LaunchSizeNV" => Ok(Self ::LaunchSizeNV),
"LaunchSizeKHR" => Ok(Self ::LaunchSizeNV),
"WorldRayOriginNV" => Ok(Self ::WorldRayOriginNV),
"WorldRayOriginKHR" => Ok(Self ::WorldRayOriginNV),
"WorldRayDirectionNV" => Ok(Self ::WorldRayDirectionNV),
"WorldRayDirectionKHR" => Ok(Self ::WorldRayDirectionNV),
"ObjectRayOriginNV" => Ok(Self ::ObjectRayOriginNV),
"ObjectRayOriginKHR" => Ok(Self ::ObjectRayOriginNV),
"ObjectRayDirectionNV" => Ok(Self ::ObjectRayDirectionNV),
"ObjectRayDirectionKHR" => Ok(Self ::ObjectRayDirectionNV),
"RayTminNV" => Ok(Self ::RayTminNV),
"RayTminKHR" => Ok(Self ::RayTminNV),
"RayTmaxNV" => Ok(Self ::RayTmaxNV),
"RayTmaxKHR" => Ok(Self ::RayTmaxNV),
"InstanceCustomIndexNV" => Ok(Self ::InstanceCustomIndexNV),
"InstanceCustomIndexKHR" => Ok(Self ::InstanceCustomIndexNV),
"ObjectToWorldNV" => Ok(Self ::ObjectToWorldNV),
"ObjectToWorldKHR" => Ok(Self ::ObjectToWorldNV),
"WorldToObjectNV" => Ok(Self ::WorldToObjectNV),
"WorldToObjectKHR" => Ok(Self ::WorldToObjectNV),
"HitTNV" => Ok(Self ::HitTNV),
"HitKindNV" => Ok(Self ::HitKindNV),
"HitKindKHR" => Ok(Self ::HitKindNV),
"CurrentRayTimeNV" => Ok(Self ::CurrentRayTimeNV),
"HitTriangleVertexPositionsKHR" => Ok(Self ::HitTriangleVertexPositionsKHR),
"HitMicroTriangleVertexPositionsNV" => Ok(Self ::HitMicroTriangleVertexPositionsNV),
"HitMicroTriangleVertexBarycentricsNV" => {
Ok(Self ::HitMicroTriangleVertexBarycentricsNV)
}
"IncomingRayFlagsNV" => Ok(Self ::IncomingRayFlagsNV),
"IncomingRayFlagsKHR" => Ok(Self ::IncomingRayFlagsNV),
"RayGeometryIndexKHR" => Ok(Self ::RayGeometryIndexKHR),
"WarpsPerSMNV" => Ok(Self ::WarpsPerSMNV),
"SMCountNV" => Ok(Self ::SMCountNV),
"WarpIDNV" => Ok(Self ::WarpIDNV),
"SMIDNV" => Ok(Self ::SMIDNV),
"HitKindFrontFacingMicroTriangleNV" => Ok(Self ::HitKindFrontFacingMicroTriangleNV),
"HitKindBackFacingMicroTriangleNV" => Ok(Self ::HitKindBackFacingMicroTriangleNV),
"CullMaskKHR" => Ok(Self ::CullMaskKHR),
_ => 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 = 0 u32,
Device = 1 u32,
Workgroup = 2 u32,
Subgroup = 3 u32,
Invocation = 4 u32,
QueueFamily = 5 u32,
ShaderCallKHR = 6 u32,
}
impl Scope {
pub fn from_u32(n: u32) -> Option<Self > {
Some(match n {
0 u32..=6 u32 => unsafe { core::mem::transmute::<u32, Scope>(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<Self , Self ::Err> {
match s {
"CrossDevice" => Ok(Self ::CrossDevice),
"Device" => Ok(Self ::Device),
"Workgroup" => Ok(Self ::Workgroup),
"Subgroup" => Ok(Self ::Subgroup),
"Invocation" => Ok(Self ::Invocation),
"QueueFamily" => Ok(Self ::QueueFamily),
"QueueFamilyKHR" => Ok(Self ::QueueFamily),
"ShaderCallKHR" => Ok(Self ::ShaderCallKHR),
_ => 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 = 0 u32,
InclusiveScan = 1 u32,
ExclusiveScan = 2 u32,
ClusteredReduce = 3 u32,
PartitionedReduceNV = 6 u32,
PartitionedInclusiveScanNV = 7 u32,
PartitionedExclusiveScanNV = 8 u32,
}
impl GroupOperation {
pub fn from_u32(n: u32) -> Option<Self > {
Some(match n {
0 u32..=3 u32 => unsafe { core::mem::transmute::<u32, GroupOperation>(n) },
6 u32..=8 u32 => unsafe { core::mem::transmute::<u32, GroupOperation>(n) },
_ => return None,
})
}
}
#[ allow(non_upper_case_globals)]
impl GroupOperation {}
impl core::str::FromStr for GroupOperation {
type Err = ();
fn from_str(s: &str) -> Result<Self , Self ::Err> {
match s {
"Reduce" => Ok(Self ::Reduce),
"InclusiveScan" => Ok(Self ::InclusiveScan),
"ExclusiveScan" => Ok(Self ::ExclusiveScan),
"ClusteredReduce" => Ok(Self ::ClusteredReduce),
"PartitionedReduceNV" => Ok(Self ::PartitionedReduceNV),
"PartitionedInclusiveScanNV" => Ok(Self ::PartitionedInclusiveScanNV),
"PartitionedExclusiveScanNV" => Ok(Self ::PartitionedExclusiveScanNV),
_ => 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 = 0 u32,
WaitKernel = 1 u32,
WaitWorkGroup = 2 u32,
}
impl KernelEnqueueFlags {
pub fn from_u32(n: u32) -> Option<Self > {
Some(match n {
0 u32..=2 u32 => unsafe { core::mem::transmute::<u32, KernelEnqueueFlags>(n) },
_ => return None,
})
}
}
#[ allow(non_upper_case_globals)]
impl KernelEnqueueFlags {}
impl core::str::FromStr for KernelEnqueueFlags {
type Err = ();
fn from_str(s: &str) -> Result<Self , Self ::Err> {
match s {
"NoWait" => Ok(Self ::NoWait),
"WaitKernel" => Ok(Self ::WaitKernel),
"WaitWorkGroup" => Ok(Self ::WaitWorkGroup),
_ => 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 = 0 u32,
Shader = 1 u32,
Geometry = 2 u32,
Tessellation = 3 u32,
Addresses = 4 u32,
Linkage = 5 u32,
Kernel = 6 u32,
Vector16 = 7 u32,
Float16Buffer = 8 u32,
Float16 = 9 u32,
Float64 = 10 u32,
Int64 = 11 u32,
Int64Atomics = 12 u32,
ImageBasic = 13 u32,
ImageReadWrite = 14 u32,
ImageMipmap = 15 u32,
Pipes = 17 u32,
Groups = 18 u32,
DeviceEnqueue = 19 u32,
LiteralSampler = 20 u32,
AtomicStorage = 21 u32,
Int16 = 22 u32,
TessellationPointSize = 23 u32,
GeometryPointSize = 24 u32,
ImageGatherExtended = 25 u32,
StorageImageMultisample = 27 u32,
UniformBufferArrayDynamicIndexing = 28 u32,
SampledImageArrayDynamicIndexing = 29 u32,
StorageBufferArrayDynamicIndexing = 30 u32,
StorageImageArrayDynamicIndexing = 31 u32,
ClipDistance = 32 u32,
CullDistance = 33 u32,
ImageCubeArray = 34 u32,
SampleRateShading = 35 u32,
ImageRect = 36 u32,
SampledRect = 37 u32,
GenericPointer = 38 u32,
Int8 = 39 u32,
InputAttachment = 40 u32,
SparseResidency = 41 u32,
MinLod = 42 u32,
Sampled1D = 43 u32,
Image1D = 44 u32,
SampledCubeArray = 45 u32,
SampledBuffer = 46 u32,
ImageBuffer = 47 u32,
ImageMSArray = 48 u32,
StorageImageExtendedFormats = 49 u32,
ImageQuery = 50 u32,
DerivativeControl = 51 u32,
InterpolationFunction = 52 u32,
TransformFeedback = 53 u32,
GeometryStreams = 54 u32,
StorageImageReadWithoutFormat = 55 u32,
StorageImageWriteWithoutFormat = 56 u32,
MultiViewport = 57 u32,
SubgroupDispatch = 58 u32,
NamedBarrier = 59 u32,
PipeStorage = 60 u32,
GroupNonUniform = 61 u32,
GroupNonUniformVote = 62 u32,
GroupNonUniformArithmetic = 63 u32,
GroupNonUniformBallot = 64 u32,
GroupNonUniformShuffle = 65 u32,
GroupNonUniformShuffleRelative = 66 u32,
GroupNonUniformClustered = 67 u32,
GroupNonUniformQuad = 68 u32,
ShaderLayer = 69 u32,
ShaderViewportIndex = 70 u32,
UniformDecoration = 71 u32,
CoreBuiltinsARM = 4165 u32,
TileImageColorReadAccessEXT = 4166 u32,
TileImageDepthReadAccessEXT = 4167 u32,
TileImageStencilReadAccessEXT = 4168 u32,
FragmentShadingRateKHR = 4422 u32,
SubgroupBallotKHR = 4423 u32,
DrawParameters = 4427 u32,
WorkgroupMemoryExplicitLayoutKHR = 4428 u32,
WorkgroupMemoryExplicitLayout8BitAccessKHR = 4429 u32,
WorkgroupMemoryExplicitLayout16BitAccessKHR = 4430 u32,
SubgroupVoteKHR = 4431 u32,
StorageBuffer16BitAccess = 4433 u32,
UniformAndStorageBuffer16BitAccess = 4434 u32,
StoragePushConstant16 = 4435 u32,
StorageInputOutput16 = 4436 u32,
DeviceGroup = 4437 u32,
MultiView = 4439 u32,
VariablePointersStorageBuffer = 4441 u32,
VariablePointers = 4442 u32,
AtomicStorageOps = 4445 u32,
SampleMaskPostDepthCoverage = 4447 u32,
StorageBuffer8BitAccess = 4448 u32,
UniformAndStorageBuffer8BitAccess = 4449 u32,
StoragePushConstant8 = 4450 u32,
DenormPreserve = 4464 u32,
DenormFlushToZero = 4465 u32,
SignedZeroInfNanPreserve = 4466 u32,
RoundingModeRTE = 4467 u32,
RoundingModeRTZ = 4468 u32,
RayQueryProvisionalKHR = 4471 u32,
RayQueryKHR = 4472 u32,
RayTraversalPrimitiveCullingKHR = 4478 u32,
RayTracingKHR = 4479 u32,
TextureSampleWeightedQCOM = 4484 u32,
TextureBoxFilterQCOM = 4485 u32,
TextureBlockMatchQCOM = 4486 u32,
Float16ImageAMD = 5008 u32,
ImageGatherBiasLodAMD = 5009 u32,
FragmentMaskAMD = 5010 u32,
StencilExportEXT = 5013 u32,
ImageReadWriteLodAMD = 5015 u32,
Int64ImageEXT = 5016 u32,
ShaderClockKHR = 5055 u32,
ShaderEnqueueAMDX = 5067 u32,
SampleMaskOverrideCoverageNV = 5249 u32,
GeometryShaderPassthroughNV = 5251 u32,
ShaderViewportIndexLayerEXT = 5254 u32,
ShaderViewportMaskNV = 5255 u32,
ShaderStereoViewNV = 5259 u32,
PerViewAttributesNV = 5260 u32,
FragmentFullyCoveredEXT = 5265 u32,
MeshShadingNV = 5266 u32,
ImageFootprintNV = 5282 u32,
MeshShadingEXT = 5283 u32,
FragmentBarycentricKHR = 5284 u32,
ComputeDerivativeGroupQuadsNV = 5288 u32,
FragmentDensityEXT = 5291 u32,
GroupNonUniformPartitionedNV = 5297 u32,
ShaderNonUniform = 5301 u32,
RuntimeDescriptorArray = 5302 u32,
InputAttachmentArrayDynamicIndexing = 5303 u32,
UniformTexelBufferArrayDynamicIndexing = 5304 u32,
StorageTexelBufferArrayDynamicIndexing = 5305 u32,
UniformBufferArrayNonUniformIndexing = 5306 u32,
SampledImageArrayNonUniformIndexing = 5307 u32,
StorageBufferArrayNonUniformIndexing = 5308 u32,
StorageImageArrayNonUniformIndexing = 5309 u32,
InputAttachmentArrayNonUniformIndexing = 5310 u32,
UniformTexelBufferArrayNonUniformIndexing = 5311 u32,
StorageTexelBufferArrayNonUniformIndexing = 5312 u32,
RayTracingPositionFetchKHR = 5336 u32,
RayTracingNV = 5340 u32,
RayTracingMotionBlurNV = 5341 u32,
VulkanMemoryModel = 5345 u32,
VulkanMemoryModelDeviceScope = 5346 u32,
PhysicalStorageBufferAddresses = 5347 u32,
ComputeDerivativeGroupLinearNV = 5350 u32,
RayTracingProvisionalKHR = 5353 u32,
CooperativeMatrixNV = 5357 u32,
FragmentShaderSampleInterlockEXT = 5363 u32,
FragmentShaderShadingRateInterlockEXT = 5372 u32,
ShaderSMBuiltinsNV = 5373 u32,
FragmentShaderPixelInterlockEXT = 5378 u32,
DemoteToHelperInvocation = 5379 u32,
DisplacementMicromapNV = 5380 u32,
RayTracingOpacityMicromapEXT = 5381 u32,
ShaderInvocationReorderNV = 5383 u32,
BindlessTextureNV = 5390 u32,
RayQueryPositionFetchKHR = 5391 u32,
RayTracingDisplacementMicromapNV = 5409 u32,
SubgroupShuffleINTEL = 5568 u32,
SubgroupBufferBlockIOINTEL = 5569 u32,
SubgroupImageBlockIOINTEL = 5570 u32,
SubgroupImageMediaBlockIOINTEL = 5579 u32,
RoundToInfinityINTEL = 5582 u32,
FloatingPointModeINTEL = 5583 u32,
IntegerFunctions2INTEL = 5584 u32,
FunctionPointersINTEL = 5603 u32,
IndirectReferencesINTEL = 5604 u32,
AsmINTEL = 5606 u32,
AtomicFloat32MinMaxEXT = 5612 u32,
AtomicFloat64MinMaxEXT = 5613 u32,
AtomicFloat16MinMaxEXT = 5616 u32,
VectorComputeINTEL = 5617 u32,
VectorAnyINTEL = 5619 u32,
ExpectAssumeKHR = 5629 u32,
SubgroupAvcMotionEstimationINTEL = 5696 u32,
SubgroupAvcMotionEstimationIntraINTEL = 5697 u32,
SubgroupAvcMotionEstimationChromaINTEL = 5698 u32,
VariableLengthArrayINTEL = 5817 u32,
FunctionFloatControlINTEL = 5821 u32,
FPGAMemoryAttributesINTEL = 5824 u32,
FPFastMathModeINTEL = 5837 u32,
ArbitraryPrecisionIntegersINTEL = 5844 u32,
ArbitraryPrecisionFloatingPointINTEL = 5845 u32,
UnstructuredLoopControlsINTEL = 5886 u32,
FPGALoopControlsINTEL = 5888 u32,
KernelAttributesINTEL = 5892 u32,
FPGAKernelAttributesINTEL = 5897 u32,
FPGAMemoryAccessesINTEL = 5898 u32,
FPGAClusterAttributesINTEL = 5904 u32,
LoopFuseINTEL = 5906 u32,
FPGADSPControlINTEL = 5908 u32,
MemoryAccessAliasingINTEL = 5910 u32,
FPGAInvocationPipeliningAttributesINTEL = 5916 u32,
FPGABufferLocationINTEL = 5920 u32,
ArbitraryPrecisionFixedPointINTEL = 5922 u32,
USMStorageClassesINTEL = 5935 u32,
RuntimeAlignedAttributeINTEL = 5939 u32,
IOPipesINTEL = 5943 u32,
BlockingPipesINTEL = 5945 u32,
FPGARegINTEL = 5948 u32,
DotProductInputAll = 6016 u32,
DotProductInput4x8Bit = 6017 u32,
DotProductInput4x8BitPacked = 6018 u32,
DotProduct = 6019 u32,
RayCullMaskKHR = 6020 u32,
CooperativeMatrixKHR = 6022 u32,
BitInstructions = 6025 u32,
GroupNonUniformRotateKHR = 6026 u32,
AtomicFloat32AddEXT = 6033 u32,
AtomicFloat64AddEXT = 6034 u32,
LongConstantCompositeINTEL = 6089 u32,
OptNoneINTEL = 6094 u32,
AtomicFloat16AddEXT = 6095 u32,
DebugInfoModuleINTEL = 6114 u32,
BFloat16ConversionINTEL = 6115 u32,
SplitBarrierINTEL = 6141 u32,
GlobalVariableFPGADecorationsINTEL = 6146 u32,
FPGAKernelAttributesv2INTEL = 6161 u32,
GlobalVariableHostAccessINTEL = 6167 u32,
FPMaxErrorINTEL = 6169 u32,
FPGALatencyControlINTEL = 6171 u32,
FPGAArgumentInterfacesINTEL = 6174 u32,
GroupUniformArithmeticKHR = 6400 u32,
CacheControlsINTEL = 6441 u32,
}
impl Capability {
pub fn from_u32(n: u32) -> Option<Self > {
Some(match n {
0 u32..=15 u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
17 u32..=25 u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
27 u32..=71 u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
4165 u32..=4168 u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
4422 u32..=4423 u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
4427 u32..=4431 u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
4433 u32..=4437 u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
4439 u32 => unsafe { core::mem::transmute::<u32, Capability>(4439 u32) },
4441 u32..=4442 u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
4445 u32 => unsafe { core::mem::transmute::<u32, Capability>(4445 u32) },
4447 u32..=4450 u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
4464 u32..=4468 u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
4471 u32..=4472 u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
4478 u32..=4479 u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
4484 u32..=4486 u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
5008 u32..=5010 u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
5013 u32 => unsafe { core::mem::transmute::<u32, Capability>(5013 u32) },
5015 u32..=5016 u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
5055 u32 => unsafe { core::mem::transmute::<u32, Capability>(5055 u32) },
5067 u32 => unsafe { core::mem::transmute::<u32, Capability>(5067 u32) },
5249 u32 => unsafe { core::mem::transmute::<u32, Capability>(5249 u32) },
5251 u32 => unsafe { core::mem::transmute::<u32, Capability>(5251 u32) },
5254 u32..=5255 u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
5259 u32..=5260 u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
5265 u32..=5266 u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
5282 u32..=5284 u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
5288 u32 => unsafe { core::mem::transmute::<u32, Capability>(5288 u32) },
5291 u32 => unsafe { core::mem::transmute::<u32, Capability>(5291 u32) },
5297 u32 => unsafe { core::mem::transmute::<u32, Capability>(5297 u32) },
5301 u32..=5312 u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
5336 u32 => unsafe { core::mem::transmute::<u32, Capability>(5336 u32) },
5340 u32..=5341 u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
5345 u32..=5347 u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
5350 u32 => unsafe { core::mem::transmute::<u32, Capability>(5350 u32) },
5353 u32 => unsafe { core::mem::transmute::<u32, Capability>(5353 u32) },
5357 u32 => unsafe { core::mem::transmute::<u32, Capability>(5357 u32) },
5363 u32 => unsafe { core::mem::transmute::<u32, Capability>(5363 u32) },
5372 u32..=5373 u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
5378 u32..=5381 u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
5383 u32 => unsafe { core::mem::transmute::<u32, Capability>(5383 u32) },
5390 u32..=5391 u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
5409 u32 => unsafe { core::mem::transmute::<u32, Capability>(5409 u32) },
5568 u32..=5570 u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
5579 u32 => unsafe { core::mem::transmute::<u32, Capability>(5579 u32) },
5582 u32..=5584 u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
5603 u32..=5604 u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
5606 u32 => unsafe { core::mem::transmute::<u32, Capability>(5606 u32) },
5612 u32..=5613 u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
5616 u32..=5617 u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
5619 u32 => unsafe { core::mem::transmute::<u32, Capability>(5619 u32) },
5629 u32 => unsafe { core::mem::transmute::<u32, Capability>(5629 u32) },
5696 u32..=5698 u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
5817 u32 => unsafe { core::mem::transmute::<u32, Capability>(5817 u32) },
5821 u32 => unsafe { core::mem::transmute::<u32, Capability>(5821 u32) },
5824 u32 => unsafe { core::mem::transmute::<u32, Capability>(5824 u32) },
5837 u32 => unsafe { core::mem::transmute::<u32, Capability>(5837 u32) },
5844 u32..=5845 u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
5886 u32 => unsafe { core::mem::transmute::<u32, Capability>(5886 u32) },
5888 u32 => unsafe { core::mem::transmute::<u32, Capability>(5888 u32) },
5892 u32 => unsafe { core::mem::transmute::<u32, Capability>(5892 u32) },
5897 u32..=5898 u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
5904 u32 => unsafe { core::mem::transmute::<u32, Capability>(5904 u32) },
5906 u32 => unsafe { core::mem::transmute::<u32, Capability>(5906 u32) },
5908 u32 => unsafe { core::mem::transmute::<u32, Capability>(5908 u32) },
5910 u32 => unsafe { core::mem::transmute::<u32, Capability>(5910 u32) },
5916 u32 => unsafe { core::mem::transmute::<u32, Capability>(5916 u32) },
5920 u32 => unsafe { core::mem::transmute::<u32, Capability>(5920 u32) },
5922 u32 => unsafe { core::mem::transmute::<u32, Capability>(5922 u32) },
5935 u32 => unsafe { core::mem::transmute::<u32, Capability>(5935 u32) },
5939 u32 => unsafe { core::mem::transmute::<u32, Capability>(5939 u32) },
5943 u32 => unsafe { core::mem::transmute::<u32, Capability>(5943 u32) },
5945 u32 => unsafe { core::mem::transmute::<u32, Capability>(5945 u32) },
5948 u32 => unsafe { core::mem::transmute::<u32, Capability>(5948 u32) },
6016 u32..=6020 u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
6022 u32 => unsafe { core::mem::transmute::<u32, Capability>(6022 u32) },
6025 u32..=6026 u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
6033 u32..=6034 u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
6089 u32 => unsafe { core::mem::transmute::<u32, Capability>(6089 u32) },
6094 u32..=6095 u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
6114 u32..=6115 u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
6141 u32 => unsafe { core::mem::transmute::<u32, Capability>(6141 u32) },
6146 u32 => unsafe { core::mem::transmute::<u32, Capability>(6146 u32) },
6161 u32 => unsafe { core::mem::transmute::<u32, Capability>(6161 u32) },
6167 u32 => unsafe { core::mem::transmute::<u32, Capability>(6167 u32) },
6169 u32 => unsafe { core::mem::transmute::<u32, Capability>(6169 u32) },
6171 u32 => unsafe { core::mem::transmute::<u32, Capability>(6171 u32) },
6174 u32 => unsafe { core::mem::transmute::<u32, Capability>(6174 u32) },
6400 u32 => unsafe { core::mem::transmute::<u32, Capability>(6400 u32) },
6441 u32 => unsafe { core::mem::transmute::<u32, Capability>(6441 u32) },
_ => 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 ShadingRateNV: Self = Self ::FragmentDensityEXT;
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 DemoteToHelperInvocationEXT: Self = Self ::DemoteToHelperInvocation;
pub const DotProductInputAllKHR: Self = Self ::DotProductInputAll;
pub const DotProductInput4x8BitKHR: Self = Self ::DotProductInput4x8Bit;
pub const DotProductInput4x8BitPackedKHR: Self = Self ::DotProductInput4x8BitPacked;
pub const DotProductKHR: Self = Self ::DotProduct;
}
impl core::str::FromStr for Capability {
type Err = ();
fn from_str(s: &str) -> Result<Self , Self ::Err> {
match s {
"Matrix" => Ok(Self ::Matrix),
"Shader" => Ok(Self ::Shader),
"Geometry" => Ok(Self ::Geometry),
"Tessellation" => Ok(Self ::Tessellation),
"Addresses" => Ok(Self ::Addresses),
"Linkage" => Ok(Self ::Linkage),
"Kernel" => Ok(Self ::Kernel),
"Vector16" => Ok(Self ::Vector16),
"Float16Buffer" => Ok(Self ::Float16Buffer),
"Float16" => Ok(Self ::Float16),
"Float64" => Ok(Self ::Float64),
"Int64" => Ok(Self ::Int64),
"Int64Atomics" => Ok(Self ::Int64Atomics),
"ImageBasic" => Ok(Self ::ImageBasic),
"ImageReadWrite" => Ok(Self ::ImageReadWrite),
"ImageMipmap" => Ok(Self ::ImageMipmap),
"Pipes" => Ok(Self ::Pipes),
"Groups" => Ok(Self ::Groups),
"DeviceEnqueue" => Ok(Self ::DeviceEnqueue),
"LiteralSampler" => Ok(Self ::LiteralSampler),
"AtomicStorage" => Ok(Self ::AtomicStorage),
"Int16" => Ok(Self ::Int16),
"TessellationPointSize" => Ok(Self ::TessellationPointSize),
"GeometryPointSize" => Ok(Self ::GeometryPointSize),
"ImageGatherExtended" => Ok(Self ::ImageGatherExtended),
"StorageImageMultisample" => Ok(Self ::StorageImageMultisample),
"UniformBufferArrayDynamicIndexing" => Ok(Self ::UniformBufferArrayDynamicIndexing),
"SampledImageArrayDynamicIndexing" => Ok(Self ::SampledImageArrayDynamicIndexing),
"StorageBufferArrayDynamicIndexing" => Ok(Self ::StorageBufferArrayDynamicIndexing),
"StorageImageArrayDynamicIndexing" => Ok(Self ::StorageImageArrayDynamicIndexing),
"ClipDistance" => Ok(Self ::ClipDistance),
"CullDistance" => Ok(Self ::CullDistance),
"ImageCubeArray" => Ok(Self ::ImageCubeArray),
"SampleRateShading" => Ok(Self ::SampleRateShading),
"ImageRect" => Ok(Self ::ImageRect),
"SampledRect" => Ok(Self ::SampledRect),
"GenericPointer" => Ok(Self ::GenericPointer),
"Int8" => Ok(Self ::Int8),
"InputAttachment" => Ok(Self ::InputAttachment),
"SparseResidency" => Ok(Self ::SparseResidency),
"MinLod" => Ok(Self ::MinLod),
"Sampled1D" => Ok(Self ::Sampled1D),
"Image1D" => Ok(Self ::Image1D),
"SampledCubeArray" => Ok(Self ::SampledCubeArray),
"SampledBuffer" => Ok(Self ::SampledBuffer),
"ImageBuffer" => Ok(Self ::ImageBuffer),
"ImageMSArray" => Ok(Self ::ImageMSArray),
"StorageImageExtendedFormats" => Ok(Self ::StorageImageExtendedFormats),
"ImageQuery" => Ok(Self ::ImageQuery),
"DerivativeControl" => Ok(Self ::DerivativeControl),
"InterpolationFunction" => Ok(Self ::InterpolationFunction),
"TransformFeedback" => Ok(Self ::TransformFeedback),
"GeometryStreams" => Ok(Self ::GeometryStreams),
"StorageImageReadWithoutFormat" => Ok(Self ::StorageImageReadWithoutFormat),
"StorageImageWriteWithoutFormat" => Ok(Self ::StorageImageWriteWithoutFormat),
"MultiViewport" => Ok(Self ::MultiViewport),
"SubgroupDispatch" => Ok(Self ::SubgroupDispatch),
"NamedBarrier" => Ok(Self ::NamedBarrier),
"PipeStorage" => Ok(Self ::PipeStorage),
"GroupNonUniform" => Ok(Self ::GroupNonUniform),
"GroupNonUniformVote" => Ok(Self ::GroupNonUniformVote),
"GroupNonUniformArithmetic" => Ok(Self ::GroupNonUniformArithmetic),
"GroupNonUniformBallot" => Ok(Self ::GroupNonUniformBallot),
"GroupNonUniformShuffle" => Ok(Self ::GroupNonUniformShuffle),
"GroupNonUniformShuffleRelative" => Ok(Self ::GroupNonUniformShuffleRelative),
"GroupNonUniformClustered" => Ok(Self ::GroupNonUniformClustered),
"GroupNonUniformQuad" => Ok(Self ::GroupNonUniformQuad),
"ShaderLayer" => Ok(Self ::ShaderLayer),
"ShaderViewportIndex" => Ok(Self ::ShaderViewportIndex),
"UniformDecoration" => Ok(Self ::UniformDecoration),
"CoreBuiltinsARM" => Ok(Self ::CoreBuiltinsARM),
"TileImageColorReadAccessEXT" => Ok(Self ::TileImageColorReadAccessEXT),
"TileImageDepthReadAccessEXT" => Ok(Self ::TileImageDepthReadAccessEXT),
"TileImageStencilReadAccessEXT" => Ok(Self ::TileImageStencilReadAccessEXT),
"FragmentShadingRateKHR" => Ok(Self ::FragmentShadingRateKHR),
"SubgroupBallotKHR" => Ok(Self ::SubgroupBallotKHR),
"DrawParameters" => Ok(Self ::DrawParameters),
"WorkgroupMemoryExplicitLayoutKHR" => Ok(Self ::WorkgroupMemoryExplicitLayoutKHR),
"WorkgroupMemoryExplicitLayout8BitAccessKHR" => {
Ok(Self ::WorkgroupMemoryExplicitLayout8BitAccessKHR)
}
"WorkgroupMemoryExplicitLayout16BitAccessKHR" => {
Ok(Self ::WorkgroupMemoryExplicitLayout16BitAccessKHR)
}
"SubgroupVoteKHR" => Ok(Self ::SubgroupVoteKHR),
"StorageBuffer16BitAccess" => Ok(Self ::StorageBuffer16BitAccess),
"StorageUniformBufferBlock16" => Ok(Self ::StorageBuffer16BitAccess),
"UniformAndStorageBuffer16BitAccess" => Ok(Self ::UniformAndStorageBuffer16BitAccess),
"StorageUniform16" => Ok(Self ::UniformAndStorageBuffer16BitAccess),
"StoragePushConstant16" => Ok(Self ::StoragePushConstant16),
"StorageInputOutput16" => Ok(Self ::StorageInputOutput16),
"DeviceGroup" => Ok(Self ::DeviceGroup),
"MultiView" => Ok(Self ::MultiView),
"VariablePointersStorageBuffer" => Ok(Self ::VariablePointersStorageBuffer),
"VariablePointers" => Ok(Self ::VariablePointers),
"AtomicStorageOps" => Ok(Self ::AtomicStorageOps),
"SampleMaskPostDepthCoverage" => Ok(Self ::SampleMaskPostDepthCoverage),
"StorageBuffer8BitAccess" => Ok(Self ::StorageBuffer8BitAccess),
"UniformAndStorageBuffer8BitAccess" => Ok(Self ::UniformAndStorageBuffer8BitAccess),
"StoragePushConstant8" => Ok(Self ::StoragePushConstant8),
"DenormPreserve" => Ok(Self ::DenormPreserve),
"DenormFlushToZero" => Ok(Self ::DenormFlushToZero),
"SignedZeroInfNanPreserve" => Ok(Self ::SignedZeroInfNanPreserve),
"RoundingModeRTE" => Ok(Self ::RoundingModeRTE),
"RoundingModeRTZ" => Ok(Self ::RoundingModeRTZ),
"RayQueryProvisionalKHR" => Ok(Self ::RayQueryProvisionalKHR),
"RayQueryKHR" => Ok(Self ::RayQueryKHR),
"RayTraversalPrimitiveCullingKHR" => Ok(Self ::RayTraversalPrimitiveCullingKHR),
"RayTracingKHR" => Ok(Self ::RayTracingKHR),
"TextureSampleWeightedQCOM" => Ok(Self ::TextureSampleWeightedQCOM),
"TextureBoxFilterQCOM" => Ok(Self ::TextureBoxFilterQCOM),
"TextureBlockMatchQCOM" => Ok(Self ::TextureBlockMatchQCOM),
"Float16ImageAMD" => Ok(Self ::Float16ImageAMD),
"ImageGatherBiasLodAMD" => Ok(Self ::ImageGatherBiasLodAMD),
"FragmentMaskAMD" => Ok(Self ::FragmentMaskAMD),
"StencilExportEXT" => Ok(Self ::StencilExportEXT),
"ImageReadWriteLodAMD" => Ok(Self ::ImageReadWriteLodAMD),
"Int64ImageEXT" => Ok(Self ::Int64ImageEXT),
"ShaderClockKHR" => Ok(Self ::ShaderClockKHR),
"ShaderEnqueueAMDX" => Ok(Self ::ShaderEnqueueAMDX),
"SampleMaskOverrideCoverageNV" => Ok(Self ::SampleMaskOverrideCoverageNV),
"GeometryShaderPassthroughNV" => Ok(Self ::GeometryShaderPassthroughNV),
"ShaderViewportIndexLayerEXT" => Ok(Self ::ShaderViewportIndexLayerEXT),
"ShaderViewportIndexLayerNV" => Ok(Self ::ShaderViewportIndexLayerEXT),
"ShaderViewportMaskNV" => Ok(Self ::ShaderViewportMaskNV),
"ShaderStereoViewNV" => Ok(Self ::ShaderStereoViewNV),
"PerViewAttributesNV" => Ok(Self ::PerViewAttributesNV),
"FragmentFullyCoveredEXT" => Ok(Self ::FragmentFullyCoveredEXT),
"MeshShadingNV" => Ok(Self ::MeshShadingNV),
"ImageFootprintNV" => Ok(Self ::ImageFootprintNV),
"MeshShadingEXT" => Ok(Self ::MeshShadingEXT),
"FragmentBarycentricKHR" => Ok(Self ::FragmentBarycentricKHR),
"FragmentBarycentricNV" => Ok(Self ::FragmentBarycentricKHR),
"ComputeDerivativeGroupQuadsNV" => Ok(Self ::ComputeDerivativeGroupQuadsNV),
"FragmentDensityEXT" => Ok(Self ::FragmentDensityEXT),
"ShadingRateNV" => Ok(Self ::FragmentDensityEXT),
"GroupNonUniformPartitionedNV" => Ok(Self ::GroupNonUniformPartitionedNV),
"ShaderNonUniform" => Ok(Self ::ShaderNonUniform),
"ShaderNonUniformEXT" => Ok(Self ::ShaderNonUniform),
"RuntimeDescriptorArray" => Ok(Self ::RuntimeDescriptorArray),
"RuntimeDescriptorArrayEXT" => Ok(Self ::RuntimeDescriptorArray),
"InputAttachmentArrayDynamicIndexing" => Ok(Self ::InputAttachmentArrayDynamicIndexing),
"InputAttachmentArrayDynamicIndexingEXT" => {
Ok(Self ::InputAttachmentArrayDynamicIndexing)
}
"UniformTexelBufferArrayDynamicIndexing" => {
Ok(Self ::UniformTexelBufferArrayDynamicIndexing)
}
"UniformTexelBufferArrayDynamicIndexingEXT" => {
Ok(Self ::UniformTexelBufferArrayDynamicIndexing)
}
"StorageTexelBufferArrayDynamicIndexing" => {
Ok(Self ::StorageTexelBufferArrayDynamicIndexing)
}
"StorageTexelBufferArrayDynamicIndexingEXT" => {
Ok(Self ::StorageTexelBufferArrayDynamicIndexing)
}
"UniformBufferArrayNonUniformIndexing" => {
Ok(Self ::UniformBufferArrayNonUniformIndexing)
}
"UniformBufferArrayNonUniformIndexingEXT" => {
Ok(Self ::UniformBufferArrayNonUniformIndexing)
}
"SampledImageArrayNonUniformIndexing" => Ok(Self ::SampledImageArrayNonUniformIndexing),
"SampledImageArrayNonUniformIndexingEXT" => {
Ok(Self ::SampledImageArrayNonUniformIndexing)
}
"StorageBufferArrayNonUniformIndexing" => {
Ok(Self ::StorageBufferArrayNonUniformIndexing)
}
"StorageBufferArrayNonUniformIndexingEXT" => {
Ok(Self ::StorageBufferArrayNonUniformIndexing)
}
"StorageImageArrayNonUniformIndexing" => Ok(Self ::StorageImageArrayNonUniformIndexing),
"StorageImageArrayNonUniformIndexingEXT" => {
Ok(Self ::StorageImageArrayNonUniformIndexing)
}
"InputAttachmentArrayNonUniformIndexing" => {
Ok(Self ::InputAttachmentArrayNonUniformIndexing)
}
"InputAttachmentArrayNonUniformIndexingEXT" => {
Ok(Self ::InputAttachmentArrayNonUniformIndexing)
}
"UniformTexelBufferArrayNonUniformIndexing" => {
Ok(Self ::UniformTexelBufferArrayNonUniformIndexing)
}
"UniformTexelBufferArrayNonUniformIndexingEXT" => {
Ok(Self ::UniformTexelBufferArrayNonUniformIndexing)
}
"StorageTexelBufferArrayNonUniformIndexing" => {
Ok(Self ::StorageTexelBufferArrayNonUniformIndexing)
}
"StorageTexelBufferArrayNonUniformIndexingEXT" => {
Ok(Self ::StorageTexelBufferArrayNonUniformIndexing)
}
"RayTracingPositionFetchKHR" => Ok(Self ::RayTracingPositionFetchKHR),
"RayTracingNV" => Ok(Self ::RayTracingNV),
"RayTracingMotionBlurNV" => Ok(Self ::RayTracingMotionBlurNV),
"VulkanMemoryModel" => Ok(Self ::VulkanMemoryModel),
"VulkanMemoryModelKHR" => Ok(Self ::VulkanMemoryModel),
"VulkanMemoryModelDeviceScope" => Ok(Self ::VulkanMemoryModelDeviceScope),
"VulkanMemoryModelDeviceScopeKHR" => Ok(Self ::VulkanMemoryModelDeviceScope),
"PhysicalStorageBufferAddresses" => Ok(Self ::PhysicalStorageBufferAddresses),
"PhysicalStorageBufferAddressesEXT" => Ok(Self ::PhysicalStorageBufferAddresses),
"ComputeDerivativeGroupLinearNV" => Ok(Self ::ComputeDerivativeGroupLinearNV),
"RayTracingProvisionalKHR" => Ok(Self ::RayTracingProvisionalKHR),
"CooperativeMatrixNV" => Ok(Self ::CooperativeMatrixNV),
"FragmentShaderSampleInterlockEXT" => Ok(Self ::FragmentShaderSampleInterlockEXT),
"FragmentShaderShadingRateInterlockEXT" => {
Ok(Self ::FragmentShaderShadingRateInterlockEXT)
}
"ShaderSMBuiltinsNV" => Ok(Self ::ShaderSMBuiltinsNV),
"FragmentShaderPixelInterlockEXT" => Ok(Self ::FragmentShaderPixelInterlockEXT),
"DemoteToHelperInvocation" => Ok(Self ::DemoteToHelperInvocation),
"DemoteToHelperInvocationEXT" => Ok(Self ::DemoteToHelperInvocation),
"DisplacementMicromapNV" => Ok(Self ::DisplacementMicromapNV),
"RayTracingOpacityMicromapEXT" => Ok(Self ::RayTracingOpacityMicromapEXT),
"ShaderInvocationReorderNV" => Ok(Self ::ShaderInvocationReorderNV),
"BindlessTextureNV" => Ok(Self ::BindlessTextureNV),
"RayQueryPositionFetchKHR" => Ok(Self ::RayQueryPositionFetchKHR),
"RayTracingDisplacementMicromapNV" => Ok(Self ::RayTracingDisplacementMicromapNV),
"SubgroupShuffleINTEL" => Ok(Self ::SubgroupShuffleINTEL),
"SubgroupBufferBlockIOINTEL" => Ok(Self ::SubgroupBufferBlockIOINTEL),
"SubgroupImageBlockIOINTEL" => Ok(Self ::SubgroupImageBlockIOINTEL),
"SubgroupImageMediaBlockIOINTEL" => Ok(Self ::SubgroupImageMediaBlockIOINTEL),
"RoundToInfinityINTEL" => Ok(Self ::RoundToInfinityINTEL),
"FloatingPointModeINTEL" => Ok(Self ::FloatingPointModeINTEL),
"IntegerFunctions2INTEL" => Ok(Self ::IntegerFunctions2INTEL),
"FunctionPointersINTEL" => Ok(Self ::FunctionPointersINTEL),
"IndirectReferencesINTEL" => Ok(Self ::IndirectReferencesINTEL),
"AsmINTEL" => Ok(Self ::AsmINTEL),
"AtomicFloat32MinMaxEXT" => Ok(Self ::AtomicFloat32MinMaxEXT),
"AtomicFloat64MinMaxEXT" => Ok(Self ::AtomicFloat64MinMaxEXT),
"AtomicFloat16MinMaxEXT" => Ok(Self ::AtomicFloat16MinMaxEXT),
"VectorComputeINTEL" => Ok(Self ::VectorComputeINTEL),
"VectorAnyINTEL" => Ok(Self ::VectorAnyINTEL),
"ExpectAssumeKHR" => Ok(Self ::ExpectAssumeKHR),
"SubgroupAvcMotionEstimationINTEL" => Ok(Self ::SubgroupAvcMotionEstimationINTEL),
"SubgroupAvcMotionEstimationIntraINTEL" => {
Ok(Self ::SubgroupAvcMotionEstimationIntraINTEL)
}
"SubgroupAvcMotionEstimationChromaINTEL" => {
Ok(Self ::SubgroupAvcMotionEstimationChromaINTEL)
}
"VariableLengthArrayINTEL" => Ok(Self ::VariableLengthArrayINTEL),
"FunctionFloatControlINTEL" => Ok(Self ::FunctionFloatControlINTEL),
"FPGAMemoryAttributesINTEL" => Ok(Self ::FPGAMemoryAttributesINTEL),
"FPFastMathModeINTEL" => Ok(Self ::FPFastMathModeINTEL),
"ArbitraryPrecisionIntegersINTEL" => Ok(Self ::ArbitraryPrecisionIntegersINTEL),
"ArbitraryPrecisionFloatingPointINTEL" => {
Ok(Self ::ArbitraryPrecisionFloatingPointINTEL)
}
"UnstructuredLoopControlsINTEL" => Ok(Self ::UnstructuredLoopControlsINTEL),
"FPGALoopControlsINTEL" => Ok(Self ::FPGALoopControlsINTEL),
"KernelAttributesINTEL" => Ok(Self ::KernelAttributesINTEL),
"FPGAKernelAttributesINTEL" => Ok(Self ::FPGAKernelAttributesINTEL),
"FPGAMemoryAccessesINTEL" => Ok(Self ::FPGAMemoryAccessesINTEL),
"FPGAClusterAttributesINTEL" => Ok(Self ::FPGAClusterAttributesINTEL),
"LoopFuseINTEL" => Ok(Self ::LoopFuseINTEL),
"FPGADSPControlINTEL" => Ok(Self ::FPGADSPControlINTEL),
"MemoryAccessAliasingINTEL" => Ok(Self ::MemoryAccessAliasingINTEL),
"FPGAInvocationPipeliningAttributesINTEL" => {
Ok(Self ::FPGAInvocationPipeliningAttributesINTEL)
}
"FPGABufferLocationINTEL" => Ok(Self ::FPGABufferLocationINTEL),
"ArbitraryPrecisionFixedPointINTEL" => Ok(Self ::ArbitraryPrecisionFixedPointINTEL),
"USMStorageClassesINTEL" => Ok(Self ::USMStorageClassesINTEL),
"RuntimeAlignedAttributeINTEL" => Ok(Self ::RuntimeAlignedAttributeINTEL),
"IOPipesINTEL" => Ok(Self ::IOPipesINTEL),
"BlockingPipesINTEL" => Ok(Self ::BlockingPipesINTEL),
"FPGARegINTEL" => Ok(Self ::FPGARegINTEL),
"DotProductInputAll" => Ok(Self ::DotProductInputAll),
"DotProductInputAllKHR" => Ok(Self ::DotProductInputAll),
"DotProductInput4x8Bit" => Ok(Self ::DotProductInput4x8Bit),
"DotProductInput4x8BitKHR" => Ok(Self ::DotProductInput4x8Bit),
"DotProductInput4x8BitPacked" => Ok(Self ::DotProductInput4x8BitPacked),
"DotProductInput4x8BitPackedKHR" => Ok(Self ::DotProductInput4x8BitPacked),
"DotProduct" => Ok(Self ::DotProduct),
"DotProductKHR" => Ok(Self ::DotProduct),
"RayCullMaskKHR" => Ok(Self ::RayCullMaskKHR),
"CooperativeMatrixKHR" => Ok(Self ::CooperativeMatrixKHR),
"BitInstructions" => Ok(Self ::BitInstructions),
"GroupNonUniformRotateKHR" => Ok(Self ::GroupNonUniformRotateKHR),
"AtomicFloat32AddEXT" => Ok(Self ::AtomicFloat32AddEXT),
"AtomicFloat64AddEXT" => Ok(Self ::AtomicFloat64AddEXT),
"LongConstantCompositeINTEL" => Ok(Self ::LongConstantCompositeINTEL),
"OptNoneINTEL" => Ok(Self ::OptNoneINTEL),
"AtomicFloat16AddEXT" => Ok(Self ::AtomicFloat16AddEXT),
"DebugInfoModuleINTEL" => Ok(Self ::DebugInfoModuleINTEL),
"BFloat16ConversionINTEL" => Ok(Self ::BFloat16ConversionINTEL),
"SplitBarrierINTEL" => Ok(Self ::SplitBarrierINTEL),
"GlobalVariableFPGADecorationsINTEL" => Ok(Self ::GlobalVariableFPGADecorationsINTEL),
"FPGAKernelAttributesv2INTEL" => Ok(Self ::FPGAKernelAttributesv2INTEL),
"GlobalVariableHostAccessINTEL" => Ok(Self ::GlobalVariableHostAccessINTEL),
"FPMaxErrorINTEL" => Ok(Self ::FPMaxErrorINTEL),
"FPGALatencyControlINTEL" => Ok(Self ::FPGALatencyControlINTEL),
"FPGAArgumentInterfacesINTEL" => Ok(Self ::FPGAArgumentInterfacesINTEL),
"GroupUniformArithmeticKHR" => Ok(Self ::GroupUniformArithmeticKHR),
"CacheControlsINTEL" => Ok(Self ::CacheControlsINTEL),
_ => 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 = 0 u32,
RayQueryCommittedIntersectionKHR = 1 u32,
}
impl RayQueryIntersection {
pub fn from_u32(n: u32) -> Option<Self > {
Some(match n {
0 u32..=1 u32 => unsafe { core::mem::transmute::<u32, RayQueryIntersection>(n) },
_ => return None,
})
}
}
#[ allow(non_upper_case_globals)]
impl RayQueryIntersection {}
impl core::str::FromStr for RayQueryIntersection {
type Err = ();
fn from_str(s: &str) -> Result<Self , Self ::Err> {
match s {
"RayQueryCandidateIntersectionKHR" => Ok(Self ::RayQueryCandidateIntersectionKHR),
"RayQueryCommittedIntersectionKHR" => Ok(Self ::RayQueryCommittedIntersectionKHR),
_ => 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 = 0 u32,
RayQueryCommittedIntersectionTriangleKHR = 1 u32,
RayQueryCommittedIntersectionGeneratedKHR = 2 u32,
}
impl RayQueryCommittedIntersectionType {
pub fn from_u32(n: u32) -> Option<Self > {
Some(match n {
0 u32..=2 u32 => unsafe {
core::mem::transmute::<u32, RayQueryCommittedIntersectionType>(n)
},
_ => return None,
})
}
}
#[ allow(non_upper_case_globals)]
impl RayQueryCommittedIntersectionType {}
impl core::str::FromStr for RayQueryCommittedIntersectionType {
type Err = ();
fn from_str(s: &str) -> Result<Self , Self ::Err> {
match s {
"RayQueryCommittedIntersectionNoneKHR" => {
Ok(Self ::RayQueryCommittedIntersectionNoneKHR)
}
"RayQueryCommittedIntersectionTriangleKHR" => {
Ok(Self ::RayQueryCommittedIntersectionTriangleKHR)
}
"RayQueryCommittedIntersectionGeneratedKHR" => {
Ok(Self ::RayQueryCommittedIntersectionGeneratedKHR)
}
_ => 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 = 0 u32,
RayQueryCandidateIntersectionAABBKHR = 1 u32,
}
impl RayQueryCandidateIntersectionType {
pub fn from_u32(n: u32) -> Option<Self > {
Some(match n {
0 u32..=1 u32 => unsafe {
core::mem::transmute::<u32, RayQueryCandidateIntersectionType>(n)
},
_ => return None,
})
}
}
#[ allow(non_upper_case_globals)]
impl RayQueryCandidateIntersectionType {}
impl core::str::FromStr for RayQueryCandidateIntersectionType {
type Err = ();
fn from_str(s: &str) -> Result<Self , Self ::Err> {
match s {
"RayQueryCandidateIntersectionTriangleKHR" => {
Ok(Self ::RayQueryCandidateIntersectionTriangleKHR)
}
"RayQueryCandidateIntersectionAABBKHR" => {
Ok(Self ::RayQueryCandidateIntersectionAABBKHR)
}
_ => 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 = 0 u32,
}
impl PackedVectorFormat {
pub fn from_u32(n: u32) -> Option<Self > {
Some(match n {
0 u32 => unsafe { core::mem::transmute::<u32, PackedVectorFormat>(0 u32) },
_ => 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<Self , Self ::Err> {
match s {
"PackedVectorFormat4x8Bit" => Ok(Self ::PackedVectorFormat4x8Bit),
"PackedVectorFormat4x8BitKHR" => Ok(Self ::PackedVectorFormat4x8Bit),
_ => 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 = 0 u32,
ColumnMajorKHR = 1 u32,
}
impl CooperativeMatrixLayout {
pub fn from_u32(n: u32) -> Option<Self > {
Some(match n {
0 u32..=1 u32 => unsafe { core::mem::transmute::<u32, CooperativeMatrixLayout>(n) },
_ => return None,
})
}
}
#[ allow(non_upper_case_globals)]
impl CooperativeMatrixLayout {}
impl core::str::FromStr for CooperativeMatrixLayout {
type Err = ();
fn from_str(s: &str) -> Result<Self , Self ::Err> {
match s {
"RowMajorKHR" => Ok(Self ::RowMajorKHR),
"ColumnMajorKHR" => Ok(Self ::ColumnMajorKHR),
_ => 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 = 0 u32,
MatrixBKHR = 1 u32,
MatrixAccumulatorKHR = 2 u32,
}
impl CooperativeMatrixUse {
pub fn from_u32(n: u32) -> Option<Self > {
Some(match n {
0 u32..=2 u32 => unsafe { core::mem::transmute::<u32, CooperativeMatrixUse>(n) },
_ => return None,
})
}
}
#[ allow(non_upper_case_globals)]
impl CooperativeMatrixUse {}
impl core::str::FromStr for CooperativeMatrixUse {
type Err = ();
fn from_str(s: &str) -> Result<Self , Self ::Err> {
match s {
"MatrixAKHR" => Ok(Self ::MatrixAKHR),
"MatrixBKHR" => Ok(Self ::MatrixBKHR),
"MatrixAccumulatorKHR" => Ok(Self ::MatrixAccumulatorKHR),
_ => Err(()),
}
}
}
#[ 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 {
InitOnDeviceReprogramINTEL = 0 u32,
InitOnDeviceResetINTEL = 1 u32,
}
impl InitializationModeQualifier {
pub fn from_u32(n: u32) -> Option<Self > {
Some(match n {
0 u32..=1 u32 => unsafe { core::mem::transmute::<u32, InitializationModeQualifier>(n) },
_ => return None,
})
}
}
#[ allow(non_upper_case_globals)]
impl InitializationModeQualifier {}
impl core::str::FromStr for InitializationModeQualifier {
type Err = ();
fn from_str(s: &str) -> Result<Self , Self ::Err> {
match s {
"InitOnDeviceReprogramINTEL" => Ok(Self ::InitOnDeviceReprogramINTEL),
"InitOnDeviceResetINTEL" => Ok(Self ::InitOnDeviceResetINTEL),
_ => 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 = 0 u32,
CachedINTEL = 1 u32,
StreamingINTEL = 2 u32,
InvalidateAfterReadINTEL = 3 u32,
ConstCachedINTEL = 4 u32,
}
impl LoadCacheControl {
pub fn from_u32(n: u32) -> Option<Self > {
Some(match n {
0 u32..=4 u32 => unsafe { core::mem::transmute::<u32, LoadCacheControl>(n) },
_ => return None,
})
}
}
#[ allow(non_upper_case_globals)]
impl LoadCacheControl {}
impl core::str::FromStr for LoadCacheControl {
type Err = ();
fn from_str(s: &str) -> Result<Self , Self ::Err> {
match s {
"UncachedINTEL" => Ok(Self ::UncachedINTEL),
"CachedINTEL" => Ok(Self ::CachedINTEL),
"StreamingINTEL" => Ok(Self ::StreamingINTEL),
"InvalidateAfterReadINTEL" => Ok(Self ::InvalidateAfterReadINTEL),
"ConstCachedINTEL" => Ok(Self ::ConstCachedINTEL),
_ => 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 = 0 u32,
WriteThroughINTEL = 1 u32,
WriteBackINTEL = 2 u32,
StreamingINTEL = 3 u32,
}
impl StoreCacheControl {
pub fn from_u32(n: u32) -> Option<Self > {
Some(match n {
0 u32..=3 u32 => unsafe { core::mem::transmute::<u32, StoreCacheControl>(n) },
_ => return None,
})
}
}
#[ allow(non_upper_case_globals)]
impl StoreCacheControl {}
impl core::str::FromStr for StoreCacheControl {
type Err = ();
fn from_str(s: &str) -> Result<Self , Self ::Err> {
match s {
"UncachedINTEL" => Ok(Self ::UncachedINTEL),
"WriteThroughINTEL" => Ok(Self ::WriteThroughINTEL),
"WriteBackINTEL" => Ok(Self ::WriteBackINTEL),
"StreamingINTEL" => Ok(Self ::StreamingINTEL),
_ => Err(()),
}
}
}
#[ 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 = 0 u32,
Undef = 1 u32,
SourceContinued = 2 u32,
Source = 3 u32,
SourceExtension = 4 u32,
Name = 5 u32,
MemberName = 6 u32,
String = 7 u32,
Line = 8 u32,
Extension = 10 u32,
ExtInstImport = 11 u32,
ExtInst = 12 u32,
MemoryModel = 14 u32,
EntryPoint = 15 u32,
ExecutionMode = 16 u32,
Capability = 17 u32,
TypeVoid = 19 u32,
TypeBool = 20 u32,
TypeInt = 21 u32,
TypeFloat = 22 u32,
TypeVector = 23 u32,
TypeMatrix = 24 u32,
TypeImage = 25 u32,
TypeSampler = 26 u32,
TypeSampledImage = 27 u32,
TypeArray = 28 u32,
TypeRuntimeArray = 29 u32,
TypeStruct = 30 u32,
TypeOpaque = 31 u32,
TypePointer = 32 u32,
TypeFunction = 33 u32,
TypeEvent = 34 u32,
TypeDeviceEvent = 35 u32,
TypeReserveId = 36 u32,
TypeQueue = 37 u32,
TypePipe = 38 u32,
TypeForwardPointer = 39 u32,
ConstantTrue = 41 u32,
ConstantFalse = 42 u32,
Constant = 43 u32,
ConstantComposite = 44 u32,
ConstantSampler = 45 u32,
ConstantNull = 46 u32,
SpecConstantTrue = 48 u32,
SpecConstantFalse = 49 u32,
SpecConstant = 50 u32,
SpecConstantComposite = 51 u32,
SpecConstantOp = 52 u32,
Function = 54 u32,
FunctionParameter = 55 u32,
FunctionEnd = 56 u32,
FunctionCall = 57 u32,
Variable = 59 u32,
ImageTexelPointer = 60 u32,
Load = 61 u32,
Store = 62 u32,
CopyMemory = 63 u32,
CopyMemorySized = 64 u32,
AccessChain = 65 u32,
InBoundsAccessChain = 66 u32,
PtrAccessChain = 67 u32,
ArrayLength = 68 u32,
GenericPtrMemSemantics = 69 u32,
InBoundsPtrAccessChain = 70 u32,
Decorate = 71 u32,
MemberDecorate = 72 u32,
DecorationGroup = 73 u32,
GroupDecorate = 74 u32,
GroupMemberDecorate = 75 u32,
VectorExtractDynamic = 77 u32,
VectorInsertDynamic = 78 u32,
VectorShuffle = 79 u32,
CompositeConstruct = 80 u32,
CompositeExtract = 81 u32,
CompositeInsert = 82 u32,
CopyObject = 83 u32,
Transpose = 84 u32,
SampledImage = 86 u32,
ImageSampleImplicitLod = 87 u32,
ImageSampleExplicitLod = 88 u32,
ImageSampleDrefImplicitLod = 89 u32,
ImageSampleDrefExplicitLod = 90 u32,
ImageSampleProjImplicitLod = 91 u32,
ImageSampleProjExplicitLod = 92 u32,
ImageSampleProjDrefImplicitLod = 93 u32,
ImageSampleProjDrefExplicitLod = 94 u32,
ImageFetch = 95 u32,
ImageGather = 96 u32,
ImageDrefGather = 97 u32,
ImageRead = 98 u32,
ImageWrite = 99 u32,
Image = 100 u32,
ImageQueryFormat = 101 u32,
ImageQueryOrder = 102 u32,
ImageQuerySizeLod = 103 u32,
ImageQuerySize = 104 u32,
ImageQueryLod = 105 u32,
ImageQueryLevels = 106 u32,
ImageQuerySamples = 107 u32,
ConvertFToU = 109 u32,
ConvertFToS = 110 u32,
ConvertSToF = 111 u32,
ConvertUToF = 112 u32,
UConvert = 113 u32,
SConvert = 114 u32,
FConvert = 115 u32,
QuantizeToF16 = 116 u32,
ConvertPtrToU = 117 u32,
SatConvertSToU = 118 u32,
SatConvertUToS = 119 u32,
ConvertUToPtr = 120 u32,
PtrCastToGeneric = 121 u32,
GenericCastToPtr = 122 u32,
GenericCastToPtrExplicit = 123 u32,
Bitcast = 124 u32,
SNegate = 126 u32,
FNegate = 127 u32,
IAdd = 128 u32,
FAdd = 129 u32,
ISub = 130 u32,
FSub = 131 u32,
IMul = 132 u32,
FMul = 133 u32,
UDiv = 134 u32,
SDiv = 135 u32,
FDiv = 136 u32,
UMod = 137 u32,
SRem = 138 u32,
SMod = 139 u32,
FRem = 140 u32,
FMod = 141 u32,
VectorTimesScalar = 142 u32,
MatrixTimesScalar = 143 u32,
VectorTimesMatrix = 144 u32,
MatrixTimesVector = 145 u32,
MatrixTimesMatrix = 146 u32,
OuterProduct = 147 u32,
Dot = 148 u32,
IAddCarry = 149 u32,
ISubBorrow = 150 u32,
UMulExtended = 151 u32,
SMulExtended = 152 u32,
Any = 154 u32,
All = 155 u32,
IsNan = 156 u32,
IsInf = 157 u32,
IsFinite = 158 u32,
IsNormal = 159 u32,
SignBitSet = 160 u32,
LessOrGreater = 161 u32,
Ordered = 162 u32,
Unordered = 163 u32,
LogicalEqual = 164 u32,
LogicalNotEqual = 165 u32,
LogicalOr = 166 u32,
LogicalAnd = 167 u32,
LogicalNot = 168 u32,
Select = 169 u32,
IEqual = 170 u32,
INotEqual = 171 u32,
UGreaterThan = 172 u32,
SGreaterThan = 173 u32,
UGreaterThanEqual = 174 u32,
SGreaterThanEqual = 175 u32,
ULessThan = 176 u32,
SLessThan = 177 u32,
ULessThanEqual = 178 u32,
SLessThanEqual = 179 u32,
FOrdEqual = 180 u32,
FUnordEqual = 181 u32,
FOrdNotEqual = 182 u32,
FUnordNotEqual = 183 u32,
FOrdLessThan = 184 u32,
FUnordLessThan = 185 u32,
FOrdGreaterThan = 186 u32,
FUnordGreaterThan = 187 u32,
FOrdLessThanEqual = 188 u32,
FUnordLessThanEqual = 189 u32,
FOrdGreaterThanEqual = 190 u32,
FUnordGreaterThanEqual = 191 u32,
ShiftRightLogical = 194 u32,
ShiftRightArithmetic = 195 u32,
ShiftLeftLogical = 196 u32,
BitwiseOr = 197 u32,
BitwiseXor = 198 u32,
BitwiseAnd = 199 u32,
Not = 200 u32,
BitFieldInsert = 201 u32,
BitFieldSExtract = 202 u32,
BitFieldUExtract = 203 u32,
BitReverse = 204 u32,
BitCount = 205 u32,
DPdx = 207 u32,
DPdy = 208 u32,
Fwidth = 209 u32,
DPdxFine = 210 u32,
DPdyFine = 211 u32,
FwidthFine = 212 u32,
DPdxCoarse = 213 u32,
DPdyCoarse = 214 u32,
FwidthCoarse = 215 u32,
EmitVertex = 218 u32,
EndPrimitive = 219 u32,
EmitStreamVertex = 220 u32,
EndStreamPrimitive = 221 u32,
ControlBarrier = 224 u32,
MemoryBarrier = 225 u32,
AtomicLoad = 227 u32,
AtomicStore = 228 u32,
AtomicExchange = 229 u32,
AtomicCompareExchange = 230 u32,
AtomicCompareExchangeWeak = 231 u32,
AtomicIIncrement = 232 u32,
AtomicIDecrement = 233 u32,
AtomicIAdd = 234 u32,
AtomicISub = 235 u32,
AtomicSMin = 236 u32,
AtomicUMin = 237 u32,
AtomicSMax = 238 u32,
AtomicUMax = 239 u32,
AtomicAnd = 240 u32,
AtomicOr = 241 u32,
AtomicXor = 242 u32,
Phi = 245 u32,
LoopMerge = 246 u32,
SelectionMerge = 247 u32,
Label = 248 u32,
Branch = 249 u32,
BranchConditional = 250 u32,
Switch = 251 u32,
Kill = 252 u32,
Return = 253 u32,
ReturnValue = 254 u32,
Unreachable = 255 u32,
LifetimeStart = 256 u32,
LifetimeStop = 257 u32,
GroupAsyncCopy = 259 u32,
GroupWaitEvents = 260 u32,
GroupAll = 261 u32,
GroupAny = 262 u32,
GroupBroadcast = 263 u32,
GroupIAdd = 264 u32,
GroupFAdd = 265 u32,
GroupFMin = 266 u32,
GroupUMin = 267 u32,
GroupSMin = 268 u32,
GroupFMax = 269 u32,
GroupUMax = 270 u32,
GroupSMax = 271 u32,
ReadPipe = 274 u32,
WritePipe = 275 u32,
ReservedReadPipe = 276 u32,
ReservedWritePipe = 277 u32,
ReserveReadPipePackets = 278 u32,
ReserveWritePipePackets = 279 u32,
CommitReadPipe = 280 u32,
CommitWritePipe = 281 u32,
IsValidReserveId = 282 u32,
GetNumPipePackets = 283 u32,
GetMaxPipePackets = 284 u32,
GroupReserveReadPipePackets = 285 u32,
GroupReserveWritePipePackets = 286 u32,
GroupCommitReadPipe = 287 u32,
GroupCommitWritePipe = 288 u32,
EnqueueMarker = 291 u32,
EnqueueKernel = 292 u32,
GetKernelNDrangeSubGroupCount = 293 u32,
GetKernelNDrangeMaxSubGroupSize = 294 u32,
GetKernelWorkGroupSize = 295 u32,
GetKernelPreferredWorkGroupSizeMultiple = 296 u32,
RetainEvent = 297 u32,
ReleaseEvent = 298 u32,
CreateUserEvent = 299 u32,
IsValidEvent = 300 u32,
SetUserEventStatus = 301 u32,
CaptureEventProfilingInfo = 302 u32,
GetDefaultQueue = 303 u32,
BuildNDRange = 304 u32,
ImageSparseSampleImplicitLod = 305 u32,
ImageSparseSampleExplicitLod = 306 u32,
ImageSparseSampleDrefImplicitLod = 307 u32,
ImageSparseSampleDrefExplicitLod = 308 u32,
ImageSparseSampleProjImplicitLod = 309 u32,
ImageSparseSampleProjExplicitLod = 310 u32,
ImageSparseSampleProjDrefImplicitLod = 311 u32,
ImageSparseSampleProjDrefExplicitLod = 312 u32,
ImageSparseFetch = 313 u32,
ImageSparseGather = 314 u32,
ImageSparseDrefGather = 315 u32,
ImageSparseTexelsResident = 316 u32,
NoLine = 317 u32,
AtomicFlagTestAndSet = 318 u32,
AtomicFlagClear = 319 u32,
ImageSparseRead = 320 u32,
SizeOf = 321 u32,
TypePipeStorage = 322 u32,
ConstantPipeStorage = 323 u32,
CreatePipeFromPipeStorage = 324 u32,
GetKernelLocalSizeForSubgroupCount = 325 u32,
GetKernelMaxNumSubgroups = 326 u32,
TypeNamedBarrier = 327 u32,
NamedBarrierInitialize = 328 u32,
MemoryNamedBarrier = 329 u32,
ModuleProcessed = 330 u32,
ExecutionModeId = 331 u32,
DecorateId = 332 u32,
GroupNonUniformElect = 333 u32,
GroupNonUniformAll = 334 u32,
GroupNonUniformAny = 335 u32,
GroupNonUniformAllEqual = 336 u32,
GroupNonUniformBroadcast = 337 u32,
GroupNonUniformBroadcastFirst = 338 u32,
GroupNonUniformBallot = 339 u32,
GroupNonUniformInverseBallot = 340 u32,
GroupNonUniformBallotBitExtract = 341 u32,
GroupNonUniformBallotBitCount = 342 u32,
GroupNonUniformBallotFindLSB = 343 u32,
GroupNonUniformBallotFindMSB = 344 u32,
GroupNonUniformShuffle = 345 u32,
GroupNonUniformShuffleXor = 346 u32,
GroupNonUniformShuffleUp = 347 u32,
GroupNonUniformShuffleDown = 348 u32,
GroupNonUniformIAdd = 349 u32,
GroupNonUniformFAdd = 350 u32,
GroupNonUniformIMul = 351 u32,
GroupNonUniformFMul = 352 u32,
GroupNonUniformSMin = 353 u32,
GroupNonUniformUMin = 354 u32,
GroupNonUniformFMin = 355 u32,
GroupNonUniformSMax = 356 u32,
GroupNonUniformUMax = 357 u32,
GroupNonUniformFMax = 358 u32,
GroupNonUniformBitwiseAnd = 359 u32,
GroupNonUniformBitwiseOr = 360 u32,
GroupNonUniformBitwiseXor = 361 u32,
GroupNonUniformLogicalAnd = 362 u32,
GroupNonUniformLogicalOr = 363 u32,
GroupNonUniformLogicalXor = 364 u32,
GroupNonUniformQuadBroadcast = 365 u32,
GroupNonUniformQuadSwap = 366 u32,
CopyLogical = 400 u32,
PtrEqual = 401 u32,
PtrNotEqual = 402 u32,
PtrDiff = 403 u32,
ColorAttachmentReadEXT = 4160 u32,
DepthAttachmentReadEXT = 4161 u32,
StencilAttachmentReadEXT = 4162 u32,
TerminateInvocation = 4416 u32,
SubgroupBallotKHR = 4421 u32,
SubgroupFirstInvocationKHR = 4422 u32,
SubgroupAllKHR = 4428 u32,
SubgroupAnyKHR = 4429 u32,
SubgroupAllEqualKHR = 4430 u32,
GroupNonUniformRotateKHR = 4431 u32,
SubgroupReadInvocationKHR = 4432 u32,
TraceRayKHR = 4445 u32,
ExecuteCallableKHR = 4446 u32,
ConvertUToAccelerationStructureKHR = 4447 u32,
IgnoreIntersectionKHR = 4448 u32,
TerminateRayKHR = 4449 u32,
SDot = 4450 u32,
UDot = 4451 u32,
SUDot = 4452 u32,
SDotAccSat = 4453 u32,
UDotAccSat = 4454 u32,
SUDotAccSat = 4455 u32,
TypeCooperativeMatrixKHR = 4456 u32,
CooperativeMatrixLoadKHR = 4457 u32,
CooperativeMatrixStoreKHR = 4458 u32,
CooperativeMatrixMulAddKHR = 4459 u32,
CooperativeMatrixLengthKHR = 4460 u32,
TypeRayQueryKHR = 4472 u32,
RayQueryInitializeKHR = 4473 u32,
RayQueryTerminateKHR = 4474 u32,
RayQueryGenerateIntersectionKHR = 4475 u32,
RayQueryConfirmIntersectionKHR = 4476 u32,
RayQueryProceedKHR = 4477 u32,
RayQueryGetIntersectionTypeKHR = 4479 u32,
ImageSampleWeightedQCOM = 4480 u32,
ImageBoxFilterQCOM = 4481 u32,
ImageBlockMatchSSDQCOM = 4482 u32,
ImageBlockMatchSADQCOM = 4483 u32,
GroupIAddNonUniformAMD = 5000 u32,
GroupFAddNonUniformAMD = 5001 u32,
GroupFMinNonUniformAMD = 5002 u32,
GroupUMinNonUniformAMD = 5003 u32,
GroupSMinNonUniformAMD = 5004 u32,
GroupFMaxNonUniformAMD = 5005 u32,
GroupUMaxNonUniformAMD = 5006 u32,
GroupSMaxNonUniformAMD = 5007 u32,
FragmentMaskFetchAMD = 5011 u32,
FragmentFetchAMD = 5012 u32,
ReadClockKHR = 5056 u32,
FinalizeNodePayloadsAMDX = 5075 u32,
FinishWritingNodePayloadAMDX = 5078 u32,
InitializeNodePayloadsAMDX = 5090 u32,
HitObjectRecordHitMotionNV = 5249 u32,
HitObjectRecordHitWithIndexMotionNV = 5250 u32,
HitObjectRecordMissMotionNV = 5251 u32,
HitObjectGetWorldToObjectNV = 5252 u32,
HitObjectGetObjectToWorldNV = 5253 u32,
HitObjectGetObjectRayDirectionNV = 5254 u32,
HitObjectGetObjectRayOriginNV = 5255 u32,
HitObjectTraceRayMotionNV = 5256 u32,
HitObjectGetShaderRecordBufferHandleNV = 5257 u32,
HitObjectGetShaderBindingTableRecordIndexNV = 5258 u32,
HitObjectRecordEmptyNV = 5259 u32,
HitObjectTraceRayNV = 5260 u32,
HitObjectRecordHitNV = 5261 u32,
HitObjectRecordHitWithIndexNV = 5262 u32,
HitObjectRecordMissNV = 5263 u32,
HitObjectExecuteShaderNV = 5264 u32,
HitObjectGetCurrentTimeNV = 5265 u32,
HitObjectGetAttributesNV = 5266 u32,
HitObjectGetHitKindNV = 5267 u32,
HitObjectGetPrimitiveIndexNV = 5268 u32,
HitObjectGetGeometryIndexNV = 5269 u32,
HitObjectGetInstanceIdNV = 5270 u32,
HitObjectGetInstanceCustomIndexNV = 5271 u32,
HitObjectGetWorldRayDirectionNV = 5272 u32,
HitObjectGetWorldRayOriginNV = 5273 u32,
HitObjectGetRayTMaxNV = 5274 u32,
HitObjectGetRayTMinNV = 5275 u32,
HitObjectIsEmptyNV = 5276 u32,
HitObjectIsHitNV = 5277 u32,
HitObjectIsMissNV = 5278 u32,
ReorderThreadWithHitObjectNV = 5279 u32,
ReorderThreadWithHintNV = 5280 u32,
TypeHitObjectNV = 5281 u32,
ImageSampleFootprintNV = 5283 u32,
EmitMeshTasksEXT = 5294 u32,
SetMeshOutputsEXT = 5295 u32,
GroupNonUniformPartitionNV = 5296 u32,
WritePackedPrimitiveIndices4x8NV = 5299 u32,
FetchMicroTriangleVertexPositionNV = 5300 u32,
FetchMicroTriangleVertexBarycentricNV = 5301 u32,
ReportIntersectionKHR = 5334 u32,
IgnoreIntersectionNV = 5335 u32,
TerminateRayNV = 5336 u32,
TraceNV = 5337 u32,
TraceMotionNV = 5338 u32,
TraceRayMotionNV = 5339 u32,
RayQueryGetIntersectionTriangleVertexPositionsKHR = 5340 u32,
TypeAccelerationStructureKHR = 5341 u32,
ExecuteCallableNV = 5344 u32,
TypeCooperativeMatrixNV = 5358 u32,
CooperativeMatrixLoadNV = 5359 u32,
CooperativeMatrixStoreNV = 5360 u32,
CooperativeMatrixMulAddNV = 5361 u32,
CooperativeMatrixLengthNV = 5362 u32,
BeginInvocationInterlockEXT = 5364 u32,
EndInvocationInterlockEXT = 5365 u32,
DemoteToHelperInvocation = 5380 u32,
IsHelperInvocationEXT = 5381 u32,
ConvertUToImageNV = 5391 u32,
ConvertUToSamplerNV = 5392 u32,
ConvertImageToUNV = 5393 u32,
ConvertSamplerToUNV = 5394 u32,
ConvertUToSampledImageNV = 5395 u32,
ConvertSampledImageToUNV = 5396 u32,
SamplerImageAddressingModeNV = 5397 u32,
SubgroupShuffleINTEL = 5571 u32,
SubgroupShuffleDownINTEL = 5572 u32,
SubgroupShuffleUpINTEL = 5573 u32,
SubgroupShuffleXorINTEL = 5574 u32,
SubgroupBlockReadINTEL = 5575 u32,
SubgroupBlockWriteINTEL = 5576 u32,
SubgroupImageBlockReadINTEL = 5577 u32,
SubgroupImageBlockWriteINTEL = 5578 u32,
SubgroupImageMediaBlockReadINTEL = 5580 u32,
SubgroupImageMediaBlockWriteINTEL = 5581 u32,
UCountLeadingZerosINTEL = 5585 u32,
UCountTrailingZerosINTEL = 5586 u32,
AbsISubINTEL = 5587 u32,
AbsUSubINTEL = 5588 u32,
IAddSatINTEL = 5589 u32,
UAddSatINTEL = 5590 u32,
IAverageINTEL = 5591 u32,
UAverageINTEL = 5592 u32,
IAverageRoundedINTEL = 5593 u32,
UAverageRoundedINTEL = 5594 u32,
ISubSatINTEL = 5595 u32,
USubSatINTEL = 5596 u32,
IMul32x16INTEL = 5597 u32,
UMul32x16INTEL = 5598 u32,
ConstantFunctionPointerINTEL = 5600 u32,
FunctionPointerCallINTEL = 5601 u32,
AsmTargetINTEL = 5609 u32,
AsmINTEL = 5610 u32,
AsmCallINTEL = 5611 u32,
AtomicFMinEXT = 5614 u32,
AtomicFMaxEXT = 5615 u32,
AssumeTrueKHR = 5630 u32,
ExpectKHR = 5631 u32,
DecorateString = 5632 u32,
MemberDecorateString = 5633 u32,
VmeImageINTEL = 5699 u32,
TypeVmeImageINTEL = 5700 u32,
TypeAvcImePayloadINTEL = 5701 u32,
TypeAvcRefPayloadINTEL = 5702 u32,
TypeAvcSicPayloadINTEL = 5703 u32,
TypeAvcMcePayloadINTEL = 5704 u32,
TypeAvcMceResultINTEL = 5705 u32,
TypeAvcImeResultINTEL = 5706 u32,
TypeAvcImeResultSingleReferenceStreamoutINTEL = 5707 u32,
TypeAvcImeResultDualReferenceStreamoutINTEL = 5708 u32,
TypeAvcImeSingleReferenceStreaminINTEL = 5709 u32,
TypeAvcImeDualReferenceStreaminINTEL = 5710 u32,
TypeAvcRefResultINTEL = 5711 u32,
TypeAvcSicResultINTEL = 5712 u32,
SubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL = 5713 u32,
SubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL = 5714 u32,
SubgroupAvcMceGetDefaultInterShapePenaltyINTEL = 5715 u32,
SubgroupAvcMceSetInterShapePenaltyINTEL = 5716 u32,
SubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL = 5717 u32,
SubgroupAvcMceSetInterDirectionPenaltyINTEL = 5718 u32,
SubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL = 5719 u32,
SubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL = 5720 u32,
SubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL = 5721 u32,
SubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL = 5722 u32,
SubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL = 5723 u32,
SubgroupAvcMceSetMotionVectorCostFunctionINTEL = 5724 u32,
SubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL = 5725 u32,
SubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL = 5726 u32,
SubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL = 5727 u32,
SubgroupAvcMceSetAcOnlyHaarINTEL = 5728 u32,
SubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL = 5729 u32,
SubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL = 5730 u32,
SubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL = 5731 u32,
SubgroupAvcMceConvertToImePayloadINTEL = 5732 u32,
SubgroupAvcMceConvertToImeResultINTEL = 5733 u32,
SubgroupAvcMceConvertToRefPayloadINTEL = 5734 u32,
SubgroupAvcMceConvertToRefResultINTEL = 5735 u32,
SubgroupAvcMceConvertToSicPayloadINTEL = 5736 u32,
SubgroupAvcMceConvertToSicResultINTEL = 5737 u32,
SubgroupAvcMceGetMotionVectorsINTEL = 5738 u32,
SubgroupAvcMceGetInterDistortionsINTEL = 5739 u32,
SubgroupAvcMceGetBestInterDistortionsINTEL = 5740 u32,
SubgroupAvcMceGetInterMajorShapeINTEL = 5741 u32,
SubgroupAvcMceGetInterMinorShapeINTEL = 5742 u32,
SubgroupAvcMceGetInterDirectionsINTEL = 5743 u32,
SubgroupAvcMceGetInterMotionVectorCountINTEL = 5744 u32,
SubgroupAvcMceGetInterReferenceIdsINTEL = 5745 u32,
SubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL = 5746 u32,
SubgroupAvcImeInitializeINTEL = 5747 u32,
SubgroupAvcImeSetSingleReferenceINTEL = 5748 u32,
SubgroupAvcImeSetDualReferenceINTEL = 5749 u32,
SubgroupAvcImeRefWindowSizeINTEL = 5750 u32,
SubgroupAvcImeAdjustRefOffsetINTEL = 5751 u32,
SubgroupAvcImeConvertToMcePayloadINTEL = 5752 u32,
SubgroupAvcImeSetMaxMotionVectorCountINTEL = 5753 u32,
SubgroupAvcImeSetUnidirectionalMixDisableINTEL = 5754 u32,
SubgroupAvcImeSetEarlySearchTerminationThresholdINTEL = 5755 u32,
SubgroupAvcImeSetWeightedSadINTEL = 5756 u32,
SubgroupAvcImeEvaluateWithSingleReferenceINTEL = 5757 u32,
SubgroupAvcImeEvaluateWithDualReferenceINTEL = 5758 u32,
SubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL = 5759 u32,
SubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL = 5760 u32,
SubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL = 5761 u32,
SubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL = 5762 u32,
SubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL = 5763 u32,
SubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL = 5764 u32,
SubgroupAvcImeConvertToMceResultINTEL = 5765 u32,
SubgroupAvcImeGetSingleReferenceStreaminINTEL = 5766 u32,
SubgroupAvcImeGetDualReferenceStreaminINTEL = 5767 u32,
SubgroupAvcImeStripSingleReferenceStreamoutINTEL = 5768 u32,
SubgroupAvcImeStripDualReferenceStreamoutINTEL = 5769 u32,
SubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL = 5770 u32,
SubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL = 5771 u32,
SubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL = 5772 u32,
SubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL = 5773 u32,
SubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL = 5774 u32,
SubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL = 5775 u32,
SubgroupAvcImeGetBorderReachedINTEL = 5776 u32,
SubgroupAvcImeGetTruncatedSearchIndicationINTEL = 5777 u32,
SubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL = 5778 u32,
SubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL = 5779 u32,
SubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL = 5780 u32,
SubgroupAvcFmeInitializeINTEL = 5781 u32,
SubgroupAvcBmeInitializeINTEL = 5782 u32,
SubgroupAvcRefConvertToMcePayloadINTEL = 5783 u32,
SubgroupAvcRefSetBidirectionalMixDisableINTEL = 5784 u32,
SubgroupAvcRefSetBilinearFilterEnableINTEL = 5785 u32,
SubgroupAvcRefEvaluateWithSingleReferenceINTEL = 5786 u32,
SubgroupAvcRefEvaluateWithDualReferenceINTEL = 5787 u32,
SubgroupAvcRefEvaluateWithMultiReferenceINTEL = 5788 u32,
SubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL = 5789 u32,
SubgroupAvcRefConvertToMceResultINTEL = 5790 u32,
SubgroupAvcSicInitializeINTEL = 5791 u32,
SubgroupAvcSicConfigureSkcINTEL = 5792 u32,
SubgroupAvcSicConfigureIpeLumaINTEL = 5793 u32,
SubgroupAvcSicConfigureIpeLumaChromaINTEL = 5794 u32,
SubgroupAvcSicGetMotionVectorMaskINTEL = 5795 u32,
SubgroupAvcSicConvertToMcePayloadINTEL = 5796 u32,
SubgroupAvcSicSetIntraLumaShapePenaltyINTEL = 5797 u32,
SubgroupAvcSicSetIntraLumaModeCostFunctionINTEL = 5798 u32,
SubgroupAvcSicSetIntraChromaModeCostFunctionINTEL = 5799 u32,
SubgroupAvcSicSetBilinearFilterEnableINTEL = 5800 u32,
SubgroupAvcSicSetSkcForwardTransformEnableINTEL = 5801 u32,
SubgroupAvcSicSetBlockBasedRawSkipSadINTEL = 5802 u32,
SubgroupAvcSicEvaluateIpeINTEL = 5803 u32,
SubgroupAvcSicEvaluateWithSingleReferenceINTEL = 5804 u32,
SubgroupAvcSicEvaluateWithDualReferenceINTEL = 5805 u32,
SubgroupAvcSicEvaluateWithMultiReferenceINTEL = 5806 u32,
SubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL = 5807 u32,
SubgroupAvcSicConvertToMceResultINTEL = 5808 u32,
SubgroupAvcSicGetIpeLumaShapeINTEL = 5809 u32,
SubgroupAvcSicGetBestIpeLumaDistortionINTEL = 5810 u32,
SubgroupAvcSicGetBestIpeChromaDistortionINTEL = 5811 u32,
SubgroupAvcSicGetPackedIpeLumaModesINTEL = 5812 u32,
SubgroupAvcSicGetIpeChromaModeINTEL = 5813 u32,
SubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL = 5814 u32,
SubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL = 5815 u32,
SubgroupAvcSicGetInterRawSadsINTEL = 5816 u32,
VariableLengthArrayINTEL = 5818 u32,
SaveMemoryINTEL = 5819 u32,
RestoreMemoryINTEL = 5820 u32,
ArbitraryFloatSinCosPiINTEL = 5840 u32,
ArbitraryFloatCastINTEL = 5841 u32,
ArbitraryFloatCastFromIntINTEL = 5842 u32,
ArbitraryFloatCastToIntINTEL = 5843 u32,
ArbitraryFloatAddINTEL = 5846 u32,
ArbitraryFloatSubINTEL = 5847 u32,
ArbitraryFloatMulINTEL = 5848 u32,
ArbitraryFloatDivINTEL = 5849 u32,
ArbitraryFloatGTINTEL = 5850 u32,
ArbitraryFloatGEINTEL = 5851 u32,
ArbitraryFloatLTINTEL = 5852 u32,
ArbitraryFloatLEINTEL = 5853 u32,
ArbitraryFloatEQINTEL = 5854 u32,
ArbitraryFloatRecipINTEL = 5855 u32,
ArbitraryFloatRSqrtINTEL = 5856 u32,
ArbitraryFloatCbrtINTEL = 5857 u32,
ArbitraryFloatHypotINTEL = 5858 u32,
ArbitraryFloatSqrtINTEL = 5859 u32,
ArbitraryFloatLogINTEL = 5860 u32,
ArbitraryFloatLog2INTEL = 5861 u32,
ArbitraryFloatLog10INTEL = 5862 u32,
ArbitraryFloatLog1pINTEL = 5863 u32,
ArbitraryFloatExpINTEL = 5864 u32,
ArbitraryFloatExp2INTEL = 5865 u32,
ArbitraryFloatExp10INTEL = 5866 u32,
ArbitraryFloatExpm1INTEL = 5867 u32,
ArbitraryFloatSinINTEL = 5868 u32,
ArbitraryFloatCosINTEL = 5869 u32,
ArbitraryFloatSinCosINTEL = 5870 u32,
ArbitraryFloatSinPiINTEL = 5871 u32,
ArbitraryFloatCosPiINTEL = 5872 u32,
ArbitraryFloatASinINTEL = 5873 u32,
ArbitraryFloatASinPiINTEL = 5874 u32,
ArbitraryFloatACosINTEL = 5875 u32,
ArbitraryFloatACosPiINTEL = 5876 u32,
ArbitraryFloatATanINTEL = 5877 u32,
ArbitraryFloatATanPiINTEL = 5878 u32,
ArbitraryFloatATan2INTEL = 5879 u32,
ArbitraryFloatPowINTEL = 5880 u32,
ArbitraryFloatPowRINTEL = 5881 u32,
ArbitraryFloatPowNINTEL = 5882 u32,
LoopControlINTEL = 5887 u32,
AliasDomainDeclINTEL = 5911 u32,
AliasScopeDeclINTEL = 5912 u32,
AliasScopeListDeclINTEL = 5913 u32,
FixedSqrtINTEL = 5923 u32,
FixedRecipINTEL = 5924 u32,
FixedRsqrtINTEL = 5925 u32,
FixedSinINTEL = 5926 u32,
FixedCosINTEL = 5927 u32,
FixedSinCosINTEL = 5928 u32,
FixedSinPiINTEL = 5929 u32,
FixedCosPiINTEL = 5930 u32,
FixedSinCosPiINTEL = 5931 u32,
FixedLogINTEL = 5932 u32,
FixedExpINTEL = 5933 u32,
PtrCastToCrossWorkgroupINTEL = 5934 u32,
CrossWorkgroupCastToPtrINTEL = 5938 u32,
ReadPipeBlockingINTEL = 5946 u32,
WritePipeBlockingINTEL = 5947 u32,
FPGARegINTEL = 5949 u32,
RayQueryGetRayTMinKHR = 6016 u32,
RayQueryGetRayFlagsKHR = 6017 u32,
RayQueryGetIntersectionTKHR = 6018 u32,
RayQueryGetIntersectionInstanceCustomIndexKHR = 6019 u32,
RayQueryGetIntersectionInstanceIdKHR = 6020 u32,
RayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR = 6021 u32,
RayQueryGetIntersectionGeometryIndexKHR = 6022 u32,
RayQueryGetIntersectionPrimitiveIndexKHR = 6023 u32,
RayQueryGetIntersectionBarycentricsKHR = 6024 u32,
RayQueryGetIntersectionFrontFaceKHR = 6025 u32,
RayQueryGetIntersectionCandidateAABBOpaqueKHR = 6026 u32,
RayQueryGetIntersectionObjectRayDirectionKHR = 6027 u32,
RayQueryGetIntersectionObjectRayOriginKHR = 6028 u32,
RayQueryGetWorldRayDirectionKHR = 6029 u32,
RayQueryGetWorldRayOriginKHR = 6030 u32,
RayQueryGetIntersectionObjectToWorldKHR = 6031 u32,
RayQueryGetIntersectionWorldToObjectKHR = 6032 u32,
AtomicFAddEXT = 6035 u32,
TypeBufferSurfaceINTEL = 6086 u32,
TypeStructContinuedINTEL = 6090 u32,
ConstantCompositeContinuedINTEL = 6091 u32,
SpecConstantCompositeContinuedINTEL = 6092 u32,
ConvertFToBF16INTEL = 6116 u32,
ConvertBF16ToFINTEL = 6117 u32,
ControlBarrierArriveINTEL = 6142 u32,
ControlBarrierWaitINTEL = 6143 u32,
GroupIMulKHR = 6401 u32,
GroupFMulKHR = 6402 u32,
GroupBitwiseAndKHR = 6403 u32,
GroupBitwiseOrKHR = 6404 u32,
GroupBitwiseXorKHR = 6405 u32,
GroupLogicalAndKHR = 6406 u32,
GroupLogicalOrKHR = 6407 u32,
GroupLogicalXorKHR = 6408 u32,
}
impl Op {
pub fn from_u32(n: u32) -> Option<Self > {
Some(match n {
0 u32..=8 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
10 u32..=12 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
14 u32..=17 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
19 u32..=39 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
41 u32..=46 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
48 u32..=52 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
54 u32..=57 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
59 u32..=75 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
77 u32..=84 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
86 u32..=107 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
109 u32..=124 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
126 u32..=152 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
154 u32..=191 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
194 u32..=205 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
207 u32..=215 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
218 u32..=221 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
224 u32..=225 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
227 u32..=242 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
245 u32..=257 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
259 u32..=271 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
274 u32..=288 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
291 u32..=366 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
400 u32..=403 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4160 u32..=4162 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4416 u32 => unsafe { core::mem::transmute::<u32, Op>(4416 u32) },
4421 u32..=4422 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4428 u32..=4432 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4445 u32..=4460 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4472 u32..=4477 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4479 u32..=4483 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
5000 u32..=5007 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
5011 u32..=5012 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
5056 u32 => unsafe { core::mem::transmute::<u32, Op>(5056 u32) },
5075 u32 => unsafe { core::mem::transmute::<u32, Op>(5075 u32) },
5078 u32 => unsafe { core::mem::transmute::<u32, Op>(5078 u32) },
5090 u32 => unsafe { core::mem::transmute::<u32, Op>(5090 u32) },
5249 u32..=5281 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
5283 u32 => unsafe { core::mem::transmute::<u32, Op>(5283 u32) },
5294 u32..=5296 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
5299 u32..=5301 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
5334 u32..=5341 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
5344 u32 => unsafe { core::mem::transmute::<u32, Op>(5344 u32) },
5358 u32..=5362 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
5364 u32..=5365 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
5380 u32..=5381 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
5391 u32..=5397 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
5571 u32..=5578 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
5580 u32..=5581 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
5585 u32..=5598 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
5600 u32..=5601 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
5609 u32..=5611 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
5614 u32..=5615 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
5630 u32..=5633 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
5699 u32..=5816 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
5818 u32..=5820 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
5840 u32..=5843 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
5846 u32..=5882 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
5887 u32 => unsafe { core::mem::transmute::<u32, Op>(5887 u32) },
5911 u32..=5913 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
5923 u32..=5934 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
5938 u32 => unsafe { core::mem::transmute::<u32, Op>(5938 u32) },
5946 u32..=5947 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
5949 u32 => unsafe { core::mem::transmute::<u32, Op>(5949 u32) },
6016 u32..=6032 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
6035 u32 => unsafe { core::mem::transmute::<u32, Op>(6035 u32) },
6086 u32 => unsafe { core::mem::transmute::<u32, Op>(6086 u32) },
6090 u32..=6092 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
6116 u32..=6117 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
6142 u32..=6143 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
6401 u32..=6408 u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
_ => return None,
})
}
}
#[ allow(clippy::upper_case_acronyms)]
#[ allow(non_upper_case_globals)]
impl Op {
pub const SDotKHR: Op = Op::SDot;
pub const UDotKHR: Op = Op::UDot;
pub const SUDotKHR: Op = Op::SUDot;
pub const SDotAccSatKHR: Op = Op::SDotAccSat;
pub const UDotAccSatKHR: Op = Op::UDotAccSat;
pub const SUDotAccSatKHR: Op = Op::SUDotAccSat;
pub const ReportIntersectionNV: Op = Op::ReportIntersectionKHR;
pub const TypeAccelerationStructureNV: Op = Op::TypeAccelerationStructureKHR;
pub const DemoteToHelperInvocationEXT: Op = Op::DemoteToHelperInvocation;
pub const DecorateStringGOOGLE: Op = Op::DecorateString;
pub const MemberDecorateStringGOOGLE: Op = Op::MemberDecorateString;
}
#[ doc = "[GLSL.std.450](https://www.khronos.org/registry/spir-v/specs/unified1/GLSL.std.450.html) extended instruction opcode"]
#[ repr(u32)]
#[ derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[ cfg_attr(feature = "serialize" , derive(serde::Serialize))]
#[ cfg_attr(feature = "deserialize" , derive(serde::Deserialize))]
#[ allow(clippy::upper_case_acronyms)]
pub enum GLOp {
Round = 1 u32,
RoundEven = 2 u32,
Trunc = 3 u32,
FAbs = 4 u32,
SAbs = 5 u32,
FSign = 6 u32,
SSign = 7 u32,
Floor = 8 u32,
Ceil = 9 u32,
Fract = 10 u32,
Radians = 11 u32,
Degrees = 12 u32,
Sin = 13 u32,
Cos = 14 u32,
Tan = 15 u32,
Asin = 16 u32,
Acos = 17 u32,
Atan = 18 u32,
Sinh = 19 u32,
Cosh = 20 u32,
Tanh = 21 u32,
Asinh = 22 u32,
Acosh = 23 u32,
Atanh = 24 u32,
Atan2 = 25 u32,
Pow = 26 u32,
Exp = 27 u32,
Log = 28 u32,
Exp2 = 29 u32,
Log2 = 30 u32,
Sqrt = 31 u32,
InverseSqrt = 32 u32,
Determinant = 33 u32,
MatrixInverse = 34 u32,
Modf = 35 u32,
ModfStruct = 36 u32,
FMin = 37 u32,
UMin = 38 u32,
SMin = 39 u32,
FMax = 40 u32,
UMax = 41 u32,
SMax = 42 u32,
FClamp = 43 u32,
UClamp = 44 u32,
SClamp = 45 u32,
FMix = 46 u32,
IMix = 47 u32,
Step = 48 u32,
SmoothStep = 49 u32,
Fma = 50 u32,
Frexp = 51 u32,
FrexpStruct = 52 u32,
Ldexp = 53 u32,
PackSnorm4x8 = 54 u32,
PackUnorm4x8 = 55 u32,
PackSnorm2x16 = 56 u32,
PackUnorm2x16 = 57 u32,
PackHalf2x16 = 58 u32,
PackDouble2x32 = 59 u32,
UnpackSnorm2x16 = 60 u32,
UnpackUnorm2x16 = 61 u32,
UnpackHalf2x16 = 62 u32,
UnpackSnorm4x8 = 63 u32,
UnpackUnorm4x8 = 64 u32,
UnpackDouble2x32 = 65 u32,
Length = 66 u32,
Distance = 67 u32,
Cross = 68 u32,
Normalize = 69 u32,
FaceForward = 70 u32,
Reflect = 71 u32,
Refract = 72 u32,
FindILsb = 73 u32,
FindSMsb = 74 u32,
FindUMsb = 75 u32,
InterpolateAtCentroid = 76 u32,
InterpolateAtSample = 77 u32,
InterpolateAtOffset = 78 u32,
NMin = 79 u32,
NMax = 80 u32,
NClamp = 81 u32,
}
impl GLOp {
pub fn from_u32(n: u32) -> Option<Self > {
Some(match n {
1 u32..=81 u32 => unsafe { core::mem::transmute::<u32, GLOp>(n) },
_ => return None,
})
}
}
#[ doc = "[OpenCL.std](https://www.khronos.org/registry/spir-v/specs/unified1/OpenCL.ExtendedInstructionSet.100.html) extended instruction opcode"]
#[ repr(u32)]
#[ derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[ cfg_attr(feature = "serialize" , derive(serde::Serialize))]
#[ cfg_attr(feature = "deserialize" , derive(serde::Deserialize))]
#[ allow(clippy::upper_case_acronyms)]
pub enum CLOp {
acos = 0 u32,
acosh = 1 u32,
acospi = 2 u32,
asin = 3 u32,
asinh = 4 u32,
asinpi = 5 u32,
atan = 6 u32,
atan2 = 7 u32,
atanh = 8 u32,
atanpi = 9 u32,
atan2pi = 10 u32,
cbrt = 11 u32,
ceil = 12 u32,
copysign = 13 u32,
cos = 14 u32,
cosh = 15 u32,
cospi = 16 u32,
erfc = 17 u32,
erf = 18 u32,
exp = 19 u32,
exp2 = 20 u32,
exp10 = 21 u32,
expm1 = 22 u32,
fabs = 23 u32,
fdim = 24 u32,
floor = 25 u32,
fma = 26 u32,
fmax = 27 u32,
fmin = 28 u32,
fmod = 29 u32,
fract = 30 u32,
frexp = 31 u32,
hypot = 32 u32,
ilogb = 33 u32,
ldexp = 34 u32,
lgamma = 35 u32,
lgamma_r = 36 u32,
log = 37 u32,
log2 = 38 u32,
log10 = 39 u32,
log1p = 40 u32,
logb = 41 u32,
mad = 42 u32,
maxmag = 43 u32,
minmag = 44 u32,
modf = 45 u32,
nan = 46 u32,
nextafter = 47 u32,
pow = 48 u32,
pown = 49 u32,
powr = 50 u32,
remainder = 51 u32,
remquo = 52 u32,
rint = 53 u32,
rootn = 54 u32,
round = 55 u32,
rsqrt = 56 u32,
sin = 57 u32,
sincos = 58 u32,
sinh = 59 u32,
sinpi = 60 u32,
sqrt = 61 u32,
tan = 62 u32,
tanh = 63 u32,
tanpi = 64 u32,
tgamma = 65 u32,
trunc = 66 u32,
half_cos = 67 u32,
half_divide = 68 u32,
half_exp = 69 u32,
half_exp2 = 70 u32,
half_exp10 = 71 u32,
half_log = 72 u32,
half_log2 = 73 u32,
half_log10 = 74 u32,
half_powr = 75 u32,
half_recip = 76 u32,
half_rsqrt = 77 u32,
half_sin = 78 u32,
half_sqrt = 79 u32,
half_tan = 80 u32,
native_cos = 81 u32,
native_divide = 82 u32,
native_exp = 83 u32,
native_exp2 = 84 u32,
native_exp10 = 85 u32,
native_log = 86 u32,
native_log2 = 87 u32,
native_log10 = 88 u32,
native_powr = 89 u32,
native_recip = 90 u32,
native_rsqrt = 91 u32,
native_sin = 92 u32,
native_sqrt = 93 u32,
native_tan = 94 u32,
fclamp = 95 u32,
degrees = 96 u32,
fmax_common = 97 u32,
fmin_common = 98 u32,
mix = 99 u32,
radians = 100 u32,
step = 101 u32,
smoothstep = 102 u32,
sign = 103 u32,
cross = 104 u32,
distance = 105 u32,
length = 106 u32,
normalize = 107 u32,
fast_distance = 108 u32,
fast_length = 109 u32,
fast_normalize = 110 u32,
s_abs = 141 u32,
s_abs_diff = 142 u32,
s_add_sat = 143 u32,
u_add_sat = 144 u32,
s_hadd = 145 u32,
u_hadd = 146 u32,
s_rhadd = 147 u32,
u_rhadd = 148 u32,
s_clamp = 149 u32,
u_clamp = 150 u32,
clz = 151 u32,
ctz = 152 u32,
s_mad_hi = 153 u32,
u_mad_sat = 154 u32,
s_mad_sat = 155 u32,
s_max = 156 u32,
u_max = 157 u32,
s_min = 158 u32,
u_min = 159 u32,
s_mul_hi = 160 u32,
rotate = 161 u32,
s_sub_sat = 162 u32,
u_sub_sat = 163 u32,
u_upsample = 164 u32,
s_upsample = 165 u32,
popcount = 166 u32,
s_mad24 = 167 u32,
u_mad24 = 168 u32,
s_mul24 = 169 u32,
u_mul24 = 170 u32,
vloadn = 171 u32,
vstoren = 172 u32,
vload_half = 173 u32,
vload_halfn = 174 u32,
vstore_half = 175 u32,
vstore_half_r = 176 u32,
vstore_halfn = 177 u32,
vstore_halfn_r = 178 u32,
vloada_halfn = 179 u32,
vstorea_halfn = 180 u32,
vstorea_halfn_r = 181 u32,
shuffle = 182 u32,
shuffle2 = 183 u32,
printf = 184 u32,
prefetch = 185 u32,
bitselect = 186 u32,
select = 187 u32,
u_abs = 201 u32,
u_abs_diff = 202 u32,
u_mul_hi = 203 u32,
u_mad_hi = 204 u32,
}
impl CLOp {
pub fn from_u32(n: u32) -> Option<Self > {
Some(match n {
0 u32..=110 u32 => unsafe { core::mem::transmute::<u32, CLOp>(n) },
141 u32..=187 u32 => unsafe { core::mem::transmute::<u32, CLOp>(n) },
201 u32..=204 u32 => unsafe { core::mem::transmute::<u32, CLOp>(n) },
_ => return None,
})
}
}
Messung V0.5 in Prozent C=90 H=86 G=87
¤ Dauer der Verarbeitung: 0.98 Sekunden
(vorverarbeitet am 2026-06-18)
¤
*© Formatika GbR, Deutschland