Coverage Report

Created: 2025-02-26 06:58

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