1pub 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}