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