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