spirv/
autogen_spirv.rs

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