Skip to main content

spirv/
autogen_spirv.rs

1// AUTOMATICALLY GENERATED from the SPIR-V JSON grammar:
2//   external/spirv.core.grammar.json.
3// DO NOT MODIFY!
4
5pub type Word = u32;
6pub const MAGIC_NUMBER: u32 = 0x07230203;
7pub const MAJOR_VERSION: u8 = 1u8;
8pub const MINOR_VERSION: u8 = 6u8;
9pub const REVISION: u8 = 4u8;
10bitflags! { # [doc = "SPIR-V operand kind: [ImageOperands](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_image_operands_a_image_operands)"] # [derive (Clone , Copy , Debug , PartialEq , Eq , Hash)] # [cfg_attr (feature = "serialize" , derive (serde :: Serialize))] # [cfg_attr (feature = "deserialize" , derive (serde :: Deserialize))] pub struct ImageOperands : u32 { const NONE = 0u32 ; const BIAS = 1u32 ; const LOD = 2u32 ; const GRAD = 4u32 ; const CONST_OFFSET = 8u32 ; const OFFSET = 16u32 ; const CONST_OFFSETS = 32u32 ; const SAMPLE = 64u32 ; const MIN_LOD = 128u32 ; const MAKE_TEXEL_AVAILABLE = 256u32 ; const MAKE_TEXEL_VISIBLE = 512u32 ; const NON_PRIVATE_TEXEL = 1024u32 ; const VOLATILE_TEXEL = 2048u32 ; const SIGN_EXTEND = 4096u32 ; const ZERO_EXTEND = 8192u32 ; const NONTEMPORAL = 16384u32 ; const OFFSETS = 65536u32 ; } }
11bitflags! { # [doc = "SPIR-V operand kind: [FPFastMathMode](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_fp_fast_math_mode_a_fp_fast_math_mode)"] # [derive (Clone , Copy , Debug , PartialEq , Eq , Hash)] # [cfg_attr (feature = "serialize" , derive (serde :: Serialize))] # [cfg_attr (feature = "deserialize" , derive (serde :: Deserialize))] pub struct FPFastMathMode : u32 { const NONE = 0u32 ; const NOT_NAN = 1u32 ; const NOT_INF = 2u32 ; const NSZ = 4u32 ; const ALLOW_RECIP = 8u32 ; const FAST = 16u32 ; const ALLOW_CONTRACT = 65536u32 ; const ALLOW_REASSOC = 131072u32 ; const ALLOW_TRANSFORM = 262144u32 ; } }
12bitflags! { # [doc = "SPIR-V operand kind: [SelectionControl](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_selection_control_a_selection_control)"] # [derive (Clone , Copy , Debug , PartialEq , Eq , Hash)] # [cfg_attr (feature = "serialize" , derive (serde :: Serialize))] # [cfg_attr (feature = "deserialize" , derive (serde :: Deserialize))] pub struct SelectionControl : u32 { const NONE = 0u32 ; const FLATTEN = 1u32 ; const DONT_FLATTEN = 2u32 ; } }
13bitflags! { # [doc = "SPIR-V operand kind: [LoopControl](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_loop_control_a_loop_control)"] # [derive (Clone , Copy , Debug , PartialEq , Eq , Hash)] # [cfg_attr (feature = "serialize" , derive (serde :: Serialize))] # [cfg_attr (feature = "deserialize" , derive (serde :: Deserialize))] pub struct LoopControl : u32 { const NONE = 0u32 ; const UNROLL = 1u32 ; const DONT_UNROLL = 2u32 ; const DEPENDENCY_INFINITE = 4u32 ; const DEPENDENCY_LENGTH = 8u32 ; const MIN_ITERATIONS = 16u32 ; const MAX_ITERATIONS = 32u32 ; const ITERATION_MULTIPLE = 64u32 ; const PEEL_COUNT = 128u32 ; const PARTIAL_COUNT = 256u32 ; const INITIATION_INTERVAL_ALTERA = 65536u32 ; const MAX_CONCURRENCY_ALTERA = 131072u32 ; const DEPENDENCY_ARRAY_ALTERA = 262144u32 ; const PIPELINE_ENABLE_ALTERA = 524288u32 ; const LOOP_COALESCE_ALTERA = 1048576u32 ; const MAX_INTERLEAVING_ALTERA = 2097152u32 ; const SPECULATED_ITERATIONS_ALTERA = 4194304u32 ; const NO_FUSION_ALTERA = 8388608u32 ; const LOOP_COUNT_ALTERA = 16777216u32 ; const MAX_REINVOCATION_DELAY_ALTERA = 33554432u32 ; } }
14bitflags! { # [doc = "SPIR-V operand kind: [FunctionControl](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_function_control_a_function_control)"] # [derive (Clone , Copy , Debug , PartialEq , Eq , Hash)] # [cfg_attr (feature = "serialize" , derive (serde :: Serialize))] # [cfg_attr (feature = "deserialize" , derive (serde :: Deserialize))] pub struct FunctionControl : u32 { const NONE = 0u32 ; const INLINE = 1u32 ; const DONT_INLINE = 2u32 ; const PURE = 4u32 ; const CONST = 8u32 ; const OPT_NONE_EXT = 65536u32 ; } }
15bitflags! { # [doc = "SPIR-V operand kind: [MemorySemantics](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_memory_semantics_a_memory_semantics)"] # [derive (Clone , Copy , Debug , PartialEq , Eq , Hash)] # [cfg_attr (feature = "serialize" , derive (serde :: Serialize))] # [cfg_attr (feature = "deserialize" , derive (serde :: Deserialize))] pub struct MemorySemantics : u32 { const RELAXED = 0u32 ; const ACQUIRE = 2u32 ; const RELEASE = 4u32 ; const ACQUIRE_RELEASE = 8u32 ; const SEQUENTIALLY_CONSISTENT = 16u32 ; const UNIFORM_MEMORY = 64u32 ; const SUBGROUP_MEMORY = 128u32 ; const WORKGROUP_MEMORY = 256u32 ; const CROSS_WORKGROUP_MEMORY = 512u32 ; const ATOMIC_COUNTER_MEMORY = 1024u32 ; const IMAGE_MEMORY = 2048u32 ; const OUTPUT_MEMORY = 4096u32 ; const MAKE_AVAILABLE = 8192u32 ; const MAKE_VISIBLE = 16384u32 ; const VOLATILE = 32768u32 ; } }
16bitflags! { # [doc = "SPIR-V operand kind: [MemoryAccess](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_memory_access_a_memory_access)"] # [derive (Clone , Copy , Debug , PartialEq , Eq , Hash)] # [cfg_attr (feature = "serialize" , derive (serde :: Serialize))] # [cfg_attr (feature = "deserialize" , derive (serde :: Deserialize))] pub struct MemoryAccess : u32 { const NONE = 0u32 ; const VOLATILE = 1u32 ; const ALIGNED = 2u32 ; const NONTEMPORAL = 4u32 ; const MAKE_POINTER_AVAILABLE = 8u32 ; const MAKE_POINTER_VISIBLE = 16u32 ; const NON_PRIVATE_POINTER = 32u32 ; const ALIAS_SCOPE_INTEL_MASK = 65536u32 ; const NO_ALIAS_INTEL_MASK = 131072u32 ; } }
17bitflags! { # [doc = "SPIR-V operand kind: [KernelProfilingInfo](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_kernel_profiling_info_a_kernel_profiling_info)"] # [derive (Clone , Copy , Debug , PartialEq , Eq , Hash)] # [cfg_attr (feature = "serialize" , derive (serde :: Serialize))] # [cfg_attr (feature = "deserialize" , derive (serde :: Deserialize))] pub struct KernelProfilingInfo : u32 { const NONE = 0u32 ; const CMD_EXEC_TIME = 1u32 ; } }
18bitflags! { # [doc = "SPIR-V operand kind: [RayFlags](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_ray_flags_a_ray_flags)"] # [derive (Clone , Copy , Debug , PartialEq , Eq , Hash)] # [cfg_attr (feature = "serialize" , derive (serde :: Serialize))] # [cfg_attr (feature = "deserialize" , derive (serde :: Deserialize))] pub struct RayFlags : u32 { const NONE_KHR = 0u32 ; const OPAQUE_KHR = 1u32 ; const NO_OPAQUE_KHR = 2u32 ; const TERMINATE_ON_FIRST_HIT_KHR = 4u32 ; const SKIP_CLOSEST_HIT_SHADER_KHR = 8u32 ; const CULL_BACK_FACING_TRIANGLES_KHR = 16u32 ; const CULL_FRONT_FACING_TRIANGLES_KHR = 32u32 ; const CULL_OPAQUE_KHR = 64u32 ; const CULL_NO_OPAQUE_KHR = 128u32 ; const SKIP_TRIANGLES_KHR = 256u32 ; const SKIP_AAB_BS_KHR = 512u32 ; const FORCE_OPACITY_MICROMAP2_STATE_EXT = 1024u32 ; } }
19bitflags! { # [doc = "SPIR-V operand kind: [FragmentShadingRate](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_fragment_shading_rate_a_fragment_shading_rate)"] # [derive (Clone , Copy , Debug , PartialEq , Eq , Hash)] # [cfg_attr (feature = "serialize" , derive (serde :: Serialize))] # [cfg_attr (feature = "deserialize" , derive (serde :: Deserialize))] pub struct FragmentShadingRate : u32 { const VERTICAL2_PIXELS = 1u32 ; const VERTICAL4_PIXELS = 2u32 ; const HORIZONTAL2_PIXELS = 4u32 ; const HORIZONTAL4_PIXELS = 8u32 ; } }
20bitflags! { # [doc = "SPIR-V operand kind: [RawAccessChainOperands](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_raw_access_chain_operands_a_raw_access_chain_operands)"] # [derive (Clone , Copy , Debug , PartialEq , Eq , Hash)] # [cfg_attr (feature = "serialize" , derive (serde :: Serialize))] # [cfg_attr (feature = "deserialize" , derive (serde :: Deserialize))] pub struct RawAccessChainOperands : u32 { const NONE = 0u32 ; const ROBUSTNESS_PER_COMPONENT_NV = 1u32 ; const ROBUSTNESS_PER_ELEMENT_NV = 2u32 ; } }
21#[doc = "SPIR-V operand kind: [SourceLanguage](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_source_language_a_source_language)"]
22#[repr(u32)]
23#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
24#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
25#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
26#[allow(clippy::upper_case_acronyms)]
27pub enum SourceLanguage {
28    Unknown = 0u32,
29    ESSL = 1u32,
30    GLSL = 2u32,
31    OpenCL_C = 3u32,
32    OpenCL_CPP = 4u32,
33    HLSL = 5u32,
34    CPP_for_OpenCL = 6u32,
35    SYCL = 7u32,
36    HERO_C = 8u32,
37    NZSL = 9u32,
38    WGSL = 10u32,
39    Slang = 11u32,
40    Zig = 12u32,
41    Rust = 13u32,
42}
43impl SourceLanguage {
44    pub fn from_u32(n: u32) -> Option<Self> {
45        Some(match n {
46            0u32..=13u32 => unsafe { core::mem::transmute::<u32, SourceLanguage>(n) },
47            _ => return None,
48        })
49    }
50}
51#[allow(non_upper_case_globals)]
52impl SourceLanguage {}
53impl core::str::FromStr for SourceLanguage {
54    type Err = ();
55    fn from_str(s: &str) -> Result<Self, Self::Err> {
56        Ok(match s {
57            "Unknown" => Self::Unknown,
58            "ESSL" => Self::ESSL,
59            "GLSL" => Self::GLSL,
60            "OpenCL_C" => Self::OpenCL_C,
61            "OpenCL_CPP" => Self::OpenCL_CPP,
62            "HLSL" => Self::HLSL,
63            "CPP_for_OpenCL" => Self::CPP_for_OpenCL,
64            "SYCL" => Self::SYCL,
65            "HERO_C" => Self::HERO_C,
66            "NZSL" => Self::NZSL,
67            "WGSL" => Self::WGSL,
68            "Slang" => Self::Slang,
69            "Zig" => Self::Zig,
70            "Rust" => Self::Rust,
71            _ => return Err(()),
72        })
73    }
74}
75#[doc = "SPIR-V operand kind: [ExecutionModel](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_execution_model_a_execution_model)"]
76#[repr(u32)]
77#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
78#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
79#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
80#[allow(clippy::upper_case_acronyms)]
81pub enum ExecutionModel {
82    Vertex = 0u32,
83    TessellationControl = 1u32,
84    TessellationEvaluation = 2u32,
85    Geometry = 3u32,
86    Fragment = 4u32,
87    GLCompute = 5u32,
88    Kernel = 6u32,
89    TaskNV = 5267u32,
90    MeshNV = 5268u32,
91    RayGenerationKHR = 5313u32,
92    IntersectionKHR = 5314u32,
93    AnyHitKHR = 5315u32,
94    ClosestHitKHR = 5316u32,
95    MissKHR = 5317u32,
96    CallableKHR = 5318u32,
97    TaskEXT = 5364u32,
98    MeshEXT = 5365u32,
99}
100impl ExecutionModel {
101    pub fn from_u32(n: u32) -> Option<Self> {
102        Some(match n {
103            0u32..=6u32 => unsafe { core::mem::transmute::<u32, ExecutionModel>(n) },
104            5267u32..=5268u32 => unsafe { core::mem::transmute::<u32, ExecutionModel>(n) },
105            5313u32..=5318u32 => unsafe { core::mem::transmute::<u32, ExecutionModel>(n) },
106            5364u32..=5365u32 => unsafe { core::mem::transmute::<u32, ExecutionModel>(n) },
107            _ => return None,
108        })
109    }
110}
111#[allow(non_upper_case_globals)]
112impl ExecutionModel {
113    pub const RayGenerationNV: Self = Self::RayGenerationKHR;
114    pub const IntersectionNV: Self = Self::IntersectionKHR;
115    pub const AnyHitNV: Self = Self::AnyHitKHR;
116    pub const ClosestHitNV: Self = Self::ClosestHitKHR;
117    pub const MissNV: Self = Self::MissKHR;
118    pub const CallableNV: Self = Self::CallableKHR;
119}
120impl core::str::FromStr for ExecutionModel {
121    type Err = ();
122    fn from_str(s: &str) -> Result<Self, Self::Err> {
123        Ok(match s {
124            "Vertex" => Self::Vertex,
125            "TessellationControl" => Self::TessellationControl,
126            "TessellationEvaluation" => Self::TessellationEvaluation,
127            "Geometry" => Self::Geometry,
128            "Fragment" => Self::Fragment,
129            "GLCompute" => Self::GLCompute,
130            "Kernel" => Self::Kernel,
131            "TaskNV" => Self::TaskNV,
132            "MeshNV" => Self::MeshNV,
133            "RayGenerationKHR" => Self::RayGenerationKHR,
134            "RayGenerationNV" => Self::RayGenerationKHR,
135            "IntersectionKHR" => Self::IntersectionKHR,
136            "IntersectionNV" => Self::IntersectionKHR,
137            "AnyHitKHR" => Self::AnyHitKHR,
138            "AnyHitNV" => Self::AnyHitKHR,
139            "ClosestHitKHR" => Self::ClosestHitKHR,
140            "ClosestHitNV" => Self::ClosestHitKHR,
141            "MissKHR" => Self::MissKHR,
142            "MissNV" => Self::MissKHR,
143            "CallableKHR" => Self::CallableKHR,
144            "CallableNV" => Self::CallableKHR,
145            "TaskEXT" => Self::TaskEXT,
146            "MeshEXT" => Self::MeshEXT,
147            _ => return Err(()),
148        })
149    }
150}
151#[doc = "SPIR-V operand kind: [AddressingModel](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_addressing_model_a_addressing_model)"]
152#[repr(u32)]
153#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
154#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
155#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
156#[allow(clippy::upper_case_acronyms)]
157pub enum AddressingModel {
158    Logical = 0u32,
159    Physical32 = 1u32,
160    Physical64 = 2u32,
161    PhysicalStorageBuffer64 = 5348u32,
162}
163impl AddressingModel {
164    pub fn from_u32(n: u32) -> Option<Self> {
165        Some(match n {
166            0u32..=2u32 => unsafe { core::mem::transmute::<u32, AddressingModel>(n) },
167            5348u32 => unsafe { core::mem::transmute::<u32, AddressingModel>(5348u32) },
168            _ => return None,
169        })
170    }
171}
172#[allow(non_upper_case_globals)]
173impl AddressingModel {
174    pub const PhysicalStorageBuffer64EXT: Self = Self::PhysicalStorageBuffer64;
175}
176impl core::str::FromStr for AddressingModel {
177    type Err = ();
178    fn from_str(s: &str) -> Result<Self, Self::Err> {
179        Ok(match s {
180            "Logical" => Self::Logical,
181            "Physical32" => Self::Physical32,
182            "Physical64" => Self::Physical64,
183            "PhysicalStorageBuffer64" => Self::PhysicalStorageBuffer64,
184            "PhysicalStorageBuffer64EXT" => Self::PhysicalStorageBuffer64,
185            _ => return Err(()),
186        })
187    }
188}
189#[doc = "SPIR-V operand kind: [MemoryModel](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_memory_model_a_memory_model)"]
190#[repr(u32)]
191#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
192#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
193#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
194#[allow(clippy::upper_case_acronyms)]
195pub enum MemoryModel {
196    Simple = 0u32,
197    GLSL450 = 1u32,
198    OpenCL = 2u32,
199    Vulkan = 3u32,
200}
201impl MemoryModel {
202    pub fn from_u32(n: u32) -> Option<Self> {
203        Some(match n {
204            0u32..=3u32 => unsafe { core::mem::transmute::<u32, MemoryModel>(n) },
205            _ => return None,
206        })
207    }
208}
209#[allow(non_upper_case_globals)]
210impl MemoryModel {
211    pub const VulkanKHR: Self = Self::Vulkan;
212}
213impl core::str::FromStr for MemoryModel {
214    type Err = ();
215    fn from_str(s: &str) -> Result<Self, Self::Err> {
216        Ok(match s {
217            "Simple" => Self::Simple,
218            "GLSL450" => Self::GLSL450,
219            "OpenCL" => Self::OpenCL,
220            "Vulkan" => Self::Vulkan,
221            "VulkanKHR" => Self::Vulkan,
222            _ => return Err(()),
223        })
224    }
225}
226#[doc = "SPIR-V operand kind: [ExecutionMode](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_execution_mode_a_execution_mode)"]
227#[repr(u32)]
228#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
229#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
230#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
231#[allow(clippy::upper_case_acronyms)]
232pub enum ExecutionMode {
233    Invocations = 0u32,
234    SpacingEqual = 1u32,
235    SpacingFractionalEven = 2u32,
236    SpacingFractionalOdd = 3u32,
237    VertexOrderCw = 4u32,
238    VertexOrderCcw = 5u32,
239    PixelCenterInteger = 6u32,
240    OriginUpperLeft = 7u32,
241    OriginLowerLeft = 8u32,
242    EarlyFragmentTests = 9u32,
243    PointMode = 10u32,
244    Xfb = 11u32,
245    DepthReplacing = 12u32,
246    DepthGreater = 14u32,
247    DepthLess = 15u32,
248    DepthUnchanged = 16u32,
249    LocalSize = 17u32,
250    LocalSizeHint = 18u32,
251    InputPoints = 19u32,
252    InputLines = 20u32,
253    InputLinesAdjacency = 21u32,
254    Triangles = 22u32,
255    InputTrianglesAdjacency = 23u32,
256    Quads = 24u32,
257    Isolines = 25u32,
258    OutputVertices = 26u32,
259    OutputPoints = 27u32,
260    OutputLineStrip = 28u32,
261    OutputTriangleStrip = 29u32,
262    VecTypeHint = 30u32,
263    ContractionOff = 31u32,
264    Initializer = 33u32,
265    Finalizer = 34u32,
266    SubgroupSize = 35u32,
267    SubgroupsPerWorkgroup = 36u32,
268    SubgroupsPerWorkgroupId = 37u32,
269    LocalSizeId = 38u32,
270    LocalSizeHintId = 39u32,
271    NonCoherentColorAttachmentReadEXT = 4169u32,
272    NonCoherentDepthAttachmentReadEXT = 4170u32,
273    NonCoherentStencilAttachmentReadEXT = 4171u32,
274    SubgroupUniformControlFlowKHR = 4421u32,
275    PostDepthCoverage = 4446u32,
276    DenormPreserve = 4459u32,
277    DenormFlushToZero = 4460u32,
278    SignedZeroInfNanPreserve = 4461u32,
279    RoundingModeRTE = 4462u32,
280    RoundingModeRTZ = 4463u32,
281    NonCoherentTileAttachmentReadQCOM = 4489u32,
282    TileShadingRateQCOM = 4490u32,
283    EarlyAndLateFragmentTestsAMD = 5017u32,
284    StencilRefReplacingEXT = 5027u32,
285    CoalescingAMDX = 5069u32,
286    IsApiEntryAMDX = 5070u32,
287    MaxNodeRecursionAMDX = 5071u32,
288    StaticNumWorkgroupsAMDX = 5072u32,
289    ShaderIndexAMDX = 5073u32,
290    MaxNumWorkgroupsAMDX = 5077u32,
291    StencilRefUnchangedFrontAMD = 5079u32,
292    StencilRefGreaterFrontAMD = 5080u32,
293    StencilRefLessFrontAMD = 5081u32,
294    StencilRefUnchangedBackAMD = 5082u32,
295    StencilRefGreaterBackAMD = 5083u32,
296    StencilRefLessBackAMD = 5084u32,
297    QuadDerivativesKHR = 5088u32,
298    RequireFullQuadsKHR = 5089u32,
299    SharesInputWithAMDX = 5102u32,
300    OutputLinesEXT = 5269u32,
301    OutputPrimitivesEXT = 5270u32,
302    DerivativeGroupQuadsKHR = 5289u32,
303    DerivativeGroupLinearKHR = 5290u32,
304    OutputTrianglesEXT = 5298u32,
305    PixelInterlockOrderedEXT = 5366u32,
306    PixelInterlockUnorderedEXT = 5367u32,
307    SampleInterlockOrderedEXT = 5368u32,
308    SampleInterlockUnorderedEXT = 5369u32,
309    ShadingRateInterlockOrderedEXT = 5370u32,
310    ShadingRateInterlockUnorderedEXT = 5371u32,
311    Shader64BitIndexingEXT = 5427u32,
312    SharedLocalMemorySizeINTEL = 5618u32,
313    RoundingModeRTPINTEL = 5620u32,
314    RoundingModeRTNINTEL = 5621u32,
315    FloatingPointModeALTINTEL = 5622u32,
316    FloatingPointModeIEEEINTEL = 5623u32,
317    MaxWorkgroupSizeINTEL = 5893u32,
318    MaxWorkDimINTEL = 5894u32,
319    NoGlobalOffsetINTEL = 5895u32,
320    NumSIMDWorkitemsINTEL = 5896u32,
321    SchedulerTargetFmaxMhzINTEL = 5903u32,
322    MaximallyReconvergesKHR = 6023u32,
323    FPFastMathDefault = 6028u32,
324    StreamingInterfaceINTEL = 6154u32,
325    RegisterMapInterfaceINTEL = 6160u32,
326    NamedBarrierCountINTEL = 6417u32,
327    MaximumRegistersINTEL = 6461u32,
328    MaximumRegistersIdINTEL = 6462u32,
329    NamedMaximumRegistersINTEL = 6463u32,
330}
331impl ExecutionMode {
332    pub fn from_u32(n: u32) -> Option<Self> {
333        Some(match n {
334            0u32..=12u32 => unsafe { core::mem::transmute::<u32, ExecutionMode>(n) },
335            14u32..=31u32 => unsafe { core::mem::transmute::<u32, ExecutionMode>(n) },
336            33u32..=39u32 => unsafe { core::mem::transmute::<u32, ExecutionMode>(n) },
337            4169u32..=4171u32 => unsafe { core::mem::transmute::<u32, ExecutionMode>(n) },
338            4421u32 => unsafe { core::mem::transmute::<u32, ExecutionMode>(4421u32) },
339            4446u32 => unsafe { core::mem::transmute::<u32, ExecutionMode>(4446u32) },
340            4459u32..=4463u32 => unsafe { core::mem::transmute::<u32, ExecutionMode>(n) },
341            4489u32..=4490u32 => unsafe { core::mem::transmute::<u32, ExecutionMode>(n) },
342            5017u32 => unsafe { core::mem::transmute::<u32, ExecutionMode>(5017u32) },
343            5027u32 => unsafe { core::mem::transmute::<u32, ExecutionMode>(5027u32) },
344            5069u32..=5073u32 => unsafe { core::mem::transmute::<u32, ExecutionMode>(n) },
345            5077u32 => unsafe { core::mem::transmute::<u32, ExecutionMode>(5077u32) },
346            5079u32..=5084u32 => unsafe { core::mem::transmute::<u32, ExecutionMode>(n) },
347            5088u32..=5089u32 => unsafe { core::mem::transmute::<u32, ExecutionMode>(n) },
348            5102u32 => unsafe { core::mem::transmute::<u32, ExecutionMode>(5102u32) },
349            5269u32..=5270u32 => unsafe { core::mem::transmute::<u32, ExecutionMode>(n) },
350            5289u32..=5290u32 => unsafe { core::mem::transmute::<u32, ExecutionMode>(n) },
351            5298u32 => unsafe { core::mem::transmute::<u32, ExecutionMode>(5298u32) },
352            5366u32..=5371u32 => unsafe { core::mem::transmute::<u32, ExecutionMode>(n) },
353            5427u32 => unsafe { core::mem::transmute::<u32, ExecutionMode>(5427u32) },
354            5618u32 => unsafe { core::mem::transmute::<u32, ExecutionMode>(5618u32) },
355            5620u32..=5623u32 => unsafe { core::mem::transmute::<u32, ExecutionMode>(n) },
356            5893u32..=5896u32 => unsafe { core::mem::transmute::<u32, ExecutionMode>(n) },
357            5903u32 => unsafe { core::mem::transmute::<u32, ExecutionMode>(5903u32) },
358            6023u32 => unsafe { core::mem::transmute::<u32, ExecutionMode>(6023u32) },
359            6028u32 => unsafe { core::mem::transmute::<u32, ExecutionMode>(6028u32) },
360            6154u32 => unsafe { core::mem::transmute::<u32, ExecutionMode>(6154u32) },
361            6160u32 => unsafe { core::mem::transmute::<u32, ExecutionMode>(6160u32) },
362            6417u32 => unsafe { core::mem::transmute::<u32, ExecutionMode>(6417u32) },
363            6461u32..=6463u32 => unsafe { core::mem::transmute::<u32, ExecutionMode>(n) },
364            _ => return None,
365        })
366    }
367}
368#[allow(non_upper_case_globals)]
369impl ExecutionMode {
370    pub const OutputLinesNV: Self = Self::OutputLinesEXT;
371    pub const OutputPrimitivesNV: Self = Self::OutputPrimitivesEXT;
372    pub const DerivativeGroupQuadsNV: Self = Self::DerivativeGroupQuadsKHR;
373    pub const DerivativeGroupLinearNV: Self = Self::DerivativeGroupLinearKHR;
374    pub const OutputTrianglesNV: Self = Self::OutputTrianglesEXT;
375}
376impl core::str::FromStr for ExecutionMode {
377    type Err = ();
378    fn from_str(s: &str) -> Result<Self, Self::Err> {
379        Ok(match s {
380            "Invocations" => Self::Invocations,
381            "SpacingEqual" => Self::SpacingEqual,
382            "SpacingFractionalEven" => Self::SpacingFractionalEven,
383            "SpacingFractionalOdd" => Self::SpacingFractionalOdd,
384            "VertexOrderCw" => Self::VertexOrderCw,
385            "VertexOrderCcw" => Self::VertexOrderCcw,
386            "PixelCenterInteger" => Self::PixelCenterInteger,
387            "OriginUpperLeft" => Self::OriginUpperLeft,
388            "OriginLowerLeft" => Self::OriginLowerLeft,
389            "EarlyFragmentTests" => Self::EarlyFragmentTests,
390            "PointMode" => Self::PointMode,
391            "Xfb" => Self::Xfb,
392            "DepthReplacing" => Self::DepthReplacing,
393            "DepthGreater" => Self::DepthGreater,
394            "DepthLess" => Self::DepthLess,
395            "DepthUnchanged" => Self::DepthUnchanged,
396            "LocalSize" => Self::LocalSize,
397            "LocalSizeHint" => Self::LocalSizeHint,
398            "InputPoints" => Self::InputPoints,
399            "InputLines" => Self::InputLines,
400            "InputLinesAdjacency" => Self::InputLinesAdjacency,
401            "Triangles" => Self::Triangles,
402            "InputTrianglesAdjacency" => Self::InputTrianglesAdjacency,
403            "Quads" => Self::Quads,
404            "Isolines" => Self::Isolines,
405            "OutputVertices" => Self::OutputVertices,
406            "OutputPoints" => Self::OutputPoints,
407            "OutputLineStrip" => Self::OutputLineStrip,
408            "OutputTriangleStrip" => Self::OutputTriangleStrip,
409            "VecTypeHint" => Self::VecTypeHint,
410            "ContractionOff" => Self::ContractionOff,
411            "Initializer" => Self::Initializer,
412            "Finalizer" => Self::Finalizer,
413            "SubgroupSize" => Self::SubgroupSize,
414            "SubgroupsPerWorkgroup" => Self::SubgroupsPerWorkgroup,
415            "SubgroupsPerWorkgroupId" => Self::SubgroupsPerWorkgroupId,
416            "LocalSizeId" => Self::LocalSizeId,
417            "LocalSizeHintId" => Self::LocalSizeHintId,
418            "NonCoherentColorAttachmentReadEXT" => Self::NonCoherentColorAttachmentReadEXT,
419            "NonCoherentDepthAttachmentReadEXT" => Self::NonCoherentDepthAttachmentReadEXT,
420            "NonCoherentStencilAttachmentReadEXT" => Self::NonCoherentStencilAttachmentReadEXT,
421            "SubgroupUniformControlFlowKHR" => Self::SubgroupUniformControlFlowKHR,
422            "PostDepthCoverage" => Self::PostDepthCoverage,
423            "DenormPreserve" => Self::DenormPreserve,
424            "DenormFlushToZero" => Self::DenormFlushToZero,
425            "SignedZeroInfNanPreserve" => Self::SignedZeroInfNanPreserve,
426            "RoundingModeRTE" => Self::RoundingModeRTE,
427            "RoundingModeRTZ" => Self::RoundingModeRTZ,
428            "NonCoherentTileAttachmentReadQCOM" => Self::NonCoherentTileAttachmentReadQCOM,
429            "TileShadingRateQCOM" => Self::TileShadingRateQCOM,
430            "EarlyAndLateFragmentTestsAMD" => Self::EarlyAndLateFragmentTestsAMD,
431            "StencilRefReplacingEXT" => Self::StencilRefReplacingEXT,
432            "CoalescingAMDX" => Self::CoalescingAMDX,
433            "IsApiEntryAMDX" => Self::IsApiEntryAMDX,
434            "MaxNodeRecursionAMDX" => Self::MaxNodeRecursionAMDX,
435            "StaticNumWorkgroupsAMDX" => Self::StaticNumWorkgroupsAMDX,
436            "ShaderIndexAMDX" => Self::ShaderIndexAMDX,
437            "MaxNumWorkgroupsAMDX" => Self::MaxNumWorkgroupsAMDX,
438            "StencilRefUnchangedFrontAMD" => Self::StencilRefUnchangedFrontAMD,
439            "StencilRefGreaterFrontAMD" => Self::StencilRefGreaterFrontAMD,
440            "StencilRefLessFrontAMD" => Self::StencilRefLessFrontAMD,
441            "StencilRefUnchangedBackAMD" => Self::StencilRefUnchangedBackAMD,
442            "StencilRefGreaterBackAMD" => Self::StencilRefGreaterBackAMD,
443            "StencilRefLessBackAMD" => Self::StencilRefLessBackAMD,
444            "QuadDerivativesKHR" => Self::QuadDerivativesKHR,
445            "RequireFullQuadsKHR" => Self::RequireFullQuadsKHR,
446            "SharesInputWithAMDX" => Self::SharesInputWithAMDX,
447            "OutputLinesEXT" => Self::OutputLinesEXT,
448            "OutputLinesNV" => Self::OutputLinesEXT,
449            "OutputPrimitivesEXT" => Self::OutputPrimitivesEXT,
450            "OutputPrimitivesNV" => Self::OutputPrimitivesEXT,
451            "DerivativeGroupQuadsKHR" => Self::DerivativeGroupQuadsKHR,
452            "DerivativeGroupQuadsNV" => Self::DerivativeGroupQuadsKHR,
453            "DerivativeGroupLinearKHR" => Self::DerivativeGroupLinearKHR,
454            "DerivativeGroupLinearNV" => Self::DerivativeGroupLinearKHR,
455            "OutputTrianglesEXT" => Self::OutputTrianglesEXT,
456            "OutputTrianglesNV" => Self::OutputTrianglesEXT,
457            "PixelInterlockOrderedEXT" => Self::PixelInterlockOrderedEXT,
458            "PixelInterlockUnorderedEXT" => Self::PixelInterlockUnorderedEXT,
459            "SampleInterlockOrderedEXT" => Self::SampleInterlockOrderedEXT,
460            "SampleInterlockUnorderedEXT" => Self::SampleInterlockUnorderedEXT,
461            "ShadingRateInterlockOrderedEXT" => Self::ShadingRateInterlockOrderedEXT,
462            "ShadingRateInterlockUnorderedEXT" => Self::ShadingRateInterlockUnorderedEXT,
463            "Shader64BitIndexingEXT" => Self::Shader64BitIndexingEXT,
464            "SharedLocalMemorySizeINTEL" => Self::SharedLocalMemorySizeINTEL,
465            "RoundingModeRTPINTEL" => Self::RoundingModeRTPINTEL,
466            "RoundingModeRTNINTEL" => Self::RoundingModeRTNINTEL,
467            "FloatingPointModeALTINTEL" => Self::FloatingPointModeALTINTEL,
468            "FloatingPointModeIEEEINTEL" => Self::FloatingPointModeIEEEINTEL,
469            "MaxWorkgroupSizeINTEL" => Self::MaxWorkgroupSizeINTEL,
470            "MaxWorkDimINTEL" => Self::MaxWorkDimINTEL,
471            "NoGlobalOffsetINTEL" => Self::NoGlobalOffsetINTEL,
472            "NumSIMDWorkitemsINTEL" => Self::NumSIMDWorkitemsINTEL,
473            "SchedulerTargetFmaxMhzINTEL" => Self::SchedulerTargetFmaxMhzINTEL,
474            "MaximallyReconvergesKHR" => Self::MaximallyReconvergesKHR,
475            "FPFastMathDefault" => Self::FPFastMathDefault,
476            "StreamingInterfaceINTEL" => Self::StreamingInterfaceINTEL,
477            "RegisterMapInterfaceINTEL" => Self::RegisterMapInterfaceINTEL,
478            "NamedBarrierCountINTEL" => Self::NamedBarrierCountINTEL,
479            "MaximumRegistersINTEL" => Self::MaximumRegistersINTEL,
480            "MaximumRegistersIdINTEL" => Self::MaximumRegistersIdINTEL,
481            "NamedMaximumRegistersINTEL" => Self::NamedMaximumRegistersINTEL,
482            _ => return Err(()),
483        })
484    }
485}
486#[doc = "SPIR-V operand kind: [StorageClass](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_storage_class_a_storage_class)"]
487#[repr(u32)]
488#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
489#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
490#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
491#[allow(clippy::upper_case_acronyms)]
492pub enum StorageClass {
493    UniformConstant = 0u32,
494    Input = 1u32,
495    Uniform = 2u32,
496    Output = 3u32,
497    Workgroup = 4u32,
498    CrossWorkgroup = 5u32,
499    Private = 6u32,
500    Function = 7u32,
501    Generic = 8u32,
502    PushConstant = 9u32,
503    AtomicCounter = 10u32,
504    Image = 11u32,
505    StorageBuffer = 12u32,
506    TileImageEXT = 4172u32,
507    TileAttachmentQCOM = 4491u32,
508    NodePayloadAMDX = 5068u32,
509    CallableDataKHR = 5328u32,
510    IncomingCallableDataKHR = 5329u32,
511    RayPayloadKHR = 5338u32,
512    HitAttributeKHR = 5339u32,
513    IncomingRayPayloadKHR = 5342u32,
514    ShaderRecordBufferKHR = 5343u32,
515    PhysicalStorageBuffer = 5349u32,
516    HitObjectAttributeNV = 5385u32,
517    TaskPayloadWorkgroupEXT = 5402u32,
518    HitObjectAttributeEXT = 5411u32,
519    CodeSectionINTEL = 5605u32,
520    DeviceOnlyALTERA = 5936u32,
521    HostOnlyALTERA = 5937u32,
522}
523impl StorageClass {
524    pub fn from_u32(n: u32) -> Option<Self> {
525        Some(match n {
526            0u32..=12u32 => unsafe { core::mem::transmute::<u32, StorageClass>(n) },
527            4172u32 => unsafe { core::mem::transmute::<u32, StorageClass>(4172u32) },
528            4491u32 => unsafe { core::mem::transmute::<u32, StorageClass>(4491u32) },
529            5068u32 => unsafe { core::mem::transmute::<u32, StorageClass>(5068u32) },
530            5328u32..=5329u32 => unsafe { core::mem::transmute::<u32, StorageClass>(n) },
531            5338u32..=5339u32 => unsafe { core::mem::transmute::<u32, StorageClass>(n) },
532            5342u32..=5343u32 => unsafe { core::mem::transmute::<u32, StorageClass>(n) },
533            5349u32 => unsafe { core::mem::transmute::<u32, StorageClass>(5349u32) },
534            5385u32 => unsafe { core::mem::transmute::<u32, StorageClass>(5385u32) },
535            5402u32 => unsafe { core::mem::transmute::<u32, StorageClass>(5402u32) },
536            5411u32 => unsafe { core::mem::transmute::<u32, StorageClass>(5411u32) },
537            5605u32 => unsafe { core::mem::transmute::<u32, StorageClass>(5605u32) },
538            5936u32..=5937u32 => unsafe { core::mem::transmute::<u32, StorageClass>(n) },
539            _ => return None,
540        })
541    }
542}
543#[allow(non_upper_case_globals)]
544impl StorageClass {
545    pub const CallableDataNV: Self = Self::CallableDataKHR;
546    pub const IncomingCallableDataNV: Self = Self::IncomingCallableDataKHR;
547    pub const RayPayloadNV: Self = Self::RayPayloadKHR;
548    pub const HitAttributeNV: Self = Self::HitAttributeKHR;
549    pub const IncomingRayPayloadNV: Self = Self::IncomingRayPayloadKHR;
550    pub const ShaderRecordBufferNV: Self = Self::ShaderRecordBufferKHR;
551    pub const PhysicalStorageBufferEXT: Self = Self::PhysicalStorageBuffer;
552    pub const DeviceOnlyINTEL: Self = Self::DeviceOnlyALTERA;
553    pub const HostOnlyINTEL: Self = Self::HostOnlyALTERA;
554}
555impl core::str::FromStr for StorageClass {
556    type Err = ();
557    fn from_str(s: &str) -> Result<Self, Self::Err> {
558        Ok(match s {
559            "UniformConstant" => Self::UniformConstant,
560            "Input" => Self::Input,
561            "Uniform" => Self::Uniform,
562            "Output" => Self::Output,
563            "Workgroup" => Self::Workgroup,
564            "CrossWorkgroup" => Self::CrossWorkgroup,
565            "Private" => Self::Private,
566            "Function" => Self::Function,
567            "Generic" => Self::Generic,
568            "PushConstant" => Self::PushConstant,
569            "AtomicCounter" => Self::AtomicCounter,
570            "Image" => Self::Image,
571            "StorageBuffer" => Self::StorageBuffer,
572            "TileImageEXT" => Self::TileImageEXT,
573            "TileAttachmentQCOM" => Self::TileAttachmentQCOM,
574            "NodePayloadAMDX" => Self::NodePayloadAMDX,
575            "CallableDataKHR" => Self::CallableDataKHR,
576            "CallableDataNV" => Self::CallableDataKHR,
577            "IncomingCallableDataKHR" => Self::IncomingCallableDataKHR,
578            "IncomingCallableDataNV" => Self::IncomingCallableDataKHR,
579            "RayPayloadKHR" => Self::RayPayloadKHR,
580            "RayPayloadNV" => Self::RayPayloadKHR,
581            "HitAttributeKHR" => Self::HitAttributeKHR,
582            "HitAttributeNV" => Self::HitAttributeKHR,
583            "IncomingRayPayloadKHR" => Self::IncomingRayPayloadKHR,
584            "IncomingRayPayloadNV" => Self::IncomingRayPayloadKHR,
585            "ShaderRecordBufferKHR" => Self::ShaderRecordBufferKHR,
586            "ShaderRecordBufferNV" => Self::ShaderRecordBufferKHR,
587            "PhysicalStorageBuffer" => Self::PhysicalStorageBuffer,
588            "PhysicalStorageBufferEXT" => Self::PhysicalStorageBuffer,
589            "HitObjectAttributeNV" => Self::HitObjectAttributeNV,
590            "TaskPayloadWorkgroupEXT" => Self::TaskPayloadWorkgroupEXT,
591            "HitObjectAttributeEXT" => Self::HitObjectAttributeEXT,
592            "CodeSectionINTEL" => Self::CodeSectionINTEL,
593            "DeviceOnlyALTERA" => Self::DeviceOnlyALTERA,
594            "DeviceOnlyINTEL" => Self::DeviceOnlyALTERA,
595            "HostOnlyALTERA" => Self::HostOnlyALTERA,
596            "HostOnlyINTEL" => Self::HostOnlyALTERA,
597            _ => return Err(()),
598        })
599    }
600}
601#[doc = "SPIR-V operand kind: [Dim](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_dim_a_dim)"]
602#[repr(u32)]
603#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
604#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
605#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
606#[allow(clippy::upper_case_acronyms)]
607pub enum Dim {
608    Dim1D = 0u32,
609    Dim2D = 1u32,
610    Dim3D = 2u32,
611    DimCube = 3u32,
612    DimRect = 4u32,
613    DimBuffer = 5u32,
614    DimSubpassData = 6u32,
615    DimTileImageDataEXT = 4173u32,
616}
617impl Dim {
618    pub fn from_u32(n: u32) -> Option<Self> {
619        Some(match n {
620            0u32..=6u32 => unsafe { core::mem::transmute::<u32, Dim>(n) },
621            4173u32 => unsafe { core::mem::transmute::<u32, Dim>(4173u32) },
622            _ => return None,
623        })
624    }
625}
626#[allow(non_upper_case_globals)]
627impl Dim {}
628impl core::str::FromStr for Dim {
629    type Err = ();
630    fn from_str(s: &str) -> Result<Self, Self::Err> {
631        Ok(match s {
632            "Dim1D" => Self::Dim1D,
633            "Dim2D" => Self::Dim2D,
634            "Dim3D" => Self::Dim3D,
635            "DimCube" => Self::DimCube,
636            "DimRect" => Self::DimRect,
637            "DimBuffer" => Self::DimBuffer,
638            "DimSubpassData" => Self::DimSubpassData,
639            "DimTileImageDataEXT" => Self::DimTileImageDataEXT,
640            _ => return Err(()),
641        })
642    }
643}
644#[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)"]
645#[repr(u32)]
646#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
647#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
648#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
649#[allow(clippy::upper_case_acronyms)]
650pub enum SamplerAddressingMode {
651    None = 0u32,
652    ClampToEdge = 1u32,
653    Clamp = 2u32,
654    Repeat = 3u32,
655    RepeatMirrored = 4u32,
656}
657impl SamplerAddressingMode {
658    pub fn from_u32(n: u32) -> Option<Self> {
659        Some(match n {
660            0u32..=4u32 => unsafe { core::mem::transmute::<u32, SamplerAddressingMode>(n) },
661            _ => return None,
662        })
663    }
664}
665#[allow(non_upper_case_globals)]
666impl SamplerAddressingMode {}
667impl core::str::FromStr for SamplerAddressingMode {
668    type Err = ();
669    fn from_str(s: &str) -> Result<Self, Self::Err> {
670        Ok(match s {
671            "None" => Self::None,
672            "ClampToEdge" => Self::ClampToEdge,
673            "Clamp" => Self::Clamp,
674            "Repeat" => Self::Repeat,
675            "RepeatMirrored" => Self::RepeatMirrored,
676            _ => return Err(()),
677        })
678    }
679}
680#[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)"]
681#[repr(u32)]
682#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
683#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
684#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
685#[allow(clippy::upper_case_acronyms)]
686pub enum SamplerFilterMode {
687    Nearest = 0u32,
688    Linear = 1u32,
689}
690impl SamplerFilterMode {
691    pub fn from_u32(n: u32) -> Option<Self> {
692        Some(match n {
693            0u32..=1u32 => unsafe { core::mem::transmute::<u32, SamplerFilterMode>(n) },
694            _ => return None,
695        })
696    }
697}
698#[allow(non_upper_case_globals)]
699impl SamplerFilterMode {}
700impl core::str::FromStr for SamplerFilterMode {
701    type Err = ();
702    fn from_str(s: &str) -> Result<Self, Self::Err> {
703        Ok(match s {
704            "Nearest" => Self::Nearest,
705            "Linear" => Self::Linear,
706            _ => return Err(()),
707        })
708    }
709}
710#[doc = "SPIR-V operand kind: [ImageFormat](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_image_format_a_image_format)"]
711#[repr(u32)]
712#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
713#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
714#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
715#[allow(clippy::upper_case_acronyms)]
716pub enum ImageFormat {
717    Unknown = 0u32,
718    Rgba32f = 1u32,
719    Rgba16f = 2u32,
720    R32f = 3u32,
721    Rgba8 = 4u32,
722    Rgba8Snorm = 5u32,
723    Rg32f = 6u32,
724    Rg16f = 7u32,
725    R11fG11fB10f = 8u32,
726    R16f = 9u32,
727    Rgba16 = 10u32,
728    Rgb10A2 = 11u32,
729    Rg16 = 12u32,
730    Rg8 = 13u32,
731    R16 = 14u32,
732    R8 = 15u32,
733    Rgba16Snorm = 16u32,
734    Rg16Snorm = 17u32,
735    Rg8Snorm = 18u32,
736    R16Snorm = 19u32,
737    R8Snorm = 20u32,
738    Rgba32i = 21u32,
739    Rgba16i = 22u32,
740    Rgba8i = 23u32,
741    R32i = 24u32,
742    Rg32i = 25u32,
743    Rg16i = 26u32,
744    Rg8i = 27u32,
745    R16i = 28u32,
746    R8i = 29u32,
747    Rgba32ui = 30u32,
748    Rgba16ui = 31u32,
749    Rgba8ui = 32u32,
750    R32ui = 33u32,
751    Rgb10a2ui = 34u32,
752    Rg32ui = 35u32,
753    Rg16ui = 36u32,
754    Rg8ui = 37u32,
755    R16ui = 38u32,
756    R8ui = 39u32,
757    R64ui = 40u32,
758    R64i = 41u32,
759}
760impl ImageFormat {
761    pub fn from_u32(n: u32) -> Option<Self> {
762        Some(match n {
763            0u32..=41u32 => unsafe { core::mem::transmute::<u32, ImageFormat>(n) },
764            _ => return None,
765        })
766    }
767}
768#[allow(non_upper_case_globals)]
769impl ImageFormat {}
770impl core::str::FromStr for ImageFormat {
771    type Err = ();
772    fn from_str(s: &str) -> Result<Self, Self::Err> {
773        Ok(match s {
774            "Unknown" => Self::Unknown,
775            "Rgba32f" => Self::Rgba32f,
776            "Rgba16f" => Self::Rgba16f,
777            "R32f" => Self::R32f,
778            "Rgba8" => Self::Rgba8,
779            "Rgba8Snorm" => Self::Rgba8Snorm,
780            "Rg32f" => Self::Rg32f,
781            "Rg16f" => Self::Rg16f,
782            "R11fG11fB10f" => Self::R11fG11fB10f,
783            "R16f" => Self::R16f,
784            "Rgba16" => Self::Rgba16,
785            "Rgb10A2" => Self::Rgb10A2,
786            "Rg16" => Self::Rg16,
787            "Rg8" => Self::Rg8,
788            "R16" => Self::R16,
789            "R8" => Self::R8,
790            "Rgba16Snorm" => Self::Rgba16Snorm,
791            "Rg16Snorm" => Self::Rg16Snorm,
792            "Rg8Snorm" => Self::Rg8Snorm,
793            "R16Snorm" => Self::R16Snorm,
794            "R8Snorm" => Self::R8Snorm,
795            "Rgba32i" => Self::Rgba32i,
796            "Rgba16i" => Self::Rgba16i,
797            "Rgba8i" => Self::Rgba8i,
798            "R32i" => Self::R32i,
799            "Rg32i" => Self::Rg32i,
800            "Rg16i" => Self::Rg16i,
801            "Rg8i" => Self::Rg8i,
802            "R16i" => Self::R16i,
803            "R8i" => Self::R8i,
804            "Rgba32ui" => Self::Rgba32ui,
805            "Rgba16ui" => Self::Rgba16ui,
806            "Rgba8ui" => Self::Rgba8ui,
807            "R32ui" => Self::R32ui,
808            "Rgb10a2ui" => Self::Rgb10a2ui,
809            "Rg32ui" => Self::Rg32ui,
810            "Rg16ui" => Self::Rg16ui,
811            "Rg8ui" => Self::Rg8ui,
812            "R16ui" => Self::R16ui,
813            "R8ui" => Self::R8ui,
814            "R64ui" => Self::R64ui,
815            "R64i" => Self::R64i,
816            _ => return Err(()),
817        })
818    }
819}
820#[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)"]
821#[repr(u32)]
822#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
823#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
824#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
825#[allow(clippy::upper_case_acronyms)]
826pub enum ImageChannelOrder {
827    R = 0u32,
828    A = 1u32,
829    RG = 2u32,
830    RA = 3u32,
831    RGB = 4u32,
832    RGBA = 5u32,
833    BGRA = 6u32,
834    ARGB = 7u32,
835    Intensity = 8u32,
836    Luminance = 9u32,
837    Rx = 10u32,
838    RGx = 11u32,
839    RGBx = 12u32,
840    Depth = 13u32,
841    DepthStencil = 14u32,
842    sRGB = 15u32,
843    sRGBx = 16u32,
844    sRGBA = 17u32,
845    sBGRA = 18u32,
846    ABGR = 19u32,
847}
848impl ImageChannelOrder {
849    pub fn from_u32(n: u32) -> Option<Self> {
850        Some(match n {
851            0u32..=19u32 => unsafe { core::mem::transmute::<u32, ImageChannelOrder>(n) },
852            _ => return None,
853        })
854    }
855}
856#[allow(non_upper_case_globals)]
857impl ImageChannelOrder {}
858impl core::str::FromStr for ImageChannelOrder {
859    type Err = ();
860    fn from_str(s: &str) -> Result<Self, Self::Err> {
861        Ok(match s {
862            "R" => Self::R,
863            "A" => Self::A,
864            "RG" => Self::RG,
865            "RA" => Self::RA,
866            "RGB" => Self::RGB,
867            "RGBA" => Self::RGBA,
868            "BGRA" => Self::BGRA,
869            "ARGB" => Self::ARGB,
870            "Intensity" => Self::Intensity,
871            "Luminance" => Self::Luminance,
872            "Rx" => Self::Rx,
873            "RGx" => Self::RGx,
874            "RGBx" => Self::RGBx,
875            "Depth" => Self::Depth,
876            "DepthStencil" => Self::DepthStencil,
877            "sRGB" => Self::sRGB,
878            "sRGBx" => Self::sRGBx,
879            "sRGBA" => Self::sRGBA,
880            "sBGRA" => Self::sBGRA,
881            "ABGR" => Self::ABGR,
882            _ => return Err(()),
883        })
884    }
885}
886#[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)"]
887#[repr(u32)]
888#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
889#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
890#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
891#[allow(clippy::upper_case_acronyms)]
892pub enum ImageChannelDataType {
893    SnormInt8 = 0u32,
894    SnormInt16 = 1u32,
895    UnormInt8 = 2u32,
896    UnormInt16 = 3u32,
897    UnormShort565 = 4u32,
898    UnormShort555 = 5u32,
899    UnormInt101010 = 6u32,
900    SignedInt8 = 7u32,
901    SignedInt16 = 8u32,
902    SignedInt32 = 9u32,
903    UnsignedInt8 = 10u32,
904    UnsignedInt16 = 11u32,
905    UnsignedInt32 = 12u32,
906    HalfFloat = 13u32,
907    Float = 14u32,
908    UnormInt24 = 15u32,
909    UnormInt101010_2 = 16u32,
910    UnormInt10X6EXT = 17u32,
911    UnsignedIntRaw10EXT = 19u32,
912    UnsignedIntRaw12EXT = 20u32,
913    UnormInt2_101010EXT = 21u32,
914    UnsignedInt10X6EXT = 22u32,
915    UnsignedInt12X4EXT = 23u32,
916    UnsignedInt14X2EXT = 24u32,
917    UnormInt12X4EXT = 25u32,
918    UnormInt14X2EXT = 26u32,
919}
920impl ImageChannelDataType {
921    pub fn from_u32(n: u32) -> Option<Self> {
922        Some(match n {
923            0u32..=17u32 => unsafe { core::mem::transmute::<u32, ImageChannelDataType>(n) },
924            19u32..=26u32 => unsafe { core::mem::transmute::<u32, ImageChannelDataType>(n) },
925            _ => return None,
926        })
927    }
928}
929#[allow(non_upper_case_globals)]
930impl ImageChannelDataType {}
931impl core::str::FromStr for ImageChannelDataType {
932    type Err = ();
933    fn from_str(s: &str) -> Result<Self, Self::Err> {
934        Ok(match s {
935            "SnormInt8" => Self::SnormInt8,
936            "SnormInt16" => Self::SnormInt16,
937            "UnormInt8" => Self::UnormInt8,
938            "UnormInt16" => Self::UnormInt16,
939            "UnormShort565" => Self::UnormShort565,
940            "UnormShort555" => Self::UnormShort555,
941            "UnormInt101010" => Self::UnormInt101010,
942            "SignedInt8" => Self::SignedInt8,
943            "SignedInt16" => Self::SignedInt16,
944            "SignedInt32" => Self::SignedInt32,
945            "UnsignedInt8" => Self::UnsignedInt8,
946            "UnsignedInt16" => Self::UnsignedInt16,
947            "UnsignedInt32" => Self::UnsignedInt32,
948            "HalfFloat" => Self::HalfFloat,
949            "Float" => Self::Float,
950            "UnormInt24" => Self::UnormInt24,
951            "UnormInt101010_2" => Self::UnormInt101010_2,
952            "UnormInt10X6EXT" => Self::UnormInt10X6EXT,
953            "UnsignedIntRaw10EXT" => Self::UnsignedIntRaw10EXT,
954            "UnsignedIntRaw12EXT" => Self::UnsignedIntRaw12EXT,
955            "UnormInt2_101010EXT" => Self::UnormInt2_101010EXT,
956            "UnsignedInt10X6EXT" => Self::UnsignedInt10X6EXT,
957            "UnsignedInt12X4EXT" => Self::UnsignedInt12X4EXT,
958            "UnsignedInt14X2EXT" => Self::UnsignedInt14X2EXT,
959            "UnormInt12X4EXT" => Self::UnormInt12X4EXT,
960            "UnormInt14X2EXT" => Self::UnormInt14X2EXT,
961            _ => return Err(()),
962        })
963    }
964}
965#[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)"]
966#[repr(u32)]
967#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
968#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
969#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
970#[allow(clippy::upper_case_acronyms)]
971pub enum FPRoundingMode {
972    RTE = 0u32,
973    RTZ = 1u32,
974    RTP = 2u32,
975    RTN = 3u32,
976}
977impl FPRoundingMode {
978    pub fn from_u32(n: u32) -> Option<Self> {
979        Some(match n {
980            0u32..=3u32 => unsafe { core::mem::transmute::<u32, FPRoundingMode>(n) },
981            _ => return None,
982        })
983    }
984}
985#[allow(non_upper_case_globals)]
986impl FPRoundingMode {}
987impl core::str::FromStr for FPRoundingMode {
988    type Err = ();
989    fn from_str(s: &str) -> Result<Self, Self::Err> {
990        Ok(match s {
991            "RTE" => Self::RTE,
992            "RTZ" => Self::RTZ,
993            "RTP" => Self::RTP,
994            "RTN" => Self::RTN,
995            _ => return Err(()),
996        })
997    }
998}
999#[doc = "SPIR-V operand kind: [FPDenormMode](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_fp_denorm_mode_a_fp_denorm_mode)"]
1000#[repr(u32)]
1001#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
1002#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
1003#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
1004#[allow(clippy::upper_case_acronyms)]
1005pub enum FPDenormMode {
1006    Preserve = 0u32,
1007    FlushToZero = 1u32,
1008}
1009impl FPDenormMode {
1010    pub fn from_u32(n: u32) -> Option<Self> {
1011        Some(match n {
1012            0u32..=1u32 => unsafe { core::mem::transmute::<u32, FPDenormMode>(n) },
1013            _ => return None,
1014        })
1015    }
1016}
1017#[allow(non_upper_case_globals)]
1018impl FPDenormMode {}
1019impl core::str::FromStr for FPDenormMode {
1020    type Err = ();
1021    fn from_str(s: &str) -> Result<Self, Self::Err> {
1022        Ok(match s {
1023            "Preserve" => Self::Preserve,
1024            "FlushToZero" => Self::FlushToZero,
1025            _ => return Err(()),
1026        })
1027    }
1028}
1029#[doc = "SPIR-V operand kind: [QuantizationModes](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_quantization_modes_a_quantization_modes)"]
1030#[repr(u32)]
1031#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
1032#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
1033#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
1034#[allow(clippy::upper_case_acronyms)]
1035pub enum QuantizationModes {
1036    TRN = 0u32,
1037    TRN_ZERO = 1u32,
1038    RND = 2u32,
1039    RND_ZERO = 3u32,
1040    RND_INF = 4u32,
1041    RND_MIN_INF = 5u32,
1042    RND_CONV = 6u32,
1043    RND_CONV_ODD = 7u32,
1044}
1045impl QuantizationModes {
1046    pub fn from_u32(n: u32) -> Option<Self> {
1047        Some(match n {
1048            0u32..=7u32 => unsafe { core::mem::transmute::<u32, QuantizationModes>(n) },
1049            _ => return None,
1050        })
1051    }
1052}
1053#[allow(non_upper_case_globals)]
1054impl QuantizationModes {}
1055impl core::str::FromStr for QuantizationModes {
1056    type Err = ();
1057    fn from_str(s: &str) -> Result<Self, Self::Err> {
1058        Ok(match s {
1059            "TRN" => Self::TRN,
1060            "TRN_ZERO" => Self::TRN_ZERO,
1061            "RND" => Self::RND,
1062            "RND_ZERO" => Self::RND_ZERO,
1063            "RND_INF" => Self::RND_INF,
1064            "RND_MIN_INF" => Self::RND_MIN_INF,
1065            "RND_CONV" => Self::RND_CONV,
1066            "RND_CONV_ODD" => Self::RND_CONV_ODD,
1067            _ => return Err(()),
1068        })
1069    }
1070}
1071#[doc = "SPIR-V operand kind: [FPOperationMode](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_fp_operation_mode_a_fp_operation_mode)"]
1072#[repr(u32)]
1073#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
1074#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
1075#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
1076#[allow(clippy::upper_case_acronyms)]
1077pub enum FPOperationMode {
1078    IEEE = 0u32,
1079    ALT = 1u32,
1080}
1081impl FPOperationMode {
1082    pub fn from_u32(n: u32) -> Option<Self> {
1083        Some(match n {
1084            0u32..=1u32 => unsafe { core::mem::transmute::<u32, FPOperationMode>(n) },
1085            _ => return None,
1086        })
1087    }
1088}
1089#[allow(non_upper_case_globals)]
1090impl FPOperationMode {}
1091impl core::str::FromStr for FPOperationMode {
1092    type Err = ();
1093    fn from_str(s: &str) -> Result<Self, Self::Err> {
1094        Ok(match s {
1095            "IEEE" => Self::IEEE,
1096            "ALT" => Self::ALT,
1097            _ => return Err(()),
1098        })
1099    }
1100}
1101#[doc = "SPIR-V operand kind: [OverflowModes](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_overflow_modes_a_overflow_modes)"]
1102#[repr(u32)]
1103#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
1104#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
1105#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
1106#[allow(clippy::upper_case_acronyms)]
1107pub enum OverflowModes {
1108    WRAP = 0u32,
1109    SAT = 1u32,
1110    SAT_ZERO = 2u32,
1111    SAT_SYM = 3u32,
1112}
1113impl OverflowModes {
1114    pub fn from_u32(n: u32) -> Option<Self> {
1115        Some(match n {
1116            0u32..=3u32 => unsafe { core::mem::transmute::<u32, OverflowModes>(n) },
1117            _ => return None,
1118        })
1119    }
1120}
1121#[allow(non_upper_case_globals)]
1122impl OverflowModes {}
1123impl core::str::FromStr for OverflowModes {
1124    type Err = ();
1125    fn from_str(s: &str) -> Result<Self, Self::Err> {
1126        Ok(match s {
1127            "WRAP" => Self::WRAP,
1128            "SAT" => Self::SAT,
1129            "SAT_ZERO" => Self::SAT_ZERO,
1130            "SAT_SYM" => Self::SAT_SYM,
1131            _ => return Err(()),
1132        })
1133    }
1134}
1135#[doc = "SPIR-V operand kind: [LinkageType](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_linkage_type_a_linkage_type)"]
1136#[repr(u32)]
1137#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
1138#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
1139#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
1140#[allow(clippy::upper_case_acronyms)]
1141pub enum LinkageType {
1142    Export = 0u32,
1143    Import = 1u32,
1144    LinkOnceODR = 2u32,
1145}
1146impl LinkageType {
1147    pub fn from_u32(n: u32) -> Option<Self> {
1148        Some(match n {
1149            0u32..=2u32 => unsafe { core::mem::transmute::<u32, LinkageType>(n) },
1150            _ => return None,
1151        })
1152    }
1153}
1154#[allow(non_upper_case_globals)]
1155impl LinkageType {}
1156impl core::str::FromStr for LinkageType {
1157    type Err = ();
1158    fn from_str(s: &str) -> Result<Self, Self::Err> {
1159        Ok(match s {
1160            "Export" => Self::Export,
1161            "Import" => Self::Import,
1162            "LinkOnceODR" => Self::LinkOnceODR,
1163            _ => return Err(()),
1164        })
1165    }
1166}
1167#[doc = "SPIR-V operand kind: [AccessQualifier](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_access_qualifier_a_access_qualifier)"]
1168#[repr(u32)]
1169#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
1170#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
1171#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
1172#[allow(clippy::upper_case_acronyms)]
1173pub enum AccessQualifier {
1174    ReadOnly = 0u32,
1175    WriteOnly = 1u32,
1176    ReadWrite = 2u32,
1177}
1178impl AccessQualifier {
1179    pub fn from_u32(n: u32) -> Option<Self> {
1180        Some(match n {
1181            0u32..=2u32 => unsafe { core::mem::transmute::<u32, AccessQualifier>(n) },
1182            _ => return None,
1183        })
1184    }
1185}
1186#[allow(non_upper_case_globals)]
1187impl AccessQualifier {}
1188impl core::str::FromStr for AccessQualifier {
1189    type Err = ();
1190    fn from_str(s: &str) -> Result<Self, Self::Err> {
1191        Ok(match s {
1192            "ReadOnly" => Self::ReadOnly,
1193            "WriteOnly" => Self::WriteOnly,
1194            "ReadWrite" => Self::ReadWrite,
1195            _ => return Err(()),
1196        })
1197    }
1198}
1199#[doc = "SPIR-V operand kind: [HostAccessQualifier](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_host_access_qualifier_a_host_access_qualifier)"]
1200#[repr(u32)]
1201#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
1202#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
1203#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
1204#[allow(clippy::upper_case_acronyms)]
1205pub enum HostAccessQualifier {
1206    NoneINTEL = 0u32,
1207    ReadINTEL = 1u32,
1208    WriteINTEL = 2u32,
1209    ReadWriteINTEL = 3u32,
1210}
1211impl HostAccessQualifier {
1212    pub fn from_u32(n: u32) -> Option<Self> {
1213        Some(match n {
1214            0u32..=3u32 => unsafe { core::mem::transmute::<u32, HostAccessQualifier>(n) },
1215            _ => return None,
1216        })
1217    }
1218}
1219#[allow(non_upper_case_globals)]
1220impl HostAccessQualifier {}
1221impl core::str::FromStr for HostAccessQualifier {
1222    type Err = ();
1223    fn from_str(s: &str) -> Result<Self, Self::Err> {
1224        Ok(match s {
1225            "NoneINTEL" => Self::NoneINTEL,
1226            "ReadINTEL" => Self::ReadINTEL,
1227            "WriteINTEL" => Self::WriteINTEL,
1228            "ReadWriteINTEL" => Self::ReadWriteINTEL,
1229            _ => return Err(()),
1230        })
1231    }
1232}
1233#[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)"]
1234#[repr(u32)]
1235#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
1236#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
1237#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
1238#[allow(clippy::upper_case_acronyms)]
1239pub enum FunctionParameterAttribute {
1240    Zext = 0u32,
1241    Sext = 1u32,
1242    ByVal = 2u32,
1243    Sret = 3u32,
1244    NoAlias = 4u32,
1245    NoCapture = 5u32,
1246    NoWrite = 6u32,
1247    NoReadWrite = 7u32,
1248    RuntimeAlignedALTERA = 5940u32,
1249}
1250impl FunctionParameterAttribute {
1251    pub fn from_u32(n: u32) -> Option<Self> {
1252        Some(match n {
1253            0u32..=7u32 => unsafe { core::mem::transmute::<u32, FunctionParameterAttribute>(n) },
1254            5940u32 => unsafe { core::mem::transmute::<u32, FunctionParameterAttribute>(5940u32) },
1255            _ => return None,
1256        })
1257    }
1258}
1259#[allow(non_upper_case_globals)]
1260impl FunctionParameterAttribute {
1261    pub const RuntimeAlignedINTEL: Self = Self::RuntimeAlignedALTERA;
1262}
1263impl core::str::FromStr for FunctionParameterAttribute {
1264    type Err = ();
1265    fn from_str(s: &str) -> Result<Self, Self::Err> {
1266        Ok(match s {
1267            "Zext" => Self::Zext,
1268            "Sext" => Self::Sext,
1269            "ByVal" => Self::ByVal,
1270            "Sret" => Self::Sret,
1271            "NoAlias" => Self::NoAlias,
1272            "NoCapture" => Self::NoCapture,
1273            "NoWrite" => Self::NoWrite,
1274            "NoReadWrite" => Self::NoReadWrite,
1275            "RuntimeAlignedALTERA" => Self::RuntimeAlignedALTERA,
1276            "RuntimeAlignedINTEL" => Self::RuntimeAlignedALTERA,
1277            _ => return Err(()),
1278        })
1279    }
1280}
1281#[doc = "SPIR-V operand kind: [Decoration](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_decoration_a_decoration)"]
1282#[repr(u32)]
1283#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
1284#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
1285#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
1286#[allow(clippy::upper_case_acronyms)]
1287pub enum Decoration {
1288    RelaxedPrecision = 0u32,
1289    SpecId = 1u32,
1290    Block = 2u32,
1291    BufferBlock = 3u32,
1292    RowMajor = 4u32,
1293    ColMajor = 5u32,
1294    ArrayStride = 6u32,
1295    MatrixStride = 7u32,
1296    GLSLShared = 8u32,
1297    GLSLPacked = 9u32,
1298    CPacked = 10u32,
1299    BuiltIn = 11u32,
1300    NoPerspective = 13u32,
1301    Flat = 14u32,
1302    Patch = 15u32,
1303    Centroid = 16u32,
1304    Sample = 17u32,
1305    Invariant = 18u32,
1306    Restrict = 19u32,
1307    Aliased = 20u32,
1308    Volatile = 21u32,
1309    Constant = 22u32,
1310    Coherent = 23u32,
1311    NonWritable = 24u32,
1312    NonReadable = 25u32,
1313    Uniform = 26u32,
1314    UniformId = 27u32,
1315    SaturatedConversion = 28u32,
1316    Stream = 29u32,
1317    Location = 30u32,
1318    Component = 31u32,
1319    Index = 32u32,
1320    Binding = 33u32,
1321    DescriptorSet = 34u32,
1322    Offset = 35u32,
1323    XfbBuffer = 36u32,
1324    XfbStride = 37u32,
1325    FuncParamAttr = 38u32,
1326    FPRoundingMode = 39u32,
1327    FPFastMathMode = 40u32,
1328    LinkageAttributes = 41u32,
1329    NoContraction = 42u32,
1330    InputAttachmentIndex = 43u32,
1331    Alignment = 44u32,
1332    MaxByteOffset = 45u32,
1333    AlignmentId = 46u32,
1334    MaxByteOffsetId = 47u32,
1335    SaturatedToLargestFloat8NormalConversionEXT = 4216u32,
1336    NoSignedWrap = 4469u32,
1337    NoUnsignedWrap = 4470u32,
1338    WeightTextureQCOM = 4487u32,
1339    BlockMatchTextureQCOM = 4488u32,
1340    BlockMatchSamplerQCOM = 4499u32,
1341    ExplicitInterpAMD = 4999u32,
1342    NodeSharesPayloadLimitsWithAMDX = 5019u32,
1343    NodeMaxPayloadsAMDX = 5020u32,
1344    TrackFinishWritingAMDX = 5078u32,
1345    PayloadNodeNameAMDX = 5091u32,
1346    PayloadNodeBaseIndexAMDX = 5098u32,
1347    PayloadNodeSparseArrayAMDX = 5099u32,
1348    PayloadNodeArraySizeAMDX = 5100u32,
1349    PayloadDispatchIndirectAMDX = 5105u32,
1350    ArrayStrideIdEXT = 5124u32,
1351    OffsetIdEXT = 5125u32,
1352    OverrideCoverageNV = 5248u32,
1353    PassthroughNV = 5250u32,
1354    ViewportRelativeNV = 5252u32,
1355    SecondaryViewportRelativeNV = 5256u32,
1356    PerPrimitiveEXT = 5271u32,
1357    PerViewNV = 5272u32,
1358    PerTaskNV = 5273u32,
1359    PerVertexKHR = 5285u32,
1360    NonUniform = 5300u32,
1361    RestrictPointer = 5355u32,
1362    AliasedPointer = 5356u32,
1363    MemberOffsetNV = 5358u32,
1364    HitObjectShaderRecordBufferNV = 5386u32,
1365    HitObjectShaderRecordBufferEXT = 5389u32,
1366    BankNV = 5397u32,
1367    BindlessSamplerNV = 5398u32,
1368    BindlessImageNV = 5399u32,
1369    BoundSamplerNV = 5400u32,
1370    BoundImageNV = 5401u32,
1371    SIMTCallINTEL = 5599u32,
1372    ReferencedIndirectlyINTEL = 5602u32,
1373    ClobberINTEL = 5607u32,
1374    SideEffectsINTEL = 5608u32,
1375    VectorComputeVariableINTEL = 5624u32,
1376    FuncParamIOKindINTEL = 5625u32,
1377    VectorComputeFunctionINTEL = 5626u32,
1378    StackCallINTEL = 5627u32,
1379    GlobalVariableOffsetINTEL = 5628u32,
1380    CounterBuffer = 5634u32,
1381    UserSemantic = 5635u32,
1382    UserTypeGOOGLE = 5636u32,
1383    FunctionRoundingModeINTEL = 5822u32,
1384    FunctionDenormModeINTEL = 5823u32,
1385    RegisterALTERA = 5825u32,
1386    MemoryALTERA = 5826u32,
1387    NumbanksALTERA = 5827u32,
1388    BankwidthALTERA = 5828u32,
1389    MaxPrivateCopiesALTERA = 5829u32,
1390    SinglepumpALTERA = 5830u32,
1391    DoublepumpALTERA = 5831u32,
1392    MaxReplicatesALTERA = 5832u32,
1393    SimpleDualPortALTERA = 5833u32,
1394    MergeALTERA = 5834u32,
1395    BankBitsALTERA = 5835u32,
1396    ForcePow2DepthALTERA = 5836u32,
1397    StridesizeALTERA = 5883u32,
1398    WordsizeALTERA = 5884u32,
1399    TrueDualPortALTERA = 5885u32,
1400    BurstCoalesceALTERA = 5899u32,
1401    CacheSizeALTERA = 5900u32,
1402    DontStaticallyCoalesceALTERA = 5901u32,
1403    PrefetchALTERA = 5902u32,
1404    StallEnableALTERA = 5905u32,
1405    FuseLoopsInFunctionALTERA = 5907u32,
1406    MathOpDSPModeALTERA = 5909u32,
1407    AliasScopeINTEL = 5914u32,
1408    NoAliasINTEL = 5915u32,
1409    InitiationIntervalALTERA = 5917u32,
1410    MaxConcurrencyALTERA = 5918u32,
1411    PipelineEnableALTERA = 5919u32,
1412    BufferLocationALTERA = 5921u32,
1413    IOPipeStorageALTERA = 5944u32,
1414    FunctionFloatingPointModeINTEL = 6080u32,
1415    SingleElementVectorINTEL = 6085u32,
1416    VectorComputeCallableFunctionINTEL = 6087u32,
1417    MediaBlockIOINTEL = 6140u32,
1418    StallFreeALTERA = 6151u32,
1419    FPMaxErrorDecorationINTEL = 6170u32,
1420    LatencyControlLabelALTERA = 6172u32,
1421    LatencyControlConstraintALTERA = 6173u32,
1422    ConduitKernelArgumentALTERA = 6175u32,
1423    RegisterMapKernelArgumentALTERA = 6176u32,
1424    MMHostInterfaceAddressWidthALTERA = 6177u32,
1425    MMHostInterfaceDataWidthALTERA = 6178u32,
1426    MMHostInterfaceLatencyALTERA = 6179u32,
1427    MMHostInterfaceReadWriteModeALTERA = 6180u32,
1428    MMHostInterfaceMaxBurstALTERA = 6181u32,
1429    MMHostInterfaceWaitRequestALTERA = 6182u32,
1430    StableKernelArgumentALTERA = 6183u32,
1431    HostAccessINTEL = 6188u32,
1432    InitModeALTERA = 6190u32,
1433    ImplementInRegisterMapALTERA = 6191u32,
1434    ConditionalINTEL = 6247u32,
1435    CacheControlLoadINTEL = 6442u32,
1436    CacheControlStoreINTEL = 6443u32,
1437}
1438impl Decoration {
1439    pub fn from_u32(n: u32) -> Option<Self> {
1440        Some(match n {
1441            0u32..=11u32 => unsafe { core::mem::transmute::<u32, Decoration>(n) },
1442            13u32..=47u32 => unsafe { core::mem::transmute::<u32, Decoration>(n) },
1443            4216u32 => unsafe { core::mem::transmute::<u32, Decoration>(4216u32) },
1444            4469u32..=4470u32 => unsafe { core::mem::transmute::<u32, Decoration>(n) },
1445            4487u32..=4488u32 => unsafe { core::mem::transmute::<u32, Decoration>(n) },
1446            4499u32 => unsafe { core::mem::transmute::<u32, Decoration>(4499u32) },
1447            4999u32 => unsafe { core::mem::transmute::<u32, Decoration>(4999u32) },
1448            5019u32..=5020u32 => unsafe { core::mem::transmute::<u32, Decoration>(n) },
1449            5078u32 => unsafe { core::mem::transmute::<u32, Decoration>(5078u32) },
1450            5091u32 => unsafe { core::mem::transmute::<u32, Decoration>(5091u32) },
1451            5098u32..=5100u32 => unsafe { core::mem::transmute::<u32, Decoration>(n) },
1452            5105u32 => unsafe { core::mem::transmute::<u32, Decoration>(5105u32) },
1453            5124u32..=5125u32 => unsafe { core::mem::transmute::<u32, Decoration>(n) },
1454            5248u32 => unsafe { core::mem::transmute::<u32, Decoration>(5248u32) },
1455            5250u32 => unsafe { core::mem::transmute::<u32, Decoration>(5250u32) },
1456            5252u32 => unsafe { core::mem::transmute::<u32, Decoration>(5252u32) },
1457            5256u32 => unsafe { core::mem::transmute::<u32, Decoration>(5256u32) },
1458            5271u32..=5273u32 => unsafe { core::mem::transmute::<u32, Decoration>(n) },
1459            5285u32 => unsafe { core::mem::transmute::<u32, Decoration>(5285u32) },
1460            5300u32 => unsafe { core::mem::transmute::<u32, Decoration>(5300u32) },
1461            5355u32..=5356u32 => unsafe { core::mem::transmute::<u32, Decoration>(n) },
1462            5358u32 => unsafe { core::mem::transmute::<u32, Decoration>(5358u32) },
1463            5386u32 => unsafe { core::mem::transmute::<u32, Decoration>(5386u32) },
1464            5389u32 => unsafe { core::mem::transmute::<u32, Decoration>(5389u32) },
1465            5397u32..=5401u32 => unsafe { core::mem::transmute::<u32, Decoration>(n) },
1466            5599u32 => unsafe { core::mem::transmute::<u32, Decoration>(5599u32) },
1467            5602u32 => unsafe { core::mem::transmute::<u32, Decoration>(5602u32) },
1468            5607u32..=5608u32 => unsafe { core::mem::transmute::<u32, Decoration>(n) },
1469            5624u32..=5628u32 => unsafe { core::mem::transmute::<u32, Decoration>(n) },
1470            5634u32..=5636u32 => unsafe { core::mem::transmute::<u32, Decoration>(n) },
1471            5822u32..=5823u32 => unsafe { core::mem::transmute::<u32, Decoration>(n) },
1472            5825u32..=5836u32 => unsafe { core::mem::transmute::<u32, Decoration>(n) },
1473            5883u32..=5885u32 => unsafe { core::mem::transmute::<u32, Decoration>(n) },
1474            5899u32..=5902u32 => unsafe { core::mem::transmute::<u32, Decoration>(n) },
1475            5905u32 => unsafe { core::mem::transmute::<u32, Decoration>(5905u32) },
1476            5907u32 => unsafe { core::mem::transmute::<u32, Decoration>(5907u32) },
1477            5909u32 => unsafe { core::mem::transmute::<u32, Decoration>(5909u32) },
1478            5914u32..=5915u32 => unsafe { core::mem::transmute::<u32, Decoration>(n) },
1479            5917u32..=5919u32 => unsafe { core::mem::transmute::<u32, Decoration>(n) },
1480            5921u32 => unsafe { core::mem::transmute::<u32, Decoration>(5921u32) },
1481            5944u32 => unsafe { core::mem::transmute::<u32, Decoration>(5944u32) },
1482            6080u32 => unsafe { core::mem::transmute::<u32, Decoration>(6080u32) },
1483            6085u32 => unsafe { core::mem::transmute::<u32, Decoration>(6085u32) },
1484            6087u32 => unsafe { core::mem::transmute::<u32, Decoration>(6087u32) },
1485            6140u32 => unsafe { core::mem::transmute::<u32, Decoration>(6140u32) },
1486            6151u32 => unsafe { core::mem::transmute::<u32, Decoration>(6151u32) },
1487            6170u32 => unsafe { core::mem::transmute::<u32, Decoration>(6170u32) },
1488            6172u32..=6173u32 => unsafe { core::mem::transmute::<u32, Decoration>(n) },
1489            6175u32..=6183u32 => unsafe { core::mem::transmute::<u32, Decoration>(n) },
1490            6188u32 => unsafe { core::mem::transmute::<u32, Decoration>(6188u32) },
1491            6190u32..=6191u32 => unsafe { core::mem::transmute::<u32, Decoration>(n) },
1492            6247u32 => unsafe { core::mem::transmute::<u32, Decoration>(6247u32) },
1493            6442u32..=6443u32 => unsafe { core::mem::transmute::<u32, Decoration>(n) },
1494            _ => return None,
1495        })
1496    }
1497}
1498#[allow(non_upper_case_globals)]
1499impl Decoration {
1500    pub const PerPrimitiveNV: Self = Self::PerPrimitiveEXT;
1501    pub const PerVertexNV: Self = Self::PerVertexKHR;
1502    pub const NonUniformEXT: Self = Self::NonUniform;
1503    pub const RestrictPointerEXT: Self = Self::RestrictPointer;
1504    pub const AliasedPointerEXT: Self = Self::AliasedPointer;
1505    pub const HlslCounterBufferGOOGLE: Self = Self::CounterBuffer;
1506    pub const HlslSemanticGOOGLE: Self = Self::UserSemantic;
1507    pub const RegisterINTEL: Self = Self::RegisterALTERA;
1508    pub const MemoryINTEL: Self = Self::MemoryALTERA;
1509    pub const NumbanksINTEL: Self = Self::NumbanksALTERA;
1510    pub const BankwidthINTEL: Self = Self::BankwidthALTERA;
1511    pub const MaxPrivateCopiesINTEL: Self = Self::MaxPrivateCopiesALTERA;
1512    pub const SinglepumpINTEL: Self = Self::SinglepumpALTERA;
1513    pub const DoublepumpINTEL: Self = Self::DoublepumpALTERA;
1514    pub const MaxReplicatesINTEL: Self = Self::MaxReplicatesALTERA;
1515    pub const SimpleDualPortINTEL: Self = Self::SimpleDualPortALTERA;
1516    pub const MergeINTEL: Self = Self::MergeALTERA;
1517    pub const BankBitsINTEL: Self = Self::BankBitsALTERA;
1518    pub const ForcePow2DepthINTEL: Self = Self::ForcePow2DepthALTERA;
1519    pub const StridesizeINTEL: Self = Self::StridesizeALTERA;
1520    pub const WordsizeINTEL: Self = Self::WordsizeALTERA;
1521    pub const TrueDualPortINTEL: Self = Self::TrueDualPortALTERA;
1522    pub const BurstCoalesceINTEL: Self = Self::BurstCoalesceALTERA;
1523    pub const CacheSizeINTEL: Self = Self::CacheSizeALTERA;
1524    pub const DontStaticallyCoalesceINTEL: Self = Self::DontStaticallyCoalesceALTERA;
1525    pub const PrefetchINTEL: Self = Self::PrefetchALTERA;
1526    pub const StallEnableINTEL: Self = Self::StallEnableALTERA;
1527    pub const FuseLoopsInFunctionINTEL: Self = Self::FuseLoopsInFunctionALTERA;
1528    pub const MathOpDSPModeINTEL: Self = Self::MathOpDSPModeALTERA;
1529    pub const InitiationIntervalINTEL: Self = Self::InitiationIntervalALTERA;
1530    pub const MaxConcurrencyINTEL: Self = Self::MaxConcurrencyALTERA;
1531    pub const PipelineEnableINTEL: Self = Self::PipelineEnableALTERA;
1532    pub const BufferLocationINTEL: Self = Self::BufferLocationALTERA;
1533    pub const IOPipeStorageINTEL: Self = Self::IOPipeStorageALTERA;
1534    pub const StallFreeINTEL: Self = Self::StallFreeALTERA;
1535    pub const LatencyControlLabelINTEL: Self = Self::LatencyControlLabelALTERA;
1536    pub const LatencyControlConstraintINTEL: Self = Self::LatencyControlConstraintALTERA;
1537    pub const ConduitKernelArgumentINTEL: Self = Self::ConduitKernelArgumentALTERA;
1538    pub const RegisterMapKernelArgumentINTEL: Self = Self::RegisterMapKernelArgumentALTERA;
1539    pub const MMHostInterfaceAddressWidthINTEL: Self = Self::MMHostInterfaceAddressWidthALTERA;
1540    pub const MMHostInterfaceDataWidthINTEL: Self = Self::MMHostInterfaceDataWidthALTERA;
1541    pub const MMHostInterfaceLatencyINTEL: Self = Self::MMHostInterfaceLatencyALTERA;
1542    pub const MMHostInterfaceReadWriteModeINTEL: Self = Self::MMHostInterfaceReadWriteModeALTERA;
1543    pub const MMHostInterfaceMaxBurstINTEL: Self = Self::MMHostInterfaceMaxBurstALTERA;
1544    pub const MMHostInterfaceWaitRequestINTEL: Self = Self::MMHostInterfaceWaitRequestALTERA;
1545    pub const StableKernelArgumentINTEL: Self = Self::StableKernelArgumentALTERA;
1546    pub const InitModeINTEL: Self = Self::InitModeALTERA;
1547    pub const ImplementInRegisterMapINTEL: Self = Self::ImplementInRegisterMapALTERA;
1548}
1549impl core::str::FromStr for Decoration {
1550    type Err = ();
1551    fn from_str(s: &str) -> Result<Self, Self::Err> {
1552        Ok(match s {
1553            "RelaxedPrecision" => Self::RelaxedPrecision,
1554            "SpecId" => Self::SpecId,
1555            "Block" => Self::Block,
1556            "BufferBlock" => Self::BufferBlock,
1557            "RowMajor" => Self::RowMajor,
1558            "ColMajor" => Self::ColMajor,
1559            "ArrayStride" => Self::ArrayStride,
1560            "MatrixStride" => Self::MatrixStride,
1561            "GLSLShared" => Self::GLSLShared,
1562            "GLSLPacked" => Self::GLSLPacked,
1563            "CPacked" => Self::CPacked,
1564            "BuiltIn" => Self::BuiltIn,
1565            "NoPerspective" => Self::NoPerspective,
1566            "Flat" => Self::Flat,
1567            "Patch" => Self::Patch,
1568            "Centroid" => Self::Centroid,
1569            "Sample" => Self::Sample,
1570            "Invariant" => Self::Invariant,
1571            "Restrict" => Self::Restrict,
1572            "Aliased" => Self::Aliased,
1573            "Volatile" => Self::Volatile,
1574            "Constant" => Self::Constant,
1575            "Coherent" => Self::Coherent,
1576            "NonWritable" => Self::NonWritable,
1577            "NonReadable" => Self::NonReadable,
1578            "Uniform" => Self::Uniform,
1579            "UniformId" => Self::UniformId,
1580            "SaturatedConversion" => Self::SaturatedConversion,
1581            "Stream" => Self::Stream,
1582            "Location" => Self::Location,
1583            "Component" => Self::Component,
1584            "Index" => Self::Index,
1585            "Binding" => Self::Binding,
1586            "DescriptorSet" => Self::DescriptorSet,
1587            "Offset" => Self::Offset,
1588            "XfbBuffer" => Self::XfbBuffer,
1589            "XfbStride" => Self::XfbStride,
1590            "FuncParamAttr" => Self::FuncParamAttr,
1591            "FPRoundingMode" => Self::FPRoundingMode,
1592            "FPFastMathMode" => Self::FPFastMathMode,
1593            "LinkageAttributes" => Self::LinkageAttributes,
1594            "NoContraction" => Self::NoContraction,
1595            "InputAttachmentIndex" => Self::InputAttachmentIndex,
1596            "Alignment" => Self::Alignment,
1597            "MaxByteOffset" => Self::MaxByteOffset,
1598            "AlignmentId" => Self::AlignmentId,
1599            "MaxByteOffsetId" => Self::MaxByteOffsetId,
1600            "SaturatedToLargestFloat8NormalConversionEXT" => {
1601                Self::SaturatedToLargestFloat8NormalConversionEXT
1602            }
1603            "NoSignedWrap" => Self::NoSignedWrap,
1604            "NoUnsignedWrap" => Self::NoUnsignedWrap,
1605            "WeightTextureQCOM" => Self::WeightTextureQCOM,
1606            "BlockMatchTextureQCOM" => Self::BlockMatchTextureQCOM,
1607            "BlockMatchSamplerQCOM" => Self::BlockMatchSamplerQCOM,
1608            "ExplicitInterpAMD" => Self::ExplicitInterpAMD,
1609            "NodeSharesPayloadLimitsWithAMDX" => Self::NodeSharesPayloadLimitsWithAMDX,
1610            "NodeMaxPayloadsAMDX" => Self::NodeMaxPayloadsAMDX,
1611            "TrackFinishWritingAMDX" => Self::TrackFinishWritingAMDX,
1612            "PayloadNodeNameAMDX" => Self::PayloadNodeNameAMDX,
1613            "PayloadNodeBaseIndexAMDX" => Self::PayloadNodeBaseIndexAMDX,
1614            "PayloadNodeSparseArrayAMDX" => Self::PayloadNodeSparseArrayAMDX,
1615            "PayloadNodeArraySizeAMDX" => Self::PayloadNodeArraySizeAMDX,
1616            "PayloadDispatchIndirectAMDX" => Self::PayloadDispatchIndirectAMDX,
1617            "ArrayStrideIdEXT" => Self::ArrayStrideIdEXT,
1618            "OffsetIdEXT" => Self::OffsetIdEXT,
1619            "OverrideCoverageNV" => Self::OverrideCoverageNV,
1620            "PassthroughNV" => Self::PassthroughNV,
1621            "ViewportRelativeNV" => Self::ViewportRelativeNV,
1622            "SecondaryViewportRelativeNV" => Self::SecondaryViewportRelativeNV,
1623            "PerPrimitiveEXT" => Self::PerPrimitiveEXT,
1624            "PerPrimitiveNV" => Self::PerPrimitiveEXT,
1625            "PerViewNV" => Self::PerViewNV,
1626            "PerTaskNV" => Self::PerTaskNV,
1627            "PerVertexKHR" => Self::PerVertexKHR,
1628            "PerVertexNV" => Self::PerVertexKHR,
1629            "NonUniform" => Self::NonUniform,
1630            "NonUniformEXT" => Self::NonUniform,
1631            "RestrictPointer" => Self::RestrictPointer,
1632            "RestrictPointerEXT" => Self::RestrictPointer,
1633            "AliasedPointer" => Self::AliasedPointer,
1634            "AliasedPointerEXT" => Self::AliasedPointer,
1635            "MemberOffsetNV" => Self::MemberOffsetNV,
1636            "HitObjectShaderRecordBufferNV" => Self::HitObjectShaderRecordBufferNV,
1637            "HitObjectShaderRecordBufferEXT" => Self::HitObjectShaderRecordBufferEXT,
1638            "BankNV" => Self::BankNV,
1639            "BindlessSamplerNV" => Self::BindlessSamplerNV,
1640            "BindlessImageNV" => Self::BindlessImageNV,
1641            "BoundSamplerNV" => Self::BoundSamplerNV,
1642            "BoundImageNV" => Self::BoundImageNV,
1643            "SIMTCallINTEL" => Self::SIMTCallINTEL,
1644            "ReferencedIndirectlyINTEL" => Self::ReferencedIndirectlyINTEL,
1645            "ClobberINTEL" => Self::ClobberINTEL,
1646            "SideEffectsINTEL" => Self::SideEffectsINTEL,
1647            "VectorComputeVariableINTEL" => Self::VectorComputeVariableINTEL,
1648            "FuncParamIOKindINTEL" => Self::FuncParamIOKindINTEL,
1649            "VectorComputeFunctionINTEL" => Self::VectorComputeFunctionINTEL,
1650            "StackCallINTEL" => Self::StackCallINTEL,
1651            "GlobalVariableOffsetINTEL" => Self::GlobalVariableOffsetINTEL,
1652            "CounterBuffer" => Self::CounterBuffer,
1653            "HlslCounterBufferGOOGLE" => Self::CounterBuffer,
1654            "UserSemantic" => Self::UserSemantic,
1655            "HlslSemanticGOOGLE" => Self::UserSemantic,
1656            "UserTypeGOOGLE" => Self::UserTypeGOOGLE,
1657            "FunctionRoundingModeINTEL" => Self::FunctionRoundingModeINTEL,
1658            "FunctionDenormModeINTEL" => Self::FunctionDenormModeINTEL,
1659            "RegisterALTERA" => Self::RegisterALTERA,
1660            "RegisterINTEL" => Self::RegisterALTERA,
1661            "MemoryALTERA" => Self::MemoryALTERA,
1662            "MemoryINTEL" => Self::MemoryALTERA,
1663            "NumbanksALTERA" => Self::NumbanksALTERA,
1664            "NumbanksINTEL" => Self::NumbanksALTERA,
1665            "BankwidthALTERA" => Self::BankwidthALTERA,
1666            "BankwidthINTEL" => Self::BankwidthALTERA,
1667            "MaxPrivateCopiesALTERA" => Self::MaxPrivateCopiesALTERA,
1668            "MaxPrivateCopiesINTEL" => Self::MaxPrivateCopiesALTERA,
1669            "SinglepumpALTERA" => Self::SinglepumpALTERA,
1670            "SinglepumpINTEL" => Self::SinglepumpALTERA,
1671            "DoublepumpALTERA" => Self::DoublepumpALTERA,
1672            "DoublepumpINTEL" => Self::DoublepumpALTERA,
1673            "MaxReplicatesALTERA" => Self::MaxReplicatesALTERA,
1674            "MaxReplicatesINTEL" => Self::MaxReplicatesALTERA,
1675            "SimpleDualPortALTERA" => Self::SimpleDualPortALTERA,
1676            "SimpleDualPortINTEL" => Self::SimpleDualPortALTERA,
1677            "MergeALTERA" => Self::MergeALTERA,
1678            "MergeINTEL" => Self::MergeALTERA,
1679            "BankBitsALTERA" => Self::BankBitsALTERA,
1680            "BankBitsINTEL" => Self::BankBitsALTERA,
1681            "ForcePow2DepthALTERA" => Self::ForcePow2DepthALTERA,
1682            "ForcePow2DepthINTEL" => Self::ForcePow2DepthALTERA,
1683            "StridesizeALTERA" => Self::StridesizeALTERA,
1684            "StridesizeINTEL" => Self::StridesizeALTERA,
1685            "WordsizeALTERA" => Self::WordsizeALTERA,
1686            "WordsizeINTEL" => Self::WordsizeALTERA,
1687            "TrueDualPortALTERA" => Self::TrueDualPortALTERA,
1688            "TrueDualPortINTEL" => Self::TrueDualPortALTERA,
1689            "BurstCoalesceALTERA" => Self::BurstCoalesceALTERA,
1690            "BurstCoalesceINTEL" => Self::BurstCoalesceALTERA,
1691            "CacheSizeALTERA" => Self::CacheSizeALTERA,
1692            "CacheSizeINTEL" => Self::CacheSizeALTERA,
1693            "DontStaticallyCoalesceALTERA" => Self::DontStaticallyCoalesceALTERA,
1694            "DontStaticallyCoalesceINTEL" => Self::DontStaticallyCoalesceALTERA,
1695            "PrefetchALTERA" => Self::PrefetchALTERA,
1696            "PrefetchINTEL" => Self::PrefetchALTERA,
1697            "StallEnableALTERA" => Self::StallEnableALTERA,
1698            "StallEnableINTEL" => Self::StallEnableALTERA,
1699            "FuseLoopsInFunctionALTERA" => Self::FuseLoopsInFunctionALTERA,
1700            "FuseLoopsInFunctionINTEL" => Self::FuseLoopsInFunctionALTERA,
1701            "MathOpDSPModeALTERA" => Self::MathOpDSPModeALTERA,
1702            "MathOpDSPModeINTEL" => Self::MathOpDSPModeALTERA,
1703            "AliasScopeINTEL" => Self::AliasScopeINTEL,
1704            "NoAliasINTEL" => Self::NoAliasINTEL,
1705            "InitiationIntervalALTERA" => Self::InitiationIntervalALTERA,
1706            "InitiationIntervalINTEL" => Self::InitiationIntervalALTERA,
1707            "MaxConcurrencyALTERA" => Self::MaxConcurrencyALTERA,
1708            "MaxConcurrencyINTEL" => Self::MaxConcurrencyALTERA,
1709            "PipelineEnableALTERA" => Self::PipelineEnableALTERA,
1710            "PipelineEnableINTEL" => Self::PipelineEnableALTERA,
1711            "BufferLocationALTERA" => Self::BufferLocationALTERA,
1712            "BufferLocationINTEL" => Self::BufferLocationALTERA,
1713            "IOPipeStorageALTERA" => Self::IOPipeStorageALTERA,
1714            "IOPipeStorageINTEL" => Self::IOPipeStorageALTERA,
1715            "FunctionFloatingPointModeINTEL" => Self::FunctionFloatingPointModeINTEL,
1716            "SingleElementVectorINTEL" => Self::SingleElementVectorINTEL,
1717            "VectorComputeCallableFunctionINTEL" => Self::VectorComputeCallableFunctionINTEL,
1718            "MediaBlockIOINTEL" => Self::MediaBlockIOINTEL,
1719            "StallFreeALTERA" => Self::StallFreeALTERA,
1720            "StallFreeINTEL" => Self::StallFreeALTERA,
1721            "FPMaxErrorDecorationINTEL" => Self::FPMaxErrorDecorationINTEL,
1722            "LatencyControlLabelALTERA" => Self::LatencyControlLabelALTERA,
1723            "LatencyControlLabelINTEL" => Self::LatencyControlLabelALTERA,
1724            "LatencyControlConstraintALTERA" => Self::LatencyControlConstraintALTERA,
1725            "LatencyControlConstraintINTEL" => Self::LatencyControlConstraintALTERA,
1726            "ConduitKernelArgumentALTERA" => Self::ConduitKernelArgumentALTERA,
1727            "ConduitKernelArgumentINTEL" => Self::ConduitKernelArgumentALTERA,
1728            "RegisterMapKernelArgumentALTERA" => Self::RegisterMapKernelArgumentALTERA,
1729            "RegisterMapKernelArgumentINTEL" => Self::RegisterMapKernelArgumentALTERA,
1730            "MMHostInterfaceAddressWidthALTERA" => Self::MMHostInterfaceAddressWidthALTERA,
1731            "MMHostInterfaceAddressWidthINTEL" => Self::MMHostInterfaceAddressWidthALTERA,
1732            "MMHostInterfaceDataWidthALTERA" => Self::MMHostInterfaceDataWidthALTERA,
1733            "MMHostInterfaceDataWidthINTEL" => Self::MMHostInterfaceDataWidthALTERA,
1734            "MMHostInterfaceLatencyALTERA" => Self::MMHostInterfaceLatencyALTERA,
1735            "MMHostInterfaceLatencyINTEL" => Self::MMHostInterfaceLatencyALTERA,
1736            "MMHostInterfaceReadWriteModeALTERA" => Self::MMHostInterfaceReadWriteModeALTERA,
1737            "MMHostInterfaceReadWriteModeINTEL" => Self::MMHostInterfaceReadWriteModeALTERA,
1738            "MMHostInterfaceMaxBurstALTERA" => Self::MMHostInterfaceMaxBurstALTERA,
1739            "MMHostInterfaceMaxBurstINTEL" => Self::MMHostInterfaceMaxBurstALTERA,
1740            "MMHostInterfaceWaitRequestALTERA" => Self::MMHostInterfaceWaitRequestALTERA,
1741            "MMHostInterfaceWaitRequestINTEL" => Self::MMHostInterfaceWaitRequestALTERA,
1742            "StableKernelArgumentALTERA" => Self::StableKernelArgumentALTERA,
1743            "StableKernelArgumentINTEL" => Self::StableKernelArgumentALTERA,
1744            "HostAccessINTEL" => Self::HostAccessINTEL,
1745            "InitModeALTERA" => Self::InitModeALTERA,
1746            "InitModeINTEL" => Self::InitModeALTERA,
1747            "ImplementInRegisterMapALTERA" => Self::ImplementInRegisterMapALTERA,
1748            "ImplementInRegisterMapINTEL" => Self::ImplementInRegisterMapALTERA,
1749            "ConditionalINTEL" => Self::ConditionalINTEL,
1750            "CacheControlLoadINTEL" => Self::CacheControlLoadINTEL,
1751            "CacheControlStoreINTEL" => Self::CacheControlStoreINTEL,
1752            _ => return Err(()),
1753        })
1754    }
1755}
1756#[doc = "SPIR-V operand kind: [BuiltIn](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_built_in_a_built_in)"]
1757#[repr(u32)]
1758#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
1759#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
1760#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
1761#[allow(clippy::upper_case_acronyms)]
1762pub enum BuiltIn {
1763    Position = 0u32,
1764    PointSize = 1u32,
1765    ClipDistance = 3u32,
1766    CullDistance = 4u32,
1767    VertexId = 5u32,
1768    InstanceId = 6u32,
1769    PrimitiveId = 7u32,
1770    InvocationId = 8u32,
1771    Layer = 9u32,
1772    ViewportIndex = 10u32,
1773    TessLevelOuter = 11u32,
1774    TessLevelInner = 12u32,
1775    TessCoord = 13u32,
1776    PatchVertices = 14u32,
1777    FragCoord = 15u32,
1778    PointCoord = 16u32,
1779    FrontFacing = 17u32,
1780    SampleId = 18u32,
1781    SamplePosition = 19u32,
1782    SampleMask = 20u32,
1783    FragDepth = 22u32,
1784    HelperInvocation = 23u32,
1785    NumWorkgroups = 24u32,
1786    WorkgroupSize = 25u32,
1787    WorkgroupId = 26u32,
1788    LocalInvocationId = 27u32,
1789    GlobalInvocationId = 28u32,
1790    LocalInvocationIndex = 29u32,
1791    WorkDim = 30u32,
1792    GlobalSize = 31u32,
1793    EnqueuedWorkgroupSize = 32u32,
1794    GlobalOffset = 33u32,
1795    GlobalLinearId = 34u32,
1796    SubgroupSize = 36u32,
1797    SubgroupMaxSize = 37u32,
1798    NumSubgroups = 38u32,
1799    NumEnqueuedSubgroups = 39u32,
1800    SubgroupId = 40u32,
1801    SubgroupLocalInvocationId = 41u32,
1802    VertexIndex = 42u32,
1803    InstanceIndex = 43u32,
1804    CoreIDARM = 4160u32,
1805    CoreCountARM = 4161u32,
1806    CoreMaxIDARM = 4162u32,
1807    WarpIDARM = 4163u32,
1808    WarpMaxIDARM = 4164u32,
1809    SubgroupEqMask = 4416u32,
1810    SubgroupGeMask = 4417u32,
1811    SubgroupGtMask = 4418u32,
1812    SubgroupLeMask = 4419u32,
1813    SubgroupLtMask = 4420u32,
1814    BaseVertex = 4424u32,
1815    BaseInstance = 4425u32,
1816    DrawIndex = 4426u32,
1817    PrimitiveShadingRateKHR = 4432u32,
1818    DeviceIndex = 4438u32,
1819    ViewIndex = 4440u32,
1820    ShadingRateKHR = 4444u32,
1821    TileOffsetQCOM = 4492u32,
1822    TileDimensionQCOM = 4493u32,
1823    TileApronSizeQCOM = 4494u32,
1824    BaryCoordNoPerspAMD = 4992u32,
1825    BaryCoordNoPerspCentroidAMD = 4993u32,
1826    BaryCoordNoPerspSampleAMD = 4994u32,
1827    BaryCoordSmoothAMD = 4995u32,
1828    BaryCoordSmoothCentroidAMD = 4996u32,
1829    BaryCoordSmoothSampleAMD = 4997u32,
1830    BaryCoordPullModelAMD = 4998u32,
1831    FragStencilRefEXT = 5014u32,
1832    RemainingRecursionLevelsAMDX = 5021u32,
1833    ShaderIndexAMDX = 5073u32,
1834    SamplerHeapEXT = 5122u32,
1835    ResourceHeapEXT = 5123u32,
1836    ViewportMaskNV = 5253u32,
1837    SecondaryPositionNV = 5257u32,
1838    SecondaryViewportMaskNV = 5258u32,
1839    PositionPerViewNV = 5261u32,
1840    ViewportMaskPerViewNV = 5262u32,
1841    FullyCoveredEXT = 5264u32,
1842    TaskCountNV = 5274u32,
1843    PrimitiveCountNV = 5275u32,
1844    PrimitiveIndicesNV = 5276u32,
1845    ClipDistancePerViewNV = 5277u32,
1846    CullDistancePerViewNV = 5278u32,
1847    LayerPerViewNV = 5279u32,
1848    MeshViewCountNV = 5280u32,
1849    MeshViewIndicesNV = 5281u32,
1850    BaryCoordKHR = 5286u32,
1851    BaryCoordNoPerspKHR = 5287u32,
1852    FragSizeEXT = 5292u32,
1853    FragInvocationCountEXT = 5293u32,
1854    PrimitivePointIndicesEXT = 5294u32,
1855    PrimitiveLineIndicesEXT = 5295u32,
1856    PrimitiveTriangleIndicesEXT = 5296u32,
1857    CullPrimitiveEXT = 5299u32,
1858    LaunchIdKHR = 5319u32,
1859    LaunchSizeKHR = 5320u32,
1860    WorldRayOriginKHR = 5321u32,
1861    WorldRayDirectionKHR = 5322u32,
1862    ObjectRayOriginKHR = 5323u32,
1863    ObjectRayDirectionKHR = 5324u32,
1864    RayTminKHR = 5325u32,
1865    RayTmaxKHR = 5326u32,
1866    InstanceCustomIndexKHR = 5327u32,
1867    ObjectToWorldKHR = 5330u32,
1868    WorldToObjectKHR = 5331u32,
1869    HitTNV = 5332u32,
1870    HitKindKHR = 5333u32,
1871    CurrentRayTimeNV = 5334u32,
1872    HitTriangleVertexPositionsKHR = 5335u32,
1873    HitMicroTriangleVertexPositionsNV = 5337u32,
1874    HitMicroTriangleVertexBarycentricsNV = 5344u32,
1875    IncomingRayFlagsKHR = 5351u32,
1876    RayGeometryIndexKHR = 5352u32,
1877    HitIsSphereNV = 5359u32,
1878    HitIsLSSNV = 5360u32,
1879    HitSpherePositionNV = 5361u32,
1880    WarpsPerSMNV = 5374u32,
1881    SMCountNV = 5375u32,
1882    WarpIDNV = 5376u32,
1883    SMIDNV = 5377u32,
1884    HitLSSPositionsNV = 5396u32,
1885    HitKindFrontFacingMicroTriangleNV = 5405u32,
1886    HitKindBackFacingMicroTriangleNV = 5406u32,
1887    HitSphereRadiusNV = 5420u32,
1888    HitLSSRadiiNV = 5421u32,
1889    ClusterIDNV = 5436u32,
1890    CullMaskKHR = 6021u32,
1891}
1892impl BuiltIn {
1893    pub fn from_u32(n: u32) -> Option<Self> {
1894        Some(match n {
1895            0u32..=1u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(n) },
1896            3u32..=20u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(n) },
1897            22u32..=34u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(n) },
1898            36u32..=43u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(n) },
1899            4160u32..=4164u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(n) },
1900            4416u32..=4420u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(n) },
1901            4424u32..=4426u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(n) },
1902            4432u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(4432u32) },
1903            4438u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(4438u32) },
1904            4440u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(4440u32) },
1905            4444u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(4444u32) },
1906            4492u32..=4494u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(n) },
1907            4992u32..=4998u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(n) },
1908            5014u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(5014u32) },
1909            5021u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(5021u32) },
1910            5073u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(5073u32) },
1911            5122u32..=5123u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(n) },
1912            5253u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(5253u32) },
1913            5257u32..=5258u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(n) },
1914            5261u32..=5262u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(n) },
1915            5264u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(5264u32) },
1916            5274u32..=5281u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(n) },
1917            5286u32..=5287u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(n) },
1918            5292u32..=5296u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(n) },
1919            5299u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(5299u32) },
1920            5319u32..=5327u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(n) },
1921            5330u32..=5335u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(n) },
1922            5337u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(5337u32) },
1923            5344u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(5344u32) },
1924            5351u32..=5352u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(n) },
1925            5359u32..=5361u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(n) },
1926            5374u32..=5377u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(n) },
1927            5396u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(5396u32) },
1928            5405u32..=5406u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(n) },
1929            5420u32..=5421u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(n) },
1930            5436u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(5436u32) },
1931            6021u32 => unsafe { core::mem::transmute::<u32, BuiltIn>(6021u32) },
1932            _ => return None,
1933        })
1934    }
1935}
1936#[allow(non_upper_case_globals)]
1937impl BuiltIn {
1938    pub const SubgroupEqMaskKHR: Self = Self::SubgroupEqMask;
1939    pub const SubgroupGeMaskKHR: Self = Self::SubgroupGeMask;
1940    pub const SubgroupGtMaskKHR: Self = Self::SubgroupGtMask;
1941    pub const SubgroupLeMaskKHR: Self = Self::SubgroupLeMask;
1942    pub const SubgroupLtMaskKHR: Self = Self::SubgroupLtMask;
1943    pub const BaryCoordNV: Self = Self::BaryCoordKHR;
1944    pub const BaryCoordNoPerspNV: Self = Self::BaryCoordNoPerspKHR;
1945    pub const FragmentSizeNV: Self = Self::FragSizeEXT;
1946    pub const InvocationsPerPixelNV: Self = Self::FragInvocationCountEXT;
1947    pub const LaunchIdNV: Self = Self::LaunchIdKHR;
1948    pub const LaunchSizeNV: Self = Self::LaunchSizeKHR;
1949    pub const WorldRayOriginNV: Self = Self::WorldRayOriginKHR;
1950    pub const WorldRayDirectionNV: Self = Self::WorldRayDirectionKHR;
1951    pub const ObjectRayOriginNV: Self = Self::ObjectRayOriginKHR;
1952    pub const ObjectRayDirectionNV: Self = Self::ObjectRayDirectionKHR;
1953    pub const RayTminNV: Self = Self::RayTminKHR;
1954    pub const RayTmaxNV: Self = Self::RayTmaxKHR;
1955    pub const InstanceCustomIndexNV: Self = Self::InstanceCustomIndexKHR;
1956    pub const ObjectToWorldNV: Self = Self::ObjectToWorldKHR;
1957    pub const WorldToObjectNV: Self = Self::WorldToObjectKHR;
1958    pub const HitKindNV: Self = Self::HitKindKHR;
1959    pub const IncomingRayFlagsNV: Self = Self::IncomingRayFlagsKHR;
1960}
1961impl core::str::FromStr for BuiltIn {
1962    type Err = ();
1963    fn from_str(s: &str) -> Result<Self, Self::Err> {
1964        Ok(match s {
1965            "Position" => Self::Position,
1966            "PointSize" => Self::PointSize,
1967            "ClipDistance" => Self::ClipDistance,
1968            "CullDistance" => Self::CullDistance,
1969            "VertexId" => Self::VertexId,
1970            "InstanceId" => Self::InstanceId,
1971            "PrimitiveId" => Self::PrimitiveId,
1972            "InvocationId" => Self::InvocationId,
1973            "Layer" => Self::Layer,
1974            "ViewportIndex" => Self::ViewportIndex,
1975            "TessLevelOuter" => Self::TessLevelOuter,
1976            "TessLevelInner" => Self::TessLevelInner,
1977            "TessCoord" => Self::TessCoord,
1978            "PatchVertices" => Self::PatchVertices,
1979            "FragCoord" => Self::FragCoord,
1980            "PointCoord" => Self::PointCoord,
1981            "FrontFacing" => Self::FrontFacing,
1982            "SampleId" => Self::SampleId,
1983            "SamplePosition" => Self::SamplePosition,
1984            "SampleMask" => Self::SampleMask,
1985            "FragDepth" => Self::FragDepth,
1986            "HelperInvocation" => Self::HelperInvocation,
1987            "NumWorkgroups" => Self::NumWorkgroups,
1988            "WorkgroupSize" => Self::WorkgroupSize,
1989            "WorkgroupId" => Self::WorkgroupId,
1990            "LocalInvocationId" => Self::LocalInvocationId,
1991            "GlobalInvocationId" => Self::GlobalInvocationId,
1992            "LocalInvocationIndex" => Self::LocalInvocationIndex,
1993            "WorkDim" => Self::WorkDim,
1994            "GlobalSize" => Self::GlobalSize,
1995            "EnqueuedWorkgroupSize" => Self::EnqueuedWorkgroupSize,
1996            "GlobalOffset" => Self::GlobalOffset,
1997            "GlobalLinearId" => Self::GlobalLinearId,
1998            "SubgroupSize" => Self::SubgroupSize,
1999            "SubgroupMaxSize" => Self::SubgroupMaxSize,
2000            "NumSubgroups" => Self::NumSubgroups,
2001            "NumEnqueuedSubgroups" => Self::NumEnqueuedSubgroups,
2002            "SubgroupId" => Self::SubgroupId,
2003            "SubgroupLocalInvocationId" => Self::SubgroupLocalInvocationId,
2004            "VertexIndex" => Self::VertexIndex,
2005            "InstanceIndex" => Self::InstanceIndex,
2006            "CoreIDARM" => Self::CoreIDARM,
2007            "CoreCountARM" => Self::CoreCountARM,
2008            "CoreMaxIDARM" => Self::CoreMaxIDARM,
2009            "WarpIDARM" => Self::WarpIDARM,
2010            "WarpMaxIDARM" => Self::WarpMaxIDARM,
2011            "SubgroupEqMask" => Self::SubgroupEqMask,
2012            "SubgroupEqMaskKHR" => Self::SubgroupEqMask,
2013            "SubgroupGeMask" => Self::SubgroupGeMask,
2014            "SubgroupGeMaskKHR" => Self::SubgroupGeMask,
2015            "SubgroupGtMask" => Self::SubgroupGtMask,
2016            "SubgroupGtMaskKHR" => Self::SubgroupGtMask,
2017            "SubgroupLeMask" => Self::SubgroupLeMask,
2018            "SubgroupLeMaskKHR" => Self::SubgroupLeMask,
2019            "SubgroupLtMask" => Self::SubgroupLtMask,
2020            "SubgroupLtMaskKHR" => Self::SubgroupLtMask,
2021            "BaseVertex" => Self::BaseVertex,
2022            "BaseInstance" => Self::BaseInstance,
2023            "DrawIndex" => Self::DrawIndex,
2024            "PrimitiveShadingRateKHR" => Self::PrimitiveShadingRateKHR,
2025            "DeviceIndex" => Self::DeviceIndex,
2026            "ViewIndex" => Self::ViewIndex,
2027            "ShadingRateKHR" => Self::ShadingRateKHR,
2028            "TileOffsetQCOM" => Self::TileOffsetQCOM,
2029            "TileDimensionQCOM" => Self::TileDimensionQCOM,
2030            "TileApronSizeQCOM" => Self::TileApronSizeQCOM,
2031            "BaryCoordNoPerspAMD" => Self::BaryCoordNoPerspAMD,
2032            "BaryCoordNoPerspCentroidAMD" => Self::BaryCoordNoPerspCentroidAMD,
2033            "BaryCoordNoPerspSampleAMD" => Self::BaryCoordNoPerspSampleAMD,
2034            "BaryCoordSmoothAMD" => Self::BaryCoordSmoothAMD,
2035            "BaryCoordSmoothCentroidAMD" => Self::BaryCoordSmoothCentroidAMD,
2036            "BaryCoordSmoothSampleAMD" => Self::BaryCoordSmoothSampleAMD,
2037            "BaryCoordPullModelAMD" => Self::BaryCoordPullModelAMD,
2038            "FragStencilRefEXT" => Self::FragStencilRefEXT,
2039            "RemainingRecursionLevelsAMDX" => Self::RemainingRecursionLevelsAMDX,
2040            "ShaderIndexAMDX" => Self::ShaderIndexAMDX,
2041            "SamplerHeapEXT" => Self::SamplerHeapEXT,
2042            "ResourceHeapEXT" => Self::ResourceHeapEXT,
2043            "ViewportMaskNV" => Self::ViewportMaskNV,
2044            "SecondaryPositionNV" => Self::SecondaryPositionNV,
2045            "SecondaryViewportMaskNV" => Self::SecondaryViewportMaskNV,
2046            "PositionPerViewNV" => Self::PositionPerViewNV,
2047            "ViewportMaskPerViewNV" => Self::ViewportMaskPerViewNV,
2048            "FullyCoveredEXT" => Self::FullyCoveredEXT,
2049            "TaskCountNV" => Self::TaskCountNV,
2050            "PrimitiveCountNV" => Self::PrimitiveCountNV,
2051            "PrimitiveIndicesNV" => Self::PrimitiveIndicesNV,
2052            "ClipDistancePerViewNV" => Self::ClipDistancePerViewNV,
2053            "CullDistancePerViewNV" => Self::CullDistancePerViewNV,
2054            "LayerPerViewNV" => Self::LayerPerViewNV,
2055            "MeshViewCountNV" => Self::MeshViewCountNV,
2056            "MeshViewIndicesNV" => Self::MeshViewIndicesNV,
2057            "BaryCoordKHR" => Self::BaryCoordKHR,
2058            "BaryCoordNV" => Self::BaryCoordKHR,
2059            "BaryCoordNoPerspKHR" => Self::BaryCoordNoPerspKHR,
2060            "BaryCoordNoPerspNV" => Self::BaryCoordNoPerspKHR,
2061            "FragSizeEXT" => Self::FragSizeEXT,
2062            "FragmentSizeNV" => Self::FragSizeEXT,
2063            "FragInvocationCountEXT" => Self::FragInvocationCountEXT,
2064            "InvocationsPerPixelNV" => Self::FragInvocationCountEXT,
2065            "PrimitivePointIndicesEXT" => Self::PrimitivePointIndicesEXT,
2066            "PrimitiveLineIndicesEXT" => Self::PrimitiveLineIndicesEXT,
2067            "PrimitiveTriangleIndicesEXT" => Self::PrimitiveTriangleIndicesEXT,
2068            "CullPrimitiveEXT" => Self::CullPrimitiveEXT,
2069            "LaunchIdKHR" => Self::LaunchIdKHR,
2070            "LaunchIdNV" => Self::LaunchIdKHR,
2071            "LaunchSizeKHR" => Self::LaunchSizeKHR,
2072            "LaunchSizeNV" => Self::LaunchSizeKHR,
2073            "WorldRayOriginKHR" => Self::WorldRayOriginKHR,
2074            "WorldRayOriginNV" => Self::WorldRayOriginKHR,
2075            "WorldRayDirectionKHR" => Self::WorldRayDirectionKHR,
2076            "WorldRayDirectionNV" => Self::WorldRayDirectionKHR,
2077            "ObjectRayOriginKHR" => Self::ObjectRayOriginKHR,
2078            "ObjectRayOriginNV" => Self::ObjectRayOriginKHR,
2079            "ObjectRayDirectionKHR" => Self::ObjectRayDirectionKHR,
2080            "ObjectRayDirectionNV" => Self::ObjectRayDirectionKHR,
2081            "RayTminKHR" => Self::RayTminKHR,
2082            "RayTminNV" => Self::RayTminKHR,
2083            "RayTmaxKHR" => Self::RayTmaxKHR,
2084            "RayTmaxNV" => Self::RayTmaxKHR,
2085            "InstanceCustomIndexKHR" => Self::InstanceCustomIndexKHR,
2086            "InstanceCustomIndexNV" => Self::InstanceCustomIndexKHR,
2087            "ObjectToWorldKHR" => Self::ObjectToWorldKHR,
2088            "ObjectToWorldNV" => Self::ObjectToWorldKHR,
2089            "WorldToObjectKHR" => Self::WorldToObjectKHR,
2090            "WorldToObjectNV" => Self::WorldToObjectKHR,
2091            "HitTNV" => Self::HitTNV,
2092            "HitKindKHR" => Self::HitKindKHR,
2093            "HitKindNV" => Self::HitKindKHR,
2094            "CurrentRayTimeNV" => Self::CurrentRayTimeNV,
2095            "HitTriangleVertexPositionsKHR" => Self::HitTriangleVertexPositionsKHR,
2096            "HitMicroTriangleVertexPositionsNV" => Self::HitMicroTriangleVertexPositionsNV,
2097            "HitMicroTriangleVertexBarycentricsNV" => Self::HitMicroTriangleVertexBarycentricsNV,
2098            "IncomingRayFlagsKHR" => Self::IncomingRayFlagsKHR,
2099            "IncomingRayFlagsNV" => Self::IncomingRayFlagsKHR,
2100            "RayGeometryIndexKHR" => Self::RayGeometryIndexKHR,
2101            "HitIsSphereNV" => Self::HitIsSphereNV,
2102            "HitIsLSSNV" => Self::HitIsLSSNV,
2103            "HitSpherePositionNV" => Self::HitSpherePositionNV,
2104            "WarpsPerSMNV" => Self::WarpsPerSMNV,
2105            "SMCountNV" => Self::SMCountNV,
2106            "WarpIDNV" => Self::WarpIDNV,
2107            "SMIDNV" => Self::SMIDNV,
2108            "HitLSSPositionsNV" => Self::HitLSSPositionsNV,
2109            "HitKindFrontFacingMicroTriangleNV" => Self::HitKindFrontFacingMicroTriangleNV,
2110            "HitKindBackFacingMicroTriangleNV" => Self::HitKindBackFacingMicroTriangleNV,
2111            "HitSphereRadiusNV" => Self::HitSphereRadiusNV,
2112            "HitLSSRadiiNV" => Self::HitLSSRadiiNV,
2113            "ClusterIDNV" => Self::ClusterIDNV,
2114            "CullMaskKHR" => Self::CullMaskKHR,
2115            _ => return Err(()),
2116        })
2117    }
2118}
2119#[doc = "SPIR-V operand kind: [Scope](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_scope_a_scope)"]
2120#[repr(u32)]
2121#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
2122#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
2123#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
2124#[allow(clippy::upper_case_acronyms)]
2125pub enum Scope {
2126    CrossDevice = 0u32,
2127    Device = 1u32,
2128    Workgroup = 2u32,
2129    Subgroup = 3u32,
2130    Invocation = 4u32,
2131    QueueFamily = 5u32,
2132    ShaderCallKHR = 6u32,
2133}
2134impl Scope {
2135    pub fn from_u32(n: u32) -> Option<Self> {
2136        Some(match n {
2137            0u32..=6u32 => unsafe { core::mem::transmute::<u32, Scope>(n) },
2138            _ => return None,
2139        })
2140    }
2141}
2142#[allow(non_upper_case_globals)]
2143impl Scope {
2144    pub const QueueFamilyKHR: Self = Self::QueueFamily;
2145}
2146impl core::str::FromStr for Scope {
2147    type Err = ();
2148    fn from_str(s: &str) -> Result<Self, Self::Err> {
2149        Ok(match s {
2150            "CrossDevice" => Self::CrossDevice,
2151            "Device" => Self::Device,
2152            "Workgroup" => Self::Workgroup,
2153            "Subgroup" => Self::Subgroup,
2154            "Invocation" => Self::Invocation,
2155            "QueueFamily" => Self::QueueFamily,
2156            "QueueFamilyKHR" => Self::QueueFamily,
2157            "ShaderCallKHR" => Self::ShaderCallKHR,
2158            _ => return Err(()),
2159        })
2160    }
2161}
2162#[doc = "SPIR-V operand kind: [GroupOperation](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_group_operation_a_group_operation)"]
2163#[repr(u32)]
2164#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
2165#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
2166#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
2167#[allow(clippy::upper_case_acronyms)]
2168pub enum GroupOperation {
2169    Reduce = 0u32,
2170    InclusiveScan = 1u32,
2171    ExclusiveScan = 2u32,
2172    ClusteredReduce = 3u32,
2173    PartitionedReduceEXT = 6u32,
2174    PartitionedInclusiveScanEXT = 7u32,
2175    PartitionedExclusiveScanEXT = 8u32,
2176}
2177impl GroupOperation {
2178    pub fn from_u32(n: u32) -> Option<Self> {
2179        Some(match n {
2180            0u32..=3u32 => unsafe { core::mem::transmute::<u32, GroupOperation>(n) },
2181            6u32..=8u32 => unsafe { core::mem::transmute::<u32, GroupOperation>(n) },
2182            _ => return None,
2183        })
2184    }
2185}
2186#[allow(non_upper_case_globals)]
2187impl GroupOperation {
2188    pub const PartitionedReduceNV: Self = Self::PartitionedReduceEXT;
2189    pub const PartitionedInclusiveScanNV: Self = Self::PartitionedInclusiveScanEXT;
2190    pub const PartitionedExclusiveScanNV: Self = Self::PartitionedExclusiveScanEXT;
2191}
2192impl core::str::FromStr for GroupOperation {
2193    type Err = ();
2194    fn from_str(s: &str) -> Result<Self, Self::Err> {
2195        Ok(match s {
2196            "Reduce" => Self::Reduce,
2197            "InclusiveScan" => Self::InclusiveScan,
2198            "ExclusiveScan" => Self::ExclusiveScan,
2199            "ClusteredReduce" => Self::ClusteredReduce,
2200            "PartitionedReduceEXT" => Self::PartitionedReduceEXT,
2201            "PartitionedReduceNV" => Self::PartitionedReduceEXT,
2202            "PartitionedInclusiveScanEXT" => Self::PartitionedInclusiveScanEXT,
2203            "PartitionedInclusiveScanNV" => Self::PartitionedInclusiveScanEXT,
2204            "PartitionedExclusiveScanEXT" => Self::PartitionedExclusiveScanEXT,
2205            "PartitionedExclusiveScanNV" => Self::PartitionedExclusiveScanEXT,
2206            _ => return Err(()),
2207        })
2208    }
2209}
2210#[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)"]
2211#[repr(u32)]
2212#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
2213#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
2214#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
2215#[allow(clippy::upper_case_acronyms)]
2216pub enum KernelEnqueueFlags {
2217    NoWait = 0u32,
2218    WaitKernel = 1u32,
2219    WaitWorkGroup = 2u32,
2220}
2221impl KernelEnqueueFlags {
2222    pub fn from_u32(n: u32) -> Option<Self> {
2223        Some(match n {
2224            0u32..=2u32 => unsafe { core::mem::transmute::<u32, KernelEnqueueFlags>(n) },
2225            _ => return None,
2226        })
2227    }
2228}
2229#[allow(non_upper_case_globals)]
2230impl KernelEnqueueFlags {}
2231impl core::str::FromStr for KernelEnqueueFlags {
2232    type Err = ();
2233    fn from_str(s: &str) -> Result<Self, Self::Err> {
2234        Ok(match s {
2235            "NoWait" => Self::NoWait,
2236            "WaitKernel" => Self::WaitKernel,
2237            "WaitWorkGroup" => Self::WaitWorkGroup,
2238            _ => return Err(()),
2239        })
2240    }
2241}
2242#[doc = "SPIR-V operand kind: [Capability](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_capability_a_capability)"]
2243#[repr(u32)]
2244#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
2245#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
2246#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
2247#[allow(clippy::upper_case_acronyms)]
2248pub enum Capability {
2249    Matrix = 0u32,
2250    Shader = 1u32,
2251    Geometry = 2u32,
2252    Tessellation = 3u32,
2253    Addresses = 4u32,
2254    Linkage = 5u32,
2255    Kernel = 6u32,
2256    Vector16 = 7u32,
2257    Float16Buffer = 8u32,
2258    Float16 = 9u32,
2259    Float64 = 10u32,
2260    Int64 = 11u32,
2261    Int64Atomics = 12u32,
2262    ImageBasic = 13u32,
2263    ImageReadWrite = 14u32,
2264    ImageMipmap = 15u32,
2265    Pipes = 17u32,
2266    Groups = 18u32,
2267    DeviceEnqueue = 19u32,
2268    LiteralSampler = 20u32,
2269    AtomicStorage = 21u32,
2270    Int16 = 22u32,
2271    TessellationPointSize = 23u32,
2272    GeometryPointSize = 24u32,
2273    ImageGatherExtended = 25u32,
2274    StorageImageMultisample = 27u32,
2275    UniformBufferArrayDynamicIndexing = 28u32,
2276    SampledImageArrayDynamicIndexing = 29u32,
2277    StorageBufferArrayDynamicIndexing = 30u32,
2278    StorageImageArrayDynamicIndexing = 31u32,
2279    ClipDistance = 32u32,
2280    CullDistance = 33u32,
2281    ImageCubeArray = 34u32,
2282    SampleRateShading = 35u32,
2283    ImageRect = 36u32,
2284    SampledRect = 37u32,
2285    GenericPointer = 38u32,
2286    Int8 = 39u32,
2287    InputAttachment = 40u32,
2288    SparseResidency = 41u32,
2289    MinLod = 42u32,
2290    Sampled1D = 43u32,
2291    Image1D = 44u32,
2292    SampledCubeArray = 45u32,
2293    SampledBuffer = 46u32,
2294    ImageBuffer = 47u32,
2295    ImageMSArray = 48u32,
2296    StorageImageExtendedFormats = 49u32,
2297    ImageQuery = 50u32,
2298    DerivativeControl = 51u32,
2299    InterpolationFunction = 52u32,
2300    TransformFeedback = 53u32,
2301    GeometryStreams = 54u32,
2302    StorageImageReadWithoutFormat = 55u32,
2303    StorageImageWriteWithoutFormat = 56u32,
2304    MultiViewport = 57u32,
2305    SubgroupDispatch = 58u32,
2306    NamedBarrier = 59u32,
2307    PipeStorage = 60u32,
2308    GroupNonUniform = 61u32,
2309    GroupNonUniformVote = 62u32,
2310    GroupNonUniformArithmetic = 63u32,
2311    GroupNonUniformBallot = 64u32,
2312    GroupNonUniformShuffle = 65u32,
2313    GroupNonUniformShuffleRelative = 66u32,
2314    GroupNonUniformClustered = 67u32,
2315    GroupNonUniformQuad = 68u32,
2316    ShaderLayer = 69u32,
2317    ShaderViewportIndex = 70u32,
2318    UniformDecoration = 71u32,
2319    CoreBuiltinsARM = 4165u32,
2320    TileImageColorReadAccessEXT = 4166u32,
2321    TileImageDepthReadAccessEXT = 4167u32,
2322    TileImageStencilReadAccessEXT = 4168u32,
2323    TensorsARM = 4174u32,
2324    StorageTensorArrayDynamicIndexingARM = 4175u32,
2325    StorageTensorArrayNonUniformIndexingARM = 4176u32,
2326    GraphARM = 4191u32,
2327    CooperativeMatrixLayoutsARM = 4201u32,
2328    Float8EXT = 4212u32,
2329    Float8CooperativeMatrixEXT = 4213u32,
2330    FragmentShadingRateKHR = 4422u32,
2331    SubgroupBallotKHR = 4423u32,
2332    DrawParameters = 4427u32,
2333    WorkgroupMemoryExplicitLayoutKHR = 4428u32,
2334    WorkgroupMemoryExplicitLayout8BitAccessKHR = 4429u32,
2335    WorkgroupMemoryExplicitLayout16BitAccessKHR = 4430u32,
2336    SubgroupVoteKHR = 4431u32,
2337    StorageBuffer16BitAccess = 4433u32,
2338    UniformAndStorageBuffer16BitAccess = 4434u32,
2339    StoragePushConstant16 = 4435u32,
2340    StorageInputOutput16 = 4436u32,
2341    DeviceGroup = 4437u32,
2342    MultiView = 4439u32,
2343    VariablePointersStorageBuffer = 4441u32,
2344    VariablePointers = 4442u32,
2345    AtomicStorageOps = 4445u32,
2346    SampleMaskPostDepthCoverage = 4447u32,
2347    StorageBuffer8BitAccess = 4448u32,
2348    UniformAndStorageBuffer8BitAccess = 4449u32,
2349    StoragePushConstant8 = 4450u32,
2350    DenormPreserve = 4464u32,
2351    DenormFlushToZero = 4465u32,
2352    SignedZeroInfNanPreserve = 4466u32,
2353    RoundingModeRTE = 4467u32,
2354    RoundingModeRTZ = 4468u32,
2355    RayQueryProvisionalKHR = 4471u32,
2356    RayQueryKHR = 4472u32,
2357    UntypedPointersKHR = 4473u32,
2358    RayTraversalPrimitiveCullingKHR = 4478u32,
2359    RayTracingKHR = 4479u32,
2360    TextureSampleWeightedQCOM = 4484u32,
2361    TextureBoxFilterQCOM = 4485u32,
2362    TextureBlockMatchQCOM = 4486u32,
2363    TileShadingQCOM = 4495u32,
2364    CooperativeMatrixConversionQCOM = 4496u32,
2365    TextureBlockMatch2QCOM = 4498u32,
2366    Float16ImageAMD = 5008u32,
2367    ImageGatherBiasLodAMD = 5009u32,
2368    FragmentMaskAMD = 5010u32,
2369    StencilExportEXT = 5013u32,
2370    ImageReadWriteLodAMD = 5015u32,
2371    Int64ImageEXT = 5016u32,
2372    ShaderClockKHR = 5055u32,
2373    ShaderEnqueueAMDX = 5067u32,
2374    QuadControlKHR = 5087u32,
2375    Int4TypeINTEL = 5112u32,
2376    Int4CooperativeMatrixINTEL = 5114u32,
2377    BFloat16TypeKHR = 5116u32,
2378    BFloat16DotProductKHR = 5117u32,
2379    BFloat16CooperativeMatrixKHR = 5118u32,
2380    DescriptorHeapEXT = 5128u32,
2381    SampleMaskOverrideCoverageNV = 5249u32,
2382    GeometryShaderPassthroughNV = 5251u32,
2383    ShaderViewportIndexLayerEXT = 5254u32,
2384    ShaderViewportMaskNV = 5255u32,
2385    ShaderStereoViewNV = 5259u32,
2386    PerViewAttributesNV = 5260u32,
2387    FragmentFullyCoveredEXT = 5265u32,
2388    MeshShadingNV = 5266u32,
2389    ImageFootprintNV = 5282u32,
2390    MeshShadingEXT = 5283u32,
2391    FragmentBarycentricKHR = 5284u32,
2392    ComputeDerivativeGroupQuadsKHR = 5288u32,
2393    FragmentDensityEXT = 5291u32,
2394    GroupNonUniformPartitionedEXT = 5297u32,
2395    ShaderNonUniform = 5301u32,
2396    RuntimeDescriptorArray = 5302u32,
2397    InputAttachmentArrayDynamicIndexing = 5303u32,
2398    UniformTexelBufferArrayDynamicIndexing = 5304u32,
2399    StorageTexelBufferArrayDynamicIndexing = 5305u32,
2400    UniformBufferArrayNonUniformIndexing = 5306u32,
2401    SampledImageArrayNonUniformIndexing = 5307u32,
2402    StorageBufferArrayNonUniformIndexing = 5308u32,
2403    StorageImageArrayNonUniformIndexing = 5309u32,
2404    InputAttachmentArrayNonUniformIndexing = 5310u32,
2405    UniformTexelBufferArrayNonUniformIndexing = 5311u32,
2406    StorageTexelBufferArrayNonUniformIndexing = 5312u32,
2407    RayTracingPositionFetchKHR = 5336u32,
2408    RayTracingNV = 5340u32,
2409    RayTracingMotionBlurNV = 5341u32,
2410    VulkanMemoryModel = 5345u32,
2411    VulkanMemoryModelDeviceScope = 5346u32,
2412    PhysicalStorageBufferAddresses = 5347u32,
2413    ComputeDerivativeGroupLinearKHR = 5350u32,
2414    RayTracingProvisionalKHR = 5353u32,
2415    CooperativeMatrixNV = 5357u32,
2416    FragmentShaderSampleInterlockEXT = 5363u32,
2417    FragmentShaderShadingRateInterlockEXT = 5372u32,
2418    ShaderSMBuiltinsNV = 5373u32,
2419    FragmentShaderPixelInterlockEXT = 5378u32,
2420    DemoteToHelperInvocation = 5379u32,
2421    DisplacementMicromapNV = 5380u32,
2422    RayTracingOpacityMicromapEXT = 5381u32,
2423    ShaderInvocationReorderNV = 5383u32,
2424    ShaderInvocationReorderEXT = 5388u32,
2425    BindlessTextureNV = 5390u32,
2426    RayQueryPositionFetchKHR = 5391u32,
2427    CooperativeVectorNV = 5394u32,
2428    AtomicFloat16VectorNV = 5404u32,
2429    RayTracingDisplacementMicromapNV = 5409u32,
2430    RawAccessChainsNV = 5414u32,
2431    RayTracingSpheresGeometryNV = 5418u32,
2432    RayTracingLinearSweptSpheresGeometryNV = 5419u32,
2433    PushConstantBanksNV = 5423u32,
2434    LongVectorEXT = 5425u32,
2435    Shader64BitIndexingEXT = 5426u32,
2436    CooperativeMatrixReductionsNV = 5430u32,
2437    CooperativeMatrixConversionsNV = 5431u32,
2438    CooperativeMatrixPerElementOperationsNV = 5432u32,
2439    CooperativeMatrixTensorAddressingNV = 5433u32,
2440    CooperativeMatrixBlockLoadsNV = 5434u32,
2441    CooperativeVectorTrainingNV = 5435u32,
2442    RayTracingClusterAccelerationStructureNV = 5437u32,
2443    TensorAddressingNV = 5439u32,
2444    SubgroupShuffleINTEL = 5568u32,
2445    SubgroupBufferBlockIOINTEL = 5569u32,
2446    SubgroupImageBlockIOINTEL = 5570u32,
2447    SubgroupImageMediaBlockIOINTEL = 5579u32,
2448    RoundToInfinityINTEL = 5582u32,
2449    FloatingPointModeINTEL = 5583u32,
2450    IntegerFunctions2INTEL = 5584u32,
2451    FunctionPointersINTEL = 5603u32,
2452    IndirectReferencesINTEL = 5604u32,
2453    AsmINTEL = 5606u32,
2454    AtomicFloat32MinMaxEXT = 5612u32,
2455    AtomicFloat64MinMaxEXT = 5613u32,
2456    AtomicFloat16MinMaxEXT = 5616u32,
2457    VectorComputeINTEL = 5617u32,
2458    VectorAnyINTEL = 5619u32,
2459    ExpectAssumeKHR = 5629u32,
2460    SubgroupAvcMotionEstimationINTEL = 5696u32,
2461    SubgroupAvcMotionEstimationIntraINTEL = 5697u32,
2462    SubgroupAvcMotionEstimationChromaINTEL = 5698u32,
2463    VariableLengthArrayINTEL = 5817u32,
2464    FunctionFloatControlINTEL = 5821u32,
2465    FPGAMemoryAttributesALTERA = 5824u32,
2466    FPFastMathModeINTEL = 5837u32,
2467    ArbitraryPrecisionIntegersALTERA = 5844u32,
2468    ArbitraryPrecisionFloatingPointALTERA = 5845u32,
2469    UnstructuredLoopControlsINTEL = 5886u32,
2470    FPGALoopControlsALTERA = 5888u32,
2471    KernelAttributesINTEL = 5892u32,
2472    FPGAKernelAttributesINTEL = 5897u32,
2473    FPGAMemoryAccessesALTERA = 5898u32,
2474    FPGAClusterAttributesALTERA = 5904u32,
2475    LoopFuseALTERA = 5906u32,
2476    FPGADSPControlALTERA = 5908u32,
2477    MemoryAccessAliasingINTEL = 5910u32,
2478    FPGAInvocationPipeliningAttributesALTERA = 5916u32,
2479    FPGABufferLocationALTERA = 5920u32,
2480    ArbitraryPrecisionFixedPointALTERA = 5922u32,
2481    USMStorageClassesALTERA = 5935u32,
2482    RuntimeAlignedAttributeALTERA = 5939u32,
2483    IOPipesALTERA = 5943u32,
2484    BlockingPipesALTERA = 5945u32,
2485    FPGARegALTERA = 5948u32,
2486    DotProductInputAll = 6016u32,
2487    DotProductInput4x8Bit = 6017u32,
2488    DotProductInput4x8BitPacked = 6018u32,
2489    DotProduct = 6019u32,
2490    RayCullMaskKHR = 6020u32,
2491    CooperativeMatrixKHR = 6022u32,
2492    ReplicatedCompositesEXT = 6024u32,
2493    BitInstructions = 6025u32,
2494    GroupNonUniformRotateKHR = 6026u32,
2495    FloatControls2 = 6029u32,
2496    FMAKHR = 6030u32,
2497    AtomicFloat32AddEXT = 6033u32,
2498    AtomicFloat64AddEXT = 6034u32,
2499    LongCompositesINTEL = 6089u32,
2500    OptNoneEXT = 6094u32,
2501    AtomicFloat16AddEXT = 6095u32,
2502    DebugInfoModuleINTEL = 6114u32,
2503    BFloat16ConversionINTEL = 6115u32,
2504    SplitBarrierINTEL = 6141u32,
2505    ArithmeticFenceEXT = 6144u32,
2506    FPGAClusterAttributesV2ALTERA = 6150u32,
2507    FPGAKernelAttributesv2INTEL = 6161u32,
2508    TaskSequenceALTERA = 6162u32,
2509    FPMaxErrorINTEL = 6169u32,
2510    FPGALatencyControlALTERA = 6171u32,
2511    FPGAArgumentInterfacesALTERA = 6174u32,
2512    GlobalVariableHostAccessINTEL = 6187u32,
2513    GlobalVariableFPGADecorationsALTERA = 6189u32,
2514    SubgroupBufferPrefetchINTEL = 6220u32,
2515    Subgroup2DBlockIOINTEL = 6228u32,
2516    Subgroup2DBlockTransformINTEL = 6229u32,
2517    Subgroup2DBlockTransposeINTEL = 6230u32,
2518    SubgroupMatrixMultiplyAccumulateINTEL = 6236u32,
2519    TernaryBitwiseFunctionINTEL = 6241u32,
2520    UntypedVariableLengthArrayINTEL = 6243u32,
2521    SpecConditionalINTEL = 6245u32,
2522    FunctionVariantsINTEL = 6246u32,
2523    GroupUniformArithmeticKHR = 6400u32,
2524    TensorFloat32RoundingINTEL = 6425u32,
2525    MaskedGatherScatterINTEL = 6427u32,
2526    CacheControlsINTEL = 6441u32,
2527    RegisterLimitsINTEL = 6460u32,
2528    BindlessImagesINTEL = 6528u32,
2529}
2530impl Capability {
2531    pub fn from_u32(n: u32) -> Option<Self> {
2532        Some(match n {
2533            0u32..=15u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
2534            17u32..=25u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
2535            27u32..=71u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
2536            4165u32..=4168u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
2537            4174u32..=4176u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
2538            4191u32 => unsafe { core::mem::transmute::<u32, Capability>(4191u32) },
2539            4201u32 => unsafe { core::mem::transmute::<u32, Capability>(4201u32) },
2540            4212u32..=4213u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
2541            4422u32..=4423u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
2542            4427u32..=4431u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
2543            4433u32..=4437u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
2544            4439u32 => unsafe { core::mem::transmute::<u32, Capability>(4439u32) },
2545            4441u32..=4442u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
2546            4445u32 => unsafe { core::mem::transmute::<u32, Capability>(4445u32) },
2547            4447u32..=4450u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
2548            4464u32..=4468u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
2549            4471u32..=4473u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
2550            4478u32..=4479u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
2551            4484u32..=4486u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
2552            4495u32..=4496u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
2553            4498u32 => unsafe { core::mem::transmute::<u32, Capability>(4498u32) },
2554            5008u32..=5010u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
2555            5013u32 => unsafe { core::mem::transmute::<u32, Capability>(5013u32) },
2556            5015u32..=5016u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
2557            5055u32 => unsafe { core::mem::transmute::<u32, Capability>(5055u32) },
2558            5067u32 => unsafe { core::mem::transmute::<u32, Capability>(5067u32) },
2559            5087u32 => unsafe { core::mem::transmute::<u32, Capability>(5087u32) },
2560            5112u32 => unsafe { core::mem::transmute::<u32, Capability>(5112u32) },
2561            5114u32 => unsafe { core::mem::transmute::<u32, Capability>(5114u32) },
2562            5116u32..=5118u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
2563            5128u32 => unsafe { core::mem::transmute::<u32, Capability>(5128u32) },
2564            5249u32 => unsafe { core::mem::transmute::<u32, Capability>(5249u32) },
2565            5251u32 => unsafe { core::mem::transmute::<u32, Capability>(5251u32) },
2566            5254u32..=5255u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
2567            5259u32..=5260u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
2568            5265u32..=5266u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
2569            5282u32..=5284u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
2570            5288u32 => unsafe { core::mem::transmute::<u32, Capability>(5288u32) },
2571            5291u32 => unsafe { core::mem::transmute::<u32, Capability>(5291u32) },
2572            5297u32 => unsafe { core::mem::transmute::<u32, Capability>(5297u32) },
2573            5301u32..=5312u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
2574            5336u32 => unsafe { core::mem::transmute::<u32, Capability>(5336u32) },
2575            5340u32..=5341u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
2576            5345u32..=5347u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
2577            5350u32 => unsafe { core::mem::transmute::<u32, Capability>(5350u32) },
2578            5353u32 => unsafe { core::mem::transmute::<u32, Capability>(5353u32) },
2579            5357u32 => unsafe { core::mem::transmute::<u32, Capability>(5357u32) },
2580            5363u32 => unsafe { core::mem::transmute::<u32, Capability>(5363u32) },
2581            5372u32..=5373u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
2582            5378u32..=5381u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
2583            5383u32 => unsafe { core::mem::transmute::<u32, Capability>(5383u32) },
2584            5388u32 => unsafe { core::mem::transmute::<u32, Capability>(5388u32) },
2585            5390u32..=5391u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
2586            5394u32 => unsafe { core::mem::transmute::<u32, Capability>(5394u32) },
2587            5404u32 => unsafe { core::mem::transmute::<u32, Capability>(5404u32) },
2588            5409u32 => unsafe { core::mem::transmute::<u32, Capability>(5409u32) },
2589            5414u32 => unsafe { core::mem::transmute::<u32, Capability>(5414u32) },
2590            5418u32..=5419u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
2591            5423u32 => unsafe { core::mem::transmute::<u32, Capability>(5423u32) },
2592            5425u32..=5426u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
2593            5430u32..=5435u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
2594            5437u32 => unsafe { core::mem::transmute::<u32, Capability>(5437u32) },
2595            5439u32 => unsafe { core::mem::transmute::<u32, Capability>(5439u32) },
2596            5568u32..=5570u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
2597            5579u32 => unsafe { core::mem::transmute::<u32, Capability>(5579u32) },
2598            5582u32..=5584u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
2599            5603u32..=5604u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
2600            5606u32 => unsafe { core::mem::transmute::<u32, Capability>(5606u32) },
2601            5612u32..=5613u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
2602            5616u32..=5617u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
2603            5619u32 => unsafe { core::mem::transmute::<u32, Capability>(5619u32) },
2604            5629u32 => unsafe { core::mem::transmute::<u32, Capability>(5629u32) },
2605            5696u32..=5698u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
2606            5817u32 => unsafe { core::mem::transmute::<u32, Capability>(5817u32) },
2607            5821u32 => unsafe { core::mem::transmute::<u32, Capability>(5821u32) },
2608            5824u32 => unsafe { core::mem::transmute::<u32, Capability>(5824u32) },
2609            5837u32 => unsafe { core::mem::transmute::<u32, Capability>(5837u32) },
2610            5844u32..=5845u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
2611            5886u32 => unsafe { core::mem::transmute::<u32, Capability>(5886u32) },
2612            5888u32 => unsafe { core::mem::transmute::<u32, Capability>(5888u32) },
2613            5892u32 => unsafe { core::mem::transmute::<u32, Capability>(5892u32) },
2614            5897u32..=5898u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
2615            5904u32 => unsafe { core::mem::transmute::<u32, Capability>(5904u32) },
2616            5906u32 => unsafe { core::mem::transmute::<u32, Capability>(5906u32) },
2617            5908u32 => unsafe { core::mem::transmute::<u32, Capability>(5908u32) },
2618            5910u32 => unsafe { core::mem::transmute::<u32, Capability>(5910u32) },
2619            5916u32 => unsafe { core::mem::transmute::<u32, Capability>(5916u32) },
2620            5920u32 => unsafe { core::mem::transmute::<u32, Capability>(5920u32) },
2621            5922u32 => unsafe { core::mem::transmute::<u32, Capability>(5922u32) },
2622            5935u32 => unsafe { core::mem::transmute::<u32, Capability>(5935u32) },
2623            5939u32 => unsafe { core::mem::transmute::<u32, Capability>(5939u32) },
2624            5943u32 => unsafe { core::mem::transmute::<u32, Capability>(5943u32) },
2625            5945u32 => unsafe { core::mem::transmute::<u32, Capability>(5945u32) },
2626            5948u32 => unsafe { core::mem::transmute::<u32, Capability>(5948u32) },
2627            6016u32..=6020u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
2628            6022u32 => unsafe { core::mem::transmute::<u32, Capability>(6022u32) },
2629            6024u32..=6026u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
2630            6029u32..=6030u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
2631            6033u32..=6034u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
2632            6089u32 => unsafe { core::mem::transmute::<u32, Capability>(6089u32) },
2633            6094u32..=6095u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
2634            6114u32..=6115u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
2635            6141u32 => unsafe { core::mem::transmute::<u32, Capability>(6141u32) },
2636            6144u32 => unsafe { core::mem::transmute::<u32, Capability>(6144u32) },
2637            6150u32 => unsafe { core::mem::transmute::<u32, Capability>(6150u32) },
2638            6161u32..=6162u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
2639            6169u32 => unsafe { core::mem::transmute::<u32, Capability>(6169u32) },
2640            6171u32 => unsafe { core::mem::transmute::<u32, Capability>(6171u32) },
2641            6174u32 => unsafe { core::mem::transmute::<u32, Capability>(6174u32) },
2642            6187u32 => unsafe { core::mem::transmute::<u32, Capability>(6187u32) },
2643            6189u32 => unsafe { core::mem::transmute::<u32, Capability>(6189u32) },
2644            6220u32 => unsafe { core::mem::transmute::<u32, Capability>(6220u32) },
2645            6228u32..=6230u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
2646            6236u32 => unsafe { core::mem::transmute::<u32, Capability>(6236u32) },
2647            6241u32 => unsafe { core::mem::transmute::<u32, Capability>(6241u32) },
2648            6243u32 => unsafe { core::mem::transmute::<u32, Capability>(6243u32) },
2649            6245u32..=6246u32 => unsafe { core::mem::transmute::<u32, Capability>(n) },
2650            6400u32 => unsafe { core::mem::transmute::<u32, Capability>(6400u32) },
2651            6425u32 => unsafe { core::mem::transmute::<u32, Capability>(6425u32) },
2652            6427u32 => unsafe { core::mem::transmute::<u32, Capability>(6427u32) },
2653            6441u32 => unsafe { core::mem::transmute::<u32, Capability>(6441u32) },
2654            6460u32 => unsafe { core::mem::transmute::<u32, Capability>(6460u32) },
2655            6528u32 => unsafe { core::mem::transmute::<u32, Capability>(6528u32) },
2656            _ => return None,
2657        })
2658    }
2659}
2660#[allow(non_upper_case_globals)]
2661impl Capability {
2662    pub const StorageUniformBufferBlock16: Self = Self::StorageBuffer16BitAccess;
2663    pub const StorageUniform16: Self = Self::UniformAndStorageBuffer16BitAccess;
2664    pub const ShaderViewportIndexLayerNV: Self = Self::ShaderViewportIndexLayerEXT;
2665    pub const FragmentBarycentricNV: Self = Self::FragmentBarycentricKHR;
2666    pub const ComputeDerivativeGroupQuadsNV: Self = Self::ComputeDerivativeGroupQuadsKHR;
2667    pub const ShadingRateNV: Self = Self::FragmentDensityEXT;
2668    pub const GroupNonUniformPartitionedNV: Self = Self::GroupNonUniformPartitionedEXT;
2669    pub const ShaderNonUniformEXT: Self = Self::ShaderNonUniform;
2670    pub const RuntimeDescriptorArrayEXT: Self = Self::RuntimeDescriptorArray;
2671    pub const InputAttachmentArrayDynamicIndexingEXT: Self =
2672        Self::InputAttachmentArrayDynamicIndexing;
2673    pub const UniformTexelBufferArrayDynamicIndexingEXT: Self =
2674        Self::UniformTexelBufferArrayDynamicIndexing;
2675    pub const StorageTexelBufferArrayDynamicIndexingEXT: Self =
2676        Self::StorageTexelBufferArrayDynamicIndexing;
2677    pub const UniformBufferArrayNonUniformIndexingEXT: Self =
2678        Self::UniformBufferArrayNonUniformIndexing;
2679    pub const SampledImageArrayNonUniformIndexingEXT: Self =
2680        Self::SampledImageArrayNonUniformIndexing;
2681    pub const StorageBufferArrayNonUniformIndexingEXT: Self =
2682        Self::StorageBufferArrayNonUniformIndexing;
2683    pub const StorageImageArrayNonUniformIndexingEXT: Self =
2684        Self::StorageImageArrayNonUniformIndexing;
2685    pub const InputAttachmentArrayNonUniformIndexingEXT: Self =
2686        Self::InputAttachmentArrayNonUniformIndexing;
2687    pub const UniformTexelBufferArrayNonUniformIndexingEXT: Self =
2688        Self::UniformTexelBufferArrayNonUniformIndexing;
2689    pub const StorageTexelBufferArrayNonUniformIndexingEXT: Self =
2690        Self::StorageTexelBufferArrayNonUniformIndexing;
2691    pub const VulkanMemoryModelKHR: Self = Self::VulkanMemoryModel;
2692    pub const VulkanMemoryModelDeviceScopeKHR: Self = Self::VulkanMemoryModelDeviceScope;
2693    pub const PhysicalStorageBufferAddressesEXT: Self = Self::PhysicalStorageBufferAddresses;
2694    pub const ComputeDerivativeGroupLinearNV: Self = Self::ComputeDerivativeGroupLinearKHR;
2695    pub const DemoteToHelperInvocationEXT: Self = Self::DemoteToHelperInvocation;
2696    pub const FPGAMemoryAttributesINTEL: Self = Self::FPGAMemoryAttributesALTERA;
2697    pub const ArbitraryPrecisionIntegersINTEL: Self = Self::ArbitraryPrecisionIntegersALTERA;
2698    pub const ArbitraryPrecisionFloatingPointINTEL: Self =
2699        Self::ArbitraryPrecisionFloatingPointALTERA;
2700    pub const FPGALoopControlsINTEL: Self = Self::FPGALoopControlsALTERA;
2701    pub const FPGAMemoryAccessesINTEL: Self = Self::FPGAMemoryAccessesALTERA;
2702    pub const FPGAClusterAttributesINTEL: Self = Self::FPGAClusterAttributesALTERA;
2703    pub const LoopFuseINTEL: Self = Self::LoopFuseALTERA;
2704    pub const FPGADSPControlINTEL: Self = Self::FPGADSPControlALTERA;
2705    pub const FPGAInvocationPipeliningAttributesINTEL: Self =
2706        Self::FPGAInvocationPipeliningAttributesALTERA;
2707    pub const FPGABufferLocationINTEL: Self = Self::FPGABufferLocationALTERA;
2708    pub const ArbitraryPrecisionFixedPointINTEL: Self = Self::ArbitraryPrecisionFixedPointALTERA;
2709    pub const USMStorageClassesINTEL: Self = Self::USMStorageClassesALTERA;
2710    pub const RuntimeAlignedAttributeINTEL: Self = Self::RuntimeAlignedAttributeALTERA;
2711    pub const IOPipesINTEL: Self = Self::IOPipesALTERA;
2712    pub const BlockingPipesINTEL: Self = Self::BlockingPipesALTERA;
2713    pub const FPGARegINTEL: Self = Self::FPGARegALTERA;
2714    pub const DotProductInputAllKHR: Self = Self::DotProductInputAll;
2715    pub const DotProductInput4x8BitKHR: Self = Self::DotProductInput4x8Bit;
2716    pub const DotProductInput4x8BitPackedKHR: Self = Self::DotProductInput4x8BitPacked;
2717    pub const DotProductKHR: Self = Self::DotProduct;
2718    pub const OptNoneINTEL: Self = Self::OptNoneEXT;
2719    pub const FPGAClusterAttributesV2INTEL: Self = Self::FPGAClusterAttributesV2ALTERA;
2720    pub const TaskSequenceINTEL: Self = Self::TaskSequenceALTERA;
2721    pub const FPGALatencyControlINTEL: Self = Self::FPGALatencyControlALTERA;
2722    pub const FPGAArgumentInterfacesINTEL: Self = Self::FPGAArgumentInterfacesALTERA;
2723    pub const GlobalVariableFPGADecorationsINTEL: Self = Self::GlobalVariableFPGADecorationsALTERA;
2724}
2725impl core::str::FromStr for Capability {
2726    type Err = ();
2727    fn from_str(s: &str) -> Result<Self, Self::Err> {
2728        Ok(match s {
2729            "Matrix" => Self::Matrix,
2730            "Shader" => Self::Shader,
2731            "Geometry" => Self::Geometry,
2732            "Tessellation" => Self::Tessellation,
2733            "Addresses" => Self::Addresses,
2734            "Linkage" => Self::Linkage,
2735            "Kernel" => Self::Kernel,
2736            "Vector16" => Self::Vector16,
2737            "Float16Buffer" => Self::Float16Buffer,
2738            "Float16" => Self::Float16,
2739            "Float64" => Self::Float64,
2740            "Int64" => Self::Int64,
2741            "Int64Atomics" => Self::Int64Atomics,
2742            "ImageBasic" => Self::ImageBasic,
2743            "ImageReadWrite" => Self::ImageReadWrite,
2744            "ImageMipmap" => Self::ImageMipmap,
2745            "Pipes" => Self::Pipes,
2746            "Groups" => Self::Groups,
2747            "DeviceEnqueue" => Self::DeviceEnqueue,
2748            "LiteralSampler" => Self::LiteralSampler,
2749            "AtomicStorage" => Self::AtomicStorage,
2750            "Int16" => Self::Int16,
2751            "TessellationPointSize" => Self::TessellationPointSize,
2752            "GeometryPointSize" => Self::GeometryPointSize,
2753            "ImageGatherExtended" => Self::ImageGatherExtended,
2754            "StorageImageMultisample" => Self::StorageImageMultisample,
2755            "UniformBufferArrayDynamicIndexing" => Self::UniformBufferArrayDynamicIndexing,
2756            "SampledImageArrayDynamicIndexing" => Self::SampledImageArrayDynamicIndexing,
2757            "StorageBufferArrayDynamicIndexing" => Self::StorageBufferArrayDynamicIndexing,
2758            "StorageImageArrayDynamicIndexing" => Self::StorageImageArrayDynamicIndexing,
2759            "ClipDistance" => Self::ClipDistance,
2760            "CullDistance" => Self::CullDistance,
2761            "ImageCubeArray" => Self::ImageCubeArray,
2762            "SampleRateShading" => Self::SampleRateShading,
2763            "ImageRect" => Self::ImageRect,
2764            "SampledRect" => Self::SampledRect,
2765            "GenericPointer" => Self::GenericPointer,
2766            "Int8" => Self::Int8,
2767            "InputAttachment" => Self::InputAttachment,
2768            "SparseResidency" => Self::SparseResidency,
2769            "MinLod" => Self::MinLod,
2770            "Sampled1D" => Self::Sampled1D,
2771            "Image1D" => Self::Image1D,
2772            "SampledCubeArray" => Self::SampledCubeArray,
2773            "SampledBuffer" => Self::SampledBuffer,
2774            "ImageBuffer" => Self::ImageBuffer,
2775            "ImageMSArray" => Self::ImageMSArray,
2776            "StorageImageExtendedFormats" => Self::StorageImageExtendedFormats,
2777            "ImageQuery" => Self::ImageQuery,
2778            "DerivativeControl" => Self::DerivativeControl,
2779            "InterpolationFunction" => Self::InterpolationFunction,
2780            "TransformFeedback" => Self::TransformFeedback,
2781            "GeometryStreams" => Self::GeometryStreams,
2782            "StorageImageReadWithoutFormat" => Self::StorageImageReadWithoutFormat,
2783            "StorageImageWriteWithoutFormat" => Self::StorageImageWriteWithoutFormat,
2784            "MultiViewport" => Self::MultiViewport,
2785            "SubgroupDispatch" => Self::SubgroupDispatch,
2786            "NamedBarrier" => Self::NamedBarrier,
2787            "PipeStorage" => Self::PipeStorage,
2788            "GroupNonUniform" => Self::GroupNonUniform,
2789            "GroupNonUniformVote" => Self::GroupNonUniformVote,
2790            "GroupNonUniformArithmetic" => Self::GroupNonUniformArithmetic,
2791            "GroupNonUniformBallot" => Self::GroupNonUniformBallot,
2792            "GroupNonUniformShuffle" => Self::GroupNonUniformShuffle,
2793            "GroupNonUniformShuffleRelative" => Self::GroupNonUniformShuffleRelative,
2794            "GroupNonUniformClustered" => Self::GroupNonUniformClustered,
2795            "GroupNonUniformQuad" => Self::GroupNonUniformQuad,
2796            "ShaderLayer" => Self::ShaderLayer,
2797            "ShaderViewportIndex" => Self::ShaderViewportIndex,
2798            "UniformDecoration" => Self::UniformDecoration,
2799            "CoreBuiltinsARM" => Self::CoreBuiltinsARM,
2800            "TileImageColorReadAccessEXT" => Self::TileImageColorReadAccessEXT,
2801            "TileImageDepthReadAccessEXT" => Self::TileImageDepthReadAccessEXT,
2802            "TileImageStencilReadAccessEXT" => Self::TileImageStencilReadAccessEXT,
2803            "TensorsARM" => Self::TensorsARM,
2804            "StorageTensorArrayDynamicIndexingARM" => Self::StorageTensorArrayDynamicIndexingARM,
2805            "StorageTensorArrayNonUniformIndexingARM" => {
2806                Self::StorageTensorArrayNonUniformIndexingARM
2807            }
2808            "GraphARM" => Self::GraphARM,
2809            "CooperativeMatrixLayoutsARM" => Self::CooperativeMatrixLayoutsARM,
2810            "Float8EXT" => Self::Float8EXT,
2811            "Float8CooperativeMatrixEXT" => Self::Float8CooperativeMatrixEXT,
2812            "FragmentShadingRateKHR" => Self::FragmentShadingRateKHR,
2813            "SubgroupBallotKHR" => Self::SubgroupBallotKHR,
2814            "DrawParameters" => Self::DrawParameters,
2815            "WorkgroupMemoryExplicitLayoutKHR" => Self::WorkgroupMemoryExplicitLayoutKHR,
2816            "WorkgroupMemoryExplicitLayout8BitAccessKHR" => {
2817                Self::WorkgroupMemoryExplicitLayout8BitAccessKHR
2818            }
2819            "WorkgroupMemoryExplicitLayout16BitAccessKHR" => {
2820                Self::WorkgroupMemoryExplicitLayout16BitAccessKHR
2821            }
2822            "SubgroupVoteKHR" => Self::SubgroupVoteKHR,
2823            "StorageBuffer16BitAccess" => Self::StorageBuffer16BitAccess,
2824            "StorageUniformBufferBlock16" => Self::StorageBuffer16BitAccess,
2825            "UniformAndStorageBuffer16BitAccess" => Self::UniformAndStorageBuffer16BitAccess,
2826            "StorageUniform16" => Self::UniformAndStorageBuffer16BitAccess,
2827            "StoragePushConstant16" => Self::StoragePushConstant16,
2828            "StorageInputOutput16" => Self::StorageInputOutput16,
2829            "DeviceGroup" => Self::DeviceGroup,
2830            "MultiView" => Self::MultiView,
2831            "VariablePointersStorageBuffer" => Self::VariablePointersStorageBuffer,
2832            "VariablePointers" => Self::VariablePointers,
2833            "AtomicStorageOps" => Self::AtomicStorageOps,
2834            "SampleMaskPostDepthCoverage" => Self::SampleMaskPostDepthCoverage,
2835            "StorageBuffer8BitAccess" => Self::StorageBuffer8BitAccess,
2836            "UniformAndStorageBuffer8BitAccess" => Self::UniformAndStorageBuffer8BitAccess,
2837            "StoragePushConstant8" => Self::StoragePushConstant8,
2838            "DenormPreserve" => Self::DenormPreserve,
2839            "DenormFlushToZero" => Self::DenormFlushToZero,
2840            "SignedZeroInfNanPreserve" => Self::SignedZeroInfNanPreserve,
2841            "RoundingModeRTE" => Self::RoundingModeRTE,
2842            "RoundingModeRTZ" => Self::RoundingModeRTZ,
2843            "RayQueryProvisionalKHR" => Self::RayQueryProvisionalKHR,
2844            "RayQueryKHR" => Self::RayQueryKHR,
2845            "UntypedPointersKHR" => Self::UntypedPointersKHR,
2846            "RayTraversalPrimitiveCullingKHR" => Self::RayTraversalPrimitiveCullingKHR,
2847            "RayTracingKHR" => Self::RayTracingKHR,
2848            "TextureSampleWeightedQCOM" => Self::TextureSampleWeightedQCOM,
2849            "TextureBoxFilterQCOM" => Self::TextureBoxFilterQCOM,
2850            "TextureBlockMatchQCOM" => Self::TextureBlockMatchQCOM,
2851            "TileShadingQCOM" => Self::TileShadingQCOM,
2852            "CooperativeMatrixConversionQCOM" => Self::CooperativeMatrixConversionQCOM,
2853            "TextureBlockMatch2QCOM" => Self::TextureBlockMatch2QCOM,
2854            "Float16ImageAMD" => Self::Float16ImageAMD,
2855            "ImageGatherBiasLodAMD" => Self::ImageGatherBiasLodAMD,
2856            "FragmentMaskAMD" => Self::FragmentMaskAMD,
2857            "StencilExportEXT" => Self::StencilExportEXT,
2858            "ImageReadWriteLodAMD" => Self::ImageReadWriteLodAMD,
2859            "Int64ImageEXT" => Self::Int64ImageEXT,
2860            "ShaderClockKHR" => Self::ShaderClockKHR,
2861            "ShaderEnqueueAMDX" => Self::ShaderEnqueueAMDX,
2862            "QuadControlKHR" => Self::QuadControlKHR,
2863            "Int4TypeINTEL" => Self::Int4TypeINTEL,
2864            "Int4CooperativeMatrixINTEL" => Self::Int4CooperativeMatrixINTEL,
2865            "BFloat16TypeKHR" => Self::BFloat16TypeKHR,
2866            "BFloat16DotProductKHR" => Self::BFloat16DotProductKHR,
2867            "BFloat16CooperativeMatrixKHR" => Self::BFloat16CooperativeMatrixKHR,
2868            "DescriptorHeapEXT" => Self::DescriptorHeapEXT,
2869            "SampleMaskOverrideCoverageNV" => Self::SampleMaskOverrideCoverageNV,
2870            "GeometryShaderPassthroughNV" => Self::GeometryShaderPassthroughNV,
2871            "ShaderViewportIndexLayerEXT" => Self::ShaderViewportIndexLayerEXT,
2872            "ShaderViewportIndexLayerNV" => Self::ShaderViewportIndexLayerEXT,
2873            "ShaderViewportMaskNV" => Self::ShaderViewportMaskNV,
2874            "ShaderStereoViewNV" => Self::ShaderStereoViewNV,
2875            "PerViewAttributesNV" => Self::PerViewAttributesNV,
2876            "FragmentFullyCoveredEXT" => Self::FragmentFullyCoveredEXT,
2877            "MeshShadingNV" => Self::MeshShadingNV,
2878            "ImageFootprintNV" => Self::ImageFootprintNV,
2879            "MeshShadingEXT" => Self::MeshShadingEXT,
2880            "FragmentBarycentricKHR" => Self::FragmentBarycentricKHR,
2881            "FragmentBarycentricNV" => Self::FragmentBarycentricKHR,
2882            "ComputeDerivativeGroupQuadsKHR" => Self::ComputeDerivativeGroupQuadsKHR,
2883            "ComputeDerivativeGroupQuadsNV" => Self::ComputeDerivativeGroupQuadsKHR,
2884            "FragmentDensityEXT" => Self::FragmentDensityEXT,
2885            "ShadingRateNV" => Self::FragmentDensityEXT,
2886            "GroupNonUniformPartitionedEXT" => Self::GroupNonUniformPartitionedEXT,
2887            "GroupNonUniformPartitionedNV" => Self::GroupNonUniformPartitionedEXT,
2888            "ShaderNonUniform" => Self::ShaderNonUniform,
2889            "ShaderNonUniformEXT" => Self::ShaderNonUniform,
2890            "RuntimeDescriptorArray" => Self::RuntimeDescriptorArray,
2891            "RuntimeDescriptorArrayEXT" => Self::RuntimeDescriptorArray,
2892            "InputAttachmentArrayDynamicIndexing" => Self::InputAttachmentArrayDynamicIndexing,
2893            "InputAttachmentArrayDynamicIndexingEXT" => Self::InputAttachmentArrayDynamicIndexing,
2894            "UniformTexelBufferArrayDynamicIndexing" => {
2895                Self::UniformTexelBufferArrayDynamicIndexing
2896            }
2897            "UniformTexelBufferArrayDynamicIndexingEXT" => {
2898                Self::UniformTexelBufferArrayDynamicIndexing
2899            }
2900            "StorageTexelBufferArrayDynamicIndexing" => {
2901                Self::StorageTexelBufferArrayDynamicIndexing
2902            }
2903            "StorageTexelBufferArrayDynamicIndexingEXT" => {
2904                Self::StorageTexelBufferArrayDynamicIndexing
2905            }
2906            "UniformBufferArrayNonUniformIndexing" => Self::UniformBufferArrayNonUniformIndexing,
2907            "UniformBufferArrayNonUniformIndexingEXT" => Self::UniformBufferArrayNonUniformIndexing,
2908            "SampledImageArrayNonUniformIndexing" => Self::SampledImageArrayNonUniformIndexing,
2909            "SampledImageArrayNonUniformIndexingEXT" => Self::SampledImageArrayNonUniformIndexing,
2910            "StorageBufferArrayNonUniformIndexing" => Self::StorageBufferArrayNonUniformIndexing,
2911            "StorageBufferArrayNonUniformIndexingEXT" => Self::StorageBufferArrayNonUniformIndexing,
2912            "StorageImageArrayNonUniformIndexing" => Self::StorageImageArrayNonUniformIndexing,
2913            "StorageImageArrayNonUniformIndexingEXT" => Self::StorageImageArrayNonUniformIndexing,
2914            "InputAttachmentArrayNonUniformIndexing" => {
2915                Self::InputAttachmentArrayNonUniformIndexing
2916            }
2917            "InputAttachmentArrayNonUniformIndexingEXT" => {
2918                Self::InputAttachmentArrayNonUniformIndexing
2919            }
2920            "UniformTexelBufferArrayNonUniformIndexing" => {
2921                Self::UniformTexelBufferArrayNonUniformIndexing
2922            }
2923            "UniformTexelBufferArrayNonUniformIndexingEXT" => {
2924                Self::UniformTexelBufferArrayNonUniformIndexing
2925            }
2926            "StorageTexelBufferArrayNonUniformIndexing" => {
2927                Self::StorageTexelBufferArrayNonUniformIndexing
2928            }
2929            "StorageTexelBufferArrayNonUniformIndexingEXT" => {
2930                Self::StorageTexelBufferArrayNonUniformIndexing
2931            }
2932            "RayTracingPositionFetchKHR" => Self::RayTracingPositionFetchKHR,
2933            "RayTracingNV" => Self::RayTracingNV,
2934            "RayTracingMotionBlurNV" => Self::RayTracingMotionBlurNV,
2935            "VulkanMemoryModel" => Self::VulkanMemoryModel,
2936            "VulkanMemoryModelKHR" => Self::VulkanMemoryModel,
2937            "VulkanMemoryModelDeviceScope" => Self::VulkanMemoryModelDeviceScope,
2938            "VulkanMemoryModelDeviceScopeKHR" => Self::VulkanMemoryModelDeviceScope,
2939            "PhysicalStorageBufferAddresses" => Self::PhysicalStorageBufferAddresses,
2940            "PhysicalStorageBufferAddressesEXT" => Self::PhysicalStorageBufferAddresses,
2941            "ComputeDerivativeGroupLinearKHR" => Self::ComputeDerivativeGroupLinearKHR,
2942            "ComputeDerivativeGroupLinearNV" => Self::ComputeDerivativeGroupLinearKHR,
2943            "RayTracingProvisionalKHR" => Self::RayTracingProvisionalKHR,
2944            "CooperativeMatrixNV" => Self::CooperativeMatrixNV,
2945            "FragmentShaderSampleInterlockEXT" => Self::FragmentShaderSampleInterlockEXT,
2946            "FragmentShaderShadingRateInterlockEXT" => Self::FragmentShaderShadingRateInterlockEXT,
2947            "ShaderSMBuiltinsNV" => Self::ShaderSMBuiltinsNV,
2948            "FragmentShaderPixelInterlockEXT" => Self::FragmentShaderPixelInterlockEXT,
2949            "DemoteToHelperInvocation" => Self::DemoteToHelperInvocation,
2950            "DemoteToHelperInvocationEXT" => Self::DemoteToHelperInvocation,
2951            "DisplacementMicromapNV" => Self::DisplacementMicromapNV,
2952            "RayTracingOpacityMicromapEXT" => Self::RayTracingOpacityMicromapEXT,
2953            "ShaderInvocationReorderNV" => Self::ShaderInvocationReorderNV,
2954            "ShaderInvocationReorderEXT" => Self::ShaderInvocationReorderEXT,
2955            "BindlessTextureNV" => Self::BindlessTextureNV,
2956            "RayQueryPositionFetchKHR" => Self::RayQueryPositionFetchKHR,
2957            "CooperativeVectorNV" => Self::CooperativeVectorNV,
2958            "AtomicFloat16VectorNV" => Self::AtomicFloat16VectorNV,
2959            "RayTracingDisplacementMicromapNV" => Self::RayTracingDisplacementMicromapNV,
2960            "RawAccessChainsNV" => Self::RawAccessChainsNV,
2961            "RayTracingSpheresGeometryNV" => Self::RayTracingSpheresGeometryNV,
2962            "RayTracingLinearSweptSpheresGeometryNV" => {
2963                Self::RayTracingLinearSweptSpheresGeometryNV
2964            }
2965            "PushConstantBanksNV" => Self::PushConstantBanksNV,
2966            "LongVectorEXT" => Self::LongVectorEXT,
2967            "Shader64BitIndexingEXT" => Self::Shader64BitIndexingEXT,
2968            "CooperativeMatrixReductionsNV" => Self::CooperativeMatrixReductionsNV,
2969            "CooperativeMatrixConversionsNV" => Self::CooperativeMatrixConversionsNV,
2970            "CooperativeMatrixPerElementOperationsNV" => {
2971                Self::CooperativeMatrixPerElementOperationsNV
2972            }
2973            "CooperativeMatrixTensorAddressingNV" => Self::CooperativeMatrixTensorAddressingNV,
2974            "CooperativeMatrixBlockLoadsNV" => Self::CooperativeMatrixBlockLoadsNV,
2975            "CooperativeVectorTrainingNV" => Self::CooperativeVectorTrainingNV,
2976            "RayTracingClusterAccelerationStructureNV" => {
2977                Self::RayTracingClusterAccelerationStructureNV
2978            }
2979            "TensorAddressingNV" => Self::TensorAddressingNV,
2980            "SubgroupShuffleINTEL" => Self::SubgroupShuffleINTEL,
2981            "SubgroupBufferBlockIOINTEL" => Self::SubgroupBufferBlockIOINTEL,
2982            "SubgroupImageBlockIOINTEL" => Self::SubgroupImageBlockIOINTEL,
2983            "SubgroupImageMediaBlockIOINTEL" => Self::SubgroupImageMediaBlockIOINTEL,
2984            "RoundToInfinityINTEL" => Self::RoundToInfinityINTEL,
2985            "FloatingPointModeINTEL" => Self::FloatingPointModeINTEL,
2986            "IntegerFunctions2INTEL" => Self::IntegerFunctions2INTEL,
2987            "FunctionPointersINTEL" => Self::FunctionPointersINTEL,
2988            "IndirectReferencesINTEL" => Self::IndirectReferencesINTEL,
2989            "AsmINTEL" => Self::AsmINTEL,
2990            "AtomicFloat32MinMaxEXT" => Self::AtomicFloat32MinMaxEXT,
2991            "AtomicFloat64MinMaxEXT" => Self::AtomicFloat64MinMaxEXT,
2992            "AtomicFloat16MinMaxEXT" => Self::AtomicFloat16MinMaxEXT,
2993            "VectorComputeINTEL" => Self::VectorComputeINTEL,
2994            "VectorAnyINTEL" => Self::VectorAnyINTEL,
2995            "ExpectAssumeKHR" => Self::ExpectAssumeKHR,
2996            "SubgroupAvcMotionEstimationINTEL" => Self::SubgroupAvcMotionEstimationINTEL,
2997            "SubgroupAvcMotionEstimationIntraINTEL" => Self::SubgroupAvcMotionEstimationIntraINTEL,
2998            "SubgroupAvcMotionEstimationChromaINTEL" => {
2999                Self::SubgroupAvcMotionEstimationChromaINTEL
3000            }
3001            "VariableLengthArrayINTEL" => Self::VariableLengthArrayINTEL,
3002            "FunctionFloatControlINTEL" => Self::FunctionFloatControlINTEL,
3003            "FPGAMemoryAttributesALTERA" => Self::FPGAMemoryAttributesALTERA,
3004            "FPGAMemoryAttributesINTEL" => Self::FPGAMemoryAttributesALTERA,
3005            "FPFastMathModeINTEL" => Self::FPFastMathModeINTEL,
3006            "ArbitraryPrecisionIntegersALTERA" => Self::ArbitraryPrecisionIntegersALTERA,
3007            "ArbitraryPrecisionIntegersINTEL" => Self::ArbitraryPrecisionIntegersALTERA,
3008            "ArbitraryPrecisionFloatingPointALTERA" => Self::ArbitraryPrecisionFloatingPointALTERA,
3009            "ArbitraryPrecisionFloatingPointINTEL" => Self::ArbitraryPrecisionFloatingPointALTERA,
3010            "UnstructuredLoopControlsINTEL" => Self::UnstructuredLoopControlsINTEL,
3011            "FPGALoopControlsALTERA" => Self::FPGALoopControlsALTERA,
3012            "FPGALoopControlsINTEL" => Self::FPGALoopControlsALTERA,
3013            "KernelAttributesINTEL" => Self::KernelAttributesINTEL,
3014            "FPGAKernelAttributesINTEL" => Self::FPGAKernelAttributesINTEL,
3015            "FPGAMemoryAccessesALTERA" => Self::FPGAMemoryAccessesALTERA,
3016            "FPGAMemoryAccessesINTEL" => Self::FPGAMemoryAccessesALTERA,
3017            "FPGAClusterAttributesALTERA" => Self::FPGAClusterAttributesALTERA,
3018            "FPGAClusterAttributesINTEL" => Self::FPGAClusterAttributesALTERA,
3019            "LoopFuseALTERA" => Self::LoopFuseALTERA,
3020            "LoopFuseINTEL" => Self::LoopFuseALTERA,
3021            "FPGADSPControlALTERA" => Self::FPGADSPControlALTERA,
3022            "FPGADSPControlINTEL" => Self::FPGADSPControlALTERA,
3023            "MemoryAccessAliasingINTEL" => Self::MemoryAccessAliasingINTEL,
3024            "FPGAInvocationPipeliningAttributesALTERA" => {
3025                Self::FPGAInvocationPipeliningAttributesALTERA
3026            }
3027            "FPGAInvocationPipeliningAttributesINTEL" => {
3028                Self::FPGAInvocationPipeliningAttributesALTERA
3029            }
3030            "FPGABufferLocationALTERA" => Self::FPGABufferLocationALTERA,
3031            "FPGABufferLocationINTEL" => Self::FPGABufferLocationALTERA,
3032            "ArbitraryPrecisionFixedPointALTERA" => Self::ArbitraryPrecisionFixedPointALTERA,
3033            "ArbitraryPrecisionFixedPointINTEL" => Self::ArbitraryPrecisionFixedPointALTERA,
3034            "USMStorageClassesALTERA" => Self::USMStorageClassesALTERA,
3035            "USMStorageClassesINTEL" => Self::USMStorageClassesALTERA,
3036            "RuntimeAlignedAttributeALTERA" => Self::RuntimeAlignedAttributeALTERA,
3037            "RuntimeAlignedAttributeINTEL" => Self::RuntimeAlignedAttributeALTERA,
3038            "IOPipesALTERA" => Self::IOPipesALTERA,
3039            "IOPipesINTEL" => Self::IOPipesALTERA,
3040            "BlockingPipesALTERA" => Self::BlockingPipesALTERA,
3041            "BlockingPipesINTEL" => Self::BlockingPipesALTERA,
3042            "FPGARegALTERA" => Self::FPGARegALTERA,
3043            "FPGARegINTEL" => Self::FPGARegALTERA,
3044            "DotProductInputAll" => Self::DotProductInputAll,
3045            "DotProductInputAllKHR" => Self::DotProductInputAll,
3046            "DotProductInput4x8Bit" => Self::DotProductInput4x8Bit,
3047            "DotProductInput4x8BitKHR" => Self::DotProductInput4x8Bit,
3048            "DotProductInput4x8BitPacked" => Self::DotProductInput4x8BitPacked,
3049            "DotProductInput4x8BitPackedKHR" => Self::DotProductInput4x8BitPacked,
3050            "DotProduct" => Self::DotProduct,
3051            "DotProductKHR" => Self::DotProduct,
3052            "RayCullMaskKHR" => Self::RayCullMaskKHR,
3053            "CooperativeMatrixKHR" => Self::CooperativeMatrixKHR,
3054            "ReplicatedCompositesEXT" => Self::ReplicatedCompositesEXT,
3055            "BitInstructions" => Self::BitInstructions,
3056            "GroupNonUniformRotateKHR" => Self::GroupNonUniformRotateKHR,
3057            "FloatControls2" => Self::FloatControls2,
3058            "FMAKHR" => Self::FMAKHR,
3059            "AtomicFloat32AddEXT" => Self::AtomicFloat32AddEXT,
3060            "AtomicFloat64AddEXT" => Self::AtomicFloat64AddEXT,
3061            "LongCompositesINTEL" => Self::LongCompositesINTEL,
3062            "OptNoneEXT" => Self::OptNoneEXT,
3063            "OptNoneINTEL" => Self::OptNoneEXT,
3064            "AtomicFloat16AddEXT" => Self::AtomicFloat16AddEXT,
3065            "DebugInfoModuleINTEL" => Self::DebugInfoModuleINTEL,
3066            "BFloat16ConversionINTEL" => Self::BFloat16ConversionINTEL,
3067            "SplitBarrierINTEL" => Self::SplitBarrierINTEL,
3068            "ArithmeticFenceEXT" => Self::ArithmeticFenceEXT,
3069            "FPGAClusterAttributesV2ALTERA" => Self::FPGAClusterAttributesV2ALTERA,
3070            "FPGAClusterAttributesV2INTEL" => Self::FPGAClusterAttributesV2ALTERA,
3071            "FPGAKernelAttributesv2INTEL" => Self::FPGAKernelAttributesv2INTEL,
3072            "TaskSequenceALTERA" => Self::TaskSequenceALTERA,
3073            "TaskSequenceINTEL" => Self::TaskSequenceALTERA,
3074            "FPMaxErrorINTEL" => Self::FPMaxErrorINTEL,
3075            "FPGALatencyControlALTERA" => Self::FPGALatencyControlALTERA,
3076            "FPGALatencyControlINTEL" => Self::FPGALatencyControlALTERA,
3077            "FPGAArgumentInterfacesALTERA" => Self::FPGAArgumentInterfacesALTERA,
3078            "FPGAArgumentInterfacesINTEL" => Self::FPGAArgumentInterfacesALTERA,
3079            "GlobalVariableHostAccessINTEL" => Self::GlobalVariableHostAccessINTEL,
3080            "GlobalVariableFPGADecorationsALTERA" => Self::GlobalVariableFPGADecorationsALTERA,
3081            "GlobalVariableFPGADecorationsINTEL" => Self::GlobalVariableFPGADecorationsALTERA,
3082            "SubgroupBufferPrefetchINTEL" => Self::SubgroupBufferPrefetchINTEL,
3083            "Subgroup2DBlockIOINTEL" => Self::Subgroup2DBlockIOINTEL,
3084            "Subgroup2DBlockTransformINTEL" => Self::Subgroup2DBlockTransformINTEL,
3085            "Subgroup2DBlockTransposeINTEL" => Self::Subgroup2DBlockTransposeINTEL,
3086            "SubgroupMatrixMultiplyAccumulateINTEL" => Self::SubgroupMatrixMultiplyAccumulateINTEL,
3087            "TernaryBitwiseFunctionINTEL" => Self::TernaryBitwiseFunctionINTEL,
3088            "UntypedVariableLengthArrayINTEL" => Self::UntypedVariableLengthArrayINTEL,
3089            "SpecConditionalINTEL" => Self::SpecConditionalINTEL,
3090            "FunctionVariantsINTEL" => Self::FunctionVariantsINTEL,
3091            "GroupUniformArithmeticKHR" => Self::GroupUniformArithmeticKHR,
3092            "TensorFloat32RoundingINTEL" => Self::TensorFloat32RoundingINTEL,
3093            "MaskedGatherScatterINTEL" => Self::MaskedGatherScatterINTEL,
3094            "CacheControlsINTEL" => Self::CacheControlsINTEL,
3095            "RegisterLimitsINTEL" => Self::RegisterLimitsINTEL,
3096            "BindlessImagesINTEL" => Self::BindlessImagesINTEL,
3097            _ => return Err(()),
3098        })
3099    }
3100}
3101#[doc = "SPIR-V operand kind: [RayQueryIntersection](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_ray_query_intersection_a_ray_query_intersection)"]
3102#[repr(u32)]
3103#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
3104#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
3105#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
3106#[allow(clippy::upper_case_acronyms)]
3107pub enum RayQueryIntersection {
3108    RayQueryCandidateIntersectionKHR = 0u32,
3109    RayQueryCommittedIntersectionKHR = 1u32,
3110}
3111impl RayQueryIntersection {
3112    pub fn from_u32(n: u32) -> Option<Self> {
3113        Some(match n {
3114            0u32..=1u32 => unsafe { core::mem::transmute::<u32, RayQueryIntersection>(n) },
3115            _ => return None,
3116        })
3117    }
3118}
3119#[allow(non_upper_case_globals)]
3120impl RayQueryIntersection {}
3121impl core::str::FromStr for RayQueryIntersection {
3122    type Err = ();
3123    fn from_str(s: &str) -> Result<Self, Self::Err> {
3124        Ok(match s {
3125            "RayQueryCandidateIntersectionKHR" => Self::RayQueryCandidateIntersectionKHR,
3126            "RayQueryCommittedIntersectionKHR" => Self::RayQueryCommittedIntersectionKHR,
3127            _ => return Err(()),
3128        })
3129    }
3130}
3131#[doc = "SPIR-V operand kind: [RayQueryCommittedIntersectionType](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_ray_query_committed_intersection_type_a_ray_query_committed_intersection_type)"]
3132#[repr(u32)]
3133#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
3134#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
3135#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
3136#[allow(clippy::upper_case_acronyms)]
3137pub enum RayQueryCommittedIntersectionType {
3138    RayQueryCommittedIntersectionNoneKHR = 0u32,
3139    RayQueryCommittedIntersectionTriangleKHR = 1u32,
3140    RayQueryCommittedIntersectionGeneratedKHR = 2u32,
3141}
3142impl RayQueryCommittedIntersectionType {
3143    pub fn from_u32(n: u32) -> Option<Self> {
3144        Some(match n {
3145            0u32..=2u32 => unsafe {
3146                core::mem::transmute::<u32, RayQueryCommittedIntersectionType>(n)
3147            },
3148            _ => return None,
3149        })
3150    }
3151}
3152#[allow(non_upper_case_globals)]
3153impl RayQueryCommittedIntersectionType {}
3154impl core::str::FromStr for RayQueryCommittedIntersectionType {
3155    type Err = ();
3156    fn from_str(s: &str) -> Result<Self, Self::Err> {
3157        Ok(match s {
3158            "RayQueryCommittedIntersectionNoneKHR" => Self::RayQueryCommittedIntersectionNoneKHR,
3159            "RayQueryCommittedIntersectionTriangleKHR" => {
3160                Self::RayQueryCommittedIntersectionTriangleKHR
3161            }
3162            "RayQueryCommittedIntersectionGeneratedKHR" => {
3163                Self::RayQueryCommittedIntersectionGeneratedKHR
3164            }
3165            _ => return Err(()),
3166        })
3167    }
3168}
3169#[doc = "SPIR-V operand kind: [RayQueryCandidateIntersectionType](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_ray_query_candidate_intersection_type_a_ray_query_candidate_intersection_type)"]
3170#[repr(u32)]
3171#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
3172#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
3173#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
3174#[allow(clippy::upper_case_acronyms)]
3175pub enum RayQueryCandidateIntersectionType {
3176    RayQueryCandidateIntersectionTriangleKHR = 0u32,
3177    RayQueryCandidateIntersectionAABBKHR = 1u32,
3178}
3179impl RayQueryCandidateIntersectionType {
3180    pub fn from_u32(n: u32) -> Option<Self> {
3181        Some(match n {
3182            0u32..=1u32 => unsafe {
3183                core::mem::transmute::<u32, RayQueryCandidateIntersectionType>(n)
3184            },
3185            _ => return None,
3186        })
3187    }
3188}
3189#[allow(non_upper_case_globals)]
3190impl RayQueryCandidateIntersectionType {}
3191impl core::str::FromStr for RayQueryCandidateIntersectionType {
3192    type Err = ();
3193    fn from_str(s: &str) -> Result<Self, Self::Err> {
3194        Ok(match s {
3195            "RayQueryCandidateIntersectionTriangleKHR" => {
3196                Self::RayQueryCandidateIntersectionTriangleKHR
3197            }
3198            "RayQueryCandidateIntersectionAABBKHR" => Self::RayQueryCandidateIntersectionAABBKHR,
3199            _ => return Err(()),
3200        })
3201    }
3202}
3203#[doc = "SPIR-V operand kind: [PackedVectorFormat](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_packed_vector_format_a_packed_vector_format)"]
3204#[repr(u32)]
3205#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
3206#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
3207#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
3208#[allow(clippy::upper_case_acronyms)]
3209pub enum PackedVectorFormat {
3210    PackedVectorFormat4x8Bit = 0u32,
3211}
3212impl PackedVectorFormat {
3213    pub fn from_u32(n: u32) -> Option<Self> {
3214        Some(match n {
3215            0u32 => unsafe { core::mem::transmute::<u32, PackedVectorFormat>(0u32) },
3216            _ => return None,
3217        })
3218    }
3219}
3220#[allow(non_upper_case_globals)]
3221impl PackedVectorFormat {
3222    pub const PackedVectorFormat4x8BitKHR: Self = Self::PackedVectorFormat4x8Bit;
3223}
3224impl core::str::FromStr for PackedVectorFormat {
3225    type Err = ();
3226    fn from_str(s: &str) -> Result<Self, Self::Err> {
3227        Ok(match s {
3228            "PackedVectorFormat4x8Bit" => Self::PackedVectorFormat4x8Bit,
3229            "PackedVectorFormat4x8BitKHR" => Self::PackedVectorFormat4x8Bit,
3230            _ => return Err(()),
3231        })
3232    }
3233}
3234bitflags! { # [doc = "SPIR-V operand kind: [CooperativeMatrixOperands](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_cooperative_matrix_operands_a_cooperative_matrix_operands)"] # [derive (Clone , Copy , Debug , PartialEq , Eq , Hash)] # [cfg_attr (feature = "serialize" , derive (serde :: Serialize))] # [cfg_attr (feature = "deserialize" , derive (serde :: Deserialize))] pub struct CooperativeMatrixOperands : u32 { const NONE_KHR = 0u32 ; const MATRIX_A_SIGNED_COMPONENTS_KHR = 1u32 ; const MATRIX_B_SIGNED_COMPONENTS_KHR = 2u32 ; const MATRIX_C_SIGNED_COMPONENTS_KHR = 4u32 ; const MATRIX_RESULT_SIGNED_COMPONENTS_KHR = 8u32 ; const SATURATING_ACCUMULATION_KHR = 16u32 ; } }
3235#[doc = "SPIR-V operand kind: [CooperativeMatrixLayout](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_cooperative_matrix_layout_a_cooperative_matrix_layout)"]
3236#[repr(u32)]
3237#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
3238#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
3239#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
3240#[allow(clippy::upper_case_acronyms)]
3241pub enum CooperativeMatrixLayout {
3242    RowMajorKHR = 0u32,
3243    ColumnMajorKHR = 1u32,
3244    RowBlockedInterleavedARM = 4202u32,
3245    ColumnBlockedInterleavedARM = 4203u32,
3246}
3247impl CooperativeMatrixLayout {
3248    pub fn from_u32(n: u32) -> Option<Self> {
3249        Some(match n {
3250            0u32..=1u32 => unsafe { core::mem::transmute::<u32, CooperativeMatrixLayout>(n) },
3251            4202u32..=4203u32 => unsafe { core::mem::transmute::<u32, CooperativeMatrixLayout>(n) },
3252            _ => return None,
3253        })
3254    }
3255}
3256#[allow(non_upper_case_globals)]
3257impl CooperativeMatrixLayout {}
3258impl core::str::FromStr for CooperativeMatrixLayout {
3259    type Err = ();
3260    fn from_str(s: &str) -> Result<Self, Self::Err> {
3261        Ok(match s {
3262            "RowMajorKHR" => Self::RowMajorKHR,
3263            "ColumnMajorKHR" => Self::ColumnMajorKHR,
3264            "RowBlockedInterleavedARM" => Self::RowBlockedInterleavedARM,
3265            "ColumnBlockedInterleavedARM" => Self::ColumnBlockedInterleavedARM,
3266            _ => return Err(()),
3267        })
3268    }
3269}
3270#[doc = "SPIR-V operand kind: [CooperativeMatrixUse](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_cooperative_matrix_use_a_cooperative_matrix_use)"]
3271#[repr(u32)]
3272#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
3273#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
3274#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
3275#[allow(clippy::upper_case_acronyms)]
3276pub enum CooperativeMatrixUse {
3277    MatrixAKHR = 0u32,
3278    MatrixBKHR = 1u32,
3279    MatrixAccumulatorKHR = 2u32,
3280}
3281impl CooperativeMatrixUse {
3282    pub fn from_u32(n: u32) -> Option<Self> {
3283        Some(match n {
3284            0u32..=2u32 => unsafe { core::mem::transmute::<u32, CooperativeMatrixUse>(n) },
3285            _ => return None,
3286        })
3287    }
3288}
3289#[allow(non_upper_case_globals)]
3290impl CooperativeMatrixUse {}
3291impl core::str::FromStr for CooperativeMatrixUse {
3292    type Err = ();
3293    fn from_str(s: &str) -> Result<Self, Self::Err> {
3294        Ok(match s {
3295            "MatrixAKHR" => Self::MatrixAKHR,
3296            "MatrixBKHR" => Self::MatrixBKHR,
3297            "MatrixAccumulatorKHR" => Self::MatrixAccumulatorKHR,
3298            _ => return Err(()),
3299        })
3300    }
3301}
3302bitflags! { # [doc = "SPIR-V operand kind: [CooperativeMatrixReduce](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_cooperative_matrix_reduce_a_cooperative_matrix_reduce)"] # [derive (Clone , Copy , Debug , PartialEq , Eq , Hash)] # [cfg_attr (feature = "serialize" , derive (serde :: Serialize))] # [cfg_attr (feature = "deserialize" , derive (serde :: Deserialize))] pub struct CooperativeMatrixReduce : u32 { const ROW = 1u32 ; const COLUMN = 2u32 ; const _2X2 = 4u32 ; } }
3303#[doc = "SPIR-V operand kind: [TensorClampMode](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_tensor_clamp_mode_a_tensor_clamp_mode)"]
3304#[repr(u32)]
3305#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
3306#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
3307#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
3308#[allow(clippy::upper_case_acronyms)]
3309pub enum TensorClampMode {
3310    Undefined = 0u32,
3311    Constant = 1u32,
3312    ClampToEdge = 2u32,
3313    Repeat = 3u32,
3314    RepeatMirrored = 4u32,
3315}
3316impl TensorClampMode {
3317    pub fn from_u32(n: u32) -> Option<Self> {
3318        Some(match n {
3319            0u32..=4u32 => unsafe { core::mem::transmute::<u32, TensorClampMode>(n) },
3320            _ => return None,
3321        })
3322    }
3323}
3324#[allow(non_upper_case_globals)]
3325impl TensorClampMode {}
3326impl core::str::FromStr for TensorClampMode {
3327    type Err = ();
3328    fn from_str(s: &str) -> Result<Self, Self::Err> {
3329        Ok(match s {
3330            "Undefined" => Self::Undefined,
3331            "Constant" => Self::Constant,
3332            "ClampToEdge" => Self::ClampToEdge,
3333            "Repeat" => Self::Repeat,
3334            "RepeatMirrored" => Self::RepeatMirrored,
3335            _ => return Err(()),
3336        })
3337    }
3338}
3339bitflags! { # [doc = "SPIR-V operand kind: [TensorAddressingOperands](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_tensor_addressing_operands_a_tensor_addressing_operands)"] # [derive (Clone , Copy , Debug , PartialEq , Eq , Hash)] # [cfg_attr (feature = "serialize" , derive (serde :: Serialize))] # [cfg_attr (feature = "deserialize" , derive (serde :: Deserialize))] pub struct TensorAddressingOperands : u32 { const NONE = 0u32 ; const TENSOR_VIEW = 1u32 ; const DECODE_FUNC = 2u32 ; } }
3340#[doc = "SPIR-V operand kind: [InitializationModeQualifier](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_initialization_mode_qualifier_a_initialization_mode_qualifier)"]
3341#[repr(u32)]
3342#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
3343#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
3344#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
3345#[allow(clippy::upper_case_acronyms)]
3346pub enum InitializationModeQualifier {
3347    InitOnDeviceReprogramALTERA = 0u32,
3348    InitOnDeviceResetALTERA = 1u32,
3349}
3350impl InitializationModeQualifier {
3351    pub fn from_u32(n: u32) -> Option<Self> {
3352        Some(match n {
3353            0u32..=1u32 => unsafe { core::mem::transmute::<u32, InitializationModeQualifier>(n) },
3354            _ => return None,
3355        })
3356    }
3357}
3358#[allow(non_upper_case_globals)]
3359impl InitializationModeQualifier {
3360    pub const InitOnDeviceReprogramINTEL: Self = Self::InitOnDeviceReprogramALTERA;
3361    pub const InitOnDeviceResetINTEL: Self = Self::InitOnDeviceResetALTERA;
3362}
3363impl core::str::FromStr for InitializationModeQualifier {
3364    type Err = ();
3365    fn from_str(s: &str) -> Result<Self, Self::Err> {
3366        Ok(match s {
3367            "InitOnDeviceReprogramALTERA" => Self::InitOnDeviceReprogramALTERA,
3368            "InitOnDeviceReprogramINTEL" => Self::InitOnDeviceReprogramALTERA,
3369            "InitOnDeviceResetALTERA" => Self::InitOnDeviceResetALTERA,
3370            "InitOnDeviceResetINTEL" => Self::InitOnDeviceResetALTERA,
3371            _ => return Err(()),
3372        })
3373    }
3374}
3375#[doc = "SPIR-V operand kind: [LoadCacheControl](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_load_cache_control_a_load_cache_control)"]
3376#[repr(u32)]
3377#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
3378#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
3379#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
3380#[allow(clippy::upper_case_acronyms)]
3381pub enum LoadCacheControl {
3382    UncachedINTEL = 0u32,
3383    CachedINTEL = 1u32,
3384    StreamingINTEL = 2u32,
3385    InvalidateAfterReadINTEL = 3u32,
3386    ConstCachedINTEL = 4u32,
3387}
3388impl LoadCacheControl {
3389    pub fn from_u32(n: u32) -> Option<Self> {
3390        Some(match n {
3391            0u32..=4u32 => unsafe { core::mem::transmute::<u32, LoadCacheControl>(n) },
3392            _ => return None,
3393        })
3394    }
3395}
3396#[allow(non_upper_case_globals)]
3397impl LoadCacheControl {}
3398impl core::str::FromStr for LoadCacheControl {
3399    type Err = ();
3400    fn from_str(s: &str) -> Result<Self, Self::Err> {
3401        Ok(match s {
3402            "UncachedINTEL" => Self::UncachedINTEL,
3403            "CachedINTEL" => Self::CachedINTEL,
3404            "StreamingINTEL" => Self::StreamingINTEL,
3405            "InvalidateAfterReadINTEL" => Self::InvalidateAfterReadINTEL,
3406            "ConstCachedINTEL" => Self::ConstCachedINTEL,
3407            _ => return Err(()),
3408        })
3409    }
3410}
3411#[doc = "SPIR-V operand kind: [StoreCacheControl](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_store_cache_control_a_store_cache_control)"]
3412#[repr(u32)]
3413#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
3414#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
3415#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
3416#[allow(clippy::upper_case_acronyms)]
3417pub enum StoreCacheControl {
3418    UncachedINTEL = 0u32,
3419    WriteThroughINTEL = 1u32,
3420    WriteBackINTEL = 2u32,
3421    StreamingINTEL = 3u32,
3422}
3423impl StoreCacheControl {
3424    pub fn from_u32(n: u32) -> Option<Self> {
3425        Some(match n {
3426            0u32..=3u32 => unsafe { core::mem::transmute::<u32, StoreCacheControl>(n) },
3427            _ => return None,
3428        })
3429    }
3430}
3431#[allow(non_upper_case_globals)]
3432impl StoreCacheControl {}
3433impl core::str::FromStr for StoreCacheControl {
3434    type Err = ();
3435    fn from_str(s: &str) -> Result<Self, Self::Err> {
3436        Ok(match s {
3437            "UncachedINTEL" => Self::UncachedINTEL,
3438            "WriteThroughINTEL" => Self::WriteThroughINTEL,
3439            "WriteBackINTEL" => Self::WriteBackINTEL,
3440            "StreamingINTEL" => Self::StreamingINTEL,
3441            _ => return Err(()),
3442        })
3443    }
3444}
3445#[doc = "SPIR-V operand kind: [NamedMaximumNumberOfRegisters](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_named_maximum_number_of_registers_a_named_maximum_number_of_registers)"]
3446#[repr(u32)]
3447#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
3448#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
3449#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
3450#[allow(clippy::upper_case_acronyms)]
3451pub enum NamedMaximumNumberOfRegisters {
3452    AutoINTEL = 0u32,
3453}
3454impl NamedMaximumNumberOfRegisters {
3455    pub fn from_u32(n: u32) -> Option<Self> {
3456        Some(match n {
3457            0u32 => unsafe { core::mem::transmute::<u32, NamedMaximumNumberOfRegisters>(0u32) },
3458            _ => return None,
3459        })
3460    }
3461}
3462#[allow(non_upper_case_globals)]
3463impl NamedMaximumNumberOfRegisters {}
3464impl core::str::FromStr for NamedMaximumNumberOfRegisters {
3465    type Err = ();
3466    fn from_str(s: &str) -> Result<Self, Self::Err> {
3467        Ok(match s {
3468            "AutoINTEL" => Self::AutoINTEL,
3469            _ => return Err(()),
3470        })
3471    }
3472}
3473bitflags! { # [doc = "SPIR-V operand kind: [MatrixMultiplyAccumulateOperands](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_matrix_multiply_accumulate_operands_a_matrix_multiply_accumulate_operands)"] # [derive (Clone , Copy , Debug , PartialEq , Eq , Hash)] # [cfg_attr (feature = "serialize" , derive (serde :: Serialize))] # [cfg_attr (feature = "deserialize" , derive (serde :: Deserialize))] pub struct MatrixMultiplyAccumulateOperands : u32 { const NONE = 0u32 ; const MATRIX_A_SIGNED_COMPONENTS_INTEL = 1u32 ; const MATRIX_B_SIGNED_COMPONENTS_INTEL = 2u32 ; const MATRIX_CB_FLOAT16_INTEL = 4u32 ; const MATRIX_RESULT_B_FLOAT16_INTEL = 8u32 ; const MATRIX_A_PACKED_INT8_INTEL = 16u32 ; const MATRIX_B_PACKED_INT8_INTEL = 32u32 ; const MATRIX_A_PACKED_INT4_INTEL = 64u32 ; const MATRIX_B_PACKED_INT4_INTEL = 128u32 ; const MATRIX_ATF32INTEL = 256u32 ; const MATRIX_BTF32INTEL = 512u32 ; const MATRIX_A_PACKED_FLOAT16_INTEL = 1024u32 ; const MATRIX_B_PACKED_FLOAT16_INTEL = 2048u32 ; const MATRIX_A_PACKED_B_FLOAT16_INTEL = 4096u32 ; const MATRIX_B_PACKED_B_FLOAT16_INTEL = 8192u32 ; } }
3474#[doc = "SPIR-V operand kind: [FPEncoding](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_fp_encoding_a_fp_encoding)"]
3475#[repr(u32)]
3476#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
3477#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
3478#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
3479#[allow(clippy::upper_case_acronyms)]
3480pub enum FPEncoding {
3481    BFloat16KHR = 0u32,
3482    Float8E4M3EXT = 4214u32,
3483    Float8E5M2EXT = 4215u32,
3484}
3485impl FPEncoding {
3486    pub fn from_u32(n: u32) -> Option<Self> {
3487        Some(match n {
3488            0u32 => unsafe { core::mem::transmute::<u32, FPEncoding>(0u32) },
3489            4214u32..=4215u32 => unsafe { core::mem::transmute::<u32, FPEncoding>(n) },
3490            _ => return None,
3491        })
3492    }
3493}
3494#[allow(non_upper_case_globals)]
3495impl FPEncoding {}
3496impl core::str::FromStr for FPEncoding {
3497    type Err = ();
3498    fn from_str(s: &str) -> Result<Self, Self::Err> {
3499        Ok(match s {
3500            "BFloat16KHR" => Self::BFloat16KHR,
3501            "Float8E4M3EXT" => Self::Float8E4M3EXT,
3502            "Float8E5M2EXT" => Self::Float8E5M2EXT,
3503            _ => return Err(()),
3504        })
3505    }
3506}
3507#[doc = "SPIR-V operand kind: [CooperativeVectorMatrixLayout](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_cooperative_vector_matrix_layout_a_cooperative_vector_matrix_layout)"]
3508#[repr(u32)]
3509#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
3510#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
3511#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
3512#[allow(clippy::upper_case_acronyms)]
3513pub enum CooperativeVectorMatrixLayout {
3514    RowMajorNV = 0u32,
3515    ColumnMajorNV = 1u32,
3516    InferencingOptimalNV = 2u32,
3517    TrainingOptimalNV = 3u32,
3518}
3519impl CooperativeVectorMatrixLayout {
3520    pub fn from_u32(n: u32) -> Option<Self> {
3521        Some(match n {
3522            0u32..=3u32 => unsafe { core::mem::transmute::<u32, CooperativeVectorMatrixLayout>(n) },
3523            _ => return None,
3524        })
3525    }
3526}
3527#[allow(non_upper_case_globals)]
3528impl CooperativeVectorMatrixLayout {}
3529impl core::str::FromStr for CooperativeVectorMatrixLayout {
3530    type Err = ();
3531    fn from_str(s: &str) -> Result<Self, Self::Err> {
3532        Ok(match s {
3533            "RowMajorNV" => Self::RowMajorNV,
3534            "ColumnMajorNV" => Self::ColumnMajorNV,
3535            "InferencingOptimalNV" => Self::InferencingOptimalNV,
3536            "TrainingOptimalNV" => Self::TrainingOptimalNV,
3537            _ => return Err(()),
3538        })
3539    }
3540}
3541#[doc = "SPIR-V operand kind: [ComponentType](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_component_type_a_component_type)"]
3542#[repr(u32)]
3543#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
3544#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
3545#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
3546#[allow(clippy::upper_case_acronyms)]
3547pub enum ComponentType {
3548    Float16NV = 0u32,
3549    Float32NV = 1u32,
3550    Float64NV = 2u32,
3551    SignedInt8NV = 3u32,
3552    SignedInt16NV = 4u32,
3553    SignedInt32NV = 5u32,
3554    SignedInt64NV = 6u32,
3555    UnsignedInt8NV = 7u32,
3556    UnsignedInt16NV = 8u32,
3557    UnsignedInt32NV = 9u32,
3558    UnsignedInt64NV = 10u32,
3559    SignedInt8PackedNV = 1000491000u32,
3560    UnsignedInt8PackedNV = 1000491001u32,
3561    FloatE4M3NV = 1000491002u32,
3562    FloatE5M2NV = 1000491003u32,
3563}
3564impl ComponentType {
3565    pub fn from_u32(n: u32) -> Option<Self> {
3566        Some(match n {
3567            0u32..=10u32 => unsafe { core::mem::transmute::<u32, ComponentType>(n) },
3568            1000491000u32..=1000491003u32 => unsafe {
3569                core::mem::transmute::<u32, ComponentType>(n)
3570            },
3571            _ => return None,
3572        })
3573    }
3574}
3575#[allow(non_upper_case_globals)]
3576impl ComponentType {}
3577impl core::str::FromStr for ComponentType {
3578    type Err = ();
3579    fn from_str(s: &str) -> Result<Self, Self::Err> {
3580        Ok(match s {
3581            "Float16NV" => Self::Float16NV,
3582            "Float32NV" => Self::Float32NV,
3583            "Float64NV" => Self::Float64NV,
3584            "SignedInt8NV" => Self::SignedInt8NV,
3585            "SignedInt16NV" => Self::SignedInt16NV,
3586            "SignedInt32NV" => Self::SignedInt32NV,
3587            "SignedInt64NV" => Self::SignedInt64NV,
3588            "UnsignedInt8NV" => Self::UnsignedInt8NV,
3589            "UnsignedInt16NV" => Self::UnsignedInt16NV,
3590            "UnsignedInt32NV" => Self::UnsignedInt32NV,
3591            "UnsignedInt64NV" => Self::UnsignedInt64NV,
3592            "SignedInt8PackedNV" => Self::SignedInt8PackedNV,
3593            "UnsignedInt8PackedNV" => Self::UnsignedInt8PackedNV,
3594            "FloatE4M3NV" => Self::FloatE4M3NV,
3595            "FloatE5M2NV" => Self::FloatE5M2NV,
3596            _ => return Err(()),
3597        })
3598    }
3599}
3600bitflags! { # [doc = "SPIR-V operand kind: [TensorOperands](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_tensor_operands_a_tensor_operands)"] # [derive (Clone , Copy , Debug , PartialEq , Eq , Hash)] # [cfg_attr (feature = "serialize" , derive (serde :: Serialize))] # [cfg_attr (feature = "deserialize" , derive (serde :: Deserialize))] pub struct TensorOperands : u32 { const NONE_ARM = 0u32 ; const NONTEMPORAL_ARM = 1u32 ; const OUT_OF_BOUNDS_VALUE_ARM = 2u32 ; const MAKE_ELEMENT_AVAILABLE_ARM = 4u32 ; const MAKE_ELEMENT_VISIBLE_ARM = 8u32 ; const NON_PRIVATE_ELEMENT_ARM = 16u32 ; } }
3601#[doc = "SPIR-V [instructions](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_instructions_a_instructions) opcodes"]
3602#[repr(u32)]
3603#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
3604#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
3605#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
3606#[allow(clippy::upper_case_acronyms)]
3607pub enum Op {
3608    Nop = 0u32,
3609    Undef = 1u32,
3610    SourceContinued = 2u32,
3611    Source = 3u32,
3612    SourceExtension = 4u32,
3613    Name = 5u32,
3614    MemberName = 6u32,
3615    String = 7u32,
3616    Line = 8u32,
3617    Extension = 10u32,
3618    ExtInstImport = 11u32,
3619    ExtInst = 12u32,
3620    MemoryModel = 14u32,
3621    EntryPoint = 15u32,
3622    ExecutionMode = 16u32,
3623    Capability = 17u32,
3624    TypeVoid = 19u32,
3625    TypeBool = 20u32,
3626    TypeInt = 21u32,
3627    TypeFloat = 22u32,
3628    TypeVector = 23u32,
3629    TypeMatrix = 24u32,
3630    TypeImage = 25u32,
3631    TypeSampler = 26u32,
3632    TypeSampledImage = 27u32,
3633    TypeArray = 28u32,
3634    TypeRuntimeArray = 29u32,
3635    TypeStruct = 30u32,
3636    TypeOpaque = 31u32,
3637    TypePointer = 32u32,
3638    TypeFunction = 33u32,
3639    TypeEvent = 34u32,
3640    TypeDeviceEvent = 35u32,
3641    TypeReserveId = 36u32,
3642    TypeQueue = 37u32,
3643    TypePipe = 38u32,
3644    TypeForwardPointer = 39u32,
3645    ConstantTrue = 41u32,
3646    ConstantFalse = 42u32,
3647    Constant = 43u32,
3648    ConstantComposite = 44u32,
3649    ConstantSampler = 45u32,
3650    ConstantNull = 46u32,
3651    SpecConstantTrue = 48u32,
3652    SpecConstantFalse = 49u32,
3653    SpecConstant = 50u32,
3654    SpecConstantComposite = 51u32,
3655    SpecConstantOp = 52u32,
3656    Function = 54u32,
3657    FunctionParameter = 55u32,
3658    FunctionEnd = 56u32,
3659    FunctionCall = 57u32,
3660    Variable = 59u32,
3661    ImageTexelPointer = 60u32,
3662    Load = 61u32,
3663    Store = 62u32,
3664    CopyMemory = 63u32,
3665    CopyMemorySized = 64u32,
3666    AccessChain = 65u32,
3667    InBoundsAccessChain = 66u32,
3668    PtrAccessChain = 67u32,
3669    ArrayLength = 68u32,
3670    GenericPtrMemSemantics = 69u32,
3671    InBoundsPtrAccessChain = 70u32,
3672    Decorate = 71u32,
3673    MemberDecorate = 72u32,
3674    DecorationGroup = 73u32,
3675    GroupDecorate = 74u32,
3676    GroupMemberDecorate = 75u32,
3677    VectorExtractDynamic = 77u32,
3678    VectorInsertDynamic = 78u32,
3679    VectorShuffle = 79u32,
3680    CompositeConstruct = 80u32,
3681    CompositeExtract = 81u32,
3682    CompositeInsert = 82u32,
3683    CopyObject = 83u32,
3684    Transpose = 84u32,
3685    SampledImage = 86u32,
3686    ImageSampleImplicitLod = 87u32,
3687    ImageSampleExplicitLod = 88u32,
3688    ImageSampleDrefImplicitLod = 89u32,
3689    ImageSampleDrefExplicitLod = 90u32,
3690    ImageSampleProjImplicitLod = 91u32,
3691    ImageSampleProjExplicitLod = 92u32,
3692    ImageSampleProjDrefImplicitLod = 93u32,
3693    ImageSampleProjDrefExplicitLod = 94u32,
3694    ImageFetch = 95u32,
3695    ImageGather = 96u32,
3696    ImageDrefGather = 97u32,
3697    ImageRead = 98u32,
3698    ImageWrite = 99u32,
3699    Image = 100u32,
3700    ImageQueryFormat = 101u32,
3701    ImageQueryOrder = 102u32,
3702    ImageQuerySizeLod = 103u32,
3703    ImageQuerySize = 104u32,
3704    ImageQueryLod = 105u32,
3705    ImageQueryLevels = 106u32,
3706    ImageQuerySamples = 107u32,
3707    ConvertFToU = 109u32,
3708    ConvertFToS = 110u32,
3709    ConvertSToF = 111u32,
3710    ConvertUToF = 112u32,
3711    UConvert = 113u32,
3712    SConvert = 114u32,
3713    FConvert = 115u32,
3714    QuantizeToF16 = 116u32,
3715    ConvertPtrToU = 117u32,
3716    SatConvertSToU = 118u32,
3717    SatConvertUToS = 119u32,
3718    ConvertUToPtr = 120u32,
3719    PtrCastToGeneric = 121u32,
3720    GenericCastToPtr = 122u32,
3721    GenericCastToPtrExplicit = 123u32,
3722    Bitcast = 124u32,
3723    SNegate = 126u32,
3724    FNegate = 127u32,
3725    IAdd = 128u32,
3726    FAdd = 129u32,
3727    ISub = 130u32,
3728    FSub = 131u32,
3729    IMul = 132u32,
3730    FMul = 133u32,
3731    UDiv = 134u32,
3732    SDiv = 135u32,
3733    FDiv = 136u32,
3734    UMod = 137u32,
3735    SRem = 138u32,
3736    SMod = 139u32,
3737    FRem = 140u32,
3738    FMod = 141u32,
3739    VectorTimesScalar = 142u32,
3740    MatrixTimesScalar = 143u32,
3741    VectorTimesMatrix = 144u32,
3742    MatrixTimesVector = 145u32,
3743    MatrixTimesMatrix = 146u32,
3744    OuterProduct = 147u32,
3745    Dot = 148u32,
3746    IAddCarry = 149u32,
3747    ISubBorrow = 150u32,
3748    UMulExtended = 151u32,
3749    SMulExtended = 152u32,
3750    Any = 154u32,
3751    All = 155u32,
3752    IsNan = 156u32,
3753    IsInf = 157u32,
3754    IsFinite = 158u32,
3755    IsNormal = 159u32,
3756    SignBitSet = 160u32,
3757    LessOrGreater = 161u32,
3758    Ordered = 162u32,
3759    Unordered = 163u32,
3760    LogicalEqual = 164u32,
3761    LogicalNotEqual = 165u32,
3762    LogicalOr = 166u32,
3763    LogicalAnd = 167u32,
3764    LogicalNot = 168u32,
3765    Select = 169u32,
3766    IEqual = 170u32,
3767    INotEqual = 171u32,
3768    UGreaterThan = 172u32,
3769    SGreaterThan = 173u32,
3770    UGreaterThanEqual = 174u32,
3771    SGreaterThanEqual = 175u32,
3772    ULessThan = 176u32,
3773    SLessThan = 177u32,
3774    ULessThanEqual = 178u32,
3775    SLessThanEqual = 179u32,
3776    FOrdEqual = 180u32,
3777    FUnordEqual = 181u32,
3778    FOrdNotEqual = 182u32,
3779    FUnordNotEqual = 183u32,
3780    FOrdLessThan = 184u32,
3781    FUnordLessThan = 185u32,
3782    FOrdGreaterThan = 186u32,
3783    FUnordGreaterThan = 187u32,
3784    FOrdLessThanEqual = 188u32,
3785    FUnordLessThanEqual = 189u32,
3786    FOrdGreaterThanEqual = 190u32,
3787    FUnordGreaterThanEqual = 191u32,
3788    ShiftRightLogical = 194u32,
3789    ShiftRightArithmetic = 195u32,
3790    ShiftLeftLogical = 196u32,
3791    BitwiseOr = 197u32,
3792    BitwiseXor = 198u32,
3793    BitwiseAnd = 199u32,
3794    Not = 200u32,
3795    BitFieldInsert = 201u32,
3796    BitFieldSExtract = 202u32,
3797    BitFieldUExtract = 203u32,
3798    BitReverse = 204u32,
3799    BitCount = 205u32,
3800    DPdx = 207u32,
3801    DPdy = 208u32,
3802    Fwidth = 209u32,
3803    DPdxFine = 210u32,
3804    DPdyFine = 211u32,
3805    FwidthFine = 212u32,
3806    DPdxCoarse = 213u32,
3807    DPdyCoarse = 214u32,
3808    FwidthCoarse = 215u32,
3809    EmitVertex = 218u32,
3810    EndPrimitive = 219u32,
3811    EmitStreamVertex = 220u32,
3812    EndStreamPrimitive = 221u32,
3813    ControlBarrier = 224u32,
3814    MemoryBarrier = 225u32,
3815    AtomicLoad = 227u32,
3816    AtomicStore = 228u32,
3817    AtomicExchange = 229u32,
3818    AtomicCompareExchange = 230u32,
3819    AtomicCompareExchangeWeak = 231u32,
3820    AtomicIIncrement = 232u32,
3821    AtomicIDecrement = 233u32,
3822    AtomicIAdd = 234u32,
3823    AtomicISub = 235u32,
3824    AtomicSMin = 236u32,
3825    AtomicUMin = 237u32,
3826    AtomicSMax = 238u32,
3827    AtomicUMax = 239u32,
3828    AtomicAnd = 240u32,
3829    AtomicOr = 241u32,
3830    AtomicXor = 242u32,
3831    Phi = 245u32,
3832    LoopMerge = 246u32,
3833    SelectionMerge = 247u32,
3834    Label = 248u32,
3835    Branch = 249u32,
3836    BranchConditional = 250u32,
3837    Switch = 251u32,
3838    Kill = 252u32,
3839    Return = 253u32,
3840    ReturnValue = 254u32,
3841    Unreachable = 255u32,
3842    LifetimeStart = 256u32,
3843    LifetimeStop = 257u32,
3844    GroupAsyncCopy = 259u32,
3845    GroupWaitEvents = 260u32,
3846    GroupAll = 261u32,
3847    GroupAny = 262u32,
3848    GroupBroadcast = 263u32,
3849    GroupIAdd = 264u32,
3850    GroupFAdd = 265u32,
3851    GroupFMin = 266u32,
3852    GroupUMin = 267u32,
3853    GroupSMin = 268u32,
3854    GroupFMax = 269u32,
3855    GroupUMax = 270u32,
3856    GroupSMax = 271u32,
3857    ReadPipe = 274u32,
3858    WritePipe = 275u32,
3859    ReservedReadPipe = 276u32,
3860    ReservedWritePipe = 277u32,
3861    ReserveReadPipePackets = 278u32,
3862    ReserveWritePipePackets = 279u32,
3863    CommitReadPipe = 280u32,
3864    CommitWritePipe = 281u32,
3865    IsValidReserveId = 282u32,
3866    GetNumPipePackets = 283u32,
3867    GetMaxPipePackets = 284u32,
3868    GroupReserveReadPipePackets = 285u32,
3869    GroupReserveWritePipePackets = 286u32,
3870    GroupCommitReadPipe = 287u32,
3871    GroupCommitWritePipe = 288u32,
3872    EnqueueMarker = 291u32,
3873    EnqueueKernel = 292u32,
3874    GetKernelNDrangeSubGroupCount = 293u32,
3875    GetKernelNDrangeMaxSubGroupSize = 294u32,
3876    GetKernelWorkGroupSize = 295u32,
3877    GetKernelPreferredWorkGroupSizeMultiple = 296u32,
3878    RetainEvent = 297u32,
3879    ReleaseEvent = 298u32,
3880    CreateUserEvent = 299u32,
3881    IsValidEvent = 300u32,
3882    SetUserEventStatus = 301u32,
3883    CaptureEventProfilingInfo = 302u32,
3884    GetDefaultQueue = 303u32,
3885    BuildNDRange = 304u32,
3886    ImageSparseSampleImplicitLod = 305u32,
3887    ImageSparseSampleExplicitLod = 306u32,
3888    ImageSparseSampleDrefImplicitLod = 307u32,
3889    ImageSparseSampleDrefExplicitLod = 308u32,
3890    ImageSparseSampleProjImplicitLod = 309u32,
3891    ImageSparseSampleProjExplicitLod = 310u32,
3892    ImageSparseSampleProjDrefImplicitLod = 311u32,
3893    ImageSparseSampleProjDrefExplicitLod = 312u32,
3894    ImageSparseFetch = 313u32,
3895    ImageSparseGather = 314u32,
3896    ImageSparseDrefGather = 315u32,
3897    ImageSparseTexelsResident = 316u32,
3898    NoLine = 317u32,
3899    AtomicFlagTestAndSet = 318u32,
3900    AtomicFlagClear = 319u32,
3901    ImageSparseRead = 320u32,
3902    SizeOf = 321u32,
3903    TypePipeStorage = 322u32,
3904    ConstantPipeStorage = 323u32,
3905    CreatePipeFromPipeStorage = 324u32,
3906    GetKernelLocalSizeForSubgroupCount = 325u32,
3907    GetKernelMaxNumSubgroups = 326u32,
3908    TypeNamedBarrier = 327u32,
3909    NamedBarrierInitialize = 328u32,
3910    MemoryNamedBarrier = 329u32,
3911    ModuleProcessed = 330u32,
3912    ExecutionModeId = 331u32,
3913    DecorateId = 332u32,
3914    GroupNonUniformElect = 333u32,
3915    GroupNonUniformAll = 334u32,
3916    GroupNonUniformAny = 335u32,
3917    GroupNonUniformAllEqual = 336u32,
3918    GroupNonUniformBroadcast = 337u32,
3919    GroupNonUniformBroadcastFirst = 338u32,
3920    GroupNonUniformBallot = 339u32,
3921    GroupNonUniformInverseBallot = 340u32,
3922    GroupNonUniformBallotBitExtract = 341u32,
3923    GroupNonUniformBallotBitCount = 342u32,
3924    GroupNonUniformBallotFindLSB = 343u32,
3925    GroupNonUniformBallotFindMSB = 344u32,
3926    GroupNonUniformShuffle = 345u32,
3927    GroupNonUniformShuffleXor = 346u32,
3928    GroupNonUniformShuffleUp = 347u32,
3929    GroupNonUniformShuffleDown = 348u32,
3930    GroupNonUniformIAdd = 349u32,
3931    GroupNonUniformFAdd = 350u32,
3932    GroupNonUniformIMul = 351u32,
3933    GroupNonUniformFMul = 352u32,
3934    GroupNonUniformSMin = 353u32,
3935    GroupNonUniformUMin = 354u32,
3936    GroupNonUniformFMin = 355u32,
3937    GroupNonUniformSMax = 356u32,
3938    GroupNonUniformUMax = 357u32,
3939    GroupNonUniformFMax = 358u32,
3940    GroupNonUniformBitwiseAnd = 359u32,
3941    GroupNonUniformBitwiseOr = 360u32,
3942    GroupNonUniformBitwiseXor = 361u32,
3943    GroupNonUniformLogicalAnd = 362u32,
3944    GroupNonUniformLogicalOr = 363u32,
3945    GroupNonUniformLogicalXor = 364u32,
3946    GroupNonUniformQuadBroadcast = 365u32,
3947    GroupNonUniformQuadSwap = 366u32,
3948    CopyLogical = 400u32,
3949    PtrEqual = 401u32,
3950    PtrNotEqual = 402u32,
3951    PtrDiff = 403u32,
3952    ColorAttachmentReadEXT = 4160u32,
3953    DepthAttachmentReadEXT = 4161u32,
3954    StencilAttachmentReadEXT = 4162u32,
3955    TypeTensorARM = 4163u32,
3956    TensorReadARM = 4164u32,
3957    TensorWriteARM = 4165u32,
3958    TensorQuerySizeARM = 4166u32,
3959    GraphConstantARM = 4181u32,
3960    GraphEntryPointARM = 4182u32,
3961    GraphARM = 4183u32,
3962    GraphInputARM = 4184u32,
3963    GraphSetOutputARM = 4185u32,
3964    GraphEndARM = 4186u32,
3965    TypeGraphARM = 4190u32,
3966    TerminateInvocation = 4416u32,
3967    TypeUntypedPointerKHR = 4417u32,
3968    UntypedVariableKHR = 4418u32,
3969    UntypedAccessChainKHR = 4419u32,
3970    UntypedInBoundsAccessChainKHR = 4420u32,
3971    SubgroupBallotKHR = 4421u32,
3972    SubgroupFirstInvocationKHR = 4422u32,
3973    UntypedPtrAccessChainKHR = 4423u32,
3974    UntypedInBoundsPtrAccessChainKHR = 4424u32,
3975    UntypedArrayLengthKHR = 4425u32,
3976    UntypedPrefetchKHR = 4426u32,
3977    FmaKHR = 4427u32,
3978    SubgroupAllKHR = 4428u32,
3979    SubgroupAnyKHR = 4429u32,
3980    SubgroupAllEqualKHR = 4430u32,
3981    GroupNonUniformRotateKHR = 4431u32,
3982    SubgroupReadInvocationKHR = 4432u32,
3983    ExtInstWithForwardRefsKHR = 4433u32,
3984    UntypedGroupAsyncCopyKHR = 4434u32,
3985    TraceRayKHR = 4445u32,
3986    ExecuteCallableKHR = 4446u32,
3987    ConvertUToAccelerationStructureKHR = 4447u32,
3988    IgnoreIntersectionKHR = 4448u32,
3989    TerminateRayKHR = 4449u32,
3990    SDot = 4450u32,
3991    UDot = 4451u32,
3992    SUDot = 4452u32,
3993    SDotAccSat = 4453u32,
3994    UDotAccSat = 4454u32,
3995    SUDotAccSat = 4455u32,
3996    TypeCooperativeMatrixKHR = 4456u32,
3997    CooperativeMatrixLoadKHR = 4457u32,
3998    CooperativeMatrixStoreKHR = 4458u32,
3999    CooperativeMatrixMulAddKHR = 4459u32,
4000    CooperativeMatrixLengthKHR = 4460u32,
4001    ConstantCompositeReplicateEXT = 4461u32,
4002    SpecConstantCompositeReplicateEXT = 4462u32,
4003    CompositeConstructReplicateEXT = 4463u32,
4004    TypeRayQueryKHR = 4472u32,
4005    RayQueryInitializeKHR = 4473u32,
4006    RayQueryTerminateKHR = 4474u32,
4007    RayQueryGenerateIntersectionKHR = 4475u32,
4008    RayQueryConfirmIntersectionKHR = 4476u32,
4009    RayQueryProceedKHR = 4477u32,
4010    RayQueryGetIntersectionTypeKHR = 4479u32,
4011    ImageSampleWeightedQCOM = 4480u32,
4012    ImageBoxFilterQCOM = 4481u32,
4013    ImageBlockMatchSSDQCOM = 4482u32,
4014    ImageBlockMatchSADQCOM = 4483u32,
4015    BitCastArrayQCOM = 4497u32,
4016    ImageBlockMatchWindowSSDQCOM = 4500u32,
4017    ImageBlockMatchWindowSADQCOM = 4501u32,
4018    ImageBlockMatchGatherSSDQCOM = 4502u32,
4019    ImageBlockMatchGatherSADQCOM = 4503u32,
4020    CompositeConstructCoopMatQCOM = 4540u32,
4021    CompositeExtractCoopMatQCOM = 4541u32,
4022    ExtractSubArrayQCOM = 4542u32,
4023    GroupIAddNonUniformAMD = 5000u32,
4024    GroupFAddNonUniformAMD = 5001u32,
4025    GroupFMinNonUniformAMD = 5002u32,
4026    GroupUMinNonUniformAMD = 5003u32,
4027    GroupSMinNonUniformAMD = 5004u32,
4028    GroupFMaxNonUniformAMD = 5005u32,
4029    GroupUMaxNonUniformAMD = 5006u32,
4030    GroupSMaxNonUniformAMD = 5007u32,
4031    FragmentMaskFetchAMD = 5011u32,
4032    FragmentFetchAMD = 5012u32,
4033    ReadClockKHR = 5056u32,
4034    AllocateNodePayloadsAMDX = 5074u32,
4035    EnqueueNodePayloadsAMDX = 5075u32,
4036    TypeNodePayloadArrayAMDX = 5076u32,
4037    FinishWritingNodePayloadAMDX = 5078u32,
4038    NodePayloadArrayLengthAMDX = 5090u32,
4039    IsNodePayloadValidAMDX = 5101u32,
4040    ConstantStringAMDX = 5103u32,
4041    SpecConstantStringAMDX = 5104u32,
4042    GroupNonUniformQuadAllKHR = 5110u32,
4043    GroupNonUniformQuadAnyKHR = 5111u32,
4044    TypeBufferEXT = 5115u32,
4045    BufferPointerEXT = 5119u32,
4046    UntypedImageTexelPointerEXT = 5126u32,
4047    MemberDecorateIdEXT = 5127u32,
4048    ConstantSizeOfEXT = 5129u32,
4049    HitObjectRecordHitMotionNV = 5249u32,
4050    HitObjectRecordHitWithIndexMotionNV = 5250u32,
4051    HitObjectRecordMissMotionNV = 5251u32,
4052    HitObjectGetWorldToObjectNV = 5252u32,
4053    HitObjectGetObjectToWorldNV = 5253u32,
4054    HitObjectGetObjectRayDirectionNV = 5254u32,
4055    HitObjectGetObjectRayOriginNV = 5255u32,
4056    HitObjectTraceRayMotionNV = 5256u32,
4057    HitObjectGetShaderRecordBufferHandleNV = 5257u32,
4058    HitObjectGetShaderBindingTableRecordIndexNV = 5258u32,
4059    HitObjectRecordEmptyNV = 5259u32,
4060    HitObjectTraceRayNV = 5260u32,
4061    HitObjectRecordHitNV = 5261u32,
4062    HitObjectRecordHitWithIndexNV = 5262u32,
4063    HitObjectRecordMissNV = 5263u32,
4064    HitObjectExecuteShaderNV = 5264u32,
4065    HitObjectGetCurrentTimeNV = 5265u32,
4066    HitObjectGetAttributesNV = 5266u32,
4067    HitObjectGetHitKindNV = 5267u32,
4068    HitObjectGetPrimitiveIndexNV = 5268u32,
4069    HitObjectGetGeometryIndexNV = 5269u32,
4070    HitObjectGetInstanceIdNV = 5270u32,
4071    HitObjectGetInstanceCustomIndexNV = 5271u32,
4072    HitObjectGetWorldRayDirectionNV = 5272u32,
4073    HitObjectGetWorldRayOriginNV = 5273u32,
4074    HitObjectGetRayTMaxNV = 5274u32,
4075    HitObjectGetRayTMinNV = 5275u32,
4076    HitObjectIsEmptyNV = 5276u32,
4077    HitObjectIsHitNV = 5277u32,
4078    HitObjectIsMissNV = 5278u32,
4079    ReorderThreadWithHitObjectNV = 5279u32,
4080    ReorderThreadWithHintNV = 5280u32,
4081    TypeHitObjectNV = 5281u32,
4082    ImageSampleFootprintNV = 5283u32,
4083    TypeVectorIdEXT = 5288u32,
4084    CooperativeVectorMatrixMulNV = 5289u32,
4085    CooperativeVectorOuterProductAccumulateNV = 5290u32,
4086    CooperativeVectorReduceSumAccumulateNV = 5291u32,
4087    CooperativeVectorMatrixMulAddNV = 5292u32,
4088    CooperativeMatrixConvertNV = 5293u32,
4089    EmitMeshTasksEXT = 5294u32,
4090    SetMeshOutputsEXT = 5295u32,
4091    GroupNonUniformPartitionEXT = 5296u32,
4092    WritePackedPrimitiveIndices4x8NV = 5299u32,
4093    FetchMicroTriangleVertexPositionNV = 5300u32,
4094    FetchMicroTriangleVertexBarycentricNV = 5301u32,
4095    CooperativeVectorLoadNV = 5302u32,
4096    CooperativeVectorStoreNV = 5303u32,
4097    HitObjectRecordFromQueryEXT = 5304u32,
4098    HitObjectRecordMissEXT = 5305u32,
4099    HitObjectRecordMissMotionEXT = 5306u32,
4100    HitObjectGetIntersectionTriangleVertexPositionsEXT = 5307u32,
4101    HitObjectGetRayFlagsEXT = 5308u32,
4102    HitObjectSetShaderBindingTableRecordIndexEXT = 5309u32,
4103    HitObjectReorderExecuteShaderEXT = 5310u32,
4104    HitObjectTraceReorderExecuteEXT = 5311u32,
4105    HitObjectTraceMotionReorderExecuteEXT = 5312u32,
4106    TypeHitObjectEXT = 5313u32,
4107    ReorderThreadWithHintEXT = 5314u32,
4108    ReorderThreadWithHitObjectEXT = 5315u32,
4109    HitObjectTraceRayEXT = 5316u32,
4110    HitObjectTraceRayMotionEXT = 5317u32,
4111    HitObjectRecordEmptyEXT = 5318u32,
4112    HitObjectExecuteShaderEXT = 5319u32,
4113    HitObjectGetCurrentTimeEXT = 5320u32,
4114    HitObjectGetAttributesEXT = 5321u32,
4115    HitObjectGetHitKindEXT = 5322u32,
4116    HitObjectGetPrimitiveIndexEXT = 5323u32,
4117    HitObjectGetGeometryIndexEXT = 5324u32,
4118    HitObjectGetInstanceIdEXT = 5325u32,
4119    HitObjectGetInstanceCustomIndexEXT = 5326u32,
4120    HitObjectGetObjectRayOriginEXT = 5327u32,
4121    HitObjectGetObjectRayDirectionEXT = 5328u32,
4122    HitObjectGetWorldRayDirectionEXT = 5329u32,
4123    HitObjectGetWorldRayOriginEXT = 5330u32,
4124    HitObjectGetObjectToWorldEXT = 5331u32,
4125    HitObjectGetWorldToObjectEXT = 5332u32,
4126    HitObjectGetRayTMaxEXT = 5333u32,
4127    ReportIntersectionKHR = 5334u32,
4128    IgnoreIntersectionNV = 5335u32,
4129    TerminateRayNV = 5336u32,
4130    TraceNV = 5337u32,
4131    TraceMotionNV = 5338u32,
4132    TraceRayMotionNV = 5339u32,
4133    RayQueryGetIntersectionTriangleVertexPositionsKHR = 5340u32,
4134    TypeAccelerationStructureKHR = 5341u32,
4135    ExecuteCallableNV = 5344u32,
4136    RayQueryGetIntersectionClusterIdNV = 5345u32,
4137    HitObjectGetClusterIdNV = 5346u32,
4138    HitObjectGetRayTMinEXT = 5347u32,
4139    HitObjectGetShaderBindingTableRecordIndexEXT = 5348u32,
4140    HitObjectGetShaderRecordBufferHandleEXT = 5349u32,
4141    HitObjectIsEmptyEXT = 5350u32,
4142    HitObjectIsHitEXT = 5351u32,
4143    HitObjectIsMissEXT = 5352u32,
4144    TypeCooperativeMatrixNV = 5358u32,
4145    CooperativeMatrixLoadNV = 5359u32,
4146    CooperativeMatrixStoreNV = 5360u32,
4147    CooperativeMatrixMulAddNV = 5361u32,
4148    CooperativeMatrixLengthNV = 5362u32,
4149    BeginInvocationInterlockEXT = 5364u32,
4150    EndInvocationInterlockEXT = 5365u32,
4151    CooperativeMatrixReduceNV = 5366u32,
4152    CooperativeMatrixLoadTensorNV = 5367u32,
4153    CooperativeMatrixStoreTensorNV = 5368u32,
4154    CooperativeMatrixPerElementOpNV = 5369u32,
4155    TypeTensorLayoutNV = 5370u32,
4156    TypeTensorViewNV = 5371u32,
4157    CreateTensorLayoutNV = 5372u32,
4158    TensorLayoutSetDimensionNV = 5373u32,
4159    TensorLayoutSetStrideNV = 5374u32,
4160    TensorLayoutSliceNV = 5375u32,
4161    TensorLayoutSetClampValueNV = 5376u32,
4162    CreateTensorViewNV = 5377u32,
4163    TensorViewSetDimensionNV = 5378u32,
4164    TensorViewSetStrideNV = 5379u32,
4165    DemoteToHelperInvocation = 5380u32,
4166    IsHelperInvocationEXT = 5381u32,
4167    TensorViewSetClipNV = 5382u32,
4168    TensorLayoutSetBlockSizeNV = 5384u32,
4169    CooperativeMatrixTransposeNV = 5390u32,
4170    ConvertUToImageNV = 5391u32,
4171    ConvertUToSamplerNV = 5392u32,
4172    ConvertImageToUNV = 5393u32,
4173    ConvertSamplerToUNV = 5394u32,
4174    ConvertUToSampledImageNV = 5395u32,
4175    ConvertSampledImageToUNV = 5396u32,
4176    SamplerImageAddressingModeNV = 5397u32,
4177    RawAccessChainNV = 5398u32,
4178    RayQueryGetIntersectionSpherePositionNV = 5427u32,
4179    RayQueryGetIntersectionSphereRadiusNV = 5428u32,
4180    RayQueryGetIntersectionLSSPositionsNV = 5429u32,
4181    RayQueryGetIntersectionLSSRadiiNV = 5430u32,
4182    RayQueryGetIntersectionLSSHitValueNV = 5431u32,
4183    HitObjectGetSpherePositionNV = 5432u32,
4184    HitObjectGetSphereRadiusNV = 5433u32,
4185    HitObjectGetLSSPositionsNV = 5434u32,
4186    HitObjectGetLSSRadiiNV = 5435u32,
4187    HitObjectIsSphereHitNV = 5436u32,
4188    HitObjectIsLSSHitNV = 5437u32,
4189    RayQueryIsSphereHitNV = 5438u32,
4190    RayQueryIsLSSHitNV = 5439u32,
4191    SubgroupShuffleINTEL = 5571u32,
4192    SubgroupShuffleDownINTEL = 5572u32,
4193    SubgroupShuffleUpINTEL = 5573u32,
4194    SubgroupShuffleXorINTEL = 5574u32,
4195    SubgroupBlockReadINTEL = 5575u32,
4196    SubgroupBlockWriteINTEL = 5576u32,
4197    SubgroupImageBlockReadINTEL = 5577u32,
4198    SubgroupImageBlockWriteINTEL = 5578u32,
4199    SubgroupImageMediaBlockReadINTEL = 5580u32,
4200    SubgroupImageMediaBlockWriteINTEL = 5581u32,
4201    UCountLeadingZerosINTEL = 5585u32,
4202    UCountTrailingZerosINTEL = 5586u32,
4203    AbsISubINTEL = 5587u32,
4204    AbsUSubINTEL = 5588u32,
4205    IAddSatINTEL = 5589u32,
4206    UAddSatINTEL = 5590u32,
4207    IAverageINTEL = 5591u32,
4208    UAverageINTEL = 5592u32,
4209    IAverageRoundedINTEL = 5593u32,
4210    UAverageRoundedINTEL = 5594u32,
4211    ISubSatINTEL = 5595u32,
4212    USubSatINTEL = 5596u32,
4213    IMul32x16INTEL = 5597u32,
4214    UMul32x16INTEL = 5598u32,
4215    ConstantFunctionPointerINTEL = 5600u32,
4216    FunctionPointerCallINTEL = 5601u32,
4217    AsmTargetINTEL = 5609u32,
4218    AsmINTEL = 5610u32,
4219    AsmCallINTEL = 5611u32,
4220    AtomicFMinEXT = 5614u32,
4221    AtomicFMaxEXT = 5615u32,
4222    AssumeTrueKHR = 5630u32,
4223    ExpectKHR = 5631u32,
4224    DecorateString = 5632u32,
4225    MemberDecorateString = 5633u32,
4226    VmeImageINTEL = 5699u32,
4227    TypeVmeImageINTEL = 5700u32,
4228    TypeAvcImePayloadINTEL = 5701u32,
4229    TypeAvcRefPayloadINTEL = 5702u32,
4230    TypeAvcSicPayloadINTEL = 5703u32,
4231    TypeAvcMcePayloadINTEL = 5704u32,
4232    TypeAvcMceResultINTEL = 5705u32,
4233    TypeAvcImeResultINTEL = 5706u32,
4234    TypeAvcImeResultSingleReferenceStreamoutINTEL = 5707u32,
4235    TypeAvcImeResultDualReferenceStreamoutINTEL = 5708u32,
4236    TypeAvcImeSingleReferenceStreaminINTEL = 5709u32,
4237    TypeAvcImeDualReferenceStreaminINTEL = 5710u32,
4238    TypeAvcRefResultINTEL = 5711u32,
4239    TypeAvcSicResultINTEL = 5712u32,
4240    SubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL = 5713u32,
4241    SubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL = 5714u32,
4242    SubgroupAvcMceGetDefaultInterShapePenaltyINTEL = 5715u32,
4243    SubgroupAvcMceSetInterShapePenaltyINTEL = 5716u32,
4244    SubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL = 5717u32,
4245    SubgroupAvcMceSetInterDirectionPenaltyINTEL = 5718u32,
4246    SubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL = 5719u32,
4247    SubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL = 5720u32,
4248    SubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL = 5721u32,
4249    SubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL = 5722u32,
4250    SubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL = 5723u32,
4251    SubgroupAvcMceSetMotionVectorCostFunctionINTEL = 5724u32,
4252    SubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL = 5725u32,
4253    SubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL = 5726u32,
4254    SubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL = 5727u32,
4255    SubgroupAvcMceSetAcOnlyHaarINTEL = 5728u32,
4256    SubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL = 5729u32,
4257    SubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL = 5730u32,
4258    SubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL = 5731u32,
4259    SubgroupAvcMceConvertToImePayloadINTEL = 5732u32,
4260    SubgroupAvcMceConvertToImeResultINTEL = 5733u32,
4261    SubgroupAvcMceConvertToRefPayloadINTEL = 5734u32,
4262    SubgroupAvcMceConvertToRefResultINTEL = 5735u32,
4263    SubgroupAvcMceConvertToSicPayloadINTEL = 5736u32,
4264    SubgroupAvcMceConvertToSicResultINTEL = 5737u32,
4265    SubgroupAvcMceGetMotionVectorsINTEL = 5738u32,
4266    SubgroupAvcMceGetInterDistortionsINTEL = 5739u32,
4267    SubgroupAvcMceGetBestInterDistortionsINTEL = 5740u32,
4268    SubgroupAvcMceGetInterMajorShapeINTEL = 5741u32,
4269    SubgroupAvcMceGetInterMinorShapeINTEL = 5742u32,
4270    SubgroupAvcMceGetInterDirectionsINTEL = 5743u32,
4271    SubgroupAvcMceGetInterMotionVectorCountINTEL = 5744u32,
4272    SubgroupAvcMceGetInterReferenceIdsINTEL = 5745u32,
4273    SubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL = 5746u32,
4274    SubgroupAvcImeInitializeINTEL = 5747u32,
4275    SubgroupAvcImeSetSingleReferenceINTEL = 5748u32,
4276    SubgroupAvcImeSetDualReferenceINTEL = 5749u32,
4277    SubgroupAvcImeRefWindowSizeINTEL = 5750u32,
4278    SubgroupAvcImeAdjustRefOffsetINTEL = 5751u32,
4279    SubgroupAvcImeConvertToMcePayloadINTEL = 5752u32,
4280    SubgroupAvcImeSetMaxMotionVectorCountINTEL = 5753u32,
4281    SubgroupAvcImeSetUnidirectionalMixDisableINTEL = 5754u32,
4282    SubgroupAvcImeSetEarlySearchTerminationThresholdINTEL = 5755u32,
4283    SubgroupAvcImeSetWeightedSadINTEL = 5756u32,
4284    SubgroupAvcImeEvaluateWithSingleReferenceINTEL = 5757u32,
4285    SubgroupAvcImeEvaluateWithDualReferenceINTEL = 5758u32,
4286    SubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL = 5759u32,
4287    SubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL = 5760u32,
4288    SubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL = 5761u32,
4289    SubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL = 5762u32,
4290    SubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL = 5763u32,
4291    SubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL = 5764u32,
4292    SubgroupAvcImeConvertToMceResultINTEL = 5765u32,
4293    SubgroupAvcImeGetSingleReferenceStreaminINTEL = 5766u32,
4294    SubgroupAvcImeGetDualReferenceStreaminINTEL = 5767u32,
4295    SubgroupAvcImeStripSingleReferenceStreamoutINTEL = 5768u32,
4296    SubgroupAvcImeStripDualReferenceStreamoutINTEL = 5769u32,
4297    SubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL = 5770u32,
4298    SubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL = 5771u32,
4299    SubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL = 5772u32,
4300    SubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL = 5773u32,
4301    SubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL = 5774u32,
4302    SubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL = 5775u32,
4303    SubgroupAvcImeGetBorderReachedINTEL = 5776u32,
4304    SubgroupAvcImeGetTruncatedSearchIndicationINTEL = 5777u32,
4305    SubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL = 5778u32,
4306    SubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL = 5779u32,
4307    SubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL = 5780u32,
4308    SubgroupAvcFmeInitializeINTEL = 5781u32,
4309    SubgroupAvcBmeInitializeINTEL = 5782u32,
4310    SubgroupAvcRefConvertToMcePayloadINTEL = 5783u32,
4311    SubgroupAvcRefSetBidirectionalMixDisableINTEL = 5784u32,
4312    SubgroupAvcRefSetBilinearFilterEnableINTEL = 5785u32,
4313    SubgroupAvcRefEvaluateWithSingleReferenceINTEL = 5786u32,
4314    SubgroupAvcRefEvaluateWithDualReferenceINTEL = 5787u32,
4315    SubgroupAvcRefEvaluateWithMultiReferenceINTEL = 5788u32,
4316    SubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL = 5789u32,
4317    SubgroupAvcRefConvertToMceResultINTEL = 5790u32,
4318    SubgroupAvcSicInitializeINTEL = 5791u32,
4319    SubgroupAvcSicConfigureSkcINTEL = 5792u32,
4320    SubgroupAvcSicConfigureIpeLumaINTEL = 5793u32,
4321    SubgroupAvcSicConfigureIpeLumaChromaINTEL = 5794u32,
4322    SubgroupAvcSicGetMotionVectorMaskINTEL = 5795u32,
4323    SubgroupAvcSicConvertToMcePayloadINTEL = 5796u32,
4324    SubgroupAvcSicSetIntraLumaShapePenaltyINTEL = 5797u32,
4325    SubgroupAvcSicSetIntraLumaModeCostFunctionINTEL = 5798u32,
4326    SubgroupAvcSicSetIntraChromaModeCostFunctionINTEL = 5799u32,
4327    SubgroupAvcSicSetBilinearFilterEnableINTEL = 5800u32,
4328    SubgroupAvcSicSetSkcForwardTransformEnableINTEL = 5801u32,
4329    SubgroupAvcSicSetBlockBasedRawSkipSadINTEL = 5802u32,
4330    SubgroupAvcSicEvaluateIpeINTEL = 5803u32,
4331    SubgroupAvcSicEvaluateWithSingleReferenceINTEL = 5804u32,
4332    SubgroupAvcSicEvaluateWithDualReferenceINTEL = 5805u32,
4333    SubgroupAvcSicEvaluateWithMultiReferenceINTEL = 5806u32,
4334    SubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL = 5807u32,
4335    SubgroupAvcSicConvertToMceResultINTEL = 5808u32,
4336    SubgroupAvcSicGetIpeLumaShapeINTEL = 5809u32,
4337    SubgroupAvcSicGetBestIpeLumaDistortionINTEL = 5810u32,
4338    SubgroupAvcSicGetBestIpeChromaDistortionINTEL = 5811u32,
4339    SubgroupAvcSicGetPackedIpeLumaModesINTEL = 5812u32,
4340    SubgroupAvcSicGetIpeChromaModeINTEL = 5813u32,
4341    SubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL = 5814u32,
4342    SubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL = 5815u32,
4343    SubgroupAvcSicGetInterRawSadsINTEL = 5816u32,
4344    VariableLengthArrayINTEL = 5818u32,
4345    SaveMemoryINTEL = 5819u32,
4346    RestoreMemoryINTEL = 5820u32,
4347    ArbitraryFloatSinCosPiALTERA = 5840u32,
4348    ArbitraryFloatCastALTERA = 5841u32,
4349    ArbitraryFloatCastFromIntALTERA = 5842u32,
4350    ArbitraryFloatCastToIntALTERA = 5843u32,
4351    ArbitraryFloatAddALTERA = 5846u32,
4352    ArbitraryFloatSubALTERA = 5847u32,
4353    ArbitraryFloatMulALTERA = 5848u32,
4354    ArbitraryFloatDivALTERA = 5849u32,
4355    ArbitraryFloatGTALTERA = 5850u32,
4356    ArbitraryFloatGEALTERA = 5851u32,
4357    ArbitraryFloatLTALTERA = 5852u32,
4358    ArbitraryFloatLEALTERA = 5853u32,
4359    ArbitraryFloatEQALTERA = 5854u32,
4360    ArbitraryFloatRecipALTERA = 5855u32,
4361    ArbitraryFloatRSqrtALTERA = 5856u32,
4362    ArbitraryFloatCbrtALTERA = 5857u32,
4363    ArbitraryFloatHypotALTERA = 5858u32,
4364    ArbitraryFloatSqrtALTERA = 5859u32,
4365    ArbitraryFloatLogINTEL = 5860u32,
4366    ArbitraryFloatLog2INTEL = 5861u32,
4367    ArbitraryFloatLog10INTEL = 5862u32,
4368    ArbitraryFloatLog1pINTEL = 5863u32,
4369    ArbitraryFloatExpINTEL = 5864u32,
4370    ArbitraryFloatExp2INTEL = 5865u32,
4371    ArbitraryFloatExp10INTEL = 5866u32,
4372    ArbitraryFloatExpm1INTEL = 5867u32,
4373    ArbitraryFloatSinINTEL = 5868u32,
4374    ArbitraryFloatCosINTEL = 5869u32,
4375    ArbitraryFloatSinCosINTEL = 5870u32,
4376    ArbitraryFloatSinPiINTEL = 5871u32,
4377    ArbitraryFloatCosPiINTEL = 5872u32,
4378    ArbitraryFloatASinINTEL = 5873u32,
4379    ArbitraryFloatASinPiINTEL = 5874u32,
4380    ArbitraryFloatACosINTEL = 5875u32,
4381    ArbitraryFloatACosPiINTEL = 5876u32,
4382    ArbitraryFloatATanINTEL = 5877u32,
4383    ArbitraryFloatATanPiINTEL = 5878u32,
4384    ArbitraryFloatATan2INTEL = 5879u32,
4385    ArbitraryFloatPowINTEL = 5880u32,
4386    ArbitraryFloatPowRINTEL = 5881u32,
4387    ArbitraryFloatPowNINTEL = 5882u32,
4388    LoopControlINTEL = 5887u32,
4389    AliasDomainDeclINTEL = 5911u32,
4390    AliasScopeDeclINTEL = 5912u32,
4391    AliasScopeListDeclINTEL = 5913u32,
4392    FixedSqrtALTERA = 5923u32,
4393    FixedRecipALTERA = 5924u32,
4394    FixedRsqrtALTERA = 5925u32,
4395    FixedSinALTERA = 5926u32,
4396    FixedCosALTERA = 5927u32,
4397    FixedSinCosALTERA = 5928u32,
4398    FixedSinPiALTERA = 5929u32,
4399    FixedCosPiALTERA = 5930u32,
4400    FixedSinCosPiALTERA = 5931u32,
4401    FixedLogALTERA = 5932u32,
4402    FixedExpALTERA = 5933u32,
4403    PtrCastToCrossWorkgroupALTERA = 5934u32,
4404    CrossWorkgroupCastToPtrALTERA = 5938u32,
4405    ReadPipeBlockingALTERA = 5946u32,
4406    WritePipeBlockingALTERA = 5947u32,
4407    FPGARegALTERA = 5949u32,
4408    RayQueryGetRayTMinKHR = 6016u32,
4409    RayQueryGetRayFlagsKHR = 6017u32,
4410    RayQueryGetIntersectionTKHR = 6018u32,
4411    RayQueryGetIntersectionInstanceCustomIndexKHR = 6019u32,
4412    RayQueryGetIntersectionInstanceIdKHR = 6020u32,
4413    RayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR = 6021u32,
4414    RayQueryGetIntersectionGeometryIndexKHR = 6022u32,
4415    RayQueryGetIntersectionPrimitiveIndexKHR = 6023u32,
4416    RayQueryGetIntersectionBarycentricsKHR = 6024u32,
4417    RayQueryGetIntersectionFrontFaceKHR = 6025u32,
4418    RayQueryGetIntersectionCandidateAABBOpaqueKHR = 6026u32,
4419    RayQueryGetIntersectionObjectRayDirectionKHR = 6027u32,
4420    RayQueryGetIntersectionObjectRayOriginKHR = 6028u32,
4421    RayQueryGetWorldRayDirectionKHR = 6029u32,
4422    RayQueryGetWorldRayOriginKHR = 6030u32,
4423    RayQueryGetIntersectionObjectToWorldKHR = 6031u32,
4424    RayQueryGetIntersectionWorldToObjectKHR = 6032u32,
4425    AtomicFAddEXT = 6035u32,
4426    TypeBufferSurfaceINTEL = 6086u32,
4427    TypeStructContinuedINTEL = 6090u32,
4428    ConstantCompositeContinuedINTEL = 6091u32,
4429    SpecConstantCompositeContinuedINTEL = 6092u32,
4430    CompositeConstructContinuedINTEL = 6096u32,
4431    ConvertFToBF16INTEL = 6116u32,
4432    ConvertBF16ToFINTEL = 6117u32,
4433    ControlBarrierArriveINTEL = 6142u32,
4434    ControlBarrierWaitINTEL = 6143u32,
4435    ArithmeticFenceEXT = 6145u32,
4436    TaskSequenceCreateALTERA = 6163u32,
4437    TaskSequenceAsyncALTERA = 6164u32,
4438    TaskSequenceGetALTERA = 6165u32,
4439    TaskSequenceReleaseALTERA = 6166u32,
4440    TypeTaskSequenceALTERA = 6199u32,
4441    SubgroupBlockPrefetchINTEL = 6221u32,
4442    Subgroup2DBlockLoadINTEL = 6231u32,
4443    Subgroup2DBlockLoadTransformINTEL = 6232u32,
4444    Subgroup2DBlockLoadTransposeINTEL = 6233u32,
4445    Subgroup2DBlockPrefetchINTEL = 6234u32,
4446    Subgroup2DBlockStoreINTEL = 6235u32,
4447    SubgroupMatrixMultiplyAccumulateINTEL = 6237u32,
4448    BitwiseFunctionINTEL = 6242u32,
4449    UntypedVariableLengthArrayINTEL = 6244u32,
4450    ConditionalExtensionINTEL = 6248u32,
4451    ConditionalEntryPointINTEL = 6249u32,
4452    ConditionalCapabilityINTEL = 6250u32,
4453    SpecConstantTargetINTEL = 6251u32,
4454    SpecConstantArchitectureINTEL = 6252u32,
4455    SpecConstantCapabilitiesINTEL = 6253u32,
4456    ConditionalCopyObjectINTEL = 6254u32,
4457    GroupIMulKHR = 6401u32,
4458    GroupFMulKHR = 6402u32,
4459    GroupBitwiseAndKHR = 6403u32,
4460    GroupBitwiseOrKHR = 6404u32,
4461    GroupBitwiseXorKHR = 6405u32,
4462    GroupLogicalAndKHR = 6406u32,
4463    GroupLogicalOrKHR = 6407u32,
4464    GroupLogicalXorKHR = 6408u32,
4465    RoundFToTF32INTEL = 6426u32,
4466    MaskedGatherINTEL = 6428u32,
4467    MaskedScatterINTEL = 6429u32,
4468    ConvertHandleToImageINTEL = 6529u32,
4469    ConvertHandleToSamplerINTEL = 6530u32,
4470    ConvertHandleToSampledImageINTEL = 6531u32,
4471}
4472impl Op {
4473    pub fn from_u32(n: u32) -> Option<Self> {
4474        Some(match n {
4475            0u32..=8u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4476            10u32..=12u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4477            14u32..=17u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4478            19u32..=39u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4479            41u32..=46u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4480            48u32..=52u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4481            54u32..=57u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4482            59u32..=75u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4483            77u32..=84u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4484            86u32..=107u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4485            109u32..=124u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4486            126u32..=152u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4487            154u32..=191u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4488            194u32..=205u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4489            207u32..=215u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4490            218u32..=221u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4491            224u32..=225u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4492            227u32..=242u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4493            245u32..=257u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4494            259u32..=271u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4495            274u32..=288u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4496            291u32..=366u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4497            400u32..=403u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4498            4160u32..=4166u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4499            4181u32..=4186u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4500            4190u32 => unsafe { core::mem::transmute::<u32, Op>(4190u32) },
4501            4416u32..=4434u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4502            4445u32..=4463u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4503            4472u32..=4477u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4504            4479u32..=4483u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4505            4497u32 => unsafe { core::mem::transmute::<u32, Op>(4497u32) },
4506            4500u32..=4503u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4507            4540u32..=4542u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4508            5000u32..=5007u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4509            5011u32..=5012u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4510            5056u32 => unsafe { core::mem::transmute::<u32, Op>(5056u32) },
4511            5074u32..=5076u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4512            5078u32 => unsafe { core::mem::transmute::<u32, Op>(5078u32) },
4513            5090u32 => unsafe { core::mem::transmute::<u32, Op>(5090u32) },
4514            5101u32 => unsafe { core::mem::transmute::<u32, Op>(5101u32) },
4515            5103u32..=5104u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4516            5110u32..=5111u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4517            5115u32 => unsafe { core::mem::transmute::<u32, Op>(5115u32) },
4518            5119u32 => unsafe { core::mem::transmute::<u32, Op>(5119u32) },
4519            5126u32..=5127u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4520            5129u32 => unsafe { core::mem::transmute::<u32, Op>(5129u32) },
4521            5249u32..=5281u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4522            5283u32 => unsafe { core::mem::transmute::<u32, Op>(5283u32) },
4523            5288u32..=5296u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4524            5299u32..=5341u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4525            5344u32..=5352u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4526            5358u32..=5362u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4527            5364u32..=5382u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4528            5384u32 => unsafe { core::mem::transmute::<u32, Op>(5384u32) },
4529            5390u32..=5398u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4530            5427u32..=5439u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4531            5571u32..=5578u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4532            5580u32..=5581u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4533            5585u32..=5598u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4534            5600u32..=5601u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4535            5609u32..=5611u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4536            5614u32..=5615u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4537            5630u32..=5633u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4538            5699u32..=5816u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4539            5818u32..=5820u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4540            5840u32..=5843u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4541            5846u32..=5882u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4542            5887u32 => unsafe { core::mem::transmute::<u32, Op>(5887u32) },
4543            5911u32..=5913u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4544            5923u32..=5934u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4545            5938u32 => unsafe { core::mem::transmute::<u32, Op>(5938u32) },
4546            5946u32..=5947u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4547            5949u32 => unsafe { core::mem::transmute::<u32, Op>(5949u32) },
4548            6016u32..=6032u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4549            6035u32 => unsafe { core::mem::transmute::<u32, Op>(6035u32) },
4550            6086u32 => unsafe { core::mem::transmute::<u32, Op>(6086u32) },
4551            6090u32..=6092u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4552            6096u32 => unsafe { core::mem::transmute::<u32, Op>(6096u32) },
4553            6116u32..=6117u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4554            6142u32..=6143u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4555            6145u32 => unsafe { core::mem::transmute::<u32, Op>(6145u32) },
4556            6163u32..=6166u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4557            6199u32 => unsafe { core::mem::transmute::<u32, Op>(6199u32) },
4558            6221u32 => unsafe { core::mem::transmute::<u32, Op>(6221u32) },
4559            6231u32..=6235u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4560            6237u32 => unsafe { core::mem::transmute::<u32, Op>(6237u32) },
4561            6242u32 => unsafe { core::mem::transmute::<u32, Op>(6242u32) },
4562            6244u32 => unsafe { core::mem::transmute::<u32, Op>(6244u32) },
4563            6248u32..=6254u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4564            6401u32..=6408u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4565            6426u32 => unsafe { core::mem::transmute::<u32, Op>(6426u32) },
4566            6428u32..=6429u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4567            6529u32..=6531u32 => unsafe { core::mem::transmute::<u32, Op>(n) },
4568            _ => return None,
4569        })
4570    }
4571}
4572#[allow(clippy::upper_case_acronyms)]
4573#[allow(non_upper_case_globals)]
4574impl Op {
4575    pub const SDotKHR: Self = Self::SDot;
4576    pub const UDotKHR: Self = Self::UDot;
4577    pub const SUDotKHR: Self = Self::SUDot;
4578    pub const SDotAccSatKHR: Self = Self::SDotAccSat;
4579    pub const UDotAccSatKHR: Self = Self::UDotAccSat;
4580    pub const SUDotAccSatKHR: Self = Self::SUDotAccSat;
4581    pub const TypeCooperativeVectorNV: Self = Self::TypeVectorIdEXT;
4582    pub const GroupNonUniformPartitionNV: Self = Self::GroupNonUniformPartitionEXT;
4583    pub const ReportIntersectionNV: Self = Self::ReportIntersectionKHR;
4584    pub const TypeAccelerationStructureNV: Self = Self::TypeAccelerationStructureKHR;
4585    pub const RayQueryGetClusterIdNV: Self = Self::RayQueryGetIntersectionClusterIdNV;
4586    pub const DemoteToHelperInvocationEXT: Self = Self::DemoteToHelperInvocation;
4587    pub const DecorateStringGOOGLE: Self = Self::DecorateString;
4588    pub const MemberDecorateStringGOOGLE: Self = Self::MemberDecorateString;
4589    pub const ArbitraryFloatSinCosPiINTEL: Self = Self::ArbitraryFloatSinCosPiALTERA;
4590    pub const ArbitraryFloatCastINTEL: Self = Self::ArbitraryFloatCastALTERA;
4591    pub const ArbitraryFloatCastFromIntINTEL: Self = Self::ArbitraryFloatCastFromIntALTERA;
4592    pub const ArbitraryFloatCastToIntINTEL: Self = Self::ArbitraryFloatCastToIntALTERA;
4593    pub const ArbitraryFloatAddINTEL: Self = Self::ArbitraryFloatAddALTERA;
4594    pub const ArbitraryFloatSubINTEL: Self = Self::ArbitraryFloatSubALTERA;
4595    pub const ArbitraryFloatMulINTEL: Self = Self::ArbitraryFloatMulALTERA;
4596    pub const ArbitraryFloatDivINTEL: Self = Self::ArbitraryFloatDivALTERA;
4597    pub const ArbitraryFloatGTINTEL: Self = Self::ArbitraryFloatGTALTERA;
4598    pub const ArbitraryFloatGEINTEL: Self = Self::ArbitraryFloatGEALTERA;
4599    pub const ArbitraryFloatLTINTEL: Self = Self::ArbitraryFloatLTALTERA;
4600    pub const ArbitraryFloatLEINTEL: Self = Self::ArbitraryFloatLEALTERA;
4601    pub const ArbitraryFloatEQINTEL: Self = Self::ArbitraryFloatEQALTERA;
4602    pub const ArbitraryFloatRecipINTEL: Self = Self::ArbitraryFloatRecipALTERA;
4603    pub const ArbitraryFloatRSqrtINTEL: Self = Self::ArbitraryFloatRSqrtALTERA;
4604    pub const ArbitraryFloatCbrtINTEL: Self = Self::ArbitraryFloatCbrtALTERA;
4605    pub const ArbitraryFloatHypotINTEL: Self = Self::ArbitraryFloatHypotALTERA;
4606    pub const ArbitraryFloatSqrtINTEL: Self = Self::ArbitraryFloatSqrtALTERA;
4607    pub const FixedSqrtINTEL: Self = Self::FixedSqrtALTERA;
4608    pub const FixedRecipINTEL: Self = Self::FixedRecipALTERA;
4609    pub const FixedRsqrtINTEL: Self = Self::FixedRsqrtALTERA;
4610    pub const FixedSinINTEL: Self = Self::FixedSinALTERA;
4611    pub const FixedCosINTEL: Self = Self::FixedCosALTERA;
4612    pub const FixedSinCosINTEL: Self = Self::FixedSinCosALTERA;
4613    pub const FixedSinPiINTEL: Self = Self::FixedSinPiALTERA;
4614    pub const FixedCosPiINTEL: Self = Self::FixedCosPiALTERA;
4615    pub const FixedSinCosPiINTEL: Self = Self::FixedSinCosPiALTERA;
4616    pub const FixedLogINTEL: Self = Self::FixedLogALTERA;
4617    pub const FixedExpINTEL: Self = Self::FixedExpALTERA;
4618    pub const PtrCastToCrossWorkgroupINTEL: Self = Self::PtrCastToCrossWorkgroupALTERA;
4619    pub const CrossWorkgroupCastToPtrINTEL: Self = Self::CrossWorkgroupCastToPtrALTERA;
4620    pub const ReadPipeBlockingINTEL: Self = Self::ReadPipeBlockingALTERA;
4621    pub const WritePipeBlockingINTEL: Self = Self::WritePipeBlockingALTERA;
4622    pub const FPGARegINTEL: Self = Self::FPGARegALTERA;
4623    pub const TaskSequenceCreateINTEL: Self = Self::TaskSequenceCreateALTERA;
4624    pub const TaskSequenceAsyncINTEL: Self = Self::TaskSequenceAsyncALTERA;
4625    pub const TaskSequenceGetINTEL: Self = Self::TaskSequenceGetALTERA;
4626    pub const TaskSequenceReleaseINTEL: Self = Self::TaskSequenceReleaseALTERA;
4627    pub const TypeTaskSequenceINTEL: Self = Self::TypeTaskSequenceALTERA;
4628    #[doc = r" Returns [`true`] if the given opcode is a type-declaring instruction."]
4629    #[doc = r""]
4630    #[doc = r" <https://registry.khronos.org/SPIR-V/specs/unified1/SPIRV.html#_type_declaration_instructions>"]
4631    pub fn is_type(self) -> bool {
4632        matches!(
4633            self,
4634            Self::TypeVoid
4635                | Self::TypeBool
4636                | Self::TypeInt
4637                | Self::TypeFloat
4638                | Self::TypeVector
4639                | Self::TypeMatrix
4640                | Self::TypeImage
4641                | Self::TypeSampler
4642                | Self::TypeSampledImage
4643                | Self::TypeArray
4644                | Self::TypeRuntimeArray
4645                | Self::TypeStruct
4646                | Self::TypeOpaque
4647                | Self::TypePointer
4648                | Self::TypeFunction
4649                | Self::TypeEvent
4650                | Self::TypeDeviceEvent
4651                | Self::TypeReserveId
4652                | Self::TypeQueue
4653                | Self::TypePipe
4654                | Self::TypeForwardPointer
4655                | Self::TypePipeStorage
4656                | Self::TypeNamedBarrier
4657                | Self::TypeTensorARM
4658                | Self::TypeGraphARM
4659                | Self::TypeUntypedPointerKHR
4660                | Self::TypeCooperativeMatrixKHR
4661                | Self::TypeRayQueryKHR
4662                | Self::TypeNodePayloadArrayAMDX
4663                | Self::TypeBufferEXT
4664                | Self::TypeHitObjectNV
4665                | Self::TypeVectorIdEXT
4666                | Self::TypeHitObjectEXT
4667                | Self::TypeAccelerationStructureKHR
4668                | Self::TypeCooperativeMatrixNV
4669                | Self::TypeTensorLayoutNV
4670                | Self::TypeTensorViewNV
4671                | Self::TypeBufferSurfaceINTEL
4672                | Self::TypeStructContinuedINTEL
4673        )
4674    }
4675    #[doc = r" Returns [`true`] if the given opcode is a constant-defining instruction."]
4676    #[doc = r""]
4677    #[doc = r" <https://registry.khronos.org/SPIR-V/specs/unified1/SPIRV.html#_constant_creation_instructions>"]
4678    pub fn is_constant(self) -> bool {
4679        matches!(
4680            self,
4681            Self::ConstantTrue
4682                | Self::ConstantFalse
4683                | Self::Constant
4684                | Self::ConstantComposite
4685                | Self::ConstantSampler
4686                | Self::ConstantNull
4687                | Self::SpecConstantTrue
4688                | Self::SpecConstantFalse
4689                | Self::SpecConstant
4690                | Self::SpecConstantComposite
4691                | Self::SpecConstantOp
4692                | Self::ConstantCompositeReplicateEXT
4693                | Self::SpecConstantCompositeReplicateEXT
4694                | Self::ConstantSizeOfEXT
4695                | Self::ConstantCompositeContinuedINTEL
4696                | Self::SpecConstantCompositeContinuedINTEL
4697                | Self::SpecConstantTargetINTEL
4698                | Self::SpecConstantArchitectureINTEL
4699                | Self::SpecConstantCapabilitiesINTEL
4700        )
4701    }
4702    #[doc = r" Returns [`true`] if the given opcode is an annotation instruction."]
4703    #[doc = r""]
4704    #[doc = r" <https://registry.khronos.org/SPIR-V/specs/unified1/SPIRV.html#Annotation>"]
4705    pub fn is_annotation(self) -> bool {
4706        matches!(
4707            self,
4708            Self::Decorate
4709                | Self::MemberDecorate
4710                | Self::DecorationGroup
4711                | Self::GroupDecorate
4712                | Self::GroupMemberDecorate
4713                | Self::DecorateId
4714                | Self::MemberDecorateIdEXT
4715                | Self::DecorateString
4716                | Self::MemberDecorateString
4717        )
4718    }
4719    #[doc = r" Returns [`true`] if the given opcode is a debug instruction."]
4720    #[doc = r""]
4721    #[doc = r" <https://registry.khronos.org/SPIR-V/specs/unified1/SPIRV.html#_debug_instructions>"]
4722    pub fn is_debug(self) -> bool {
4723        matches!(
4724            self,
4725            Self::SourceContinued
4726                | Self::Source
4727                | Self::SourceExtension
4728                | Self::Name
4729                | Self::MemberName
4730                | Self::String
4731                | Self::Line
4732                | Self::NoLine
4733                | Self::ModuleProcessed
4734        )
4735    }
4736    #[doc = r" Returns [`true`] if the given opcode is a control-flow instruction."]
4737    #[doc = r""]
4738    #[doc = r" <https://registry.khronos.org/SPIR-V/specs/unified1/SPIRV.html#_control_flow_instructions>"]
4739    pub fn is_control_flow(self) -> bool {
4740        matches!(
4741            self,
4742            Self::Phi
4743                | Self::LoopMerge
4744                | Self::SelectionMerge
4745                | Self::Label
4746                | Self::Branch
4747                | Self::BranchConditional
4748                | Self::Switch
4749                | Self::Kill
4750                | Self::Return
4751                | Self::ReturnValue
4752                | Self::Unreachable
4753                | Self::LifetimeStart
4754                | Self::LifetimeStop
4755                | Self::TerminateInvocation
4756                | Self::DemoteToHelperInvocation
4757        )
4758    }
4759}
4760#[doc = "[Arm.MotionEngine.100](https://github.com/KhronosGroup/SPIRV-Headers/blob/main/include/spirv/unified1/extinst.arm.motion-engine.100.grammar.json) extended instruction opcode"]
4761#[repr(u32)]
4762#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
4763#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
4764#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
4765#[allow(clippy::upper_case_acronyms)]
4766pub enum ArmMotionEngine100Op {
4767    MIN_SAD = 0u32,
4768    MIN_SAD_COST = 1u32,
4769    RAW_SAD = 2u32,
4770}
4771impl ArmMotionEngine100Op {
4772    pub fn from_u32(n: u32) -> Option<Self> {
4773        Some(match n {
4774            0u32..=2u32 => unsafe { core::mem::transmute::<u32, ArmMotionEngine100Op>(n) },
4775            _ => return None,
4776        })
4777    }
4778}
4779#[doc = "[DebugInfo](https://github.com/KhronosGroup/SPIRV-Headers/blob/main/include/spirv/unified1/extinst.debuginfo.grammar.json) extended instruction opcode"]
4780#[repr(u32)]
4781#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
4782#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
4783#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
4784#[allow(clippy::upper_case_acronyms)]
4785pub enum DebuginfoOp {
4786    DebugInfoNone = 0u32,
4787    DebugCompilationUnit = 1u32,
4788    DebugTypeBasic = 2u32,
4789    DebugTypePointer = 3u32,
4790    DebugTypeQualifier = 4u32,
4791    DebugTypeArray = 5u32,
4792    DebugTypeVector = 6u32,
4793    DebugTypedef = 7u32,
4794    DebugTypeFunction = 8u32,
4795    DebugTypeEnum = 9u32,
4796    DebugTypeComposite = 10u32,
4797    DebugTypeMember = 11u32,
4798    DebugTypeInheritance = 12u32,
4799    DebugTypePtrToMember = 13u32,
4800    DebugTypeTemplate = 14u32,
4801    DebugTypeTemplateParameter = 15u32,
4802    DebugTypeTemplateTemplateParameter = 16u32,
4803    DebugTypeTemplateParameterPack = 17u32,
4804    DebugGlobalVariable = 18u32,
4805    DebugFunctionDeclaration = 19u32,
4806    DebugFunction = 20u32,
4807    DebugLexicalBlock = 21u32,
4808    DebugLexicalBlockDiscriminator = 22u32,
4809    DebugScope = 23u32,
4810    DebugNoScope = 24u32,
4811    DebugInlinedAt = 25u32,
4812    DebugLocalVariable = 26u32,
4813    DebugInlinedVariable = 27u32,
4814    DebugDeclare = 28u32,
4815    DebugValue = 29u32,
4816    DebugOperation = 30u32,
4817    DebugExpression = 31u32,
4818    DebugMacroDef = 32u32,
4819    DebugMacroUndef = 33u32,
4820}
4821impl DebuginfoOp {
4822    pub fn from_u32(n: u32) -> Option<Self> {
4823        Some(match n {
4824            0u32..=33u32 => unsafe { core::mem::transmute::<u32, DebuginfoOp>(n) },
4825            _ => return None,
4826        })
4827    }
4828}
4829#[doc = "[GLSL.std.450](https://github.com/KhronosGroup/SPIRV-Headers/blob/main/include/spirv/unified1/extinst.glsl.std.450.grammar.json) extended instruction opcode"]
4830#[repr(u32)]
4831#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
4832#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
4833#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
4834#[allow(clippy::upper_case_acronyms)]
4835pub enum GlslStd450Op {
4836    Round = 1u32,
4837    RoundEven = 2u32,
4838    Trunc = 3u32,
4839    FAbs = 4u32,
4840    SAbs = 5u32,
4841    FSign = 6u32,
4842    SSign = 7u32,
4843    Floor = 8u32,
4844    Ceil = 9u32,
4845    Fract = 10u32,
4846    Radians = 11u32,
4847    Degrees = 12u32,
4848    Sin = 13u32,
4849    Cos = 14u32,
4850    Tan = 15u32,
4851    Asin = 16u32,
4852    Acos = 17u32,
4853    Atan = 18u32,
4854    Sinh = 19u32,
4855    Cosh = 20u32,
4856    Tanh = 21u32,
4857    Asinh = 22u32,
4858    Acosh = 23u32,
4859    Atanh = 24u32,
4860    Atan2 = 25u32,
4861    Pow = 26u32,
4862    Exp = 27u32,
4863    Log = 28u32,
4864    Exp2 = 29u32,
4865    Log2 = 30u32,
4866    Sqrt = 31u32,
4867    InverseSqrt = 32u32,
4868    Determinant = 33u32,
4869    MatrixInverse = 34u32,
4870    Modf = 35u32,
4871    ModfStruct = 36u32,
4872    FMin = 37u32,
4873    UMin = 38u32,
4874    SMin = 39u32,
4875    FMax = 40u32,
4876    UMax = 41u32,
4877    SMax = 42u32,
4878    FClamp = 43u32,
4879    UClamp = 44u32,
4880    SClamp = 45u32,
4881    FMix = 46u32,
4882    IMix = 47u32,
4883    Step = 48u32,
4884    SmoothStep = 49u32,
4885    Fma = 50u32,
4886    Frexp = 51u32,
4887    FrexpStruct = 52u32,
4888    Ldexp = 53u32,
4889    PackSnorm4x8 = 54u32,
4890    PackUnorm4x8 = 55u32,
4891    PackSnorm2x16 = 56u32,
4892    PackUnorm2x16 = 57u32,
4893    PackHalf2x16 = 58u32,
4894    PackDouble2x32 = 59u32,
4895    UnpackSnorm2x16 = 60u32,
4896    UnpackUnorm2x16 = 61u32,
4897    UnpackHalf2x16 = 62u32,
4898    UnpackSnorm4x8 = 63u32,
4899    UnpackUnorm4x8 = 64u32,
4900    UnpackDouble2x32 = 65u32,
4901    Length = 66u32,
4902    Distance = 67u32,
4903    Cross = 68u32,
4904    Normalize = 69u32,
4905    FaceForward = 70u32,
4906    Reflect = 71u32,
4907    Refract = 72u32,
4908    FindILsb = 73u32,
4909    FindSMsb = 74u32,
4910    FindUMsb = 75u32,
4911    InterpolateAtCentroid = 76u32,
4912    InterpolateAtSample = 77u32,
4913    InterpolateAtOffset = 78u32,
4914    NMin = 79u32,
4915    NMax = 80u32,
4916    NClamp = 81u32,
4917}
4918impl GlslStd450Op {
4919    pub fn from_u32(n: u32) -> Option<Self> {
4920        Some(match n {
4921            1u32..=81u32 => unsafe { core::mem::transmute::<u32, GlslStd450Op>(n) },
4922            _ => return None,
4923        })
4924    }
4925}
4926#[doc = "[NonSemantic.ClspvReflection](https://github.com/KhronosGroup/SPIRV-Headers/blob/main/include/spirv/unified1/extinst.nonsemantic.clspvreflection.grammar.json) extended instruction opcode"]
4927#[repr(u32)]
4928#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
4929#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
4930#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
4931#[allow(clippy::upper_case_acronyms)]
4932pub enum NonsemanticClspvreflectionOp {
4933    Kernel = 1u32,
4934    ArgumentInfo = 2u32,
4935    ArgumentStorageBuffer = 3u32,
4936    ArgumentUniform = 4u32,
4937    ArgumentPodStorageBuffer = 5u32,
4938    ArgumentPodUniform = 6u32,
4939    ArgumentPodPushConstant = 7u32,
4940    ArgumentSampledImage = 8u32,
4941    ArgumentStorageImage = 9u32,
4942    ArgumentSampler = 10u32,
4943    ArgumentWorkgroup = 11u32,
4944    SpecConstantWorkgroupSize = 12u32,
4945    SpecConstantGlobalOffset = 13u32,
4946    SpecConstantWorkDim = 14u32,
4947    PushConstantGlobalOffset = 15u32,
4948    PushConstantEnqueuedLocalSize = 16u32,
4949    PushConstantGlobalSize = 17u32,
4950    PushConstantRegionOffset = 18u32,
4951    PushConstantNumWorkgroups = 19u32,
4952    PushConstantRegionGroupOffset = 20u32,
4953    ConstantDataStorageBuffer = 21u32,
4954    ConstantDataUniform = 22u32,
4955    LiteralSampler = 23u32,
4956    PropertyRequiredWorkgroupSize = 24u32,
4957    SpecConstantSubgroupMaxSize = 25u32,
4958    ArgumentPointerPushConstant = 26u32,
4959    ArgumentPointerUniform = 27u32,
4960    ProgramScopeVariablesStorageBuffer = 28u32,
4961    ProgramScopeVariablePointerRelocation = 29u32,
4962    ImageArgumentInfoChannelOrderPushConstant = 30u32,
4963    ImageArgumentInfoChannelDataTypePushConstant = 31u32,
4964    ImageArgumentInfoChannelOrderUniform = 32u32,
4965    ImageArgumentInfoChannelDataTypeUniform = 33u32,
4966    ArgumentStorageTexelBuffer = 34u32,
4967    ArgumentUniformTexelBuffer = 35u32,
4968    ConstantDataPointerPushConstant = 36u32,
4969    ProgramScopeVariablePointerPushConstant = 37u32,
4970    PrintfInfo = 38u32,
4971    PrintfBufferStorageBuffer = 39u32,
4972    PrintfBufferPointerPushConstant = 40u32,
4973    NormalizedSamplerMaskPushConstant = 41u32,
4974    WorkgroupVariableSize = 42u32,
4975}
4976impl NonsemanticClspvreflectionOp {
4977    pub fn from_u32(n: u32) -> Option<Self> {
4978        Some(match n {
4979            1u32..=42u32 => unsafe { core::mem::transmute::<u32, NonsemanticClspvreflectionOp>(n) },
4980            _ => return None,
4981        })
4982    }
4983}
4984#[doc = "[NonSemantic.DebugBreak](https://github.com/KhronosGroup/SPIRV-Headers/blob/main/include/spirv/unified1/extinst.nonsemantic.debugbreak.grammar.json) extended instruction opcode"]
4985#[repr(u32)]
4986#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
4987#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
4988#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
4989#[allow(clippy::upper_case_acronyms)]
4990pub enum NonsemanticDebugbreakOp {
4991    DebugBreak = 1u32,
4992}
4993impl NonsemanticDebugbreakOp {
4994    pub fn from_u32(n: u32) -> Option<Self> {
4995        Some(match n {
4996            1u32 => unsafe { core::mem::transmute::<u32, NonsemanticDebugbreakOp>(1u32) },
4997            _ => return None,
4998        })
4999    }
5000}
5001#[doc = "[NonSemantic.DebugPrintf](https://github.com/KhronosGroup/SPIRV-Headers/blob/main/include/spirv/unified1/extinst.nonsemantic.debugprintf.grammar.json) extended instruction opcode"]
5002#[repr(u32)]
5003#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
5004#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
5005#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
5006#[allow(clippy::upper_case_acronyms)]
5007pub enum NonsemanticDebugprintfOp {
5008    DebugPrintf = 1u32,
5009}
5010impl NonsemanticDebugprintfOp {
5011    pub fn from_u32(n: u32) -> Option<Self> {
5012        Some(match n {
5013            1u32 => unsafe { core::mem::transmute::<u32, NonsemanticDebugprintfOp>(1u32) },
5014            _ => return None,
5015        })
5016    }
5017}
5018#[doc = "[NonSemantic.Shader.DebugInfo.100](https://github.com/KhronosGroup/SPIRV-Headers/blob/main/include/spirv/unified1/extinst.nonsemantic.shader.debuginfo.100.grammar.json) extended instruction opcode"]
5019#[repr(u32)]
5020#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
5021#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
5022#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
5023#[allow(clippy::upper_case_acronyms)]
5024pub enum NonsemanticShaderDebuginfo100Op {
5025    DebugInfoNone = 0u32,
5026    DebugCompilationUnit = 1u32,
5027    DebugTypeBasic = 2u32,
5028    DebugTypePointer = 3u32,
5029    DebugTypeQualifier = 4u32,
5030    DebugTypeArray = 5u32,
5031    DebugTypeVector = 6u32,
5032    DebugTypedef = 7u32,
5033    DebugTypeFunction = 8u32,
5034    DebugTypeEnum = 9u32,
5035    DebugTypeComposite = 10u32,
5036    DebugTypeMember = 11u32,
5037    DebugTypeInheritance = 12u32,
5038    DebugTypePtrToMember = 13u32,
5039    DebugTypeTemplate = 14u32,
5040    DebugTypeTemplateParameter = 15u32,
5041    DebugTypeTemplateTemplateParameter = 16u32,
5042    DebugTypeTemplateParameterPack = 17u32,
5043    DebugGlobalVariable = 18u32,
5044    DebugFunctionDeclaration = 19u32,
5045    DebugFunction = 20u32,
5046    DebugLexicalBlock = 21u32,
5047    DebugLexicalBlockDiscriminator = 22u32,
5048    DebugScope = 23u32,
5049    DebugNoScope = 24u32,
5050    DebugInlinedAt = 25u32,
5051    DebugLocalVariable = 26u32,
5052    DebugInlinedVariable = 27u32,
5053    DebugDeclare = 28u32,
5054    DebugValue = 29u32,
5055    DebugOperation = 30u32,
5056    DebugExpression = 31u32,
5057    DebugMacroDef = 32u32,
5058    DebugMacroUndef = 33u32,
5059    DebugImportedEntity = 34u32,
5060    DebugSource = 35u32,
5061    DebugFunctionDefinition = 101u32,
5062    DebugSourceContinued = 102u32,
5063    DebugLine = 103u32,
5064    DebugNoLine = 104u32,
5065    DebugBuildIdentifier = 105u32,
5066    DebugStoragePath = 106u32,
5067    DebugEntryPoint = 107u32,
5068    DebugTypeMatrix = 108u32,
5069}
5070impl NonsemanticShaderDebuginfo100Op {
5071    pub fn from_u32(n: u32) -> Option<Self> {
5072        Some(match n {
5073            0u32..=35u32 => unsafe {
5074                core::mem::transmute::<u32, NonsemanticShaderDebuginfo100Op>(n)
5075            },
5076            101u32..=108u32 => unsafe {
5077                core::mem::transmute::<u32, NonsemanticShaderDebuginfo100Op>(n)
5078            },
5079            _ => return None,
5080        })
5081    }
5082}
5083#[doc = "[NonSemantic.VkspReflection](https://github.com/KhronosGroup/SPIRV-Headers/blob/main/include/spirv/unified1/extinst.nonsemantic.vkspreflection.grammar.json) extended instruction opcode"]
5084#[repr(u32)]
5085#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
5086#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
5087#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
5088#[allow(clippy::upper_case_acronyms)]
5089pub enum NonsemanticVkspreflectionOp {
5090    Configuration = 1u32,
5091    StartCounter = 2u32,
5092    StopCounter = 3u32,
5093    PushConstants = 4u32,
5094    SpecializationMapEntry = 5u32,
5095    DescriptorSetBuffer = 6u32,
5096    DescriptorSetImage = 7u32,
5097    DescriptorSetSampler = 8u32,
5098}
5099impl NonsemanticVkspreflectionOp {
5100    pub fn from_u32(n: u32) -> Option<Self> {
5101        Some(match n {
5102            1u32..=8u32 => unsafe { core::mem::transmute::<u32, NonsemanticVkspreflectionOp>(n) },
5103            _ => return None,
5104        })
5105    }
5106}
5107#[doc = "[OpenCL.DebugInfo.100](https://github.com/KhronosGroup/SPIRV-Headers/blob/main/include/spirv/unified1/extinst.opencl.debuginfo.100.grammar.json) extended instruction opcode"]
5108#[repr(u32)]
5109#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
5110#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
5111#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
5112#[allow(clippy::upper_case_acronyms)]
5113pub enum OpenclDebuginfo100Op {
5114    DebugInfoNone = 0u32,
5115    DebugCompilationUnit = 1u32,
5116    DebugTypeBasic = 2u32,
5117    DebugTypePointer = 3u32,
5118    DebugTypeQualifier = 4u32,
5119    DebugTypeArray = 5u32,
5120    DebugTypeVector = 6u32,
5121    DebugTypedef = 7u32,
5122    DebugTypeFunction = 8u32,
5123    DebugTypeEnum = 9u32,
5124    DebugTypeComposite = 10u32,
5125    DebugTypeMember = 11u32,
5126    DebugTypeInheritance = 12u32,
5127    DebugTypePtrToMember = 13u32,
5128    DebugTypeTemplate = 14u32,
5129    DebugTypeTemplateParameter = 15u32,
5130    DebugTypeTemplateTemplateParameter = 16u32,
5131    DebugTypeTemplateParameterPack = 17u32,
5132    DebugGlobalVariable = 18u32,
5133    DebugFunctionDeclaration = 19u32,
5134    DebugFunction = 20u32,
5135    DebugLexicalBlock = 21u32,
5136    DebugLexicalBlockDiscriminator = 22u32,
5137    DebugScope = 23u32,
5138    DebugNoScope = 24u32,
5139    DebugInlinedAt = 25u32,
5140    DebugLocalVariable = 26u32,
5141    DebugInlinedVariable = 27u32,
5142    DebugDeclare = 28u32,
5143    DebugValue = 29u32,
5144    DebugOperation = 30u32,
5145    DebugExpression = 31u32,
5146    DebugMacroDef = 32u32,
5147    DebugMacroUndef = 33u32,
5148    DebugImportedEntity = 34u32,
5149    DebugSource = 35u32,
5150    DebugModuleINTEL = 36u32,
5151}
5152impl OpenclDebuginfo100Op {
5153    pub fn from_u32(n: u32) -> Option<Self> {
5154        Some(match n {
5155            0u32..=36u32 => unsafe { core::mem::transmute::<u32, OpenclDebuginfo100Op>(n) },
5156            _ => return None,
5157        })
5158    }
5159}
5160#[doc = "[OpenCL.std](https://github.com/KhronosGroup/SPIRV-Headers/blob/main/include/spirv/unified1/extinst.opencl.std.100.grammar.json) extended instruction opcode"]
5161#[repr(u32)]
5162#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
5163#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
5164#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
5165#[allow(clippy::upper_case_acronyms)]
5166pub enum OpenclStd100Op {
5167    acos = 0u32,
5168    acosh = 1u32,
5169    acospi = 2u32,
5170    asin = 3u32,
5171    asinh = 4u32,
5172    asinpi = 5u32,
5173    atan = 6u32,
5174    atan2 = 7u32,
5175    atanh = 8u32,
5176    atanpi = 9u32,
5177    atan2pi = 10u32,
5178    cbrt = 11u32,
5179    ceil = 12u32,
5180    copysign = 13u32,
5181    cos = 14u32,
5182    cosh = 15u32,
5183    cospi = 16u32,
5184    erfc = 17u32,
5185    erf = 18u32,
5186    exp = 19u32,
5187    exp2 = 20u32,
5188    exp10 = 21u32,
5189    expm1 = 22u32,
5190    fabs = 23u32,
5191    fdim = 24u32,
5192    floor = 25u32,
5193    fma = 26u32,
5194    fmax = 27u32,
5195    fmin = 28u32,
5196    fmod = 29u32,
5197    fract = 30u32,
5198    frexp = 31u32,
5199    hypot = 32u32,
5200    ilogb = 33u32,
5201    ldexp = 34u32,
5202    lgamma = 35u32,
5203    lgamma_r = 36u32,
5204    log = 37u32,
5205    log2 = 38u32,
5206    log10 = 39u32,
5207    log1p = 40u32,
5208    logb = 41u32,
5209    mad = 42u32,
5210    maxmag = 43u32,
5211    minmag = 44u32,
5212    modf = 45u32,
5213    nan = 46u32,
5214    nextafter = 47u32,
5215    pow = 48u32,
5216    pown = 49u32,
5217    powr = 50u32,
5218    remainder = 51u32,
5219    remquo = 52u32,
5220    rint = 53u32,
5221    rootn = 54u32,
5222    round = 55u32,
5223    rsqrt = 56u32,
5224    sin = 57u32,
5225    sincos = 58u32,
5226    sinh = 59u32,
5227    sinpi = 60u32,
5228    sqrt = 61u32,
5229    tan = 62u32,
5230    tanh = 63u32,
5231    tanpi = 64u32,
5232    tgamma = 65u32,
5233    trunc = 66u32,
5234    half_cos = 67u32,
5235    half_divide = 68u32,
5236    half_exp = 69u32,
5237    half_exp2 = 70u32,
5238    half_exp10 = 71u32,
5239    half_log = 72u32,
5240    half_log2 = 73u32,
5241    half_log10 = 74u32,
5242    half_powr = 75u32,
5243    half_recip = 76u32,
5244    half_rsqrt = 77u32,
5245    half_sin = 78u32,
5246    half_sqrt = 79u32,
5247    half_tan = 80u32,
5248    native_cos = 81u32,
5249    native_divide = 82u32,
5250    native_exp = 83u32,
5251    native_exp2 = 84u32,
5252    native_exp10 = 85u32,
5253    native_log = 86u32,
5254    native_log2 = 87u32,
5255    native_log10 = 88u32,
5256    native_powr = 89u32,
5257    native_recip = 90u32,
5258    native_rsqrt = 91u32,
5259    native_sin = 92u32,
5260    native_sqrt = 93u32,
5261    native_tan = 94u32,
5262    fclamp = 95u32,
5263    degrees = 96u32,
5264    fmax_common = 97u32,
5265    fmin_common = 98u32,
5266    mix = 99u32,
5267    radians = 100u32,
5268    step = 101u32,
5269    smoothstep = 102u32,
5270    sign = 103u32,
5271    cross = 104u32,
5272    distance = 105u32,
5273    length = 106u32,
5274    normalize = 107u32,
5275    fast_distance = 108u32,
5276    fast_length = 109u32,
5277    fast_normalize = 110u32,
5278    s_abs = 141u32,
5279    s_abs_diff = 142u32,
5280    s_add_sat = 143u32,
5281    u_add_sat = 144u32,
5282    s_hadd = 145u32,
5283    u_hadd = 146u32,
5284    s_rhadd = 147u32,
5285    u_rhadd = 148u32,
5286    s_clamp = 149u32,
5287    u_clamp = 150u32,
5288    clz = 151u32,
5289    ctz = 152u32,
5290    s_mad_hi = 153u32,
5291    u_mad_sat = 154u32,
5292    s_mad_sat = 155u32,
5293    s_max = 156u32,
5294    u_max = 157u32,
5295    s_min = 158u32,
5296    u_min = 159u32,
5297    s_mul_hi = 160u32,
5298    rotate = 161u32,
5299    s_sub_sat = 162u32,
5300    u_sub_sat = 163u32,
5301    u_upsample = 164u32,
5302    s_upsample = 165u32,
5303    popcount = 166u32,
5304    s_mad24 = 167u32,
5305    u_mad24 = 168u32,
5306    s_mul24 = 169u32,
5307    u_mul24 = 170u32,
5308    vloadn = 171u32,
5309    vstoren = 172u32,
5310    vload_half = 173u32,
5311    vload_halfn = 174u32,
5312    vstore_half = 175u32,
5313    vstore_half_r = 176u32,
5314    vstore_halfn = 177u32,
5315    vstore_halfn_r = 178u32,
5316    vloada_halfn = 179u32,
5317    vstorea_halfn = 180u32,
5318    vstorea_halfn_r = 181u32,
5319    shuffle = 182u32,
5320    shuffle2 = 183u32,
5321    printf = 184u32,
5322    prefetch = 185u32,
5323    bitselect = 186u32,
5324    select = 187u32,
5325    u_abs = 201u32,
5326    u_abs_diff = 202u32,
5327    u_mul_hi = 203u32,
5328    u_mad_hi = 204u32,
5329}
5330impl OpenclStd100Op {
5331    pub fn from_u32(n: u32) -> Option<Self> {
5332        Some(match n {
5333            0u32..=110u32 => unsafe { core::mem::transmute::<u32, OpenclStd100Op>(n) },
5334            141u32..=187u32 => unsafe { core::mem::transmute::<u32, OpenclStd100Op>(n) },
5335            201u32..=204u32 => unsafe { core::mem::transmute::<u32, OpenclStd100Op>(n) },
5336            _ => return None,
5337        })
5338    }
5339}
5340#[doc = "[SPV_AMD_gcn_shader](https://github.com/KhronosGroup/SPIRV-Headers/blob/main/include/spirv/unified1/extinst.spv-amd-gcn-shader.grammar.json) extended instruction opcode"]
5341#[repr(u32)]
5342#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
5343#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
5344#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
5345#[allow(clippy::upper_case_acronyms)]
5346pub enum SpvAmdGcnShaderOp {
5347    CubeFaceIndexAMD = 1u32,
5348    CubeFaceCoordAMD = 2u32,
5349    TimeAMD = 3u32,
5350}
5351impl SpvAmdGcnShaderOp {
5352    pub fn from_u32(n: u32) -> Option<Self> {
5353        Some(match n {
5354            1u32..=3u32 => unsafe { core::mem::transmute::<u32, SpvAmdGcnShaderOp>(n) },
5355            _ => return None,
5356        })
5357    }
5358}
5359#[doc = "[SPV_AMD_shader_ballot](https://github.com/KhronosGroup/SPIRV-Headers/blob/main/include/spirv/unified1/extinst.spv-amd-shader-ballot.grammar.json) extended instruction opcode"]
5360#[repr(u32)]
5361#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
5362#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
5363#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
5364#[allow(clippy::upper_case_acronyms)]
5365pub enum SpvAmdShaderBallotOp {
5366    SwizzleInvocationsAMD = 1u32,
5367    SwizzleInvocationsMaskedAMD = 2u32,
5368    WriteInvocationAMD = 3u32,
5369    MbcntAMD = 4u32,
5370}
5371impl SpvAmdShaderBallotOp {
5372    pub fn from_u32(n: u32) -> Option<Self> {
5373        Some(match n {
5374            1u32..=4u32 => unsafe { core::mem::transmute::<u32, SpvAmdShaderBallotOp>(n) },
5375            _ => return None,
5376        })
5377    }
5378}
5379#[doc = "[SPV_AMD_shader_explicit_vertex_parameter](https://github.com/KhronosGroup/SPIRV-Headers/blob/main/include/spirv/unified1/extinst.spv-amd-shader-explicit-vertex-parameter.grammar.json) extended instruction opcode"]
5380#[repr(u32)]
5381#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
5382#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
5383#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
5384#[allow(clippy::upper_case_acronyms)]
5385pub enum SpvAmdShaderExplicitVertexParameterOp {
5386    InterpolateAtVertexAMD = 1u32,
5387}
5388impl SpvAmdShaderExplicitVertexParameterOp {
5389    pub fn from_u32(n: u32) -> Option<Self> {
5390        Some(match n {
5391            1u32 => unsafe {
5392                core::mem::transmute::<u32, SpvAmdShaderExplicitVertexParameterOp>(1u32)
5393            },
5394            _ => return None,
5395        })
5396    }
5397}
5398#[doc = "[SPV_AMD_shader_trinary_minmax](https://github.com/KhronosGroup/SPIRV-Headers/blob/main/include/spirv/unified1/extinst.spv-amd-shader-trinary-minmax.grammar.json) extended instruction opcode"]
5399#[repr(u32)]
5400#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
5401#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
5402#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
5403#[allow(clippy::upper_case_acronyms)]
5404pub enum SpvAmdShaderTrinaryMinmaxOp {
5405    FMin3AMD = 1u32,
5406    UMin3AMD = 2u32,
5407    SMin3AMD = 3u32,
5408    FMax3AMD = 4u32,
5409    UMax3AMD = 5u32,
5410    SMax3AMD = 6u32,
5411    FMid3AMD = 7u32,
5412    UMid3AMD = 8u32,
5413    SMid3AMD = 9u32,
5414}
5415impl SpvAmdShaderTrinaryMinmaxOp {
5416    pub fn from_u32(n: u32) -> Option<Self> {
5417        Some(match n {
5418            1u32..=9u32 => unsafe { core::mem::transmute::<u32, SpvAmdShaderTrinaryMinmaxOp>(n) },
5419            _ => return None,
5420        })
5421    }
5422}
5423#[doc = "[TOSA.001000.1](https://github.com/KhronosGroup/SPIRV-Headers/blob/main/include/spirv/unified1/extinst.tosa.001000.1.grammar.json) extended instruction opcode"]
5424#[repr(u32)]
5425#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
5426#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
5427#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))]
5428#[allow(clippy::upper_case_acronyms)]
5429pub enum Tosa0010001Op {
5430    ARGMAX = 0u32,
5431    AVG_POOL2D = 1u32,
5432    CONV2D = 2u32,
5433    CONV3D = 3u32,
5434    DEPTHWISE_CONV2D = 4u32,
5435    FFT2D = 5u32,
5436    MATMUL = 6u32,
5437    MAX_POOL2D = 7u32,
5438    RFFT2D = 8u32,
5439    TRANSPOSE_CONV2D = 9u32,
5440    CLAMP = 10u32,
5441    ERF = 11u32,
5442    SIGMOID = 12u32,
5443    TANH = 13u32,
5444    ADD = 14u32,
5445    ARITHMETIC_RIGHT_SHIFT = 15u32,
5446    BITWISE_AND = 16u32,
5447    BITWISE_OR = 17u32,
5448    BITWISE_XOR = 18u32,
5449    INTDIV = 19u32,
5450    LOGICAL_AND = 20u32,
5451    LOGICAL_LEFT_SHIFT = 21u32,
5452    LOGICAL_RIGHT_SHIFT = 22u32,
5453    LOGICAL_OR = 23u32,
5454    LOGICAL_XOR = 24u32,
5455    MAXIMUM = 25u32,
5456    MINIMUM = 26u32,
5457    MUL = 27u32,
5458    POW = 28u32,
5459    SUB = 29u32,
5460    TABLE = 30u32,
5461    ABS = 31u32,
5462    BITWISE_NOT = 32u32,
5463    CEIL = 33u32,
5464    CLZ = 34u32,
5465    COS = 35u32,
5466    EXP = 36u32,
5467    FLOOR = 37u32,
5468    LOG = 38u32,
5469    LOGICAL_NOT = 39u32,
5470    NEGATE = 40u32,
5471    RECIPROCAL = 41u32,
5472    RSQRT = 42u32,
5473    SIN = 43u32,
5474    SELECT = 44u32,
5475    EQUAL = 45u32,
5476    GREATER = 46u32,
5477    GREATER_EQUAL = 47u32,
5478    REDUCE_ALL = 48u32,
5479    REDUCE_ANY = 49u32,
5480    REDUCE_MAX = 50u32,
5481    REDUCE_MIN = 51u32,
5482    REDUCE_PRODUCT = 52u32,
5483    REDUCE_SUM = 53u32,
5484    CONCAT = 54u32,
5485    PAD = 55u32,
5486    RESHAPE = 56u32,
5487    REVERSE = 57u32,
5488    SLICE = 58u32,
5489    TILE = 59u32,
5490    TRANSPOSE = 60u32,
5491    GATHER = 61u32,
5492    SCATTER = 62u32,
5493    RESIZE = 63u32,
5494    CAST = 64u32,
5495    RESCALE = 65u32,
5496}
5497impl Tosa0010001Op {
5498    pub fn from_u32(n: u32) -> Option<Self> {
5499        Some(match n {
5500            0u32..=65u32 => unsafe { core::mem::transmute::<u32, Tosa0010001Op>(n) },
5501            _ => return None,
5502        })
5503    }
5504}