Coverage Report

Created: 2026-01-25 06:52

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