From ca3779b20b2a8ef8841bee9f18d64c3c9af88c8b Mon Sep 17 00:00:00 2001 From: Marijn Suijten Date: Wed, 2 Feb 2022 00:09:33 +0100 Subject: [PATCH] Regenerate with SPIRV-Headers sdk-1.2.198 (#226) * Regenerate with SPIRV-Headers sdk-1.2.198 * dr: Don't require >1 arg for extras, ie OpSpecConstantCompositeContinuedINTEL * dr: Simplify repeated `==` chains with `matches!` * Ignore OpSamplerImageAddressingModeNV pending manual implementation This op is not a normal instruction nor does it fit any of the other categories such as a constant or type. Ignore it for now and allow someone to make a custom implementation down the line. https://github.com/gfx-rs/rspirv/pull/226#issuecomment-979469790 --- autogen/external/SPIRV-Headers | 2 +- autogen/src/dr.rs | 64 +- rspirv/Cargo.toml | 2 +- rspirv/README.md | 2 +- rspirv/binary/assemble.rs | 95 +- rspirv/binary/autogen_decode_operand.rs | 55 + rspirv/binary/autogen_disas_operand.rs | 15 + rspirv/binary/autogen_error.rs | 30 + rspirv/binary/autogen_parse_operand.rs | 81 +- rspirv/binary/disassemble.rs | 2 +- rspirv/dr/autogen_operand.rs | 463 ++- rspirv/dr/build/autogen_norm_insts.rs | 907 ++++- rspirv/dr/build/autogen_type.rs | 63 + rspirv/grammar/autogen_table.rs | 1197 +++++- rspirv/grammar/reflect.rs | 2 + rspirv/lift/autogen_context.rs | 4651 ++++++++++++++++++----- rspirv/lift/mod.rs | 2 + rspirv/sr/autogen_decoration.rs | 25 + rspirv/sr/autogen_ops.rs | 565 ++- rspirv/sr/autogen_types.rs | 6 + spirv/Cargo.toml | 2 +- spirv/README.md | 2 +- spirv/autogen_spirv.rs | 485 ++- 23 files changed, 7495 insertions(+), 1223 deletions(-) diff --git a/autogen/external/SPIRV-Headers b/autogen/external/SPIRV-Headers index f027d53d..814e728b 160000 --- a/autogen/external/SPIRV-Headers +++ b/autogen/external/SPIRV-Headers @@ -1 +1 @@ -Subproject commit f027d53ded7e230e008d37c8b47ede7cd308e19d +Subproject commit 814e728b30ddd0f4509233099a3ad96fd4318c07 diff --git a/autogen/src/dr.rs b/autogen/src/dr.rs index e247c8ca..f1417a70 100644 --- a/autogen/src/dr.rs +++ b/autogen/src/dr.rs @@ -225,10 +225,13 @@ pub fn gen_dr_operand_kinds(grammar: &[structs::OperandKind]) -> TokenStream { // LiteralInteger is replaced by LiteralInt32. // IdResult and IdResultType are not stored as operands in `dr`. !(element.starts_with("Pair") - || *element == "LiteralContextDependentNumber" - || *element == "LiteralInteger" - || *element == "IdResult" - || *element == "IdResultType") + || matches!( + *element, + "LiteralContextDependentNumber" + | "LiteralInteger" + | "IdResult" + | "IdResultType" + )) }) .map(as_ident) .collect(); @@ -654,17 +657,19 @@ pub fn gen_dr_builder_types(grammar: &structs::Grammar) -> TokenStream { let kinds = &grammar.operand_kinds; // Generate build methods for all types. let elements = grammar.instructions.iter().filter(|inst| { - inst.class == Some(structs::Class::Type) && inst.opname != "OpTypeForwardPointer" && - inst.opname != "OpTypePointer" && inst.opname != "OpTypeOpaque" + inst.class == Some(structs::Class::Type) + && !matches!( + inst.opname.as_str(), + "OpTypeForwardPointer" | "OpTypePointer" | "OpTypeOpaque" + ) }).map(|inst| { // Parameter list for this build method. let param_list = get_param_list(&inst.operands, false, kinds); let arg_list = get_arg_list(&inst.operands, false, kinds); // Initializer list for constructing the operands parameter // for Instruction. - let init_list = get_init_list(&inst.operands[1..]); - // Parameters that are not single values thus need special treatment. - let extras = get_push_extras(&inst.operands[1..], + let init_list = get_init_list(&inst.operands); + let extras = get_push_extras(&inst.operands, kinds, quote! { inst.operands }); let opcode = as_ident(&inst.opname[2..]); @@ -771,24 +776,22 @@ pub fn gen_dr_builder_normal_insts(grammar: &structs::Grammar) -> TokenStream { // Generate build methods for all normal instructions (instructions must be // in some block). let elements = grammar.instructions.iter().filter(|inst| { - let skip = - inst.class == Some(Type) || - inst.class == Some(Constant) || - inst.class == Some(ExtensionDecl) || - (inst.class == Some(FunctionStruct) && inst.opname != "OpFunctionCall") || - inst.class == Some(Debug) || - inst.class == Some(Annotation) || - is_terminator_instruction(inst) || + let skip = matches!( + inst.class, + Some(Type | Constant | ExtensionDecl | Debug | Annotation | ModeSetting | Exclude) + ) || matches!( + inst.opname.as_str(), // Labels should not be inserted but attached instead. - inst.opname == "OpLabel" || - inst.class == Some(ModeSetting) || - inst.class == Some(Exclude) || - inst.opname == "OpTypeForwardPointer" || - inst.opname == "OpTypePointer" || - inst.opname == "OpTypeOpaque" || - inst.opname == "OpUndef" || - inst.opname == "OpVariable" || - inst.opname.starts_with("OpType"); + "OpLabel" + | "OpTypeForwardPointer" + | "OpTypePointer" + | "OpTypeOpaque" + | "OpUndef" + | "OpVariable" + | "OpSamplerImageAddressingModeNV" // https://github.com/gfx-rs/rspirv/pull/226#issuecomment-979469790 + ) || (inst.class == Some(FunctionStruct) && inst.opname != "OpFunctionCall") + || is_terminator_instruction(inst) + || inst.opname.starts_with("OpType"); !skip }).map(|inst| { let params = get_param_list(&inst.operands, true, kinds); @@ -866,8 +869,13 @@ pub fn gen_dr_builder_constants(grammar: &structs::Grammar) -> TokenStream { .iter() .filter(|inst| { inst.class == Some(structs::Class::Constant) - && inst.opname != "OpConstant" - && inst.opname != "OpSpecConstant" + && !matches!( + inst.opname.as_str(), + "OpConstant" + | "OpSpecConstant" + | "OpConstantCompositeContinuedINTEL" + | "OpSpecConstantCompositeContinuedINTEL" + ) }) .map(|inst| { let params = get_param_list(&inst.operands, false, kinds); diff --git a/rspirv/Cargo.toml b/rspirv/Cargo.toml index 4b81c4a0..52e2dd10 100644 --- a/rspirv/Cargo.toml +++ b/rspirv/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rspirv" -version = "0.11.0+1.5.4" +version = "0.11.0+sdk-1.2.198" authors = ["Lei Zhang "] edition = "2018" diff --git a/rspirv/README.md b/rspirv/README.md index 5a313a2e..e4ca471d 100644 --- a/rspirv/README.md +++ b/rspirv/README.md @@ -34,7 +34,7 @@ First add to your `Cargo.toml`: ```toml [dependencies] -rspirv = "0.11.0+1.5.4" +rspirv = "0.11.0+sdk-1.2.198" ``` Examples diff --git a/rspirv/binary/assemble.rs b/rspirv/binary/assemble.rs index cb2a0df3..27296df5 100644 --- a/rspirv/binary/assemble.rs +++ b/rspirv/binary/assemble.rs @@ -39,53 +39,58 @@ fn assemble_str(s: &str, result: &mut Vec) { impl Assemble for dr::Operand { fn assemble_into(&self, result: &mut Vec) { match *self { - dr::Operand::ImageOperands(v) => result.push(v.bits()), - dr::Operand::FPFastMathMode(v) => result.push(v.bits()), - dr::Operand::SelectionControl(v) => result.push(v.bits()), - dr::Operand::LoopControl(v) => result.push(v.bits()), - dr::Operand::FunctionControl(v) => result.push(v.bits()), - dr::Operand::MemorySemantics(v) => result.push(v.bits()), - dr::Operand::MemoryAccess(v) => result.push(v.bits()), - dr::Operand::KernelProfilingInfo(v) => result.push(v.bits()), - dr::Operand::SourceLanguage(v) => result.push(v as u32), - dr::Operand::ExecutionModel(v) => result.push(v as u32), - dr::Operand::AddressingModel(v) => result.push(v as u32), - dr::Operand::MemoryModel(v) => result.push(v as u32), - dr::Operand::ExecutionMode(v) => result.push(v as u32), - dr::Operand::StorageClass(v) => result.push(v as u32), - dr::Operand::Dim(v) => result.push(v as u32), - dr::Operand::SamplerAddressingMode(v) => result.push(v as u32), - dr::Operand::SamplerFilterMode(v) => result.push(v as u32), - dr::Operand::ImageFormat(v) => result.push(v as u32), - dr::Operand::ImageChannelOrder(v) => result.push(v as u32), - dr::Operand::ImageChannelDataType(v) => result.push(v as u32), - dr::Operand::FPRoundingMode(v) => result.push(v as u32), - dr::Operand::LinkageType(v) => result.push(v as u32), - dr::Operand::AccessQualifier(v) => result.push(v as u32), - dr::Operand::FunctionParameterAttribute(v) => result.push(v as u32), - dr::Operand::Decoration(v) => result.push(v as u32), - dr::Operand::BuiltIn(v) => result.push(v as u32), - dr::Operand::Scope(v) => result.push(v as u32), - dr::Operand::GroupOperation(v) => result.push(v as u32), - dr::Operand::KernelEnqueueFlags(v) => result.push(v as u32), - dr::Operand::Capability(v) => result.push(v as u32), - dr::Operand::IdMemorySemantics(v) - | dr::Operand::IdScope(v) - | dr::Operand::IdRef(v) - | dr::Operand::LiteralInt32(v) - | dr::Operand::LiteralExtInstInteger(v) => result.push(v), - dr::Operand::LiteralInt64(v) => result.extend(&[v as u32, (v >> 32) as u32]), - dr::Operand::LiteralFloat32(v) => result.push(v.to_bits()), - dr::Operand::LiteralFloat64(v) => { + Self::ImageOperands(v) => result.push(v.bits()), + Self::FPFastMathMode(v) => result.push(v.bits()), + Self::SelectionControl(v) => result.push(v.bits()), + Self::LoopControl(v) => result.push(v.bits()), + Self::FunctionControl(v) => result.push(v.bits()), + Self::MemorySemantics(v) => result.push(v.bits()), + Self::MemoryAccess(v) => result.push(v.bits()), + Self::KernelProfilingInfo(v) => result.push(v.bits()), + Self::SourceLanguage(v) => result.push(v as u32), + Self::ExecutionModel(v) => result.push(v as u32), + Self::AddressingModel(v) => result.push(v as u32), + Self::MemoryModel(v) => result.push(v as u32), + Self::ExecutionMode(v) => result.push(v as u32), + Self::StorageClass(v) => result.push(v as u32), + Self::Dim(v) => result.push(v as u32), + Self::SamplerAddressingMode(v) => result.push(v as u32), + Self::SamplerFilterMode(v) => result.push(v as u32), + Self::ImageFormat(v) => result.push(v as u32), + Self::ImageChannelOrder(v) => result.push(v as u32), + Self::ImageChannelDataType(v) => result.push(v as u32), + Self::FPRoundingMode(v) => result.push(v as u32), + Self::LinkageType(v) => result.push(v as u32), + Self::AccessQualifier(v) => result.push(v as u32), + Self::FunctionParameterAttribute(v) => result.push(v as u32), + Self::Decoration(v) => result.push(v as u32), + Self::BuiltIn(v) => result.push(v as u32), + Self::Scope(v) => result.push(v as u32), + Self::GroupOperation(v) => result.push(v as u32), + Self::KernelEnqueueFlags(v) => result.push(v as u32), + Self::Capability(v) => result.push(v as u32), + Self::IdMemorySemantics(v) + | Self::IdScope(v) + | Self::IdRef(v) + | Self::LiteralInt32(v) + | Self::LiteralExtInstInteger(v) => result.push(v), + Self::LiteralInt64(v) => result.extend(&[v as u32, (v >> 32) as u32]), + Self::LiteralFloat32(v) => result.push(v.to_bits()), + Self::LiteralFloat64(v) => { result.extend(&[v.to_bits() as u32, (v.to_bits() >> 32) as u32]) } - dr::Operand::LiteralSpecConstantOpInteger(v) => result.push(v as u32), - dr::Operand::LiteralString(ref v) => assemble_str(v, result), - dr::Operand::RayFlags(ref v) => result.push(v.bits()), - dr::Operand::RayQueryIntersection(v) => result.push(v as u32), - dr::Operand::RayQueryCommittedIntersectionType(v) => result.push(v as u32), - dr::Operand::RayQueryCandidateIntersectionType(v) => result.push(v as u32), - dr::Operand::FragmentShadingRate(v) => result.push(v.bits()), + Self::LiteralSpecConstantOpInteger(v) => result.push(v as u32), + Self::LiteralString(ref v) => assemble_str(v, result), + Self::RayFlags(ref v) => result.push(v.bits()), + Self::RayQueryIntersection(v) => result.push(v as u32), + Self::RayQueryCommittedIntersectionType(v) => result.push(v as u32), + Self::RayQueryCandidateIntersectionType(v) => result.push(v as u32), + Self::FragmentShadingRate(v) => result.push(v.bits()), + Self::FPDenormMode(v) => result.push(v as u32), + Self::QuantizationModes(v) => result.push(v as u32), + Self::FPOperationMode(v) => result.push(v as u32), + Self::OverflowModes(v) => result.push(v as u32), + Self::PackedVectorFormat(v) => result.push(v as u32), } } } diff --git a/rspirv/binary/autogen_decode_operand.rs b/rspirv/binary/autogen_decode_operand.rs index a168c9f6..05d9aedd 100644 --- a/rspirv/binary/autogen_decode_operand.rs +++ b/rspirv/binary/autogen_decode_operand.rs @@ -251,6 +251,50 @@ impl<'a> Decoder<'a> { Err(Error::StreamExpected(self.offset)) } } + #[doc = "Decodes and returns the next SPIR-V word as\na SPIR-V FPDenormMode value."] + pub fn fp_denorm_mode(&mut self) -> Result { + if let Ok(word) = self.word() { + spirv::FPDenormMode::from_u32(word).ok_or(Error::FPDenormModeUnknown( + self.offset - WORD_NUM_BYTES, + word, + )) + } else { + Err(Error::StreamExpected(self.offset)) + } + } + #[doc = "Decodes and returns the next SPIR-V word as\na SPIR-V QuantizationModes value."] + pub fn quantization_modes(&mut self) -> Result { + if let Ok(word) = self.word() { + spirv::QuantizationModes::from_u32(word).ok_or(Error::QuantizationModesUnknown( + self.offset - WORD_NUM_BYTES, + word, + )) + } else { + Err(Error::StreamExpected(self.offset)) + } + } + #[doc = "Decodes and returns the next SPIR-V word as\na SPIR-V FPOperationMode value."] + pub fn fp_operation_mode(&mut self) -> Result { + if let Ok(word) = self.word() { + spirv::FPOperationMode::from_u32(word).ok_or(Error::FPOperationModeUnknown( + self.offset - WORD_NUM_BYTES, + word, + )) + } else { + Err(Error::StreamExpected(self.offset)) + } + } + #[doc = "Decodes and returns the next SPIR-V word as\na SPIR-V OverflowModes value."] + pub fn overflow_modes(&mut self) -> Result { + if let Ok(word) = self.word() { + spirv::OverflowModes::from_u32(word).ok_or(Error::OverflowModesUnknown( + self.offset - WORD_NUM_BYTES, + word, + )) + } else { + Err(Error::StreamExpected(self.offset)) + } + } #[doc = "Decodes and returns the next SPIR-V word as\na SPIR-V LinkageType value."] pub fn linkage_type(&mut self) -> Result { if let Ok(word) = self.word() { @@ -376,4 +420,15 @@ impl<'a> Decoder<'a> { Err(Error::StreamExpected(self.offset)) } } + #[doc = "Decodes and returns the next SPIR-V word as\na SPIR-V PackedVectorFormat value."] + pub fn packed_vector_format(&mut self) -> Result { + if let Ok(word) = self.word() { + spirv::PackedVectorFormat::from_u32(word).ok_or(Error::PackedVectorFormatUnknown( + self.offset - WORD_NUM_BYTES, + word, + )) + } else { + Err(Error::StreamExpected(self.offset)) + } + } } diff --git a/rspirv/binary/autogen_disas_operand.rs b/rspirv/binary/autogen_disas_operand.rs index 03b0311c..44916b85 100644 --- a/rspirv/binary/autogen_disas_operand.rs +++ b/rspirv/binary/autogen_disas_operand.rs @@ -62,6 +62,9 @@ impl Disassemble for spirv::ImageOperands { if self.contains(spirv::ImageOperands::ZERO_EXTEND) { bits.push("ZeroExtend") } + if self.contains(spirv::ImageOperands::OFFSETS) { + bits.push("Offsets") + } bits.join("|") } } @@ -86,6 +89,12 @@ impl Disassemble for spirv::FPFastMathMode { if self.contains(spirv::FPFastMathMode::FAST) { bits.push("Fast") } + if self.contains(spirv::FPFastMathMode::ALLOW_CONTRACT_FAST_INTEL) { + bits.push("AllowContractFastINTEL") + } + if self.contains(spirv::FPFastMathMode::ALLOW_REASSOC_INTEL) { + bits.push("AllowReassocINTEL") + } bits.join("|") } } @@ -158,6 +167,9 @@ impl Disassemble for spirv::LoopControl { if self.contains(spirv::LoopControl::SPECULATED_ITERATIONS_INTEL) { bits.push("SpeculatedIterationsINTEL") } + if self.contains(spirv::LoopControl::NO_FUSION_INTEL) { + bits.push("NoFusionINTEL") + } bits.join("|") } } @@ -179,6 +191,9 @@ impl Disassemble for spirv::FunctionControl { if self.contains(spirv::FunctionControl::CONST) { bits.push("Const") } + if self.contains(spirv::FunctionControl::OPT_NONE_INTEL) { + bits.push("OptNoneINTEL") + } bits.join("|") } } diff --git a/rspirv/binary/autogen_error.rs b/rspirv/binary/autogen_error.rs index 1a9e2283..61d5cba1 100644 --- a/rspirv/binary/autogen_error.rs +++ b/rspirv/binary/autogen_error.rs @@ -32,6 +32,10 @@ pub enum Error { ImageChannelOrderUnknown(usize, spirv::Word), ImageChannelDataTypeUnknown(usize, spirv::Word), FPRoundingModeUnknown(usize, spirv::Word), + FPDenormModeUnknown(usize, spirv::Word), + QuantizationModesUnknown(usize, spirv::Word), + FPOperationModeUnknown(usize, spirv::Word), + OverflowModesUnknown(usize, spirv::Word), LinkageTypeUnknown(usize, spirv::Word), AccessQualifierUnknown(usize, spirv::Word), FunctionParameterAttributeUnknown(usize, spirv::Word), @@ -44,6 +48,7 @@ pub enum Error { RayQueryIntersectionUnknown(usize, spirv::Word), RayQueryCommittedIntersectionTypeUnknown(usize, spirv::Word), RayQueryCandidateIntersectionTypeUnknown(usize, spirv::Word), + PackedVectorFormatUnknown(usize, spirv::Word), #[doc = r"Failed to decode a string."] #[doc = r""] #[doc = r"For structured error handling, the second element could be"] @@ -173,6 +178,26 @@ impl fmt::Display for Error { "unknown value {} for operand kind FPRoundingMode at index {}", word, index ), + Error::FPDenormModeUnknown(index, word) => write!( + f, + "unknown value {} for operand kind FPDenormMode at index {}", + word, index + ), + Error::QuantizationModesUnknown(index, word) => write!( + f, + "unknown value {} for operand kind QuantizationModes at index {}", + word, index + ), + Error::FPOperationModeUnknown(index, word) => write!( + f, + "unknown value {} for operand kind FPOperationMode at index {}", + word, index + ), + Error::OverflowModesUnknown(index, word) => write!( + f, + "unknown value {} for operand kind OverflowModes at index {}", + word, index + ), Error::LinkageTypeUnknown(index, word) => write!( f, "unknown value {} for operand kind LinkageType at index {}", @@ -233,6 +258,11 @@ impl fmt::Display for Error { "unknown value {} for operand kind RayQueryCandidateIntersectionType at index {}", word, index ), + Error::PackedVectorFormatUnknown(index, word) => write!( + f, + "unknown value {} for operand kind PackedVectorFormat at index {}", + word, index + ), Error::DecodeStringFailed(index, ref e) => { write!(f, "cannot decode string at index {}: {}", index, e) } diff --git a/rspirv/binary/autogen_parse_operand.rs b/rspirv/binary/autogen_parse_operand.rs index 3d6c1561..93d15cb3 100644 --- a/rspirv/binary/autogen_parse_operand.rs +++ b/rspirv/binary/autogen_parse_operand.rs @@ -52,6 +52,18 @@ impl<'c, 'd> Parser<'c, 'd> { GOpKind::FPRoundingMode => vec![dr::Operand::FPRoundingMode( self.decoder.fp_rounding_mode()?, )], + GOpKind::FPDenormMode => { + vec![dr::Operand::FPDenormMode(self.decoder.fp_denorm_mode()?)] + } + GOpKind::QuantizationModes => vec![dr::Operand::QuantizationModes( + self.decoder.quantization_modes()?, + )], + GOpKind::FPOperationMode => vec![dr::Operand::FPOperationMode( + self.decoder.fp_operation_mode()?, + )], + GOpKind::OverflowModes => { + vec![dr::Operand::OverflowModes(self.decoder.overflow_modes()?)] + } GOpKind::LinkageType => vec![dr::Operand::LinkageType(self.decoder.linkage_type()?)], GOpKind::AccessQualifier => vec![dr::Operand::AccessQualifier( self.decoder.access_qualifier()?, @@ -81,6 +93,9 @@ impl<'c, 'd> Parser<'c, 'd> { self.decoder.ray_query_candidate_intersection_type()?, )] } + GOpKind::PackedVectorFormat => vec![dr::Operand::PackedVectorFormat( + self.decoder.packed_vector_format()?, + )], GOpKind::IdMemorySemantics => vec![dr::Operand::IdMemorySemantics(self.decoder.id()?)], GOpKind::IdScope => vec![dr::Operand::IdScope(self.decoder.id()?)], GOpKind::IdRef => vec![dr::Operand::IdRef(self.decoder.id()?)], @@ -172,6 +187,9 @@ impl<'c, 'd> Parser<'c, 'd> { if image_operands.contains(spirv::ImageOperands::MAKE_TEXEL_VISIBLE) { params.append(&mut vec![dr::Operand::IdScope(self.decoder.id()?)]); } + if image_operands.contains(spirv::ImageOperands::OFFSETS) { + params.append(&mut vec![dr::Operand::IdRef(self.decoder.id()?)]); + } Ok(params) } fn parse_loop_control_arguments( @@ -218,6 +236,9 @@ impl<'c, 'd> Parser<'c, 'd> { if loop_control.contains(spirv::LoopControl::SPECULATED_ITERATIONS_INTEL) { params.append(&mut vec![dr::Operand::LiteralInt32(self.decoder.int32()?)]); } + if loop_control.contains(spirv::LoopControl::NO_FUSION_INTEL) { + params.append(&mut vec![dr::Operand::LiteralInt32(self.decoder.int32()?)]); + } Ok(params) } fn parse_memory_access_arguments( @@ -275,7 +296,11 @@ impl<'c, 'd> Parser<'c, 'd> { dr::Operand::IdRef(self.decoder.id()?), dr::Operand::IdRef(self.decoder.id()?), ], - spirv::ExecutionMode::LocalSizeHintId => vec![dr::Operand::IdRef(self.decoder.id()?)], + spirv::ExecutionMode::LocalSizeHintId => vec![ + dr::Operand::IdRef(self.decoder.id()?), + dr::Operand::IdRef(self.decoder.id()?), + dr::Operand::IdRef(self.decoder.id()?), + ], spirv::ExecutionMode::DenormPreserve => { vec![dr::Operand::LiteralInt32(self.decoder.int32()?)] } @@ -294,6 +319,21 @@ impl<'c, 'd> Parser<'c, 'd> { spirv::ExecutionMode::OutputPrimitivesNV => { vec![dr::Operand::LiteralInt32(self.decoder.int32()?)] } + spirv::ExecutionMode::SharedLocalMemorySizeINTEL => { + vec![dr::Operand::LiteralInt32(self.decoder.int32()?)] + } + spirv::ExecutionMode::RoundingModeRTPINTEL => { + vec![dr::Operand::LiteralInt32(self.decoder.int32()?)] + } + spirv::ExecutionMode::RoundingModeRTNINTEL => { + vec![dr::Operand::LiteralInt32(self.decoder.int32()?)] + } + spirv::ExecutionMode::FloatingPointModeALTINTEL => { + vec![dr::Operand::LiteralInt32(self.decoder.int32()?)] + } + spirv::ExecutionMode::FloatingPointModeIEEEINTEL => { + vec![dr::Operand::LiteralInt32(self.decoder.int32()?)] + } spirv::ExecutionMode::MaxWorkgroupSizeINTEL => vec![ dr::Operand::LiteralInt32(self.decoder.int32()?), dr::Operand::LiteralInt32(self.decoder.int32()?), @@ -305,6 +345,9 @@ impl<'c, 'd> Parser<'c, 'd> { spirv::ExecutionMode::NumSIMDWorkitemsINTEL => { vec![dr::Operand::LiteralInt32(self.decoder.int32()?)] } + spirv::ExecutionMode::SchedulerTargetFmaxMhzINTEL => { + vec![dr::Operand::LiteralInt32(self.decoder.int32()?)] + } _ => vec![], }) } @@ -359,6 +402,18 @@ impl<'c, 'd> Parser<'c, 'd> { spirv::Decoration::SecondaryViewportRelativeNV => { vec![dr::Operand::LiteralInt32(self.decoder.int32()?)] } + spirv::Decoration::SIMTCallINTEL => { + vec![dr::Operand::LiteralInt32(self.decoder.int32()?)] + } + spirv::Decoration::ClobberINTEL => { + vec![dr::Operand::LiteralString(self.decoder.string()?)] + } + spirv::Decoration::FuncParamIOKindINTEL => { + vec![dr::Operand::LiteralInt32(self.decoder.int32()?)] + } + spirv::Decoration::GlobalVariableOffsetINTEL => { + vec![dr::Operand::LiteralInt32(self.decoder.int32()?)] + } spirv::Decoration::CounterBuffer => vec![dr::Operand::IdRef(self.decoder.id()?)], spirv::Decoration::UserSemantic => { vec![dr::Operand::LiteralString(self.decoder.string()?)] @@ -366,6 +421,14 @@ impl<'c, 'd> Parser<'c, 'd> { spirv::Decoration::UserTypeGOOGLE => { vec![dr::Operand::LiteralString(self.decoder.string()?)] } + spirv::Decoration::FunctionRoundingModeINTEL => vec![ + dr::Operand::LiteralInt32(self.decoder.int32()?), + dr::Operand::FPRoundingMode(self.decoder.fp_rounding_mode()?), + ], + spirv::Decoration::FunctionDenormModeINTEL => vec![ + dr::Operand::LiteralInt32(self.decoder.int32()?), + dr::Operand::FPDenormMode(self.decoder.fp_denorm_mode()?), + ], spirv::Decoration::MemoryINTEL => { vec![dr::Operand::LiteralString(self.decoder.string()?)] } @@ -391,6 +454,22 @@ impl<'c, 'd> Parser<'c, 'd> { spirv::Decoration::ForcePow2DepthINTEL => { vec![dr::Operand::LiteralInt32(self.decoder.int32()?)] } + spirv::Decoration::CacheSizeINTEL => { + vec![dr::Operand::LiteralInt32(self.decoder.int32()?)] + } + spirv::Decoration::PrefetchINTEL => { + vec![dr::Operand::LiteralInt32(self.decoder.int32()?)] + } + spirv::Decoration::BufferLocationINTEL => { + vec![dr::Operand::LiteralInt32(self.decoder.int32()?)] + } + spirv::Decoration::IOPipeStorageINTEL => { + vec![dr::Operand::LiteralInt32(self.decoder.int32()?)] + } + spirv::Decoration::FunctionFloatingPointModeINTEL => vec![ + dr::Operand::LiteralInt32(self.decoder.int32()?), + dr::Operand::FPOperationMode(self.decoder.fp_operation_mode()?), + ], _ => vec![], }) } diff --git a/rspirv/binary/disassemble.rs b/rspirv/binary/disassemble.rs index 5aeb7bd6..7d01f64e 100644 --- a/rspirv/binary/disassemble.rs +++ b/rspirv/binary/disassemble.rs @@ -228,7 +228,7 @@ mod tests { ); assert_eq!("Inline|Pure", o.disassemble()); let o = dr::Operand::FunctionControl(spirv::FunctionControl::all()); - assert_eq!("Inline|DontInline|Pure|Const", o.disassemble()); + assert_eq!("Inline|DontInline|Pure|Const|OptNoneINTEL", o.disassemble()); } #[test] diff --git a/rspirv/dr/autogen_operand.rs b/rspirv/dr/autogen_operand.rs index edadee9d..dc5cb821 100644 --- a/rspirv/dr/autogen_operand.rs +++ b/rspirv/dr/autogen_operand.rs @@ -29,6 +29,10 @@ pub enum Operand { ImageChannelOrder(spirv::ImageChannelOrder), ImageChannelDataType(spirv::ImageChannelDataType), FPRoundingMode(spirv::FPRoundingMode), + FPDenormMode(spirv::FPDenormMode), + QuantizationModes(spirv::QuantizationModes), + FPOperationMode(spirv::FPOperationMode), + OverflowModes(spirv::OverflowModes), LinkageType(spirv::LinkageType), AccessQualifier(spirv::AccessQualifier), FunctionParameterAttribute(spirv::FunctionParameterAttribute), @@ -41,6 +45,7 @@ pub enum Operand { RayQueryIntersection(spirv::RayQueryIntersection), RayQueryCommittedIntersectionType(spirv::RayQueryCommittedIntersectionType), RayQueryCandidateIntersectionType(spirv::RayQueryCandidateIntersectionType), + PackedVectorFormat(spirv::PackedVectorFormat), IdMemorySemantics(spirv::Word), IdScope(spirv::Word), IdRef(spirv::Word), @@ -167,6 +172,26 @@ impl From for Operand { Self::FPRoundingMode(o) } } +impl From for Operand { + fn from(o: spirv::FPDenormMode) -> Self { + Self::FPDenormMode(o) + } +} +impl From for Operand { + fn from(o: spirv::QuantizationModes) -> Self { + Self::QuantizationModes(o) + } +} +impl From for Operand { + fn from(o: spirv::FPOperationMode) -> Self { + Self::FPOperationMode(o) + } +} +impl From for Operand { + fn from(o: spirv::OverflowModes) -> Self { + Self::OverflowModes(o) + } +} impl From for Operand { fn from(o: spirv::LinkageType) -> Self { Self::LinkageType(o) @@ -227,6 +252,11 @@ impl From for Operand { Self::RayQueryCandidateIntersectionType(o) } } +impl From for Operand { + fn from(o: spirv::PackedVectorFormat) -> Self { + Self::PackedVectorFormat(o) + } +} impl From for Operand { fn from(o: u32) -> Self { Self::LiteralInt32(o) @@ -283,6 +313,10 @@ impl fmt::Display for Operand { Operand::ImageChannelOrder(ref v) => write!(f, "{:?}", v), Operand::ImageChannelDataType(ref v) => write!(f, "{:?}", v), Operand::FPRoundingMode(ref v) => write!(f, "{:?}", v), + Operand::FPDenormMode(ref v) => write!(f, "{:?}", v), + Operand::QuantizationModes(ref v) => write!(f, "{:?}", v), + Operand::FPOperationMode(ref v) => write!(f, "{:?}", v), + Operand::OverflowModes(ref v) => write!(f, "{:?}", v), Operand::LinkageType(ref v) => write!(f, "{:?}", v), Operand::AccessQualifier(ref v) => write!(f, "{:?}", v), Operand::FunctionParameterAttribute(ref v) => write!(f, "{:?}", v), @@ -295,6 +329,7 @@ impl fmt::Display for Operand { Operand::RayQueryIntersection(ref v) => write!(f, "{:?}", v), Operand::RayQueryCommittedIntersectionType(ref v) => write!(f, "{:?}", v), Operand::RayQueryCandidateIntersectionType(ref v) => write!(f, "{:?}", v), + Operand::PackedVectorFormat(ref v) => write!(f, "{:?}", v), Operand::IdMemorySemantics(ref v) => write!(f, "%{}", v), Operand::IdScope(ref v) => write!(f, "%{}", v), Operand::IdRef(ref v) => write!(f, "%{}", v), @@ -459,6 +494,30 @@ impl Operand { ref other => panic!("Expected Operand::FPRoundingMode, got {} instead", other), } } + pub fn unwrap_fp_denorm_mode(&self) -> spirv::FPDenormMode { + match *self { + Self::FPDenormMode(v) => v, + ref other => panic!("Expected Operand::FPDenormMode, got {} instead", other), + } + } + pub fn unwrap_quantization_modes(&self) -> spirv::QuantizationModes { + match *self { + Self::QuantizationModes(v) => v, + ref other => panic!("Expected Operand::QuantizationModes, got {} instead", other), + } + } + pub fn unwrap_fp_operation_mode(&self) -> spirv::FPOperationMode { + match *self { + Self::FPOperationMode(v) => v, + ref other => panic!("Expected Operand::FPOperationMode, got {} instead", other), + } + } + pub fn unwrap_overflow_modes(&self) -> spirv::OverflowModes { + match *self { + Self::OverflowModes(v) => v, + ref other => panic!("Expected Operand::OverflowModes, got {} instead", other), + } + } pub fn unwrap_linkage_type(&self) -> spirv::LinkageType { match *self { Self::LinkageType(v) => v, @@ -550,6 +609,15 @@ impl Operand { ), } } + pub fn unwrap_packed_vector_format(&self) -> spirv::PackedVectorFormat { + match *self { + Self::PackedVectorFormat(v) => v, + ref other => panic!( + "Expected Operand::PackedVectorFormat, got {} instead", + other + ), + } + } pub fn unwrap_id_memory_semantics(&self) -> spirv::Word { match *self { Self::IdMemorySemantics(v) => v, @@ -655,13 +723,10 @@ impl Operand { Self::FPFastMathMode(v) => { let mut result = vec![]; if v.intersects( - s::FPFastMathMode::NOT_NAN - | s::FPFastMathMode::NOT_INF - | s::FPFastMathMode::NSZ - | s::FPFastMathMode::ALLOW_RECIP - | s::FPFastMathMode::FAST, + s::FPFastMathMode::ALLOW_CONTRACT_FAST_INTEL + | s::FPFastMathMode::ALLOW_REASSOC_INTEL, ) { - result.extend_from_slice(&[spirv::Capability::Kernel]) + result.extend_from_slice(&[spirv::Capability::FPFastMathModeINTEL]) }; result } @@ -674,12 +739,20 @@ impl Operand { | s::LoopControl::PIPELINE_ENABLE_INTEL | s::LoopControl::LOOP_COALESCE_INTEL | s::LoopControl::MAX_INTERLEAVING_INTEL - | s::LoopControl::SPECULATED_ITERATIONS_INTEL, + | s::LoopControl::SPECULATED_ITERATIONS_INTEL + | s::LoopControl::NO_FUSION_INTEL, ) { result.extend_from_slice(&[spirv::Capability::FPGALoopControlsINTEL]) }; result } + Self::FunctionControl(v) => { + let mut result = vec![]; + if v.intersects(s::FunctionControl::OPT_NONE_INTEL) { + result.extend_from_slice(&[spirv::Capability::OptNoneINTEL]) + }; + result + } Self::MemorySemantics(v) => { let mut result = vec![]; if v.intersects(s::MemorySemantics::ATOMIC_COUNTER_MEMORY) { @@ -757,7 +830,8 @@ impl Operand { | s::SourceLanguage::GLSL | s::SourceLanguage::OpenCL_C | s::SourceLanguage::OpenCL_CPP - | s::SourceLanguage::HLSL => vec![], + | s::SourceLanguage::HLSL + | s::SourceLanguage::CPP_for_OpenCL => vec![], }, Self::ExecutionModel(v) => match v { s::ExecutionModel::Geometry => vec![spirv::Capability::Geometry], @@ -806,7 +880,8 @@ impl Operand { } s::ExecutionMode::DenormFlushToZero => vec![spirv::Capability::DenormFlushToZero], s::ExecutionMode::DenormPreserve => vec![spirv::Capability::DenormPreserve], - s::ExecutionMode::NumSIMDWorkitemsINTEL => { + s::ExecutionMode::NumSIMDWorkitemsINTEL + | s::ExecutionMode::SchedulerTargetFmaxMhzINTEL => { vec![spirv::Capability::FPGAKernelAttributesINTEL] } s::ExecutionMode::PixelInterlockOrderedEXT @@ -854,6 +929,12 @@ impl Operand { s::ExecutionMode::OutputLinesNV | s::ExecutionMode::OutputPrimitivesNV | s::ExecutionMode::OutputTrianglesNV => vec![spirv::Capability::MeshShadingNV], + s::ExecutionMode::RoundingModeRTPINTEL + | s::ExecutionMode::RoundingModeRTNINTEL + | s::ExecutionMode::FloatingPointModeALTINTEL + | s::ExecutionMode::FloatingPointModeIEEEINTEL => { + vec![spirv::Capability::RoundToInfinityINTEL] + } s::ExecutionMode::RoundingModeRTE => vec![spirv::Capability::RoundingModeRTE], s::ExecutionMode::RoundingModeRTZ => vec![spirv::Capability::RoundingModeRTZ], s::ExecutionMode::PostDepthCoverage => { @@ -866,7 +947,10 @@ impl Operand { | s::ExecutionMode::DepthReplacing | s::ExecutionMode::DepthGreater | s::ExecutionMode::DepthLess - | s::ExecutionMode::DepthUnchanged => vec![spirv::Capability::Shader], + | s::ExecutionMode::DepthUnchanged + | s::ExecutionMode::SubgroupUniformControlFlowKHR => { + vec![spirv::Capability::Shader] + } s::ExecutionMode::SignedZeroInfNanPreserve => { vec![spirv::Capability::SignedZeroInfNanPreserve] } @@ -887,6 +971,9 @@ impl Operand { | s::ExecutionMode::Quads | s::ExecutionMode::Isolines => vec![spirv::Capability::Tessellation], s::ExecutionMode::Xfb => vec![spirv::Capability::TransformFeedback], + s::ExecutionMode::SharedLocalMemorySizeINTEL => { + vec![spirv::Capability::VectorComputeINTEL] + } }, Self::StorageClass(v) => match v { s::StorageClass::UniformConstant @@ -912,9 +999,15 @@ impl Operand { ], s::StorageClass::Uniform | s::StorageClass::Output - | s::StorageClass::Private | s::StorageClass::PushConstant | s::StorageClass::StorageBuffer => vec![spirv::Capability::Shader], + s::StorageClass::Private => vec![ + spirv::Capability::Shader, + spirv::Capability::VectorComputeINTEL, + ], + s::StorageClass::DeviceOnlyINTEL | s::StorageClass::HostOnlyINTEL => { + vec![spirv::Capability::USMStorageClassesINTEL] + } }, Self::Dim(v) => match v { s::Dim::Dim3D => vec![], @@ -1040,8 +1133,40 @@ impl Operand { | s::FPRoundingMode::RTP | s::FPRoundingMode::RTN => vec![], }, + Self::FPDenormMode(v) => match v { + s::FPDenormMode::Preserve | s::FPDenormMode::FlushToZero => { + vec![spirv::Capability::FunctionFloatControlINTEL] + } + }, + Self::QuantizationModes(v) => match v { + s::QuantizationModes::TRN + | s::QuantizationModes::TRN_ZERO + | s::QuantizationModes::RND + | s::QuantizationModes::RND_ZERO + | s::QuantizationModes::RND_INF + | s::QuantizationModes::RND_MIN_INF + | s::QuantizationModes::RND_CONV + | s::QuantizationModes::RND_CONV_ODD => { + vec![spirv::Capability::ArbitraryPrecisionFixedPointINTEL] + } + }, + Self::FPOperationMode(v) => match v { + s::FPOperationMode::IEEE | s::FPOperationMode::ALT => { + vec![spirv::Capability::FunctionFloatControlINTEL] + } + }, + Self::OverflowModes(v) => match v { + s::OverflowModes::WRAP + | s::OverflowModes::SAT + | s::OverflowModes::SAT_ZERO + | s::OverflowModes::SAT_SYM => { + vec![spirv::Capability::ArbitraryPrecisionFixedPointINTEL] + } + }, Self::LinkageType(v) => match v { - s::LinkageType::Export | s::LinkageType::Import => vec![spirv::Capability::Linkage], + s::LinkageType::Export | s::LinkageType::Import | s::LinkageType::LinkOnceODR => { + vec![spirv::Capability::Linkage] + } }, Self::AccessQualifier(v) => match v { s::AccessQualifier::ReadOnly @@ -1076,6 +1201,23 @@ impl Operand { s::Decoration::MaxByteOffset | s::Decoration::MaxByteOffsetId => { vec![spirv::Capability::Addresses] } + s::Decoration::ClobberINTEL | s::Decoration::SideEffectsINTEL => { + vec![spirv::Capability::AsmINTEL] + } + s::Decoration::BindlessSamplerNV + | s::Decoration::BindlessImageNV + | s::Decoration::BoundSamplerNV + | s::Decoration::BoundImageNV => vec![spirv::Capability::BindlessTextureNV], + s::Decoration::BufferLocationINTEL => { + vec![spirv::Capability::FPGABufferLocationINTEL] + } + s::Decoration::StallEnableINTEL => { + vec![spirv::Capability::FPGAClusterAttributesINTEL] + } + s::Decoration::BurstCoalesceINTEL + | s::Decoration::CacheSizeINTEL + | s::Decoration::DontStaticallyCoalesceINTEL + | s::Decoration::PrefetchINTEL => vec![spirv::Capability::FPGAMemoryAccessesINTEL], s::Decoration::RegisterINTEL | s::Decoration::MemoryINTEL | s::Decoration::NumbanksINTEL @@ -1091,10 +1233,16 @@ impl Operand { vec![spirv::Capability::FPGAMemoryAttributesINTEL] } s::Decoration::PerVertexNV => vec![spirv::Capability::FragmentBarycentricNV], + s::Decoration::FunctionRoundingModeINTEL + | s::Decoration::FunctionDenormModeINTEL + | s::Decoration::FunctionFloatingPointModeINTEL => { + vec![spirv::Capability::FunctionFloatControlINTEL] + } s::Decoration::PassthroughNV => { vec![spirv::Capability::GeometryShaderPassthroughNV] } s::Decoration::Stream => vec![spirv::Capability::GeometryStreams], + s::Decoration::IOPipeStorageINTEL => vec![spirv::Capability::IOPipesINTEL], s::Decoration::ReferencedIndirectlyINTEL => { vec![spirv::Capability::IndirectReferencesINTEL] } @@ -1107,6 +1255,7 @@ impl Operand { | s::Decoration::Alignment | s::Decoration::AlignmentId => vec![spirv::Capability::Kernel], s::Decoration::LinkageAttributes => vec![spirv::Capability::Linkage], + s::Decoration::FuseLoopsInFunctionINTEL => vec![spirv::Capability::LoopFuseINTEL], s::Decoration::RowMajor | s::Decoration::ColMajor | s::Decoration::MatrixStride => { vec![spirv::Capability::Matrix] } @@ -1149,6 +1298,16 @@ impl Operand { s::Decoration::XfbBuffer | s::Decoration::XfbStride => { vec![spirv::Capability::TransformFeedback] } + s::Decoration::SIMTCallINTEL + | s::Decoration::VectorComputeVariableINTEL + | s::Decoration::FuncParamIOKindINTEL + | s::Decoration::VectorComputeFunctionINTEL + | s::Decoration::StackCallINTEL + | s::Decoration::GlobalVariableOffsetINTEL + | s::Decoration::SingleElementVectorINTEL + | s::Decoration::VectorComputeCallableFunctionINTEL => { + vec![spirv::Capability::VectorComputeINTEL] + } }, Self::BuiltIn(v) => match v { s::BuiltIn::NumWorkgroups @@ -1237,6 +1396,7 @@ impl Operand { spirv::Capability::MeshShadingNV, ], s::BuiltIn::RayGeometryIndexKHR => vec![spirv::Capability::RayTracingKHR], + s::BuiltIn::CurrentRayTimeNV => vec![spirv::Capability::RayTracingMotionBlurNV], s::BuiltIn::HitTNV => vec![spirv::Capability::RayTracingNV], s::BuiltIn::LaunchIdNV | s::BuiltIn::LaunchSizeNV @@ -1363,22 +1523,49 @@ impl Operand { | s::Capability::VulkanMemoryModel | s::Capability::VulkanMemoryModelDeviceScope | s::Capability::ComputeDerivativeGroupLinearNV + | s::Capability::BindlessTextureNV | s::Capability::SubgroupShuffleINTEL | s::Capability::SubgroupBufferBlockIOINTEL | s::Capability::SubgroupImageBlockIOINTEL | s::Capability::SubgroupImageMediaBlockIOINTEL + | s::Capability::RoundToInfinityINTEL + | s::Capability::FloatingPointModeINTEL | s::Capability::FunctionPointersINTEL | s::Capability::IndirectReferencesINTEL + | s::Capability::AsmINTEL + | s::Capability::AtomicFloat32MinMaxEXT + | s::Capability::AtomicFloat64MinMaxEXT + | s::Capability::AtomicFloat16MinMaxEXT + | s::Capability::VectorAnyINTEL + | s::Capability::ExpectAssumeKHR | s::Capability::SubgroupAvcMotionEstimationINTEL | s::Capability::SubgroupAvcMotionEstimationIntraINTEL | s::Capability::SubgroupAvcMotionEstimationChromaINTEL + | s::Capability::VariableLengthArrayINTEL + | s::Capability::FunctionFloatControlINTEL | s::Capability::FPGAMemoryAttributesINTEL + | s::Capability::ArbitraryPrecisionIntegersINTEL + | s::Capability::ArbitraryPrecisionFloatingPointINTEL | s::Capability::UnstructuredLoopControlsINTEL | s::Capability::FPGALoopControlsINTEL | s::Capability::KernelAttributesINTEL | s::Capability::FPGAKernelAttributesINTEL + | s::Capability::FPGAMemoryAccessesINTEL + | s::Capability::FPGAClusterAttributesINTEL + | s::Capability::LoopFuseINTEL + | s::Capability::FPGABufferLocationINTEL + | s::Capability::ArbitraryPrecisionFixedPointINTEL + | s::Capability::USMStorageClassesINTEL + | s::Capability::IOPipesINTEL | s::Capability::BlockingPipesINTEL - | s::Capability::FPGARegINTEL => vec![], + | s::Capability::FPGARegINTEL + | s::Capability::DotProductInputAllKHR + | s::Capability::DotProductInput4x8BitPackedKHR + | s::Capability::DotProductKHR + | s::Capability::BitInstructions + | s::Capability::LongConstantCompositeINTEL + | s::Capability::OptNoneINTEL + | s::Capability::DebugInfoModuleINTEL => vec![], s::Capability::GenericPointer => vec![spirv::Capability::Addresses], s::Capability::SubgroupDispatch => vec![spirv::Capability::DeviceEnqueue], s::Capability::GeometryPointSize @@ -1410,13 +1597,15 @@ impl Operand { spirv::Capability::ShaderNonUniform, ], s::Capability::Int64Atomics => vec![spirv::Capability::Int64], + s::Capability::DotProductInput4x8BitKHR => vec![spirv::Capability::Int8], s::Capability::Vector16 | s::Capability::Float16Buffer | s::Capability::ImageBasic | s::Capability::Pipes | s::Capability::DeviceEnqueue | s::Capability::LiteralSampler - | s::Capability::NamedBarrier => vec![spirv::Capability::Kernel], + | s::Capability::NamedBarrier + | s::Capability::FPFastMathModeINTEL => vec![spirv::Capability::Kernel], s::Capability::Shader => vec![spirv::Capability::Matrix], s::Capability::PerViewAttributesNV => vec![spirv::Capability::MultiView], s::Capability::ShaderViewportIndexLayerEXT => { @@ -1468,6 +1657,8 @@ impl Operand { | s::Capability::StorageImageWriteWithoutFormat | s::Capability::FragmentShadingRateKHR | s::Capability::DrawParameters + | s::Capability::WorkgroupMemoryExplicitLayoutKHR + | s::Capability::WorkgroupMemoryExplicitLayout16BitAccessKHR | s::Capability::MultiView | s::Capability::VariablePointersStorageBuffer | s::Capability::RayQueryProvisionalKHR @@ -1486,6 +1677,7 @@ impl Operand { | s::Capability::ShaderNonUniform | s::Capability::RuntimeDescriptorArray | s::Capability::RayTracingNV + | s::Capability::RayTracingMotionBlurNV | s::Capability::PhysicalStorageBufferAddresses | s::Capability::RayTracingProvisionalKHR | s::Capability::CooperativeMatrixNV @@ -1496,7 +1688,8 @@ impl Operand { | s::Capability::DemoteToHelperInvocationEXT | s::Capability::IntegerFunctions2INTEL | s::Capability::AtomicFloat32AddEXT - | s::Capability::AtomicFloat64AddEXT => vec![spirv::Capability::Shader], + | s::Capability::AtomicFloat64AddEXT + | s::Capability::AtomicFloat16AddEXT => vec![spirv::Capability::Shader], s::Capability::UniformBufferArrayNonUniformIndexing | s::Capability::SampledImageArrayNonUniformIndexing | s::Capability::StorageBufferArrayNonUniformIndexing @@ -1518,6 +1711,10 @@ impl Operand { s::Capability::VariablePointers => { vec![spirv::Capability::VariablePointersStorageBuffer] } + s::Capability::VectorComputeINTEL => vec![spirv::Capability::VectorAnyINTEL], + s::Capability::WorkgroupMemoryExplicitLayout8BitAccessKHR => { + vec![spirv::Capability::WorkgroupMemoryExplicitLayoutKHR] + } }, Self::RayQueryIntersection(v) => match v { s::RayQueryIntersection::RayQueryCandidateIntersectionKHR @@ -1538,6 +1735,9 @@ impl Operand { vec![spirv::Capability::RayQueryKHR] } }, + Self::PackedVectorFormat(v) => match v { + s::PackedVectorFormat::PackedVectorFormat4x8BitKHR => vec![], + }, _ => vec![], } } @@ -1553,7 +1753,8 @@ impl Operand { | s::LoopControl::PIPELINE_ENABLE_INTEL | s::LoopControl::LOOP_COALESCE_INTEL | s::LoopControl::MAX_INTERLEAVING_INTEL - | s::LoopControl::SPECULATED_ITERATIONS_INTEL, + | s::LoopControl::SPECULATED_ITERATIONS_INTEL + | s::LoopControl::NO_FUSION_INTEL, ) { result.extend_from_slice(&["SPV_INTEL_fpga_loop_controls"]) }; @@ -1572,7 +1773,8 @@ impl Operand { | s::SourceLanguage::GLSL | s::SourceLanguage::OpenCL_C | s::SourceLanguage::OpenCL_CPP - | s::SourceLanguage::HLSL => vec![], + | s::SourceLanguage::HLSL + | s::SourceLanguage::CPP_for_OpenCL => vec![], }, Self::ExecutionModel(v) => match v { s::ExecutionModel::Vertex @@ -1644,7 +1846,13 @@ impl Operand { | s::ExecutionMode::SubgroupsPerWorkgroup | s::ExecutionMode::SubgroupsPerWorkgroupId | s::ExecutionMode::LocalSizeId - | s::ExecutionMode::LocalSizeHintId => vec![], + | s::ExecutionMode::LocalSizeHintId + | s::ExecutionMode::SharedLocalMemorySizeINTEL + | s::ExecutionMode::RoundingModeRTPINTEL + | s::ExecutionMode::RoundingModeRTNINTEL + | s::ExecutionMode::FloatingPointModeALTINTEL + | s::ExecutionMode::FloatingPointModeIEEEINTEL + | s::ExecutionMode::SchedulerTargetFmaxMhzINTEL => vec![], s::ExecutionMode::PixelInterlockOrderedEXT | s::ExecutionMode::PixelInterlockUnorderedEXT | s::ExecutionMode::SampleInterlockOrderedEXT @@ -1664,6 +1872,9 @@ impl Operand { | s::ExecutionMode::RoundingModeRTE | s::ExecutionMode::RoundingModeRTZ => vec!["SPV_KHR_float_controls"], s::ExecutionMode::PostDepthCoverage => vec!["SPV_KHR_post_depth_coverage"], + s::ExecutionMode::SubgroupUniformControlFlowKHR => { + vec!["SPV_KHR_subgroup_uniform_control_flow"] + } s::ExecutionMode::DerivativeGroupQuadsNV | s::ExecutionMode::DerivativeGroupLinearNV => { vec!["SPV_NV_compute_shader_derivatives"] @@ -1690,6 +1901,9 @@ impl Operand { "SPV_KHR_physical_storage_buffer", ], s::StorageClass::CodeSectionINTEL => vec!["SPV_INTEL_function_pointers"], + s::StorageClass::DeviceOnlyINTEL | s::StorageClass::HostOnlyINTEL => { + vec!["SPV_INTEL_usm_storage_classes"] + } s::StorageClass::StorageBuffer => vec![ "SPV_KHR_storage_buffer_storage_class", "SPV_KHR_variable_pointers", @@ -1813,8 +2027,31 @@ impl Operand { | s::FPRoundingMode::RTP | s::FPRoundingMode::RTN => vec![], }, + Self::FPDenormMode(v) => match v { + s::FPDenormMode::Preserve | s::FPDenormMode::FlushToZero => vec![], + }, + Self::QuantizationModes(v) => match v { + s::QuantizationModes::TRN + | s::QuantizationModes::TRN_ZERO + | s::QuantizationModes::RND + | s::QuantizationModes::RND_ZERO + | s::QuantizationModes::RND_INF + | s::QuantizationModes::RND_MIN_INF + | s::QuantizationModes::RND_CONV + | s::QuantizationModes::RND_CONV_ODD => vec![], + }, + Self::FPOperationMode(v) => match v { + s::FPOperationMode::IEEE | s::FPOperationMode::ALT => vec![], + }, + Self::OverflowModes(v) => match v { + s::OverflowModes::WRAP + | s::OverflowModes::SAT + | s::OverflowModes::SAT_ZERO + | s::OverflowModes::SAT_SYM => vec![], + }, Self::LinkageType(v) => match v { s::LinkageType::Export | s::LinkageType::Import => vec![], + s::LinkageType::LinkOnceODR => vec!["SPV_KHR_linkonce_odr"], }, Self::AccessQualifier(v) => match v { s::AccessQualifier::ReadOnly @@ -1881,8 +2118,33 @@ impl Operand { | s::Decoration::MaxByteOffsetId | s::Decoration::ViewportRelativeNV | s::Decoration::NonUniform + | s::Decoration::BindlessSamplerNV + | s::Decoration::BindlessImageNV + | s::Decoration::BoundSamplerNV + | s::Decoration::BoundImageNV + | s::Decoration::SIMTCallINTEL + | s::Decoration::ClobberINTEL + | s::Decoration::SideEffectsINTEL + | s::Decoration::VectorComputeVariableINTEL + | s::Decoration::FuncParamIOKindINTEL + | s::Decoration::VectorComputeFunctionINTEL + | s::Decoration::StackCallINTEL + | s::Decoration::GlobalVariableOffsetINTEL | s::Decoration::CounterBuffer - | s::Decoration::UserSemantic => vec![], + | s::Decoration::UserSemantic + | s::Decoration::FunctionRoundingModeINTEL + | s::Decoration::FunctionDenormModeINTEL + | s::Decoration::BurstCoalesceINTEL + | s::Decoration::CacheSizeINTEL + | s::Decoration::DontStaticallyCoalesceINTEL + | s::Decoration::PrefetchINTEL + | s::Decoration::StallEnableINTEL + | s::Decoration::FuseLoopsInFunctionINTEL + | s::Decoration::BufferLocationINTEL + | s::Decoration::IOPipeStorageINTEL + | s::Decoration::FunctionFloatingPointModeINTEL + | s::Decoration::SingleElementVectorINTEL + | s::Decoration::VectorComputeCallableFunctionINTEL => vec![], s::Decoration::ExplicitInterpAMD => { vec!["SPV_AMD_shader_explicit_vertex_parameter"] } @@ -2019,6 +2281,7 @@ impl Operand { | s::BuiltIn::IncomingRayFlagsNV => { vec!["SPV_NV_ray_tracing", "SPV_KHR_ray_tracing"] } + s::BuiltIn::CurrentRayTimeNV => vec!["SPV_NV_ray_tracing_motion_blur"], s::BuiltIn::WarpsPerSMNV | s::BuiltIn::SMCountNV | s::BuiltIn::WarpIDNV @@ -2157,21 +2420,46 @@ impl Operand { "SPV_EXT_physical_storage_buffer", "SPV_KHR_physical_storage_buffer", ], + s::Capability::AtomicFloat16AddEXT => vec!["SPV_EXT_shader_atomic_float16_add"], s::Capability::AtomicFloat32AddEXT | s::Capability::AtomicFloat64AddEXT => { vec!["SPV_EXT_shader_atomic_float_add"] } + s::Capability::AtomicFloat32MinMaxEXT + | s::Capability::AtomicFloat64MinMaxEXT + | s::Capability::AtomicFloat16MinMaxEXT => { + vec!["SPV_EXT_shader_atomic_float_min_max"] + } s::Capability::Int64ImageEXT => vec!["SPV_EXT_shader_image_int64"], s::Capability::StencilExportEXT => vec!["SPV_EXT_shader_stencil_export"], s::Capability::ShaderViewportIndexLayerEXT => { vec!["SPV_EXT_shader_viewport_index_layer"] } + s::Capability::ArbitraryPrecisionFixedPointINTEL => { + vec!["SPV_INTEL_arbitrary_precision_fixed_point"] + } + s::Capability::ArbitraryPrecisionFloatingPointINTEL => { + vec!["SPV_INTEL_arbitrary_precision_floating_point"] + } + s::Capability::ArbitraryPrecisionIntegersINTEL => { + vec!["SPV_INTEL_arbitrary_precision_integers"] + } s::Capability::BlockingPipesINTEL => vec!["SPV_INTEL_blocking_pipes"], + s::Capability::DebugInfoModuleINTEL => vec!["SPV_INTEL_debug_module"], s::Capability::SubgroupAvcMotionEstimationINTEL | s::Capability::SubgroupAvcMotionEstimationIntraINTEL | s::Capability::SubgroupAvcMotionEstimationChromaINTEL => { vec!["SPV_INTEL_device_side_avc_motion_estimation"] } + s::Capability::RoundToInfinityINTEL + | s::Capability::FloatingPointModeINTEL + | s::Capability::FunctionFloatControlINTEL => vec!["SPV_INTEL_float_controls2"], + s::Capability::FPFastMathModeINTEL => vec!["SPV_INTEL_fp_fast_math_mode"], + s::Capability::FPGABufferLocationINTEL => vec!["SPV_INTEL_fpga_buffer_location"], + s::Capability::FPGAClusterAttributesINTEL => { + vec!["SPV_INTEL_fpga_cluster_attributes"] + } s::Capability::FPGALoopControlsINTEL => vec!["SPV_INTEL_fpga_loop_controls"], + s::Capability::FPGAMemoryAccessesINTEL => vec!["SPV_INTEL_fpga_memory_accesses"], s::Capability::FPGAMemoryAttributesINTEL => { vec!["SPV_INTEL_fpga_memory_attributes"] } @@ -2179,10 +2467,17 @@ impl Operand { s::Capability::FunctionPointersINTEL | s::Capability::IndirectReferencesINTEL => { vec!["SPV_INTEL_function_pointers"] } + s::Capability::AsmINTEL => vec!["SPV_INTEL_inline_assembly"], + s::Capability::IOPipesINTEL => vec!["SPV_INTEL_io_pipes"], s::Capability::KernelAttributesINTEL | s::Capability::FPGAKernelAttributesINTEL => { vec!["SPV_INTEL_kernel_attributes"] } + s::Capability::LongConstantCompositeINTEL => { + vec!["SPV_INTEL_long_constant_composite"] + } + s::Capability::LoopFuseINTEL => vec!["SPV_INTEL_loop_fuse"], s::Capability::SubgroupImageMediaBlockIOINTEL => vec!["SPV_INTEL_media_block_io"], + s::Capability::OptNoneINTEL => vec!["SPV_INTEL_optnone"], s::Capability::IntegerFunctions2INTEL => { vec!["SPV_INTEL_shader_integer_functions2"] } @@ -2192,6 +2487,11 @@ impl Operand { s::Capability::UnstructuredLoopControlsINTEL => { vec!["SPV_INTEL_unstructured_loop_controls"] } + s::Capability::USMStorageClassesINTEL => vec!["SPV_INTEL_usm_storage_classes"], + s::Capability::VariableLengthArrayINTEL => vec!["SPV_INTEL_variable_length_array"], + s::Capability::VectorComputeINTEL | s::Capability::VectorAnyINTEL => { + vec!["SPV_INTEL_vector_compute"] + } s::Capability::StorageBuffer16BitAccess | s::Capability::UniformAndStorageBuffer16BitAccess | s::Capability::StoragePushConstant16 @@ -2199,13 +2499,19 @@ impl Operand { s::Capability::StorageBuffer8BitAccess | s::Capability::UniformAndStorageBuffer8BitAccess | s::Capability::StoragePushConstant8 => vec!["SPV_KHR_8bit_storage"], + s::Capability::BitInstructions => vec!["SPV_KHR_bit_instructions"], s::Capability::DeviceGroup => vec!["SPV_KHR_device_group"], + s::Capability::ExpectAssumeKHR => vec!["SPV_KHR_expect_assume"], s::Capability::DenormPreserve | s::Capability::DenormFlushToZero | s::Capability::SignedZeroInfNanPreserve | s::Capability::RoundingModeRTE | s::Capability::RoundingModeRTZ => vec!["SPV_KHR_float_controls"], s::Capability::FragmentShadingRateKHR => vec!["SPV_KHR_fragment_shading_rate"], + s::Capability::DotProductInputAllKHR + | s::Capability::DotProductInput4x8BitKHR + | s::Capability::DotProductInput4x8BitPackedKHR + | s::Capability::DotProductKHR => vec!["SPV_KHR_integer_dot_product"], s::Capability::MultiView => vec!["SPV_KHR_multiview"], s::Capability::SampleMaskPostDepthCoverage => vec!["SPV_KHR_post_depth_coverage"], s::Capability::RayQueryProvisionalKHR | s::Capability::RayQueryKHR => { @@ -2225,7 +2531,13 @@ impl Operand { s::Capability::VariablePointersStorageBuffer | s::Capability::VariablePointers => { vec!["SPV_KHR_variable_pointers"] } + s::Capability::WorkgroupMemoryExplicitLayoutKHR + | s::Capability::WorkgroupMemoryExplicitLayout8BitAccessKHR + | s::Capability::WorkgroupMemoryExplicitLayout16BitAccessKHR => { + vec!["SPV_KHR_workgroup_memory_explicit_layout"] + } s::Capability::PerViewAttributesNV => vec!["SPV_NVX_multiview_per_view_attributes"], + s::Capability::BindlessTextureNV => vec!["SPV_NV_bindless_texture"], s::Capability::ComputeDerivativeGroupQuadsNV | s::Capability::ComputeDerivativeGroupLinearNV => { vec!["SPV_NV_compute_shader_derivatives"] @@ -2237,6 +2549,7 @@ impl Operand { } s::Capability::MeshShadingNV => vec!["SPV_NV_mesh_shader"], s::Capability::RayTracingNV => vec!["SPV_NV_ray_tracing"], + s::Capability::RayTracingMotionBlurNV => vec!["SPV_NV_ray_tracing_motion_blur"], s::Capability::SampleMaskOverrideCoverageNV => { vec!["SPV_NV_sample_mask_override_coverage"] } @@ -2265,6 +2578,11 @@ impl Operand { vec![] } }, + Self::PackedVectorFormat(v) => match v { + s::PackedVectorFormat::PackedVectorFormat4x8BitKHR => { + vec!["SPV_KHR_integer_dot_product"] + } + }, _ => vec![], } } @@ -2282,6 +2600,7 @@ impl Operand { s::ImageOperands::CONST_OFFSETS, s::ImageOperands::SAMPLE, s::ImageOperands::MIN_LOD, + s::ImageOperands::OFFSETS, ] .iter() .filter(|arg| v.contains(**arg)) @@ -2348,6 +2667,7 @@ impl Operand { s::LoopControl::LOOP_COALESCE_INTEL, s::LoopControl::MAX_INTERLEAVING_INTEL, s::LoopControl::SPECULATED_ITERATIONS_INTEL, + s::LoopControl::NO_FUSION_INTEL, ] .iter() .filter(|arg| v.contains(**arg)) @@ -2396,14 +2716,24 @@ impl Operand { result } Self::ExecutionMode(v) => match v { - s::ExecutionMode::LocalSizeHintId => vec![crate::grammar::LogicalOperand { - kind: crate::grammar::OperandKind::IdRef, - quantifier: crate::grammar::OperandQuantifier::One, - }], s::ExecutionMode::SubgroupsPerWorkgroupId => vec![crate::grammar::LogicalOperand { kind: crate::grammar::OperandKind::IdRef, quantifier: crate::grammar::OperandQuantifier::One, }], + s::ExecutionMode::LocalSizeHintId => vec![ + crate::grammar::LogicalOperand { + kind: crate::grammar::OperandKind::IdRef, + quantifier: crate::grammar::OperandQuantifier::One, + }, + crate::grammar::LogicalOperand { + kind: crate::grammar::OperandKind::IdRef, + quantifier: crate::grammar::OperandQuantifier::One, + }, + crate::grammar::LogicalOperand { + kind: crate::grammar::OperandKind::IdRef, + quantifier: crate::grammar::OperandQuantifier::One, + }, + ], s::ExecutionMode::LocalSizeId => vec![ crate::grammar::LogicalOperand { kind: crate::grammar::OperandKind::IdRef, @@ -2426,6 +2756,12 @@ impl Operand { kind: crate::grammar::OperandKind::LiteralInteger, quantifier: crate::grammar::OperandQuantifier::One, }], + s::ExecutionMode::SharedLocalMemorySizeINTEL => { + vec![crate::grammar::LogicalOperand { + kind: crate::grammar::OperandKind::LiteralInteger, + quantifier: crate::grammar::OperandQuantifier::One, + }] + } s::ExecutionMode::SubgroupSize => vec![crate::grammar::LogicalOperand { kind: crate::grammar::OperandKind::LiteralInteger, quantifier: crate::grammar::OperandQuantifier::One, @@ -2438,10 +2774,16 @@ impl Operand { | s::ExecutionMode::DenormFlushToZero | s::ExecutionMode::SignedZeroInfNanPreserve | s::ExecutionMode::RoundingModeRTE - | s::ExecutionMode::RoundingModeRTZ => vec![crate::grammar::LogicalOperand { - kind: crate::grammar::OperandKind::LiteralInteger, - quantifier: crate::grammar::OperandQuantifier::One, - }], + | s::ExecutionMode::RoundingModeRTZ + | s::ExecutionMode::RoundingModeRTPINTEL + | s::ExecutionMode::RoundingModeRTNINTEL + | s::ExecutionMode::FloatingPointModeALTINTEL + | s::ExecutionMode::FloatingPointModeIEEEINTEL => { + vec![crate::grammar::LogicalOperand { + kind: crate::grammar::OperandKind::LiteralInteger, + quantifier: crate::grammar::OperandQuantifier::One, + }] + } s::ExecutionMode::VecTypeHint => vec![crate::grammar::LogicalOperand { kind: crate::grammar::OperandKind::LiteralInteger, quantifier: crate::grammar::OperandQuantifier::One, @@ -2468,6 +2810,12 @@ impl Operand { quantifier: crate::grammar::OperandQuantifier::One, }, ], + s::ExecutionMode::SchedulerTargetFmaxMhzINTEL => { + vec![crate::grammar::LogicalOperand { + kind: crate::grammar::OperandKind::LiteralInteger, + quantifier: crate::grammar::OperandQuantifier::One, + }] + } s::ExecutionMode::NumSIMDWorkitemsINTEL => vec![crate::grammar::LogicalOperand { kind: crate::grammar::OperandKind::LiteralInteger, quantifier: crate::grammar::OperandQuantifier::One, @@ -2549,10 +2897,18 @@ impl Operand { kind: crate::grammar::OperandKind::LiteralInteger, quantifier: crate::grammar::OperandQuantifier::One, }], + s::Decoration::BufferLocationINTEL => vec![crate::grammar::LogicalOperand { + kind: crate::grammar::OperandKind::LiteralInteger, + quantifier: crate::grammar::OperandQuantifier::One, + }], s::Decoration::Offset => vec![crate::grammar::LogicalOperand { kind: crate::grammar::OperandKind::LiteralInteger, quantifier: crate::grammar::OperandQuantifier::One, }], + s::Decoration::CacheSizeINTEL => vec![crate::grammar::LogicalOperand { + kind: crate::grammar::OperandKind::LiteralInteger, + quantifier: crate::grammar::OperandQuantifier::One, + }], s::Decoration::Component => vec![crate::grammar::LogicalOperand { kind: crate::grammar::OperandKind::LiteralInteger, quantifier: crate::grammar::OperandQuantifier::One, @@ -2565,10 +2921,18 @@ impl Operand { kind: crate::grammar::OperandKind::LiteralInteger, quantifier: crate::grammar::OperandQuantifier::One, }], + s::Decoration::IOPipeStorageINTEL => vec![crate::grammar::LogicalOperand { + kind: crate::grammar::OperandKind::LiteralInteger, + quantifier: crate::grammar::OperandQuantifier::One, + }], s::Decoration::Index => vec![crate::grammar::LogicalOperand { kind: crate::grammar::OperandKind::LiteralInteger, quantifier: crate::grammar::OperandQuantifier::One, }], + s::Decoration::FuncParamIOKindINTEL => vec![crate::grammar::LogicalOperand { + kind: crate::grammar::OperandKind::LiteralInteger, + quantifier: crate::grammar::OperandQuantifier::One, + }], s::Decoration::Location => vec![crate::grammar::LogicalOperand { kind: crate::grammar::OperandKind::LiteralInteger, quantifier: crate::grammar::OperandQuantifier::One, @@ -2589,12 +2953,21 @@ impl Operand { kind: crate::grammar::OperandKind::LiteralInteger, quantifier: crate::grammar::OperandQuantifier::One, }], - s::Decoration::SecondaryViewportRelativeNV => { + s::Decoration::SIMTCallINTEL => vec![crate::grammar::LogicalOperand { + kind: crate::grammar::OperandKind::LiteralInteger, + quantifier: crate::grammar::OperandQuantifier::One, + }], + s::Decoration::SecondaryViewportRelativeNV + | s::Decoration::GlobalVariableOffsetINTEL => { vec![crate::grammar::LogicalOperand { kind: crate::grammar::OperandKind::LiteralInteger, quantifier: crate::grammar::OperandQuantifier::One, }] } + s::Decoration::PrefetchINTEL => vec![crate::grammar::LogicalOperand { + kind: crate::grammar::OperandKind::LiteralInteger, + quantifier: crate::grammar::OperandQuantifier::One, + }], s::Decoration::SpecId => vec![crate::grammar::LogicalOperand { kind: crate::grammar::OperandKind::LiteralInteger, quantifier: crate::grammar::OperandQuantifier::One, @@ -2603,6 +2976,36 @@ impl Operand { kind: crate::grammar::OperandKind::LiteralInteger, quantifier: crate::grammar::OperandQuantifier::One, }], + s::Decoration::FunctionDenormModeINTEL => vec![ + crate::grammar::LogicalOperand { + kind: crate::grammar::OperandKind::LiteralInteger, + quantifier: crate::grammar::OperandQuantifier::One, + }, + crate::grammar::LogicalOperand { + kind: crate::grammar::OperandKind::FPDenormMode, + quantifier: crate::grammar::OperandQuantifier::One, + }, + ], + s::Decoration::FunctionFloatingPointModeINTEL => vec![ + crate::grammar::LogicalOperand { + kind: crate::grammar::OperandKind::LiteralInteger, + quantifier: crate::grammar::OperandQuantifier::One, + }, + crate::grammar::LogicalOperand { + kind: crate::grammar::OperandKind::FPOperationMode, + quantifier: crate::grammar::OperandQuantifier::One, + }, + ], + s::Decoration::FunctionRoundingModeINTEL => vec![ + crate::grammar::LogicalOperand { + kind: crate::grammar::OperandKind::LiteralInteger, + quantifier: crate::grammar::OperandQuantifier::One, + }, + crate::grammar::LogicalOperand { + kind: crate::grammar::OperandKind::FPRoundingMode, + quantifier: crate::grammar::OperandQuantifier::One, + }, + ], s::Decoration::XfbBuffer => vec![crate::grammar::LogicalOperand { kind: crate::grammar::OperandKind::LiteralInteger, quantifier: crate::grammar::OperandQuantifier::One, @@ -2635,6 +3038,10 @@ impl Operand { quantifier: crate::grammar::OperandQuantifier::One, }, ], + s::Decoration::ClobberINTEL => vec![crate::grammar::LogicalOperand { + kind: crate::grammar::OperandKind::LiteralString, + quantifier: crate::grammar::OperandQuantifier::One, + }], s::Decoration::UserSemantic => vec![crate::grammar::LogicalOperand { kind: crate::grammar::OperandKind::LiteralString, quantifier: crate::grammar::OperandQuantifier::One, diff --git a/rspirv/dr/build/autogen_norm_insts.rs b/rspirv/dr/build/autogen_norm_insts.rs index 81da9707..b3366354 100644 --- a/rspirv/dr/build/autogen_norm_insts.rs +++ b/rspirv/dr/build/autogen_norm_insts.rs @@ -12436,6 +12436,318 @@ impl Builder { self.insert_into_block(insert_point, inst)?; Ok(_id) } + #[doc = "Appends an OpSDotKHR instruction to the current block."] + pub fn s_dot_khr( + &mut self, + result_type: spirv::Word, + result_id: Option, + vector_1: spirv::Word, + vector_2: spirv::Word, + packed_vector_format: Option, + ) -> BuildResult { + let _id = result_id.unwrap_or_else(|| self.id()); + #[allow(unused_mut)] + let mut inst = dr::Instruction::new( + spirv::Op::SDotKHR, + Some(result_type), + Some(_id), + vec![dr::Operand::IdRef(vector_1), dr::Operand::IdRef(vector_2)], + ); + if let Some(v) = packed_vector_format { + inst.operands.push(dr::Operand::PackedVectorFormat(v)); + } + self.insert_into_block(InsertPoint::End, inst)?; + Ok(_id) + } + #[doc = "Appends an OpSDotKHR instruction to the current block."] + pub fn insert_s_dot_khr( + &mut self, + insert_point: InsertPoint, + result_type: spirv::Word, + result_id: Option, + vector_1: spirv::Word, + vector_2: spirv::Word, + packed_vector_format: Option, + ) -> BuildResult { + let _id = result_id.unwrap_or_else(|| self.id()); + #[allow(unused_mut)] + let mut inst = dr::Instruction::new( + spirv::Op::SDotKHR, + Some(result_type), + Some(_id), + vec![dr::Operand::IdRef(vector_1), dr::Operand::IdRef(vector_2)], + ); + if let Some(v) = packed_vector_format { + inst.operands.push(dr::Operand::PackedVectorFormat(v)); + } + self.insert_into_block(insert_point, inst)?; + Ok(_id) + } + #[doc = "Appends an OpUDotKHR instruction to the current block."] + pub fn u_dot_khr( + &mut self, + result_type: spirv::Word, + result_id: Option, + vector_1: spirv::Word, + vector_2: spirv::Word, + packed_vector_format: Option, + ) -> BuildResult { + let _id = result_id.unwrap_or_else(|| self.id()); + #[allow(unused_mut)] + let mut inst = dr::Instruction::new( + spirv::Op::UDotKHR, + Some(result_type), + Some(_id), + vec![dr::Operand::IdRef(vector_1), dr::Operand::IdRef(vector_2)], + ); + if let Some(v) = packed_vector_format { + inst.operands.push(dr::Operand::PackedVectorFormat(v)); + } + self.insert_into_block(InsertPoint::End, inst)?; + Ok(_id) + } + #[doc = "Appends an OpUDotKHR instruction to the current block."] + pub fn insert_u_dot_khr( + &mut self, + insert_point: InsertPoint, + result_type: spirv::Word, + result_id: Option, + vector_1: spirv::Word, + vector_2: spirv::Word, + packed_vector_format: Option, + ) -> BuildResult { + let _id = result_id.unwrap_or_else(|| self.id()); + #[allow(unused_mut)] + let mut inst = dr::Instruction::new( + spirv::Op::UDotKHR, + Some(result_type), + Some(_id), + vec![dr::Operand::IdRef(vector_1), dr::Operand::IdRef(vector_2)], + ); + if let Some(v) = packed_vector_format { + inst.operands.push(dr::Operand::PackedVectorFormat(v)); + } + self.insert_into_block(insert_point, inst)?; + Ok(_id) + } + #[doc = "Appends an OpSUDotKHR instruction to the current block."] + pub fn su_dot_khr( + &mut self, + result_type: spirv::Word, + result_id: Option, + vector_1: spirv::Word, + vector_2: spirv::Word, + packed_vector_format: Option, + ) -> BuildResult { + let _id = result_id.unwrap_or_else(|| self.id()); + #[allow(unused_mut)] + let mut inst = dr::Instruction::new( + spirv::Op::SUDotKHR, + Some(result_type), + Some(_id), + vec![dr::Operand::IdRef(vector_1), dr::Operand::IdRef(vector_2)], + ); + if let Some(v) = packed_vector_format { + inst.operands.push(dr::Operand::PackedVectorFormat(v)); + } + self.insert_into_block(InsertPoint::End, inst)?; + Ok(_id) + } + #[doc = "Appends an OpSUDotKHR instruction to the current block."] + pub fn insert_su_dot_khr( + &mut self, + insert_point: InsertPoint, + result_type: spirv::Word, + result_id: Option, + vector_1: spirv::Word, + vector_2: spirv::Word, + packed_vector_format: Option, + ) -> BuildResult { + let _id = result_id.unwrap_or_else(|| self.id()); + #[allow(unused_mut)] + let mut inst = dr::Instruction::new( + spirv::Op::SUDotKHR, + Some(result_type), + Some(_id), + vec![dr::Operand::IdRef(vector_1), dr::Operand::IdRef(vector_2)], + ); + if let Some(v) = packed_vector_format { + inst.operands.push(dr::Operand::PackedVectorFormat(v)); + } + self.insert_into_block(insert_point, inst)?; + Ok(_id) + } + #[doc = "Appends an OpSDotAccSatKHR instruction to the current block."] + pub fn s_dot_acc_sat_khr( + &mut self, + result_type: spirv::Word, + result_id: Option, + vector_1: spirv::Word, + vector_2: spirv::Word, + accumulator: spirv::Word, + packed_vector_format: Option, + ) -> BuildResult { + let _id = result_id.unwrap_or_else(|| self.id()); + #[allow(unused_mut)] + let mut inst = dr::Instruction::new( + spirv::Op::SDotAccSatKHR, + Some(result_type), + Some(_id), + vec![ + dr::Operand::IdRef(vector_1), + dr::Operand::IdRef(vector_2), + dr::Operand::IdRef(accumulator), + ], + ); + if let Some(v) = packed_vector_format { + inst.operands.push(dr::Operand::PackedVectorFormat(v)); + } + self.insert_into_block(InsertPoint::End, inst)?; + Ok(_id) + } + #[doc = "Appends an OpSDotAccSatKHR instruction to the current block."] + pub fn insert_s_dot_acc_sat_khr( + &mut self, + insert_point: InsertPoint, + result_type: spirv::Word, + result_id: Option, + vector_1: spirv::Word, + vector_2: spirv::Word, + accumulator: spirv::Word, + packed_vector_format: Option, + ) -> BuildResult { + let _id = result_id.unwrap_or_else(|| self.id()); + #[allow(unused_mut)] + let mut inst = dr::Instruction::new( + spirv::Op::SDotAccSatKHR, + Some(result_type), + Some(_id), + vec![ + dr::Operand::IdRef(vector_1), + dr::Operand::IdRef(vector_2), + dr::Operand::IdRef(accumulator), + ], + ); + if let Some(v) = packed_vector_format { + inst.operands.push(dr::Operand::PackedVectorFormat(v)); + } + self.insert_into_block(insert_point, inst)?; + Ok(_id) + } + #[doc = "Appends an OpUDotAccSatKHR instruction to the current block."] + pub fn u_dot_acc_sat_khr( + &mut self, + result_type: spirv::Word, + result_id: Option, + vector_1: spirv::Word, + vector_2: spirv::Word, + accumulator: spirv::Word, + packed_vector_format: Option, + ) -> BuildResult { + let _id = result_id.unwrap_or_else(|| self.id()); + #[allow(unused_mut)] + let mut inst = dr::Instruction::new( + spirv::Op::UDotAccSatKHR, + Some(result_type), + Some(_id), + vec![ + dr::Operand::IdRef(vector_1), + dr::Operand::IdRef(vector_2), + dr::Operand::IdRef(accumulator), + ], + ); + if let Some(v) = packed_vector_format { + inst.operands.push(dr::Operand::PackedVectorFormat(v)); + } + self.insert_into_block(InsertPoint::End, inst)?; + Ok(_id) + } + #[doc = "Appends an OpUDotAccSatKHR instruction to the current block."] + pub fn insert_u_dot_acc_sat_khr( + &mut self, + insert_point: InsertPoint, + result_type: spirv::Word, + result_id: Option, + vector_1: spirv::Word, + vector_2: spirv::Word, + accumulator: spirv::Word, + packed_vector_format: Option, + ) -> BuildResult { + let _id = result_id.unwrap_or_else(|| self.id()); + #[allow(unused_mut)] + let mut inst = dr::Instruction::new( + spirv::Op::UDotAccSatKHR, + Some(result_type), + Some(_id), + vec![ + dr::Operand::IdRef(vector_1), + dr::Operand::IdRef(vector_2), + dr::Operand::IdRef(accumulator), + ], + ); + if let Some(v) = packed_vector_format { + inst.operands.push(dr::Operand::PackedVectorFormat(v)); + } + self.insert_into_block(insert_point, inst)?; + Ok(_id) + } + #[doc = "Appends an OpSUDotAccSatKHR instruction to the current block."] + pub fn su_dot_acc_sat_khr( + &mut self, + result_type: spirv::Word, + result_id: Option, + vector_1: spirv::Word, + vector_2: spirv::Word, + accumulator: spirv::Word, + packed_vector_format: Option, + ) -> BuildResult { + let _id = result_id.unwrap_or_else(|| self.id()); + #[allow(unused_mut)] + let mut inst = dr::Instruction::new( + spirv::Op::SUDotAccSatKHR, + Some(result_type), + Some(_id), + vec![ + dr::Operand::IdRef(vector_1), + dr::Operand::IdRef(vector_2), + dr::Operand::IdRef(accumulator), + ], + ); + if let Some(v) = packed_vector_format { + inst.operands.push(dr::Operand::PackedVectorFormat(v)); + } + self.insert_into_block(InsertPoint::End, inst)?; + Ok(_id) + } + #[doc = "Appends an OpSUDotAccSatKHR instruction to the current block."] + pub fn insert_su_dot_acc_sat_khr( + &mut self, + insert_point: InsertPoint, + result_type: spirv::Word, + result_id: Option, + vector_1: spirv::Word, + vector_2: spirv::Word, + accumulator: spirv::Word, + packed_vector_format: Option, + ) -> BuildResult { + let _id = result_id.unwrap_or_else(|| self.id()); + #[allow(unused_mut)] + let mut inst = dr::Instruction::new( + spirv::Op::SUDotAccSatKHR, + Some(result_type), + Some(_id), + vec![ + dr::Operand::IdRef(vector_1), + dr::Operand::IdRef(vector_2), + dr::Operand::IdRef(accumulator), + ], + ); + if let Some(v) = packed_vector_format { + inst.operands.push(dr::Operand::PackedVectorFormat(v)); + } + self.insert_into_block(insert_point, inst)?; + Ok(_id) + } #[doc = "Appends an OpRayQueryInitializeKHR instruction to the current block."] pub fn ray_query_initialize_khr( &mut self, @@ -13158,7 +13470,7 @@ impl Builder { &mut self, result_type: spirv::Word, result_id: Option, - execution: spirv::Word, + scope: spirv::Word, ) -> BuildResult { let _id = result_id.unwrap_or_else(|| self.id()); #[allow(unused_mut)] @@ -13166,7 +13478,7 @@ impl Builder { spirv::Op::ReadClockKHR, Some(result_type), Some(_id), - vec![dr::Operand::IdScope(execution)], + vec![dr::Operand::IdScope(scope)], ); self.insert_into_block(InsertPoint::End, inst)?; Ok(_id) @@ -13177,7 +13489,7 @@ impl Builder { insert_point: InsertPoint, result_type: spirv::Word, result_id: Option, - execution: spirv::Word, + scope: spirv::Word, ) -> BuildResult { let _id = result_id.unwrap_or_else(|| self.id()); #[allow(unused_mut)] @@ -13185,7 +13497,7 @@ impl Builder { spirv::Op::ReadClockKHR, Some(result_type), Some(_id), - vec![dr::Operand::IdScope(execution)], + vec![dr::Operand::IdScope(scope)], ); self.insert_into_block(insert_point, inst)?; Ok(_id) @@ -13512,34 +13824,192 @@ impl Builder { self.insert_into_block(insert_point, inst)?; Ok(()) } - #[doc = "Appends an OpExecuteCallableNV instruction to the current block."] - pub fn execute_callable_nv( + #[doc = "Appends an OpTraceMotionNV instruction to the current block."] + pub fn trace_motion_nv( &mut self, - sbt_index: spirv::Word, - callable_data_id: spirv::Word, + accel: spirv::Word, + ray_flags: spirv::Word, + cull_mask: spirv::Word, + sbt_offset: spirv::Word, + sbt_stride: spirv::Word, + miss_index: spirv::Word, + ray_origin: spirv::Word, + ray_tmin: spirv::Word, + ray_direction: spirv::Word, + ray_tmax: spirv::Word, + time: spirv::Word, + payload_id: spirv::Word, ) -> BuildResult<()> { #[allow(unused_mut)] let mut inst = dr::Instruction::new( - spirv::Op::ExecuteCallableNV, + spirv::Op::TraceMotionNV, None, None, vec![ - dr::Operand::IdRef(sbt_index), - dr::Operand::IdRef(callable_data_id), + dr::Operand::IdRef(accel), + dr::Operand::IdRef(ray_flags), + dr::Operand::IdRef(cull_mask), + dr::Operand::IdRef(sbt_offset), + dr::Operand::IdRef(sbt_stride), + dr::Operand::IdRef(miss_index), + dr::Operand::IdRef(ray_origin), + dr::Operand::IdRef(ray_tmin), + dr::Operand::IdRef(ray_direction), + dr::Operand::IdRef(ray_tmax), + dr::Operand::IdRef(time), + dr::Operand::IdRef(payload_id), ], ); self.insert_into_block(InsertPoint::End, inst)?; Ok(()) } - #[doc = "Appends an OpExecuteCallableNV instruction to the current block."] - pub fn insert_execute_callable_nv( + #[doc = "Appends an OpTraceMotionNV instruction to the current block."] + pub fn insert_trace_motion_nv( &mut self, insert_point: InsertPoint, - sbt_index: spirv::Word, - callable_data_id: spirv::Word, - ) -> BuildResult<()> { - #[allow(unused_mut)] - let mut inst = dr::Instruction::new( + accel: spirv::Word, + ray_flags: spirv::Word, + cull_mask: spirv::Word, + sbt_offset: spirv::Word, + sbt_stride: spirv::Word, + miss_index: spirv::Word, + ray_origin: spirv::Word, + ray_tmin: spirv::Word, + ray_direction: spirv::Word, + ray_tmax: spirv::Word, + time: spirv::Word, + payload_id: spirv::Word, + ) -> BuildResult<()> { + #[allow(unused_mut)] + let mut inst = dr::Instruction::new( + spirv::Op::TraceMotionNV, + None, + None, + vec![ + dr::Operand::IdRef(accel), + dr::Operand::IdRef(ray_flags), + dr::Operand::IdRef(cull_mask), + dr::Operand::IdRef(sbt_offset), + dr::Operand::IdRef(sbt_stride), + dr::Operand::IdRef(miss_index), + dr::Operand::IdRef(ray_origin), + dr::Operand::IdRef(ray_tmin), + dr::Operand::IdRef(ray_direction), + dr::Operand::IdRef(ray_tmax), + dr::Operand::IdRef(time), + dr::Operand::IdRef(payload_id), + ], + ); + self.insert_into_block(insert_point, inst)?; + Ok(()) + } + #[doc = "Appends an OpTraceRayMotionNV instruction to the current block."] + pub fn trace_ray_motion_nv( + &mut self, + accel: spirv::Word, + ray_flags: spirv::Word, + cull_mask: spirv::Word, + sbt_offset: spirv::Word, + sbt_stride: spirv::Word, + miss_index: spirv::Word, + ray_origin: spirv::Word, + ray_tmin: spirv::Word, + ray_direction: spirv::Word, + ray_tmax: spirv::Word, + time: spirv::Word, + payload: spirv::Word, + ) -> BuildResult<()> { + #[allow(unused_mut)] + let mut inst = dr::Instruction::new( + spirv::Op::TraceRayMotionNV, + None, + None, + vec![ + dr::Operand::IdRef(accel), + dr::Operand::IdRef(ray_flags), + dr::Operand::IdRef(cull_mask), + dr::Operand::IdRef(sbt_offset), + dr::Operand::IdRef(sbt_stride), + dr::Operand::IdRef(miss_index), + dr::Operand::IdRef(ray_origin), + dr::Operand::IdRef(ray_tmin), + dr::Operand::IdRef(ray_direction), + dr::Operand::IdRef(ray_tmax), + dr::Operand::IdRef(time), + dr::Operand::IdRef(payload), + ], + ); + self.insert_into_block(InsertPoint::End, inst)?; + Ok(()) + } + #[doc = "Appends an OpTraceRayMotionNV instruction to the current block."] + pub fn insert_trace_ray_motion_nv( + &mut self, + insert_point: InsertPoint, + accel: spirv::Word, + ray_flags: spirv::Word, + cull_mask: spirv::Word, + sbt_offset: spirv::Word, + sbt_stride: spirv::Word, + miss_index: spirv::Word, + ray_origin: spirv::Word, + ray_tmin: spirv::Word, + ray_direction: spirv::Word, + ray_tmax: spirv::Word, + time: spirv::Word, + payload: spirv::Word, + ) -> BuildResult<()> { + #[allow(unused_mut)] + let mut inst = dr::Instruction::new( + spirv::Op::TraceRayMotionNV, + None, + None, + vec![ + dr::Operand::IdRef(accel), + dr::Operand::IdRef(ray_flags), + dr::Operand::IdRef(cull_mask), + dr::Operand::IdRef(sbt_offset), + dr::Operand::IdRef(sbt_stride), + dr::Operand::IdRef(miss_index), + dr::Operand::IdRef(ray_origin), + dr::Operand::IdRef(ray_tmin), + dr::Operand::IdRef(ray_direction), + dr::Operand::IdRef(ray_tmax), + dr::Operand::IdRef(time), + dr::Operand::IdRef(payload), + ], + ); + self.insert_into_block(insert_point, inst)?; + Ok(()) + } + #[doc = "Appends an OpExecuteCallableNV instruction to the current block."] + pub fn execute_callable_nv( + &mut self, + sbt_index: spirv::Word, + callable_data_id: spirv::Word, + ) -> BuildResult<()> { + #[allow(unused_mut)] + let mut inst = dr::Instruction::new( + spirv::Op::ExecuteCallableNV, + None, + None, + vec![ + dr::Operand::IdRef(sbt_index), + dr::Operand::IdRef(callable_data_id), + ], + ); + self.insert_into_block(InsertPoint::End, inst)?; + Ok(()) + } + #[doc = "Appends an OpExecuteCallableNV instruction to the current block."] + pub fn insert_execute_callable_nv( + &mut self, + insert_point: InsertPoint, + sbt_index: spirv::Word, + callable_data_id: spirv::Word, + ) -> BuildResult<()> { + #[allow(unused_mut)] + let mut inst = dr::Instruction::new( spirv::Op::ExecuteCallableNV, None, None, @@ -13849,6 +14319,228 @@ impl Builder { self.insert_into_block(insert_point, inst)?; Ok(_id) } + #[doc = "Appends an OpConvertUToImageNV instruction to the current block."] + pub fn convert_u_to_image_nv( + &mut self, + result_type: spirv::Word, + result_id: Option, + operand: spirv::Word, + ) -> BuildResult { + let _id = result_id.unwrap_or_else(|| self.id()); + #[allow(unused_mut)] + let mut inst = dr::Instruction::new( + spirv::Op::ConvertUToImageNV, + Some(result_type), + Some(_id), + vec![dr::Operand::IdRef(operand)], + ); + self.insert_into_block(InsertPoint::End, inst)?; + Ok(_id) + } + #[doc = "Appends an OpConvertUToImageNV instruction to the current block."] + pub fn insert_convert_u_to_image_nv( + &mut self, + insert_point: InsertPoint, + result_type: spirv::Word, + result_id: Option, + operand: spirv::Word, + ) -> BuildResult { + let _id = result_id.unwrap_or_else(|| self.id()); + #[allow(unused_mut)] + let mut inst = dr::Instruction::new( + spirv::Op::ConvertUToImageNV, + Some(result_type), + Some(_id), + vec![dr::Operand::IdRef(operand)], + ); + self.insert_into_block(insert_point, inst)?; + Ok(_id) + } + #[doc = "Appends an OpConvertUToSamplerNV instruction to the current block."] + pub fn convert_u_to_sampler_nv( + &mut self, + result_type: spirv::Word, + result_id: Option, + operand: spirv::Word, + ) -> BuildResult { + let _id = result_id.unwrap_or_else(|| self.id()); + #[allow(unused_mut)] + let mut inst = dr::Instruction::new( + spirv::Op::ConvertUToSamplerNV, + Some(result_type), + Some(_id), + vec![dr::Operand::IdRef(operand)], + ); + self.insert_into_block(InsertPoint::End, inst)?; + Ok(_id) + } + #[doc = "Appends an OpConvertUToSamplerNV instruction to the current block."] + pub fn insert_convert_u_to_sampler_nv( + &mut self, + insert_point: InsertPoint, + result_type: spirv::Word, + result_id: Option, + operand: spirv::Word, + ) -> BuildResult { + let _id = result_id.unwrap_or_else(|| self.id()); + #[allow(unused_mut)] + let mut inst = dr::Instruction::new( + spirv::Op::ConvertUToSamplerNV, + Some(result_type), + Some(_id), + vec![dr::Operand::IdRef(operand)], + ); + self.insert_into_block(insert_point, inst)?; + Ok(_id) + } + #[doc = "Appends an OpConvertImageToUNV instruction to the current block."] + pub fn convert_image_to_unv( + &mut self, + result_type: spirv::Word, + result_id: Option, + operand: spirv::Word, + ) -> BuildResult { + let _id = result_id.unwrap_or_else(|| self.id()); + #[allow(unused_mut)] + let mut inst = dr::Instruction::new( + spirv::Op::ConvertImageToUNV, + Some(result_type), + Some(_id), + vec![dr::Operand::IdRef(operand)], + ); + self.insert_into_block(InsertPoint::End, inst)?; + Ok(_id) + } + #[doc = "Appends an OpConvertImageToUNV instruction to the current block."] + pub fn insert_convert_image_to_unv( + &mut self, + insert_point: InsertPoint, + result_type: spirv::Word, + result_id: Option, + operand: spirv::Word, + ) -> BuildResult { + let _id = result_id.unwrap_or_else(|| self.id()); + #[allow(unused_mut)] + let mut inst = dr::Instruction::new( + spirv::Op::ConvertImageToUNV, + Some(result_type), + Some(_id), + vec![dr::Operand::IdRef(operand)], + ); + self.insert_into_block(insert_point, inst)?; + Ok(_id) + } + #[doc = "Appends an OpConvertSamplerToUNV instruction to the current block."] + pub fn convert_sampler_to_unv( + &mut self, + result_type: spirv::Word, + result_id: Option, + operand: spirv::Word, + ) -> BuildResult { + let _id = result_id.unwrap_or_else(|| self.id()); + #[allow(unused_mut)] + let mut inst = dr::Instruction::new( + spirv::Op::ConvertSamplerToUNV, + Some(result_type), + Some(_id), + vec![dr::Operand::IdRef(operand)], + ); + self.insert_into_block(InsertPoint::End, inst)?; + Ok(_id) + } + #[doc = "Appends an OpConvertSamplerToUNV instruction to the current block."] + pub fn insert_convert_sampler_to_unv( + &mut self, + insert_point: InsertPoint, + result_type: spirv::Word, + result_id: Option, + operand: spirv::Word, + ) -> BuildResult { + let _id = result_id.unwrap_or_else(|| self.id()); + #[allow(unused_mut)] + let mut inst = dr::Instruction::new( + spirv::Op::ConvertSamplerToUNV, + Some(result_type), + Some(_id), + vec![dr::Operand::IdRef(operand)], + ); + self.insert_into_block(insert_point, inst)?; + Ok(_id) + } + #[doc = "Appends an OpConvertUToSampledImageNV instruction to the current block."] + pub fn convert_u_to_sampled_image_nv( + &mut self, + result_type: spirv::Word, + result_id: Option, + operand: spirv::Word, + ) -> BuildResult { + let _id = result_id.unwrap_or_else(|| self.id()); + #[allow(unused_mut)] + let mut inst = dr::Instruction::new( + spirv::Op::ConvertUToSampledImageNV, + Some(result_type), + Some(_id), + vec![dr::Operand::IdRef(operand)], + ); + self.insert_into_block(InsertPoint::End, inst)?; + Ok(_id) + } + #[doc = "Appends an OpConvertUToSampledImageNV instruction to the current block."] + pub fn insert_convert_u_to_sampled_image_nv( + &mut self, + insert_point: InsertPoint, + result_type: spirv::Word, + result_id: Option, + operand: spirv::Word, + ) -> BuildResult { + let _id = result_id.unwrap_or_else(|| self.id()); + #[allow(unused_mut)] + let mut inst = dr::Instruction::new( + spirv::Op::ConvertUToSampledImageNV, + Some(result_type), + Some(_id), + vec![dr::Operand::IdRef(operand)], + ); + self.insert_into_block(insert_point, inst)?; + Ok(_id) + } + #[doc = "Appends an OpConvertSampledImageToUNV instruction to the current block."] + pub fn convert_sampled_image_to_unv( + &mut self, + result_type: spirv::Word, + result_id: Option, + operand: spirv::Word, + ) -> BuildResult { + let _id = result_id.unwrap_or_else(|| self.id()); + #[allow(unused_mut)] + let mut inst = dr::Instruction::new( + spirv::Op::ConvertSampledImageToUNV, + Some(result_type), + Some(_id), + vec![dr::Operand::IdRef(operand)], + ); + self.insert_into_block(InsertPoint::End, inst)?; + Ok(_id) + } + #[doc = "Appends an OpConvertSampledImageToUNV instruction to the current block."] + pub fn insert_convert_sampled_image_to_unv( + &mut self, + insert_point: InsertPoint, + result_type: spirv::Word, + result_id: Option, + operand: spirv::Word, + ) -> BuildResult { + let _id = result_id.unwrap_or_else(|| self.id()); + #[allow(unused_mut)] + let mut inst = dr::Instruction::new( + spirv::Op::ConvertSampledImageToUNV, + Some(result_type), + Some(_id), + vec![dr::Operand::IdRef(operand)], + ); + self.insert_into_block(insert_point, inst)?; + Ok(_id) + } #[doc = "Appends an OpSubgroupShuffleINTEL instruction to the current block."] pub fn subgroup_shuffle_intel( &mut self, @@ -14823,6 +15515,185 @@ impl Builder { self.insert_into_block(insert_point, inst)?; Ok(_id) } + #[doc = "Appends an OpAtomicFMinEXT instruction to the current block."] + pub fn atomic_f_min_ext( + &mut self, + result_type: spirv::Word, + result_id: Option, + pointer: spirv::Word, + memory: spirv::Word, + semantics: spirv::Word, + value: spirv::Word, + ) -> BuildResult { + let _id = result_id.unwrap_or_else(|| self.id()); + #[allow(unused_mut)] + let mut inst = dr::Instruction::new( + spirv::Op::AtomicFMinEXT, + Some(result_type), + Some(_id), + vec![ + dr::Operand::IdRef(pointer), + dr::Operand::IdScope(memory), + dr::Operand::IdMemorySemantics(semantics), + dr::Operand::IdRef(value), + ], + ); + self.insert_into_block(InsertPoint::End, inst)?; + Ok(_id) + } + #[doc = "Appends an OpAtomicFMinEXT instruction to the current block."] + pub fn insert_atomic_f_min_ext( + &mut self, + insert_point: InsertPoint, + result_type: spirv::Word, + result_id: Option, + pointer: spirv::Word, + memory: spirv::Word, + semantics: spirv::Word, + value: spirv::Word, + ) -> BuildResult { + let _id = result_id.unwrap_or_else(|| self.id()); + #[allow(unused_mut)] + let mut inst = dr::Instruction::new( + spirv::Op::AtomicFMinEXT, + Some(result_type), + Some(_id), + vec![ + dr::Operand::IdRef(pointer), + dr::Operand::IdScope(memory), + dr::Operand::IdMemorySemantics(semantics), + dr::Operand::IdRef(value), + ], + ); + self.insert_into_block(insert_point, inst)?; + Ok(_id) + } + #[doc = "Appends an OpAtomicFMaxEXT instruction to the current block."] + pub fn atomic_f_max_ext( + &mut self, + result_type: spirv::Word, + result_id: Option, + pointer: spirv::Word, + memory: spirv::Word, + semantics: spirv::Word, + value: spirv::Word, + ) -> BuildResult { + let _id = result_id.unwrap_or_else(|| self.id()); + #[allow(unused_mut)] + let mut inst = dr::Instruction::new( + spirv::Op::AtomicFMaxEXT, + Some(result_type), + Some(_id), + vec![ + dr::Operand::IdRef(pointer), + dr::Operand::IdScope(memory), + dr::Operand::IdMemorySemantics(semantics), + dr::Operand::IdRef(value), + ], + ); + self.insert_into_block(InsertPoint::End, inst)?; + Ok(_id) + } + #[doc = "Appends an OpAtomicFMaxEXT instruction to the current block."] + pub fn insert_atomic_f_max_ext( + &mut self, + insert_point: InsertPoint, + result_type: spirv::Word, + result_id: Option, + pointer: spirv::Word, + memory: spirv::Word, + semantics: spirv::Word, + value: spirv::Word, + ) -> BuildResult { + let _id = result_id.unwrap_or_else(|| self.id()); + #[allow(unused_mut)] + let mut inst = dr::Instruction::new( + spirv::Op::AtomicFMaxEXT, + Some(result_type), + Some(_id), + vec![ + dr::Operand::IdRef(pointer), + dr::Operand::IdScope(memory), + dr::Operand::IdMemorySemantics(semantics), + dr::Operand::IdRef(value), + ], + ); + self.insert_into_block(insert_point, inst)?; + Ok(_id) + } + #[doc = "Appends an OpAssumeTrueKHR instruction to the current block."] + pub fn assume_true_khr(&mut self, condition: spirv::Word) -> BuildResult<()> { + #[allow(unused_mut)] + let mut inst = dr::Instruction::new( + spirv::Op::AssumeTrueKHR, + None, + None, + vec![dr::Operand::IdRef(condition)], + ); + self.insert_into_block(InsertPoint::End, inst)?; + Ok(()) + } + #[doc = "Appends an OpAssumeTrueKHR instruction to the current block."] + pub fn insert_assume_true_khr( + &mut self, + insert_point: InsertPoint, + condition: spirv::Word, + ) -> BuildResult<()> { + #[allow(unused_mut)] + let mut inst = dr::Instruction::new( + spirv::Op::AssumeTrueKHR, + None, + None, + vec![dr::Operand::IdRef(condition)], + ); + self.insert_into_block(insert_point, inst)?; + Ok(()) + } + #[doc = "Appends an OpExpectKHR instruction to the current block."] + pub fn expect_khr( + &mut self, + result_type: spirv::Word, + result_id: Option, + value: spirv::Word, + expected_value: spirv::Word, + ) -> BuildResult { + let _id = result_id.unwrap_or_else(|| self.id()); + #[allow(unused_mut)] + let mut inst = dr::Instruction::new( + spirv::Op::ExpectKHR, + Some(result_type), + Some(_id), + vec![ + dr::Operand::IdRef(value), + dr::Operand::IdRef(expected_value), + ], + ); + self.insert_into_block(InsertPoint::End, inst)?; + Ok(_id) + } + #[doc = "Appends an OpExpectKHR instruction to the current block."] + pub fn insert_expect_khr( + &mut self, + insert_point: InsertPoint, + result_type: spirv::Word, + result_id: Option, + value: spirv::Word, + expected_value: spirv::Word, + ) -> BuildResult { + let _id = result_id.unwrap_or_else(|| self.id()); + #[allow(unused_mut)] + let mut inst = dr::Instruction::new( + spirv::Op::ExpectKHR, + Some(result_type), + Some(_id), + vec![ + dr::Operand::IdRef(value), + dr::Operand::IdRef(expected_value), + ], + ); + self.insert_into_block(insert_point, inst)?; + Ok(_id) + } #[doc = "Appends an OpLoopControlINTEL instruction to the current block."] pub fn loop_control_intel( &mut self, diff --git a/rspirv/dr/build/autogen_type.rs b/rspirv/dr/build/autogen_type.rs index b07ec885..7cece9f6 100644 --- a/rspirv/dr/build/autogen_type.rs +++ b/rspirv/dr/build/autogen_type.rs @@ -634,4 +634,67 @@ impl Builder { new_id } } + #[doc = "Appends an OpTypeBufferSurfaceINTEL instruction and returns the result id, or return the existing id if the instruction was already present."] + pub fn type_buffer_surface_intel( + &mut self, + access_qualifier: spirv::AccessQualifier, + ) -> spirv::Word { + self.type_buffer_surface_intel_id(None, access_qualifier) + } + #[doc = "Appends an OpTypeBufferSurfaceINTEL instruction and returns the result id, or return the existing id if the instruction was already present."] + pub fn type_buffer_surface_intel_id( + &mut self, + result_id: Option, + access_qualifier: spirv::AccessQualifier, + ) -> spirv::Word { + let mut inst = dr::Instruction::new( + spirv::Op::TypeBufferSurfaceINTEL, + None, + result_id, + vec![dr::Operand::AccessQualifier(access_qualifier)], + ); + if let Some(result_id) = result_id { + self.module.types_global_values.push(inst); + result_id + } else if let Some(id) = self.dedup_insert_type(&inst) { + id + } else { + let new_id = self.id(); + inst.result_id = Some(new_id); + self.module.types_global_values.push(inst); + new_id + } + } + #[doc = "Appends an OpTypeStructContinuedINTEL instruction and returns the result id, or return the existing id if the instruction was already present."] + pub fn type_struct_continued_intel( + &mut self, + member_0_type_member_1_type: impl IntoIterator, + ) -> spirv::Word { + self.type_struct_continued_intel_id(None, member_0_type_member_1_type) + } + #[doc = "Appends an OpTypeStructContinuedINTEL instruction and returns the result id, or return the existing id if the instruction was already present."] + pub fn type_struct_continued_intel_id( + &mut self, + result_id: Option, + member_0_type_member_1_type: impl IntoIterator, + ) -> spirv::Word { + let mut inst = + dr::Instruction::new(spirv::Op::TypeStructContinuedINTEL, None, result_id, vec![]); + inst.operands.extend( + member_0_type_member_1_type + .into_iter() + .map(dr::Operand::IdRef), + ); + if let Some(result_id) = result_id { + self.module.types_global_values.push(inst); + result_id + } else if let Some(id) = self.dedup_insert_type(&inst) { + id + } else { + let new_id = self.id(); + inst.result_id = Some(new_id); + self.module.types_global_values.push(inst); + new_id + } + } } diff --git a/rspirv/grammar/autogen_table.rs b/rspirv/grammar/autogen_table.rs index c72d3af7..52551c64 100644 --- a/rspirv/grammar/autogen_table.rs +++ b/rspirv/grammar/autogen_table.rs @@ -29,6 +29,10 @@ pub enum OperandKind { ImageChannelOrder, ImageChannelDataType, FPRoundingMode, + FPDenormMode, + QuantizationModes, + FPOperationMode, + OverflowModes, LinkageType, AccessQualifier, FunctionParameterAttribute, @@ -41,6 +45,7 @@ pub enum OperandKind { RayQueryIntersection, RayQueryCommittedIntersectionType, RayQueryCandidateIntersectionType, + PackedVectorFormat, IdResultType, IdResult, IdMemorySemantics, @@ -1609,7 +1614,7 @@ static INSTRUCTION_TABLE: &[Instruction<'static>] = &[ ), inst!( BitFieldInsert, - [Shader], + [Shader, BitInstructions], [], [ (IdResultType, One), @@ -1622,7 +1627,7 @@ static INSTRUCTION_TABLE: &[Instruction<'static>] = &[ ), inst!( BitFieldSExtract, - [Shader], + [Shader, BitInstructions], [], [ (IdResultType, One), @@ -1634,7 +1639,7 @@ static INSTRUCTION_TABLE: &[Instruction<'static>] = &[ ), inst!( BitFieldUExtract, - [Shader], + [Shader, BitInstructions], [], [ (IdResultType, One), @@ -1646,7 +1651,7 @@ static INSTRUCTION_TABLE: &[Instruction<'static>] = &[ ), inst!( BitReverse, - [Shader], + [Shader, BitInstructions], [], [(IdResultType, One), (IdResult, One), (IdRef, One)] ), @@ -3307,6 +3312,81 @@ static INSTRUCTION_TABLE: &[Instruction<'static>] = &[ ["SPV_KHR_ray_tracing"], [] ), + inst!( + SDotKHR, + [DotProductKHR], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (IdRef, One), + (PackedVectorFormat, ZeroOrOne) + ] + ), + inst!( + UDotKHR, + [DotProductKHR], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (IdRef, One), + (PackedVectorFormat, ZeroOrOne) + ] + ), + inst!( + SUDotKHR, + [DotProductKHR], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (IdRef, One), + (PackedVectorFormat, ZeroOrOne) + ] + ), + inst!( + SDotAccSatKHR, + [DotProductKHR], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (IdRef, One), + (IdRef, One), + (PackedVectorFormat, ZeroOrOne) + ] + ), + inst!( + UDotAccSatKHR, + [DotProductKHR], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (IdRef, One), + (IdRef, One), + (PackedVectorFormat, ZeroOrOne) + ] + ), + inst!( + SUDotAccSatKHR, + [DotProductKHR], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (IdRef, One), + (IdRef, One), + (PackedVectorFormat, ZeroOrOne) + ] + ), inst!( TypeRayQueryKHR, [RayQueryKHR], @@ -3561,6 +3641,44 @@ static INSTRUCTION_TABLE: &[Instruction<'static>] = &[ (IdRef, One) ] ), + inst!( + TraceMotionNV, + [RayTracingMotionBlurNV], + ["SPV_NV_ray_tracing_motion_blur"], + [ + (IdRef, One), + (IdRef, One), + (IdRef, One), + (IdRef, One), + (IdRef, One), + (IdRef, One), + (IdRef, One), + (IdRef, One), + (IdRef, One), + (IdRef, One), + (IdRef, One), + (IdRef, One) + ] + ), + inst!( + TraceRayMotionNV, + [RayTracingMotionBlurNV], + ["SPV_NV_ray_tracing_motion_blur"], + [ + (IdRef, One), + (IdRef, One), + (IdRef, One), + (IdRef, One), + (IdRef, One), + (IdRef, One), + (IdRef, One), + (IdRef, One), + (IdRef, One), + (IdRef, One), + (IdRef, One), + (IdRef, One) + ] + ), inst!( TypeAccelerationStructureNV, [RayTracingNV, RayTracingKHR, RayQueryKHR], @@ -3674,6 +3792,48 @@ static INSTRUCTION_TABLE: &[Instruction<'static>] = &[ ["SPV_EXT_demote_to_helper_invocation"], [(IdResultType, One), (IdResult, One)] ), + inst!( + ConvertUToImageNV, + [BindlessTextureNV], + [], + [(IdResultType, One), (IdResult, One), (IdRef, One)] + ), + inst!( + ConvertUToSamplerNV, + [BindlessTextureNV], + [], + [(IdResultType, One), (IdResult, One), (IdRef, One)] + ), + inst!( + ConvertImageToUNV, + [BindlessTextureNV], + [], + [(IdResultType, One), (IdResult, One), (IdRef, One)] + ), + inst!( + ConvertSamplerToUNV, + [BindlessTextureNV], + [], + [(IdResultType, One), (IdResult, One), (IdRef, One)] + ), + inst!( + ConvertUToSampledImageNV, + [BindlessTextureNV], + [], + [(IdResultType, One), (IdResult, One), (IdRef, One)] + ), + inst!( + ConvertSampledImageToUNV, + [BindlessTextureNV], + [], + [(IdResultType, One), (IdResult, One), (IdRef, One)] + ), + inst!( + SamplerImageAddressingModeNV, + [BindlessTextureNV], + [], + [(LiteralInteger, One)] + ), inst!( SubgroupShuffleINTEL, [SubgroupShuffleINTEL], @@ -3919,7 +4079,7 @@ static INSTRUCTION_TABLE: &[Instruction<'static>] = &[ ] ), inst!( - FunctionPointerINTEL, + ConstantFunctionPointerINTEL, [FunctionPointersINTEL], ["SPV_INTEL_function_pointers"], [(IdResultType, One), (IdResult, One), (IdRef, One)] @@ -3930,6 +4090,87 @@ static INSTRUCTION_TABLE: &[Instruction<'static>] = &[ ["SPV_INTEL_function_pointers"], [(IdResultType, One), (IdResult, One), (IdRef, ZeroOrMore)] ), + inst!( + AsmTargetINTEL, + [AsmINTEL], + [], + [(IdResultType, One), (IdResult, One), (LiteralString, One)] + ), + inst!( + AsmINTEL, + [AsmINTEL], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (IdRef, One), + (LiteralString, One), + (LiteralString, One) + ] + ), + inst!( + AsmCallINTEL, + [AsmINTEL], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (IdRef, ZeroOrMore) + ] + ), + inst!( + AtomicFMinEXT, + [ + AtomicFloat16MinMaxEXT, + AtomicFloat32MinMaxEXT, + AtomicFloat64MinMaxEXT + ], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (IdScope, One), + (IdMemorySemantics, One), + (IdRef, One) + ] + ), + inst!( + AtomicFMaxEXT, + [ + AtomicFloat16MinMaxEXT, + AtomicFloat32MinMaxEXT, + AtomicFloat64MinMaxEXT + ], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (IdScope, One), + (IdMemorySemantics, One), + (IdRef, One) + ] + ), + inst!( + AssumeTrueKHR, + [ExpectAssumeKHR], + ["SPV_KHR_expect_assume"], + [(IdRef, One)] + ), + inst!( + ExpectKHR, + [ExpectAssumeKHR], + ["SPV_KHR_expect_assume"], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (IdRef, One) + ] + ), inst!( DecorateString, [], @@ -5083,82 +5324,910 @@ static INSTRUCTION_TABLE: &[Instruction<'static>] = &[ [(IdResultType, One), (IdResult, One), (IdRef, One)] ), inst!( - LoopControlINTEL, - [UnstructuredLoopControlsINTEL], - ["SPV_INTEL_unstructured_loop_controls"], - [(LiteralInteger, ZeroOrMore)] + VariableLengthArrayINTEL, + [VariableLengthArrayINTEL], + [], + [(IdResultType, One), (IdResult, One), (IdRef, One)] ), inst!( - ReadPipeBlockingINTEL, - [BlockingPipesINTEL], - ["SPV_INTEL_blocking_pipes"], - [ - (IdResultType, One), - (IdResult, One), - (IdRef, One), - (IdRef, One) - ] + SaveMemoryINTEL, + [VariableLengthArrayINTEL], + [], + [(IdResultType, One), (IdResult, One)] ), inst!( - WritePipeBlockingINTEL, - [BlockingPipesINTEL], - ["SPV_INTEL_blocking_pipes"], + RestoreMemoryINTEL, + [VariableLengthArrayINTEL], + [], + [(IdRef, One)] + ), + inst!( + ArbitraryFloatSinCosPiINTEL, + [ArbitraryPrecisionFloatingPointINTEL], + [], [ (IdResultType, One), (IdResult, One), (IdRef, One), - (IdRef, One) + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One) ] ), inst!( - FPGARegINTEL, - [FPGARegINTEL], - ["SPV_INTEL_fpga_reg"], + ArbitraryFloatCastINTEL, + [ArbitraryPrecisionFloatingPointINTEL], + [], [ (IdResultType, One), (IdResult, One), (IdRef, One), - (IdRef, One) + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One) ] ), inst!( - RayQueryGetRayTMinKHR, - [RayQueryKHR], - ["SPV_KHR_ray_query"], - [(IdResultType, One), (IdResult, One), (IdRef, One)] - ), - inst!( - RayQueryGetRayFlagsKHR, - [RayQueryKHR], - ["SPV_KHR_ray_query"], - [(IdResultType, One), (IdResult, One), (IdRef, One)] - ), - inst!( - RayQueryGetIntersectionTKHR, - [RayQueryKHR], - ["SPV_KHR_ray_query"], + ArbitraryFloatCastFromIntINTEL, + [ArbitraryPrecisionFloatingPointINTEL], + [], [ (IdResultType, One), (IdResult, One), (IdRef, One), - (IdRef, One) + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One) ] ), inst!( - RayQueryGetIntersectionInstanceCustomIndexKHR, - [RayQueryKHR], - ["SPV_KHR_ray_query"], + ArbitraryFloatCastToIntINTEL, + [ArbitraryPrecisionFloatingPointINTEL], + [], [ (IdResultType, One), (IdResult, One), (IdRef, One), - (IdRef, One) + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One) ] ), inst!( - RayQueryGetIntersectionInstanceIdKHR, - [RayQueryKHR], - ["SPV_KHR_ray_query"], + ArbitraryFloatAddINTEL, + [ArbitraryPrecisionFloatingPointINTEL], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (LiteralInteger, One), + (IdRef, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One) + ] + ), + inst!( + ArbitraryFloatSubINTEL, + [ArbitraryPrecisionFloatingPointINTEL], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (LiteralInteger, One), + (IdRef, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One) + ] + ), + inst!( + ArbitraryFloatMulINTEL, + [ArbitraryPrecisionFloatingPointINTEL], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (LiteralInteger, One), + (IdRef, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One) + ] + ), + inst!( + ArbitraryFloatDivINTEL, + [ArbitraryPrecisionFloatingPointINTEL], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (LiteralInteger, One), + (IdRef, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One) + ] + ), + inst!( + ArbitraryFloatGTINTEL, + [ArbitraryPrecisionFloatingPointINTEL], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (LiteralInteger, One), + (IdRef, One), + (LiteralInteger, One) + ] + ), + inst!( + ArbitraryFloatGEINTEL, + [ArbitraryPrecisionFloatingPointINTEL], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (LiteralInteger, One), + (IdRef, One), + (LiteralInteger, One) + ] + ), + inst!( + ArbitraryFloatLTINTEL, + [ArbitraryPrecisionFloatingPointINTEL], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (LiteralInteger, One), + (IdRef, One), + (LiteralInteger, One) + ] + ), + inst!( + ArbitraryFloatLEINTEL, + [ArbitraryPrecisionFloatingPointINTEL], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (LiteralInteger, One), + (IdRef, One), + (LiteralInteger, One) + ] + ), + inst!( + ArbitraryFloatEQINTEL, + [ArbitraryPrecisionFloatingPointINTEL], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (LiteralInteger, One), + (IdRef, One), + (LiteralInteger, One) + ] + ), + inst!( + ArbitraryFloatRecipINTEL, + [ArbitraryPrecisionFloatingPointINTEL], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One) + ] + ), + inst!( + ArbitraryFloatRSqrtINTEL, + [ArbitraryPrecisionFloatingPointINTEL], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One) + ] + ), + inst!( + ArbitraryFloatCbrtINTEL, + [ArbitraryPrecisionFloatingPointINTEL], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One) + ] + ), + inst!( + ArbitraryFloatHypotINTEL, + [ArbitraryPrecisionFloatingPointINTEL], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (LiteralInteger, One), + (IdRef, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One) + ] + ), + inst!( + ArbitraryFloatSqrtINTEL, + [ArbitraryPrecisionFloatingPointINTEL], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One) + ] + ), + inst!( + ArbitraryFloatLogINTEL, + [ArbitraryPrecisionFloatingPointINTEL], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One) + ] + ), + inst!( + ArbitraryFloatLog2INTEL, + [ArbitraryPrecisionFloatingPointINTEL], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One) + ] + ), + inst!( + ArbitraryFloatLog10INTEL, + [ArbitraryPrecisionFloatingPointINTEL], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One) + ] + ), + inst!( + ArbitraryFloatLog1pINTEL, + [ArbitraryPrecisionFloatingPointINTEL], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One) + ] + ), + inst!( + ArbitraryFloatExpINTEL, + [ArbitraryPrecisionFloatingPointINTEL], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One) + ] + ), + inst!( + ArbitraryFloatExp2INTEL, + [ArbitraryPrecisionFloatingPointINTEL], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One) + ] + ), + inst!( + ArbitraryFloatExp10INTEL, + [ArbitraryPrecisionFloatingPointINTEL], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One) + ] + ), + inst!( + ArbitraryFloatExpm1INTEL, + [ArbitraryPrecisionFloatingPointINTEL], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One) + ] + ), + inst!( + ArbitraryFloatSinINTEL, + [ArbitraryPrecisionFloatingPointINTEL], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One) + ] + ), + inst!( + ArbitraryFloatCosINTEL, + [ArbitraryPrecisionFloatingPointINTEL], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One) + ] + ), + inst!( + ArbitraryFloatSinCosINTEL, + [ArbitraryPrecisionFloatingPointINTEL], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One) + ] + ), + inst!( + ArbitraryFloatSinPiINTEL, + [ArbitraryPrecisionFloatingPointINTEL], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One) + ] + ), + inst!( + ArbitraryFloatCosPiINTEL, + [ArbitraryPrecisionFloatingPointINTEL], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One) + ] + ), + inst!( + ArbitraryFloatASinINTEL, + [ArbitraryPrecisionFloatingPointINTEL], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One) + ] + ), + inst!( + ArbitraryFloatASinPiINTEL, + [ArbitraryPrecisionFloatingPointINTEL], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One) + ] + ), + inst!( + ArbitraryFloatACosINTEL, + [ArbitraryPrecisionFloatingPointINTEL], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One) + ] + ), + inst!( + ArbitraryFloatACosPiINTEL, + [ArbitraryPrecisionFloatingPointINTEL], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One) + ] + ), + inst!( + ArbitraryFloatATanINTEL, + [ArbitraryPrecisionFloatingPointINTEL], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One) + ] + ), + inst!( + ArbitraryFloatATanPiINTEL, + [ArbitraryPrecisionFloatingPointINTEL], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One) + ] + ), + inst!( + ArbitraryFloatATan2INTEL, + [ArbitraryPrecisionFloatingPointINTEL], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (LiteralInteger, One), + (IdRef, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One) + ] + ), + inst!( + ArbitraryFloatPowINTEL, + [ArbitraryPrecisionFloatingPointINTEL], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (LiteralInteger, One), + (IdRef, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One) + ] + ), + inst!( + ArbitraryFloatPowRINTEL, + [ArbitraryPrecisionFloatingPointINTEL], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (LiteralInteger, One), + (IdRef, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One) + ] + ), + inst!( + ArbitraryFloatPowNINTEL, + [ArbitraryPrecisionFloatingPointINTEL], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (LiteralInteger, One), + (IdRef, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One) + ] + ), + inst!( + LoopControlINTEL, + [UnstructuredLoopControlsINTEL], + ["SPV_INTEL_unstructured_loop_controls"], + [(LiteralInteger, ZeroOrMore)] + ), + inst!( + FixedSqrtINTEL, + [ArbitraryPrecisionFixedPointINTEL], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (IdRef, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One) + ] + ), + inst!( + FixedRecipINTEL, + [ArbitraryPrecisionFixedPointINTEL], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (IdRef, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One) + ] + ), + inst!( + FixedRsqrtINTEL, + [ArbitraryPrecisionFixedPointINTEL], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (IdRef, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One) + ] + ), + inst!( + FixedSinINTEL, + [ArbitraryPrecisionFixedPointINTEL], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (IdRef, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One) + ] + ), + inst!( + FixedCosINTEL, + [ArbitraryPrecisionFixedPointINTEL], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (IdRef, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One) + ] + ), + inst!( + FixedSinCosINTEL, + [ArbitraryPrecisionFixedPointINTEL], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (IdRef, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One) + ] + ), + inst!( + FixedSinPiINTEL, + [ArbitraryPrecisionFixedPointINTEL], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (IdRef, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One) + ] + ), + inst!( + FixedCosPiINTEL, + [ArbitraryPrecisionFixedPointINTEL], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (IdRef, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One) + ] + ), + inst!( + FixedSinCosPiINTEL, + [ArbitraryPrecisionFixedPointINTEL], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (IdRef, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One) + ] + ), + inst!( + FixedLogINTEL, + [ArbitraryPrecisionFixedPointINTEL], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (IdRef, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One) + ] + ), + inst!( + FixedExpINTEL, + [ArbitraryPrecisionFixedPointINTEL], + [], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (IdRef, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One), + (LiteralInteger, One) + ] + ), + inst!( + PtrCastToCrossWorkgroupINTEL, + [USMStorageClassesINTEL], + [], + [(IdResultType, One), (IdResult, One), (IdRef, One)] + ), + inst!( + CrossWorkgroupCastToPtrINTEL, + [USMStorageClassesINTEL], + [], + [(IdResultType, One), (IdResult, One), (IdRef, One)] + ), + inst!( + ReadPipeBlockingINTEL, + [BlockingPipesINTEL], + ["SPV_INTEL_blocking_pipes"], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (IdRef, One) + ] + ), + inst!( + WritePipeBlockingINTEL, + [BlockingPipesINTEL], + ["SPV_INTEL_blocking_pipes"], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (IdRef, One) + ] + ), + inst!( + FPGARegINTEL, + [FPGARegINTEL], + ["SPV_INTEL_fpga_reg"], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (IdRef, One) + ] + ), + inst!( + RayQueryGetRayTMinKHR, + [RayQueryKHR], + ["SPV_KHR_ray_query"], + [(IdResultType, One), (IdResult, One), (IdRef, One)] + ), + inst!( + RayQueryGetRayFlagsKHR, + [RayQueryKHR], + ["SPV_KHR_ray_query"], + [(IdResultType, One), (IdResult, One), (IdRef, One)] + ), + inst!( + RayQueryGetIntersectionTKHR, + [RayQueryKHR], + ["SPV_KHR_ray_query"], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (IdRef, One) + ] + ), + inst!( + RayQueryGetIntersectionInstanceCustomIndexKHR, + [RayQueryKHR], + ["SPV_KHR_ray_query"], + [ + (IdResultType, One), + (IdResult, One), + (IdRef, One), + (IdRef, One) + ] + ), + inst!( + RayQueryGetIntersectionInstanceIdKHR, + [RayQueryKHR], + ["SPV_KHR_ray_query"], [ (IdResultType, One), (IdResult, One), @@ -5285,7 +6354,11 @@ static INSTRUCTION_TABLE: &[Instruction<'static>] = &[ ), inst!( AtomicFAddEXT, - [AtomicFloat32AddEXT, AtomicFloat64AddEXT], + [ + AtomicFloat16AddEXT, + AtomicFloat32AddEXT, + AtomicFloat64AddEXT + ], ["SPV_EXT_shader_atomic_float_add"], [ (IdResultType, One), @@ -5296,4 +6369,28 @@ static INSTRUCTION_TABLE: &[Instruction<'static>] = &[ (IdRef, One) ] ), + inst!( + TypeBufferSurfaceINTEL, + [VectorComputeINTEL], + [], + [(IdResult, One), (AccessQualifier, One)] + ), + inst!( + TypeStructContinuedINTEL, + [LongConstantCompositeINTEL], + [], + [(IdRef, ZeroOrMore)] + ), + inst!( + ConstantCompositeContinuedINTEL, + [LongConstantCompositeINTEL], + [], + [(IdRef, ZeroOrMore)] + ), + inst!( + SpecConstantCompositeContinuedINTEL, + [LongConstantCompositeINTEL], + [], + [(IdRef, ZeroOrMore)] + ), ]; diff --git a/rspirv/grammar/reflect.rs b/rspirv/grammar/reflect.rs index 0f21e0af..fe0f90c4 100644 --- a/rspirv/grammar/reflect.rs +++ b/rspirv/grammar/reflect.rs @@ -84,6 +84,8 @@ pub fn is_constant(opcode: spirv::Op) -> bool { | spirv::Op::SpecConstant | spirv::Op::SpecConstantComposite | spirv::Op::SpecConstantOp + | spirv::Op::ConstantCompositeContinuedINTEL + | spirv::Op::SpecConstantCompositeContinuedINTEL ) } diff --git a/rspirv/lift/autogen_context.rs b/rspirv/lift/autogen_context.rs index c546063a..191ad241 100644 --- a/rspirv/lift/autogen_context.rs +++ b/rspirv/lift/autogen_context.rs @@ -5338,6 +5338,138 @@ impl LiftContext { }) .ok_or(OperandError::Missing)?, }), + 4450u32 => Ok(ops::Op::SDotKHR { + vector_1: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + vector_2: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + packed_vector_format: match operands.next() { + Some(&dr::Operand::PackedVectorFormat(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }, + }), + 4451u32 => Ok(ops::Op::UDotKHR { + vector_1: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + vector_2: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + packed_vector_format: match operands.next() { + Some(&dr::Operand::PackedVectorFormat(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }, + }), + 4452u32 => Ok(ops::Op::SUDotKHR { + vector_1: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + vector_2: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + packed_vector_format: match operands.next() { + Some(&dr::Operand::PackedVectorFormat(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }, + }), + 4453u32 => Ok(ops::Op::SDotAccSatKHR { + vector_1: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + vector_2: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + accumulator: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + packed_vector_format: match operands.next() { + Some(&dr::Operand::PackedVectorFormat(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }, + }), + 4454u32 => Ok(ops::Op::UDotAccSatKHR { + vector_1: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + vector_2: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + accumulator: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + packed_vector_format: match operands.next() { + Some(&dr::Operand::PackedVectorFormat(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }, + }), + 4455u32 => Ok(ops::Op::SUDotAccSatKHR { + vector_1: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + vector_2: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + accumulator: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + packed_vector_format: match operands.next() { + Some(&dr::Operand::PackedVectorFormat(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }, + }), 4473u32 => Ok(ops::Op::RayQueryInitializeKHR { ray_query: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), @@ -5635,7 +5767,7 @@ impl LiftContext { .ok_or(OperandError::Missing)?, }), 5056u32 => Ok(ops::Op::ReadClockKHR { - execution: (match operands.next() { + scope: (match operands.next() { Some(&dr::Operand::IdScope(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, @@ -5801,292 +5933,258 @@ impl LiftContext { }) .ok_or(OperandError::Missing)?, }), - 5341u32 => Ok(ops::Op::TypeAccelerationStructureNV), - 5344u32 => Ok(ops::Op::ExecuteCallableNV { - sbt_index: (match operands.next() { + 5338u32 => Ok(ops::Op::TraceMotionNV { + accel: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - callable_data_id: (match operands.next() { + ray_flags: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - }), - 5359u32 => Ok(ops::Op::CooperativeMatrixLoadNV { - pointer: (match operands.next() { + cull_mask: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - stride: (match operands.next() { + sbt_offset: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - column_major: (match operands.next() { + sbt_stride: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - memory_access: match operands.next() { - Some(&dr::Operand::MemoryAccess(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }, - }), - 5360u32 => Ok(ops::Op::CooperativeMatrixStoreNV { - pointer: (match operands.next() { + miss_index: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - object: (match operands.next() { + ray_origin: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - stride: (match operands.next() { + ray_tmin: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - column_major: (match operands.next() { + ray_direction: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - memory_access: match operands.next() { - Some(&dr::Operand::MemoryAccess(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }, - }), - 5361u32 => Ok(ops::Op::CooperativeMatrixMulAddNV { - a: (match operands.next() { + ray_tmax: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - b: (match operands.next() { + time: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - c: (match operands.next() { + payload_id: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, }), - 5362u32 => Ok(ops::Op::CooperativeMatrixLengthNV { - ty: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(self.types.lookup_token(*value)), + 5339u32 => Ok(ops::Op::TraceRayMotionNV { + accel: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - }), - 5364u32 => Ok(ops::Op::BeginInvocationInterlockEXT), - 5365u32 => Ok(ops::Op::EndInvocationInterlockEXT), - 5380u32 => Ok(ops::Op::DemoteToHelperInvocationEXT), - 5381u32 => Ok(ops::Op::IsHelperInvocationEXT), - 5571u32 => Ok(ops::Op::SubgroupShuffleINTEL { - data: (match operands.next() { + ray_flags: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - invocation_id: (match operands.next() { + cull_mask: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - }), - 5572u32 => Ok(ops::Op::SubgroupShuffleDownINTEL { - current: (match operands.next() { + sbt_offset: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - next: (match operands.next() { + sbt_stride: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - delta: (match operands.next() { + miss_index: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - }), - 5573u32 => Ok(ops::Op::SubgroupShuffleUpINTEL { - previous: (match operands.next() { + ray_origin: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - current: (match operands.next() { + ray_tmin: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - delta: (match operands.next() { + ray_direction: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - }), - 5574u32 => Ok(ops::Op::SubgroupShuffleXorINTEL { - data: (match operands.next() { + ray_tmax: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - value: (match operands.next() { + time: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - }), - 5575u32 => Ok(ops::Op::SubgroupBlockReadINTEL { - ptr: (match operands.next() { + payload: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, }), - 5576u32 => Ok(ops::Op::SubgroupBlockWriteINTEL { - ptr: (match operands.next() { + 5341u32 => Ok(ops::Op::TypeAccelerationStructureNV), + 5344u32 => Ok(ops::Op::ExecuteCallableNV { + sbt_index: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - data: (match operands.next() { + callable_data_id: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, }), - 5577u32 => Ok(ops::Op::SubgroupImageBlockReadINTEL { - image: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - coordinate: (match operands.next() { + 5359u32 => Ok(ops::Op::CooperativeMatrixLoadNV { + pointer: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - }), - 5578u32 => Ok(ops::Op::SubgroupImageBlockWriteINTEL { - image: (match operands.next() { + stride: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - coordinate: (match operands.next() { + column_major: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - data: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + memory_access: match operands.next() { + Some(&dr::Operand::MemoryAccess(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, - }) - .ok_or(OperandError::Missing)?, + }, }), - 5580u32 => Ok(ops::Op::SubgroupImageMediaBlockReadINTEL { - image: (match operands.next() { + 5360u32 => Ok(ops::Op::CooperativeMatrixStoreNV { + pointer: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - coordinate: (match operands.next() { + object: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - width: (match operands.next() { + stride: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - height: (match operands.next() { + column_major: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - }), - 5581u32 => Ok(ops::Op::SubgroupImageMediaBlockWriteINTEL { - image: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + memory_access: match operands.next() { + Some(&dr::Operand::MemoryAccess(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, - }) - .ok_or(OperandError::Missing)?, - coordinate: (match operands.next() { + }, + }), + 5361u32 => Ok(ops::Op::CooperativeMatrixMulAddNV { + a: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - width: (match operands.next() { + b: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - height: (match operands.next() { + c: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - data: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + }), + 5362u32 => Ok(ops::Op::CooperativeMatrixLengthNV { + ty: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(self.types.lookup_token(*value)), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, }), - 5585u32 => Ok(ops::Op::UCountLeadingZerosINTEL { + 5364u32 => Ok(ops::Op::BeginInvocationInterlockEXT), + 5365u32 => Ok(ops::Op::EndInvocationInterlockEXT), + 5380u32 => Ok(ops::Op::DemoteToHelperInvocationEXT), + 5381u32 => Ok(ops::Op::IsHelperInvocationEXT), + 5391u32 => Ok(ops::Op::ConvertUToImageNV { operand: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), @@ -6094,7 +6192,7 @@ impl LiftContext { }) .ok_or(OperandError::Missing)?, }), - 5586u32 => Ok(ops::Op::UCountTrailingZerosINTEL { + 5392u32 => Ok(ops::Op::ConvertUToSamplerNV { operand: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), @@ -6102,807 +6200,683 @@ impl LiftContext { }) .ok_or(OperandError::Missing)?, }), - 5587u32 => Ok(ops::Op::AbsISubINTEL { - operand_1: (match operands.next() { + 5393u32 => Ok(ops::Op::ConvertImageToUNV { + operand: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - operand_2: (match operands.next() { + }), + 5394u32 => Ok(ops::Op::ConvertSamplerToUNV { + operand: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, }), - 5588u32 => Ok(ops::Op::AbsUSubINTEL { - operand_1: (match operands.next() { + 5395u32 => Ok(ops::Op::ConvertUToSampledImageNV { + operand: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - operand_2: (match operands.next() { + }), + 5396u32 => Ok(ops::Op::ConvertSampledImageToUNV { + operand: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, }), - 5589u32 => Ok(ops::Op::IAddSatINTEL { - operand_1: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + 5397u32 => Ok(ops::Op::SamplerImageAddressingModeNV { + bit_width: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - operand_2: (match operands.next() { + }), + 5571u32 => Ok(ops::Op::SubgroupShuffleINTEL { + data: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - }), - 5590u32 => Ok(ops::Op::UAddSatINTEL { - operand_1: (match operands.next() { + invocation_id: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - operand_2: (match operands.next() { + }), + 5572u32 => Ok(ops::Op::SubgroupShuffleDownINTEL { + current: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - }), - 5591u32 => Ok(ops::Op::IAverageINTEL { - operand_1: (match operands.next() { + next: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - operand_2: (match operands.next() { + delta: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, }), - 5592u32 => Ok(ops::Op::UAverageINTEL { - operand_1: (match operands.next() { + 5573u32 => Ok(ops::Op::SubgroupShuffleUpINTEL { + previous: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - operand_2: (match operands.next() { + current: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - }), - 5593u32 => Ok(ops::Op::IAverageRoundedINTEL { - operand_1: (match operands.next() { + delta: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - operand_2: (match operands.next() { + }), + 5574u32 => Ok(ops::Op::SubgroupShuffleXorINTEL { + data: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - }), - 5594u32 => Ok(ops::Op::UAverageRoundedINTEL { - operand_1: (match operands.next() { + value: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - operand_2: (match operands.next() { + }), + 5575u32 => Ok(ops::Op::SubgroupBlockReadINTEL { + ptr: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, }), - 5595u32 => Ok(ops::Op::ISubSatINTEL { - operand_1: (match operands.next() { + 5576u32 => Ok(ops::Op::SubgroupBlockWriteINTEL { + ptr: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - operand_2: (match operands.next() { + data: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, }), - 5596u32 => Ok(ops::Op::USubSatINTEL { - operand_1: (match operands.next() { + 5577u32 => Ok(ops::Op::SubgroupImageBlockReadINTEL { + image: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - operand_2: (match operands.next() { + coordinate: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, }), - 5597u32 => Ok(ops::Op::IMul32x16INTEL { - operand_1: (match operands.next() { + 5578u32 => Ok(ops::Op::SubgroupImageBlockWriteINTEL { + image: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - operand_2: (match operands.next() { + coordinate: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - }), - 5598u32 => Ok(ops::Op::UMul32x16INTEL { - operand_1: (match operands.next() { + data: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - operand_2: (match operands.next() { + }), + 5580u32 => Ok(ops::Op::SubgroupImageMediaBlockReadINTEL { + image: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - }), - 5600u32 => Ok(ops::Op::FunctionPointerINTEL { - function: (match operands.next() { + coordinate: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - }), - 5601u32 => Ok(ops::Op::FunctionPointerCallINTEL { - operand_1: { - let mut vec = Vec::new(); - while let Some(item) = match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - } { - vec.push(item); - } - vec - }, - }), - 5632u32 => Ok(ops::Op::DecorateString { - target: (match operands.next() { + width: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - decoration: (match operands.next() { - Some(&dr::Operand::Decoration(ref value)) => Some(*value), + height: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, }), - 5632u32 => Ok(ops::Op::DecorateStringGOOGLE { - target: (match operands.next() { + 5581u32 => Ok(ops::Op::SubgroupImageMediaBlockWriteINTEL { + image: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - decoration: (match operands.next() { - Some(&dr::Operand::Decoration(ref value)) => Some(*value), + coordinate: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - }), - 5633u32 => Ok(ops::Op::MemberDecorateString { - struct_type: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(self.types.lookup_token(*value)), + width: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - member: (match operands.next() { - Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + height: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - decoration: (match operands.next() { - Some(&dr::Operand::Decoration(ref value)) => Some(*value), + data: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, }), - 5633u32 => Ok(ops::Op::MemberDecorateStringGOOGLE { - struct_type: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(self.types.lookup_token(*value)), + 5585u32 => Ok(ops::Op::UCountLeadingZerosINTEL { + operand: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - member: (match operands.next() { - Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + }), + 5586u32 => Ok(ops::Op::UCountTrailingZerosINTEL { + operand: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - decoration: (match operands.next() { - Some(&dr::Operand::Decoration(ref value)) => Some(*value), + }), + 5587u32 => Ok(ops::Op::AbsISubINTEL { + operand_1: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - }), - 5699u32 => Ok(ops::Op::VmeImageINTEL { - image_type: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(self.types.lookup_token(*value)), + operand_2: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - sampler: (match operands.next() { + }), + 5588u32 => Ok(ops::Op::AbsUSubINTEL { + operand_1: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - }), - 5700u32 => Ok(ops::Op::TypeVmeImageINTEL { - image_type: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(self.types.lookup_token(*value)), + operand_2: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, }), - 5701u32 => Ok(ops::Op::TypeAvcImePayloadINTEL), - 5702u32 => Ok(ops::Op::TypeAvcRefPayloadINTEL), - 5703u32 => Ok(ops::Op::TypeAvcSicPayloadINTEL), - 5704u32 => Ok(ops::Op::TypeAvcMcePayloadINTEL), - 5705u32 => Ok(ops::Op::TypeAvcMceResultINTEL), - 5706u32 => Ok(ops::Op::TypeAvcImeResultINTEL), - 5707u32 => Ok(ops::Op::TypeAvcImeResultSingleReferenceStreamoutINTEL), - 5708u32 => Ok(ops::Op::TypeAvcImeResultDualReferenceStreamoutINTEL), - 5709u32 => Ok(ops::Op::TypeAvcImeSingleReferenceStreaminINTEL), - 5710u32 => Ok(ops::Op::TypeAvcImeDualReferenceStreaminINTEL), - 5711u32 => Ok(ops::Op::TypeAvcRefResultINTEL), - 5712u32 => Ok(ops::Op::TypeAvcSicResultINTEL), - 5713u32 => Ok( - ops::Op::SubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL { - slice_type: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => { - Some(self.types.lookup_token(*value)) - } - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - qp: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - }, - ), - 5714u32 => Ok( - ops::Op::SubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL { - reference_base_penalty: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - payload: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - }, - ), - 5715u32 => Ok(ops::Op::SubgroupAvcMceGetDefaultInterShapePenaltyINTEL { - slice_type: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(self.types.lookup_token(*value)), + 5589u32 => Ok(ops::Op::IAddSatINTEL { + operand_1: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - qp: (match operands.next() { + operand_2: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, }), - 5716u32 => Ok(ops::Op::SubgroupAvcMceSetInterShapePenaltyINTEL { - packed_shape_penalty: (match operands.next() { + 5590u32 => Ok(ops::Op::UAddSatINTEL { + operand_1: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - payload: (match operands.next() { + operand_2: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, }), - 5717u32 => Ok( - ops::Op::SubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL { - slice_type: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => { - Some(self.types.lookup_token(*value)) - } - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - qp: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - }, - ), - 5718u32 => Ok(ops::Op::SubgroupAvcMceSetInterDirectionPenaltyINTEL { - direction_cost: (match operands.next() { + 5591u32 => Ok(ops::Op::IAverageINTEL { + operand_1: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - payload: (match operands.next() { + operand_2: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, }), - 5719u32 => Ok( - ops::Op::SubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL { - slice_type: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => { - Some(self.types.lookup_token(*value)) - } - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - qp: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - }, - ), - 5720u32 => Ok( - ops::Op::SubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL { - slice_type: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => { - Some(self.types.lookup_token(*value)) - } - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - qp: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - }, - ), - 5721u32 => Ok(ops::Op::SubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL), - 5722u32 => Ok(ops::Op::SubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL), - 5723u32 => Ok(ops::Op::SubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL), - 5724u32 => Ok(ops::Op::SubgroupAvcMceSetMotionVectorCostFunctionINTEL { - packed_cost_center_delta: (match operands.next() { + 5592u32 => Ok(ops::Op::UAverageINTEL { + operand_1: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - packed_cost_table: (match operands.next() { + operand_2: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - cost_precision: (match operands.next() { + }), + 5593u32 => Ok(ops::Op::IAverageRoundedINTEL { + operand_1: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - payload: (match operands.next() { + operand_2: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, }), - 5725u32 => Ok(ops::Op::SubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL { - slice_type: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(self.types.lookup_token(*value)), + 5594u32 => Ok(ops::Op::UAverageRoundedINTEL { + operand_1: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - qp: (match operands.next() { + operand_2: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, }), - 5726u32 => Ok(ops::Op::SubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL), - 5727u32 => Ok(ops::Op::SubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL), - 5728u32 => Ok(ops::Op::SubgroupAvcMceSetAcOnlyHaarINTEL { - payload: (match operands.next() { + 5595u32 => Ok(ops::Op::ISubSatINTEL { + operand_1: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - }), - 5729u32 => Ok( - ops::Op::SubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL { - source_field_polarity: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - payload: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - }, - ), - 5730u32 => Ok( - ops::Op::SubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL { - reference_field_polarity: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - payload: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - }, - ), - 5731u32 => Ok( - ops::Op::SubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL { - forward_reference_field_polarity: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - backward_reference_field_polarity: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - payload: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - }, - ), - 5732u32 => Ok(ops::Op::SubgroupAvcMceConvertToImePayloadINTEL { - payload: (match operands.next() { + operand_2: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, }), - 5733u32 => Ok(ops::Op::SubgroupAvcMceConvertToImeResultINTEL { - payload: (match operands.next() { + 5596u32 => Ok(ops::Op::USubSatINTEL { + operand_1: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - }), - 5734u32 => Ok(ops::Op::SubgroupAvcMceConvertToRefPayloadINTEL { - payload: (match operands.next() { + operand_2: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, }), - 5735u32 => Ok(ops::Op::SubgroupAvcMceConvertToRefResultINTEL { - payload: (match operands.next() { + 5597u32 => Ok(ops::Op::IMul32x16INTEL { + operand_1: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - }), - 5736u32 => Ok(ops::Op::SubgroupAvcMceConvertToSicPayloadINTEL { - payload: (match operands.next() { + operand_2: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, }), - 5737u32 => Ok(ops::Op::SubgroupAvcMceConvertToSicResultINTEL { - payload: (match operands.next() { + 5598u32 => Ok(ops::Op::UMul32x16INTEL { + operand_1: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - }), - 5738u32 => Ok(ops::Op::SubgroupAvcMceGetMotionVectorsINTEL { - payload: (match operands.next() { + operand_2: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, }), - 5739u32 => Ok(ops::Op::SubgroupAvcMceGetInterDistortionsINTEL { - payload: (match operands.next() { + 5600u32 => Ok(ops::Op::ConstantFunctionPointerINTEL { + function: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, }), - 5740u32 => Ok(ops::Op::SubgroupAvcMceGetBestInterDistortionsINTEL { - payload: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + 5601u32 => Ok(ops::Op::FunctionPointerCallINTEL { + operand_1: { + let mut vec = Vec::new(); + while let Some(item) = match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + } { + vec.push(item); + } + vec + }, + }), + 5609u32 => Ok(ops::Op::AsmTargetINTEL { + asm_target: (match operands.next() { + Some(&dr::Operand::LiteralString(ref value)) => Some(value.clone()), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, }), - 5741u32 => Ok(ops::Op::SubgroupAvcMceGetInterMajorShapeINTEL { - payload: (match operands.next() { + 5610u32 => Ok(ops::Op::AsmINTEL { + asm_type: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - }), - 5742u32 => Ok(ops::Op::SubgroupAvcMceGetInterMinorShapeINTEL { - payload: (match operands.next() { + target: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - }), - 5743u32 => Ok(ops::Op::SubgroupAvcMceGetInterDirectionsINTEL { - payload: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + asm_instructions: (match operands.next() { + Some(&dr::Operand::LiteralString(ref value)) => Some(value.clone()), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - }), - 5744u32 => Ok(ops::Op::SubgroupAvcMceGetInterMotionVectorCountINTEL { - payload: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + constraints: (match operands.next() { + Some(&dr::Operand::LiteralString(ref value)) => Some(value.clone()), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, }), - 5745u32 => Ok(ops::Op::SubgroupAvcMceGetInterReferenceIdsINTEL { - payload: (match operands.next() { + 5611u32 => Ok(ops::Op::AsmCallINTEL { + asm: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - }), - 5746u32 => Ok( - ops::Op::SubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL { - packed_reference_ids: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - packed_reference_parameter_field_polarities: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - payload: (match operands.next() { + argument_0: { + let mut vec = Vec::new(); + while let Some(item) = match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, - }) - .ok_or(OperandError::Missing)?, + } { + vec.push(item); + } + vec }, - ), - 5747u32 => Ok(ops::Op::SubgroupAvcImeInitializeINTEL { - src_coord: (match operands.next() { + }), + 5614u32 => Ok(ops::Op::AtomicFMinEXT { + pointer: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - partition_mask: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + memory: (match operands.next() { + Some(&dr::Operand::IdScope(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - sad_adjustment: (match operands.next() { + semantics: (match operands.next() { + Some(&dr::Operand::IdMemorySemantics(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + value: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, }), - 5748u32 => Ok(ops::Op::SubgroupAvcImeSetSingleReferenceINTEL { - ref_offset: (match operands.next() { + 5615u32 => Ok(ops::Op::AtomicFMaxEXT { + pointer: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - search_window_config: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + memory: (match operands.next() { + Some(&dr::Operand::IdScope(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - payload: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + semantics: (match operands.next() { + Some(&dr::Operand::IdMemorySemantics(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - }), - 5749u32 => Ok(ops::Op::SubgroupAvcImeSetDualReferenceINTEL { - fwd_ref_offset: (match operands.next() { + value: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - bwd_ref_offset: (match operands.next() { + }), + 5630u32 => Ok(ops::Op::AssumeTrueKHR { + condition: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - id_search_window_config: (match operands.next() { + }), + 5631u32 => Ok(ops::Op::ExpectKHR { + value: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - payload: (match operands.next() { + expected_value: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, }), - 5750u32 => Ok(ops::Op::SubgroupAvcImeRefWindowSizeINTEL { - search_window_config: (match operands.next() { + 5632u32 => Ok(ops::Op::DecorateString { + target: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - dual_ref: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + decoration: (match operands.next() { + Some(&dr::Operand::Decoration(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, }), - 5751u32 => Ok(ops::Op::SubgroupAvcImeAdjustRefOffsetINTEL { - ref_offset: (match operands.next() { + 5632u32 => Ok(ops::Op::DecorateStringGOOGLE { + target: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - src_coord: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + decoration: (match operands.next() { + Some(&dr::Operand::Decoration(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - ref_window_size: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + }), + 5633u32 => Ok(ops::Op::MemberDecorateString { + struct_type: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(self.types.lookup_token(*value)), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - image_size: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + member: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + decoration: (match operands.next() { + Some(&dr::Operand::Decoration(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, }), - 5752u32 => Ok(ops::Op::SubgroupAvcImeConvertToMcePayloadINTEL { - payload: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + 5633u32 => Ok(ops::Op::MemberDecorateStringGOOGLE { + struct_type: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(self.types.lookup_token(*value)), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + member: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + decoration: (match operands.next() { + Some(&dr::Operand::Decoration(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, }), - 5753u32 => Ok(ops::Op::SubgroupAvcImeSetMaxMotionVectorCountINTEL { - max_motion_vector_count: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + 5699u32 => Ok(ops::Op::VmeImageINTEL { + image_type: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(self.types.lookup_token(*value)), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - payload: (match operands.next() { + sampler: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, }), - 5754u32 => Ok(ops::Op::SubgroupAvcImeSetUnidirectionalMixDisableINTEL { - payload: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + 5700u32 => Ok(ops::Op::TypeVmeImageINTEL { + image_type: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(self.types.lookup_token(*value)), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, }), - 5755u32 => Ok( - ops::Op::SubgroupAvcImeSetEarlySearchTerminationThresholdINTEL { - threshold: (match operands.next() { + 5701u32 => Ok(ops::Op::TypeAvcImePayloadINTEL), + 5702u32 => Ok(ops::Op::TypeAvcRefPayloadINTEL), + 5703u32 => Ok(ops::Op::TypeAvcSicPayloadINTEL), + 5704u32 => Ok(ops::Op::TypeAvcMcePayloadINTEL), + 5705u32 => Ok(ops::Op::TypeAvcMceResultINTEL), + 5706u32 => Ok(ops::Op::TypeAvcImeResultINTEL), + 5707u32 => Ok(ops::Op::TypeAvcImeResultSingleReferenceStreamoutINTEL), + 5708u32 => Ok(ops::Op::TypeAvcImeResultDualReferenceStreamoutINTEL), + 5709u32 => Ok(ops::Op::TypeAvcImeSingleReferenceStreaminINTEL), + 5710u32 => Ok(ops::Op::TypeAvcImeDualReferenceStreaminINTEL), + 5711u32 => Ok(ops::Op::TypeAvcRefResultINTEL), + 5712u32 => Ok(ops::Op::TypeAvcSicResultINTEL), + 5713u32 => Ok( + ops::Op::SubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL { + slice_type: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => { + Some(self.types.lookup_token(*value)) + } + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + qp: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }, + ), + 5714u32 => Ok( + ops::Op::SubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL { + reference_base_penalty: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, @@ -6916,28 +6890,22 @@ impl LiftContext { .ok_or(OperandError::Missing)?, }, ), - 5756u32 => Ok(ops::Op::SubgroupAvcImeSetWeightedSadINTEL { - packed_sad_weights: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + 5715u32 => Ok(ops::Op::SubgroupAvcMceGetDefaultInterShapePenaltyINTEL { + slice_type: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(self.types.lookup_token(*value)), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - payload: (match operands.next() { + qp: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, }), - 5757u32 => Ok(ops::Op::SubgroupAvcImeEvaluateWithSingleReferenceINTEL { - src_image: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - ref_image: (match operands.next() { + 5716u32 => Ok(ops::Op::SubgroupAvcMceSetInterShapePenaltyINTEL { + packed_shape_penalty: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, @@ -6950,20 +6918,26 @@ impl LiftContext { }) .ok_or(OperandError::Missing)?, }), - 5758u32 => Ok(ops::Op::SubgroupAvcImeEvaluateWithDualReferenceINTEL { - src_image: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - fwd_ref_image: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - bwd_ref_image: (match operands.next() { + 5717u32 => Ok( + ops::Op::SubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL { + slice_type: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => { + Some(self.types.lookup_token(*value)) + } + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + qp: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }, + ), + 5718u32 => Ok(ops::Op::SubgroupAvcMceSetInterDirectionPenaltyINTEL { + direction_cost: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, @@ -6976,27 +6950,35 @@ impl LiftContext { }) .ok_or(OperandError::Missing)?, }), - 5759u32 => Ok( - ops::Op::SubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL { - src_image: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + 5719u32 => Ok( + ops::Op::SubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL { + slice_type: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => { + Some(self.types.lookup_token(*value)) + } Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - ref_image: (match operands.next() { + qp: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - payload: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + }, + ), + 5720u32 => Ok( + ops::Op::SubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL { + slice_type: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => { + Some(self.types.lookup_token(*value)) + } Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - streamin_components: (match operands.next() { + qp: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, @@ -7004,21 +6986,78 @@ impl LiftContext { .ok_or(OperandError::Missing)?, }, ), - 5760u32 => Ok( - ops::Op::SubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL { - src_image: (match operands.next() { + 5721u32 => Ok(ops::Op::SubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL), + 5722u32 => Ok(ops::Op::SubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL), + 5723u32 => Ok(ops::Op::SubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL), + 5724u32 => Ok(ops::Op::SubgroupAvcMceSetMotionVectorCostFunctionINTEL { + packed_cost_center_delta: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + packed_cost_table: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + cost_precision: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5725u32 => Ok(ops::Op::SubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL { + slice_type: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(self.types.lookup_token(*value)), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + qp: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5726u32 => Ok(ops::Op::SubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL), + 5727u32 => Ok(ops::Op::SubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL), + 5728u32 => Ok(ops::Op::SubgroupAvcMceSetAcOnlyHaarINTEL { + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5729u32 => Ok( + ops::Op::SubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL { + source_field_polarity: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - fwd_ref_image: (match operands.next() { + payload: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - bwd_ref_image: (match operands.next() { + }, + ), + 5730u32 => Ok( + ops::Op::SubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL { + reference_field_polarity: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, @@ -7030,23 +7069,17 @@ impl LiftContext { None => None, }) .ok_or(OperandError::Missing)?, - streamin_components: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, }, ), - 5761u32 => Ok( - ops::Op::SubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL { - src_image: (match operands.next() { + 5731u32 => Ok( + ops::Op::SubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL { + forward_reference_field_polarity: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - ref_image: (match operands.next() { + backward_reference_field_polarity: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, @@ -7060,97 +7093,7 @@ impl LiftContext { .ok_or(OperandError::Missing)?, }, ), - 5762u32 => Ok( - ops::Op::SubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL { - src_image: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - fwd_ref_image: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - bwd_ref_image: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - payload: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - }, - ), - 5763u32 => Ok( - ops::Op::SubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL { - src_image: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - ref_image: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - payload: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - streamin_components: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - }, - ), - 5764u32 => Ok( - ops::Op::SubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL { - src_image: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - fwd_ref_image: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - bwd_ref_image: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - payload: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - streamin_components: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - }, - ), - 5765u32 => Ok(ops::Op::SubgroupAvcImeConvertToMceResultINTEL { + 5732u32 => Ok(ops::Op::SubgroupAvcMceConvertToImePayloadINTEL { payload: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), @@ -7158,7 +7101,7 @@ impl LiftContext { }) .ok_or(OperandError::Missing)?, }), - 5766u32 => Ok(ops::Op::SubgroupAvcImeGetSingleReferenceStreaminINTEL { + 5733u32 => Ok(ops::Op::SubgroupAvcMceConvertToImeResultINTEL { payload: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), @@ -7166,7 +7109,7 @@ impl LiftContext { }) .ok_or(OperandError::Missing)?, }), - 5767u32 => Ok(ops::Op::SubgroupAvcImeGetDualReferenceStreaminINTEL { + 5734u32 => Ok(ops::Op::SubgroupAvcMceConvertToRefPayloadINTEL { payload: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), @@ -7174,7 +7117,7 @@ impl LiftContext { }) .ok_or(OperandError::Missing)?, }), - 5768u32 => Ok(ops::Op::SubgroupAvcImeStripSingleReferenceStreamoutINTEL { + 5735u32 => Ok(ops::Op::SubgroupAvcMceConvertToRefResultINTEL { payload: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), @@ -7182,7 +7125,7 @@ impl LiftContext { }) .ok_or(OperandError::Missing)?, }), - 5769u32 => Ok(ops::Op::SubgroupAvcImeStripDualReferenceStreamoutINTEL { + 5736u32 => Ok(ops::Op::SubgroupAvcMceConvertToSicPayloadINTEL { payload: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), @@ -7190,861 +7133,3498 @@ impl LiftContext { }) .ok_or(OperandError::Missing)?, }), - 5770u32 => Ok( - ops::Op::SubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL { - payload: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - major_shape: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - }, - ), - 5771u32 => Ok( - ops::Op::SubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL { - payload: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - major_shape: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - }, - ), - 5772u32 => Ok( - ops::Op::SubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL { - payload: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - major_shape: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - }, - ), - 5773u32 => Ok( - ops::Op::SubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL { - payload: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - major_shape: (match operands.next() { + 5737u32 => Ok(ops::Op::SubgroupAvcMceConvertToSicResultINTEL { + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5738u32 => Ok(ops::Op::SubgroupAvcMceGetMotionVectorsINTEL { + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5739u32 => Ok(ops::Op::SubgroupAvcMceGetInterDistortionsINTEL { + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5740u32 => Ok(ops::Op::SubgroupAvcMceGetBestInterDistortionsINTEL { + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5741u32 => Ok(ops::Op::SubgroupAvcMceGetInterMajorShapeINTEL { + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5742u32 => Ok(ops::Op::SubgroupAvcMceGetInterMinorShapeINTEL { + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5743u32 => Ok(ops::Op::SubgroupAvcMceGetInterDirectionsINTEL { + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5744u32 => Ok(ops::Op::SubgroupAvcMceGetInterMotionVectorCountINTEL { + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5745u32 => Ok(ops::Op::SubgroupAvcMceGetInterReferenceIdsINTEL { + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5746u32 => Ok( + ops::Op::SubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL { + packed_reference_ids: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - direction: (match operands.next() { + packed_reference_parameter_field_polarities: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - }, - ), - 5774u32 => Ok( - ops::Op::SubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL { payload: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - major_shape: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - direction: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, }, ), - 5775u32 => Ok( - ops::Op::SubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL { - payload: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - major_shape: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - direction: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), + 5747u32 => Ok(ops::Op::SubgroupAvcImeInitializeINTEL { + src_coord: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + partition_mask: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + sad_adjustment: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5748u32 => Ok(ops::Op::SubgroupAvcImeSetSingleReferenceINTEL { + ref_offset: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + search_window_config: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5749u32 => Ok(ops::Op::SubgroupAvcImeSetDualReferenceINTEL { + fwd_ref_offset: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + bwd_ref_offset: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + id_search_window_config: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5750u32 => Ok(ops::Op::SubgroupAvcImeRefWindowSizeINTEL { + search_window_config: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + dual_ref: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5751u32 => Ok(ops::Op::SubgroupAvcImeAdjustRefOffsetINTEL { + ref_offset: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + src_coord: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + ref_window_size: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + image_size: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5752u32 => Ok(ops::Op::SubgroupAvcImeConvertToMcePayloadINTEL { + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5753u32 => Ok(ops::Op::SubgroupAvcImeSetMaxMotionVectorCountINTEL { + max_motion_vector_count: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5754u32 => Ok(ops::Op::SubgroupAvcImeSetUnidirectionalMixDisableINTEL { + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5755u32 => Ok( + ops::Op::SubgroupAvcImeSetEarlySearchTerminationThresholdINTEL { + threshold: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, }, ), - 5776u32 => Ok(ops::Op::SubgroupAvcImeGetBorderReachedINTEL { - image_select: (match operands.next() { + 5756u32 => Ok(ops::Op::SubgroupAvcImeSetWeightedSadINTEL { + packed_sad_weights: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5757u32 => Ok(ops::Op::SubgroupAvcImeEvaluateWithSingleReferenceINTEL { + src_image: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + ref_image: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5758u32 => Ok(ops::Op::SubgroupAvcImeEvaluateWithDualReferenceINTEL { + src_image: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + fwd_ref_image: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + bwd_ref_image: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5759u32 => Ok( + ops::Op::SubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL { + src_image: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + ref_image: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + streamin_components: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }, + ), + 5760u32 => Ok( + ops::Op::SubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL { + src_image: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + fwd_ref_image: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + bwd_ref_image: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + streamin_components: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }, + ), + 5761u32 => Ok( + ops::Op::SubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL { + src_image: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + ref_image: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }, + ), + 5762u32 => Ok( + ops::Op::SubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL { + src_image: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + fwd_ref_image: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + bwd_ref_image: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }, + ), + 5763u32 => Ok( + ops::Op::SubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL { + src_image: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + ref_image: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + streamin_components: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }, + ), + 5764u32 => Ok( + ops::Op::SubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL { + src_image: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + fwd_ref_image: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + bwd_ref_image: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + streamin_components: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }, + ), + 5765u32 => Ok(ops::Op::SubgroupAvcImeConvertToMceResultINTEL { + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5766u32 => Ok(ops::Op::SubgroupAvcImeGetSingleReferenceStreaminINTEL { + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5767u32 => Ok(ops::Op::SubgroupAvcImeGetDualReferenceStreaminINTEL { + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5768u32 => Ok(ops::Op::SubgroupAvcImeStripSingleReferenceStreamoutINTEL { + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5769u32 => Ok(ops::Op::SubgroupAvcImeStripDualReferenceStreamoutINTEL { + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5770u32 => Ok( + ops::Op::SubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL { + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + major_shape: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }, + ), + 5771u32 => Ok( + ops::Op::SubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL { + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + major_shape: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }, + ), + 5772u32 => Ok( + ops::Op::SubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL { + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + major_shape: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }, + ), + 5773u32 => Ok( + ops::Op::SubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL { + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + major_shape: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + direction: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }, + ), + 5774u32 => Ok( + ops::Op::SubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL { + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + major_shape: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + direction: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }, + ), + 5775u32 => Ok( + ops::Op::SubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL { + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + major_shape: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + direction: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }, + ), + 5776u32 => Ok(ops::Op::SubgroupAvcImeGetBorderReachedINTEL { + image_select: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5777u32 => Ok(ops::Op::SubgroupAvcImeGetTruncatedSearchIndicationINTEL { + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5778u32 => Ok( + ops::Op::SubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL { + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }, + ), + 5779u32 => Ok( + ops::Op::SubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL { + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }, + ), + 5780u32 => Ok( + ops::Op::SubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL { + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }, + ), + 5781u32 => Ok(ops::Op::SubgroupAvcFmeInitializeINTEL { + src_coord: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + motion_vectors: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + major_shapes: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + minor_shapes: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + direction: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + pixel_resolution: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + sad_adjustment: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5782u32 => Ok(ops::Op::SubgroupAvcBmeInitializeINTEL { + src_coord: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + motion_vectors: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + major_shapes: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + minor_shapes: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + direction: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + pixel_resolution: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + bidirectional_weight: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + sad_adjustment: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5783u32 => Ok(ops::Op::SubgroupAvcRefConvertToMcePayloadINTEL { + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5784u32 => Ok(ops::Op::SubgroupAvcRefSetBidirectionalMixDisableINTEL { + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5785u32 => Ok(ops::Op::SubgroupAvcRefSetBilinearFilterEnableINTEL { + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5786u32 => Ok(ops::Op::SubgroupAvcRefEvaluateWithSingleReferenceINTEL { + src_image: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + ref_image: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5787u32 => Ok(ops::Op::SubgroupAvcRefEvaluateWithDualReferenceINTEL { + src_image: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + fwd_ref_image: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + bwd_ref_image: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5788u32 => Ok(ops::Op::SubgroupAvcRefEvaluateWithMultiReferenceINTEL { + src_image: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + packed_reference_ids: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5789u32 => Ok( + ops::Op::SubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL { + src_image: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + packed_reference_ids: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + packed_reference_field_polarities: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }, + ), + 5790u32 => Ok(ops::Op::SubgroupAvcRefConvertToMceResultINTEL { + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5791u32 => Ok(ops::Op::SubgroupAvcSicInitializeINTEL { + src_coord: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5792u32 => Ok(ops::Op::SubgroupAvcSicConfigureSkcINTEL { + skip_block_partition_type: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(self.types.lookup_token(*value)), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + skip_motion_vector_mask: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + motion_vectors: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + bidirectional_weight: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + sad_adjustment: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5793u32 => Ok(ops::Op::SubgroupAvcSicConfigureIpeLumaINTEL { + luma_intra_partition_mask: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + intra_neighbour_availabilty: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + left_edge_luma_pixels: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + upper_left_corner_luma_pixel: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + upper_edge_luma_pixels: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + upper_right_edge_luma_pixels: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + sad_adjustment: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5794u32 => Ok(ops::Op::SubgroupAvcSicConfigureIpeLumaChromaINTEL { + luma_intra_partition_mask: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + intra_neighbour_availabilty: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + left_edge_luma_pixels: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + upper_left_corner_luma_pixel: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + upper_edge_luma_pixels: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + upper_right_edge_luma_pixels: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + left_edge_chroma_pixels: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + upper_left_corner_chroma_pixel: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + upper_edge_chroma_pixels: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + sad_adjustment: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5795u32 => Ok(ops::Op::SubgroupAvcSicGetMotionVectorMaskINTEL { + skip_block_partition_type: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(self.types.lookup_token(*value)), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + direction: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5796u32 => Ok(ops::Op::SubgroupAvcSicConvertToMcePayloadINTEL { + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5797u32 => Ok(ops::Op::SubgroupAvcSicSetIntraLumaShapePenaltyINTEL { + packed_shape_penalty: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5798u32 => Ok(ops::Op::SubgroupAvcSicSetIntraLumaModeCostFunctionINTEL { + luma_mode_penalty: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + luma_packed_neighbor_modes: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + luma_packed_non_dc_penalty: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5799u32 => Ok(ops::Op::SubgroupAvcSicSetIntraChromaModeCostFunctionINTEL { + chroma_mode_base_penalty: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5800u32 => Ok(ops::Op::SubgroupAvcSicSetBilinearFilterEnableINTEL { + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5801u32 => Ok(ops::Op::SubgroupAvcSicSetSkcForwardTransformEnableINTEL { + packed_sad_coefficients: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5802u32 => Ok(ops::Op::SubgroupAvcSicSetBlockBasedRawSkipSadINTEL { + block_based_skip_type: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(self.types.lookup_token(*value)), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5803u32 => Ok(ops::Op::SubgroupAvcSicEvaluateIpeINTEL { + src_image: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5804u32 => Ok(ops::Op::SubgroupAvcSicEvaluateWithSingleReferenceINTEL { + src_image: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + ref_image: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5805u32 => Ok(ops::Op::SubgroupAvcSicEvaluateWithDualReferenceINTEL { + src_image: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + fwd_ref_image: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + bwd_ref_image: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5806u32 => Ok(ops::Op::SubgroupAvcSicEvaluateWithMultiReferenceINTEL { + src_image: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + packed_reference_ids: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5807u32 => Ok( + ops::Op::SubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL { + src_image: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + packed_reference_ids: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + packed_reference_field_polarities: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }, + ), + 5808u32 => Ok(ops::Op::SubgroupAvcSicConvertToMceResultINTEL { + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5809u32 => Ok(ops::Op::SubgroupAvcSicGetIpeLumaShapeINTEL { + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5810u32 => Ok(ops::Op::SubgroupAvcSicGetBestIpeLumaDistortionINTEL { + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5811u32 => Ok(ops::Op::SubgroupAvcSicGetBestIpeChromaDistortionINTEL { + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5812u32 => Ok(ops::Op::SubgroupAvcSicGetPackedIpeLumaModesINTEL { + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5813u32 => Ok(ops::Op::SubgroupAvcSicGetIpeChromaModeINTEL { + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5814u32 => Ok(ops::Op::SubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL { + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5815u32 => Ok(ops::Op::SubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL { + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5816u32 => Ok(ops::Op::SubgroupAvcSicGetInterRawSadsINTEL { + payload: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5818u32 => Ok(ops::Op::VariableLengthArrayINTEL { + lenght: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5819u32 => Ok(ops::Op::SaveMemoryINTEL), + 5820u32 => Ok(ops::Op::RestoreMemoryINTEL { + ptr: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5840u32 => Ok(ops::Op::ArbitraryFloatSinCosPiINTEL { + a: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + m1: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + mout: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + from_sign: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + enable_subnormals: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_mode: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_accuracy: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5841u32 => Ok(ops::Op::ArbitraryFloatCastINTEL { + a: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + m1: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + mout: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + enable_subnormals: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_mode: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_accuracy: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5842u32 => Ok(ops::Op::ArbitraryFloatCastFromIntINTEL { + a: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + mout: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + from_sign: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + enable_subnormals: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_mode: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_accuracy: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5843u32 => Ok(ops::Op::ArbitraryFloatCastToIntINTEL { + a: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + m1: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + enable_subnormals: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_mode: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_accuracy: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5846u32 => Ok(ops::Op::ArbitraryFloatAddINTEL { + a: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + m1: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + b: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + m2: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + mout: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + enable_subnormals: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_mode: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_accuracy: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5847u32 => Ok(ops::Op::ArbitraryFloatSubINTEL { + a: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + m1: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + b: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + m2: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + mout: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + enable_subnormals: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_mode: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_accuracy: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5848u32 => Ok(ops::Op::ArbitraryFloatMulINTEL { + a: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + m1: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + b: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + m2: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + mout: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + enable_subnormals: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_mode: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_accuracy: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5849u32 => Ok(ops::Op::ArbitraryFloatDivINTEL { + a: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + m1: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + b: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + m2: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + mout: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + enable_subnormals: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_mode: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_accuracy: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5850u32 => Ok(ops::Op::ArbitraryFloatGTINTEL { + a: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + m1: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + b: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + m2: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5851u32 => Ok(ops::Op::ArbitraryFloatGEINTEL { + a: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + m1: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + b: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + m2: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5852u32 => Ok(ops::Op::ArbitraryFloatLTINTEL { + a: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + m1: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + b: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + m2: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5853u32 => Ok(ops::Op::ArbitraryFloatLEINTEL { + a: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + m1: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + b: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + m2: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5854u32 => Ok(ops::Op::ArbitraryFloatEQINTEL { + a: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + m1: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + b: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + m2: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5855u32 => Ok(ops::Op::ArbitraryFloatRecipINTEL { + a: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + m1: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + mout: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + enable_subnormals: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_mode: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_accuracy: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5856u32 => Ok(ops::Op::ArbitraryFloatRSqrtINTEL { + a: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + m1: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + mout: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + enable_subnormals: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_mode: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_accuracy: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5857u32 => Ok(ops::Op::ArbitraryFloatCbrtINTEL { + a: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + m1: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + mout: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + enable_subnormals: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_mode: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_accuracy: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5858u32 => Ok(ops::Op::ArbitraryFloatHypotINTEL { + a: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + m1: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + b: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + m2: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + mout: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + enable_subnormals: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_mode: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_accuracy: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5859u32 => Ok(ops::Op::ArbitraryFloatSqrtINTEL { + a: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + m1: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + mout: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + enable_subnormals: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_mode: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_accuracy: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5860u32 => Ok(ops::Op::ArbitraryFloatLogINTEL { + a: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + m1: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + mout: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + enable_subnormals: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_mode: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_accuracy: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5861u32 => Ok(ops::Op::ArbitraryFloatLog2INTEL { + a: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + m1: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + mout: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + enable_subnormals: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_mode: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_accuracy: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5862u32 => Ok(ops::Op::ArbitraryFloatLog10INTEL { + a: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + m1: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + mout: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + enable_subnormals: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_mode: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_accuracy: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5863u32 => Ok(ops::Op::ArbitraryFloatLog1pINTEL { + a: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + m1: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + mout: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + enable_subnormals: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_mode: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_accuracy: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5864u32 => Ok(ops::Op::ArbitraryFloatExpINTEL { + a: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + m1: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + mout: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + enable_subnormals: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_mode: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_accuracy: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5865u32 => Ok(ops::Op::ArbitraryFloatExp2INTEL { + a: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + m1: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + mout: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + enable_subnormals: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_mode: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_accuracy: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5866u32 => Ok(ops::Op::ArbitraryFloatExp10INTEL { + a: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + m1: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + mout: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + enable_subnormals: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_mode: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_accuracy: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5867u32 => Ok(ops::Op::ArbitraryFloatExpm1INTEL { + a: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + m1: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + mout: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + enable_subnormals: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_mode: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_accuracy: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5868u32 => Ok(ops::Op::ArbitraryFloatSinINTEL { + a: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + m1: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + mout: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + enable_subnormals: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_mode: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_accuracy: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5869u32 => Ok(ops::Op::ArbitraryFloatCosINTEL { + a: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + m1: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + mout: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + enable_subnormals: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_mode: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_accuracy: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5870u32 => Ok(ops::Op::ArbitraryFloatSinCosINTEL { + a: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + m1: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + mout: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + enable_subnormals: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_mode: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_accuracy: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5871u32 => Ok(ops::Op::ArbitraryFloatSinPiINTEL { + a: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + m1: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + mout: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + enable_subnormals: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_mode: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_accuracy: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5872u32 => Ok(ops::Op::ArbitraryFloatCosPiINTEL { + a: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + m1: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + mout: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + enable_subnormals: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_mode: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_accuracy: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5873u32 => Ok(ops::Op::ArbitraryFloatASinINTEL { + a: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + m1: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + mout: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + enable_subnormals: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_mode: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_accuracy: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5874u32 => Ok(ops::Op::ArbitraryFloatASinPiINTEL { + a: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + m1: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + mout: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + enable_subnormals: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_mode: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_accuracy: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5875u32 => Ok(ops::Op::ArbitraryFloatACosINTEL { + a: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + m1: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + mout: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + enable_subnormals: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_mode: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_accuracy: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5876u32 => Ok(ops::Op::ArbitraryFloatACosPiINTEL { + a: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + m1: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + mout: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + enable_subnormals: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_mode: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_accuracy: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5877u32 => Ok(ops::Op::ArbitraryFloatATanINTEL { + a: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + m1: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + mout: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + enable_subnormals: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_mode: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_accuracy: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5878u32 => Ok(ops::Op::ArbitraryFloatATanPiINTEL { + a: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + m1: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + mout: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + enable_subnormals: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_mode: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_accuracy: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 5879u32 => Ok(ops::Op::ArbitraryFloatATan2INTEL { + a: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + m1: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + b: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - payload: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + m2: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - }), - 5777u32 => Ok(ops::Op::SubgroupAvcImeGetTruncatedSearchIndicationINTEL { - payload: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + mout: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + enable_subnormals: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_mode: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_accuracy: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, }), - 5778u32 => Ok( - ops::Op::SubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL { - payload: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - }, - ), - 5779u32 => Ok( - ops::Op::SubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL { - payload: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - }, - ), - 5780u32 => Ok( - ops::Op::SubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL { - payload: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - }, - ), - 5781u32 => Ok(ops::Op::SubgroupAvcFmeInitializeINTEL { - src_coord: (match operands.next() { + 5880u32 => Ok(ops::Op::ArbitraryFloatPowINTEL { + a: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - motion_vectors: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + m1: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - major_shapes: (match operands.next() { + b: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - minor_shapes: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + m2: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - direction: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + mout: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - pixel_resolution: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + enable_subnormals: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - sad_adjustment: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + rounding_mode: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_accuracy: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, }), - 5782u32 => Ok(ops::Op::SubgroupAvcBmeInitializeINTEL { - src_coord: (match operands.next() { + 5881u32 => Ok(ops::Op::ArbitraryFloatPowRINTEL { + a: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - motion_vectors: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + m1: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - major_shapes: (match operands.next() { + b: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - minor_shapes: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + m2: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - direction: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + mout: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - pixel_resolution: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + enable_subnormals: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - bidirectional_weight: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + rounding_mode: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - sad_adjustment: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + rounding_accuracy: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, }), - 5783u32 => Ok(ops::Op::SubgroupAvcRefConvertToMcePayloadINTEL { - payload: (match operands.next() { + 5882u32 => Ok(ops::Op::ArbitraryFloatPowNINTEL { + a: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - }), - 5784u32 => Ok(ops::Op::SubgroupAvcRefSetBidirectionalMixDisableINTEL { - payload: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + m1: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - }), - 5785u32 => Ok(ops::Op::SubgroupAvcRefSetBilinearFilterEnableINTEL { - payload: (match operands.next() { + b: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - }), - 5786u32 => Ok(ops::Op::SubgroupAvcRefEvaluateWithSingleReferenceINTEL { - src_image: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + mout: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - ref_image: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + enable_subnormals: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - payload: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + rounding_mode: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + rounding_accuracy: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, }), - 5787u32 => Ok(ops::Op::SubgroupAvcRefEvaluateWithDualReferenceINTEL { - src_image: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + 5887u32 => Ok(ops::Op::LoopControlINTEL { + loop_control_parameters: { + let mut vec = Vec::new(); + while let Some(item) = match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + } { + vec.push(item); + } + vec + }, + }), + 5923u32 => Ok(ops::Op::FixedSqrtINTEL { + input_type: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(self.types.lookup_token(*value)), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - fwd_ref_image: (match operands.next() { + input: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - bwd_ref_image: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + s: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - payload: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + i: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - }), - 5788u32 => Ok(ops::Op::SubgroupAvcRefEvaluateWithMultiReferenceINTEL { - src_image: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + r_i: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - packed_reference_ids: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + q: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - payload: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + o: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, }), - 5789u32 => Ok( - ops::Op::SubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL { - src_image: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - packed_reference_ids: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - packed_reference_field_polarities: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - payload: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - }, - ), - 5790u32 => Ok(ops::Op::SubgroupAvcRefConvertToMceResultINTEL { - payload: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + 5924u32 => Ok(ops::Op::FixedRecipINTEL { + input_type: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(self.types.lookup_token(*value)), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - }), - 5791u32 => Ok(ops::Op::SubgroupAvcSicInitializeINTEL { - src_coord: (match operands.next() { + input: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, + s: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + i: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + r_i: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + q: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + o: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, }), - 5792u32 => Ok(ops::Op::SubgroupAvcSicConfigureSkcINTEL { - skip_block_partition_type: (match operands.next() { + 5925u32 => Ok(ops::Op::FixedRsqrtINTEL { + input_type: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(self.types.lookup_token(*value)), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - skip_motion_vector_mask: (match operands.next() { + input: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - motion_vectors: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + s: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - bidirectional_weight: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + i: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - sad_adjustment: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + r_i: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - payload: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + q: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + o: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, }), - 5793u32 => Ok(ops::Op::SubgroupAvcSicConfigureIpeLumaINTEL { - luma_intra_partition_mask: (match operands.next() { + 5926u32 => Ok(ops::Op::FixedSinINTEL { + input_type: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(self.types.lookup_token(*value)), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + input: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - intra_neighbour_availabilty: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + s: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + i: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - left_edge_luma_pixels: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + r_i: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - upper_left_corner_luma_pixel: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + q: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - upper_edge_luma_pixels: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + o: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - upper_right_edge_luma_pixels: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + }), + 5927u32 => Ok(ops::Op::FixedCosINTEL { + input_type: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(self.types.lookup_token(*value)), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - sad_adjustment: (match operands.next() { + input: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - payload: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + s: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - }), - 5794u32 => Ok(ops::Op::SubgroupAvcSicConfigureIpeLumaChromaINTEL { - luma_intra_partition_mask: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + i: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - intra_neighbour_availabilty: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + r_i: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - left_edge_luma_pixels: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + q: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - upper_left_corner_luma_pixel: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + o: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - upper_edge_luma_pixels: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + }), + 5928u32 => Ok(ops::Op::FixedSinCosINTEL { + input_type: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(self.types.lookup_token(*value)), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - upper_right_edge_luma_pixels: (match operands.next() { + input: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - left_edge_chroma_pixels: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + s: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - upper_left_corner_chroma_pixel: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + i: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - upper_edge_chroma_pixels: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + r_i: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - sad_adjustment: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + q: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - payload: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + o: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, }), - 5795u32 => Ok(ops::Op::SubgroupAvcSicGetMotionVectorMaskINTEL { - skip_block_partition_type: (match operands.next() { + 5929u32 => Ok(ops::Op::FixedSinPiINTEL { + input_type: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(self.types.lookup_token(*value)), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - direction: (match operands.next() { + input: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - }), - 5796u32 => Ok(ops::Op::SubgroupAvcSicConvertToMcePayloadINTEL { - payload: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + s: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - }), - 5797u32 => Ok(ops::Op::SubgroupAvcSicSetIntraLumaShapePenaltyINTEL { - packed_shape_penalty: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + i: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - payload: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + r_i: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - }), - 5798u32 => Ok(ops::Op::SubgroupAvcSicSetIntraLumaModeCostFunctionINTEL { - luma_mode_penalty: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + q: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - luma_packed_neighbor_modes: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + o: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - luma_packed_non_dc_penalty: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + }), + 5930u32 => Ok(ops::Op::FixedCosPiINTEL { + input_type: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(self.types.lookup_token(*value)), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - payload: (match operands.next() { + input: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - }), - 5799u32 => Ok(ops::Op::SubgroupAvcSicSetIntraChromaModeCostFunctionINTEL { - chroma_mode_base_penalty: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + s: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - payload: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + i: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - }), - 5800u32 => Ok(ops::Op::SubgroupAvcSicSetBilinearFilterEnableINTEL { - payload: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + r_i: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - }), - 5801u32 => Ok(ops::Op::SubgroupAvcSicSetSkcForwardTransformEnableINTEL { - packed_sad_coefficients: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + q: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - payload: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + o: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, }), - 5802u32 => Ok(ops::Op::SubgroupAvcSicSetBlockBasedRawSkipSadINTEL { - block_based_skip_type: (match operands.next() { + 5931u32 => Ok(ops::Op::FixedSinCosPiINTEL { + input_type: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(self.types.lookup_token(*value)), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - payload: (match operands.next() { + input: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - }), - 5803u32 => Ok(ops::Op::SubgroupAvcSicEvaluateIpeINTEL { - src_image: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + s: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - payload: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + i: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - }), - 5804u32 => Ok(ops::Op::SubgroupAvcSicEvaluateWithSingleReferenceINTEL { - src_image: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + r_i: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - ref_image: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + q: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - payload: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + o: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, }), - 5805u32 => Ok(ops::Op::SubgroupAvcSicEvaluateWithDualReferenceINTEL { - src_image: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + 5932u32 => Ok(ops::Op::FixedLogINTEL { + input_type: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(self.types.lookup_token(*value)), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - fwd_ref_image: (match operands.next() { + input: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - bwd_ref_image: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + s: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - payload: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + i: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - }), - 5806u32 => Ok(ops::Op::SubgroupAvcSicEvaluateWithMultiReferenceINTEL { - src_image: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + r_i: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - packed_reference_ids: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + q: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - payload: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + o: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, }), - 5807u32 => Ok( - ops::Op::SubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL { - src_image: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - packed_reference_ids: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - packed_reference_field_polarities: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - payload: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - }) - .ok_or(OperandError::Missing)?, - }, - ), - 5808u32 => Ok(ops::Op::SubgroupAvcSicConvertToMceResultINTEL { - payload: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + 5933u32 => Ok(ops::Op::FixedExpINTEL { + input_type: (match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(self.types.lookup_token(*value)), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - }), - 5809u32 => Ok(ops::Op::SubgroupAvcSicGetIpeLumaShapeINTEL { - payload: (match operands.next() { + input: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - }), - 5810u32 => Ok(ops::Op::SubgroupAvcSicGetBestIpeLumaDistortionINTEL { - payload: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + s: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - }), - 5811u32 => Ok(ops::Op::SubgroupAvcSicGetBestIpeChromaDistortionINTEL { - payload: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + i: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - }), - 5812u32 => Ok(ops::Op::SubgroupAvcSicGetPackedIpeLumaModesINTEL { - payload: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + r_i: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - }), - 5813u32 => Ok(ops::Op::SubgroupAvcSicGetIpeChromaModeINTEL { - payload: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + q: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, - }), - 5814u32 => Ok(ops::Op::SubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL { - payload: (match operands.next() { - Some(&dr::Operand::IdRef(ref value)) => Some(*value), + o: (match operands.next() { + Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, }), - 5815u32 => Ok(ops::Op::SubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL { - payload: (match operands.next() { + 5934u32 => Ok(ops::Op::PtrCastToCrossWorkgroupINTEL { + pointer: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, }), - 5816u32 => Ok(ops::Op::SubgroupAvcSicGetInterRawSadsINTEL { - payload: (match operands.next() { + 5938u32 => Ok(ops::Op::CrossWorkgroupCastToPtrINTEL { + pointer: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), Some(_) => return Err(OperandError::WrongType.into()), None => None, }) .ok_or(OperandError::Missing)?, }), - 5887u32 => Ok(ops::Op::LoopControlINTEL { - loop_control_parameters: { - let mut vec = Vec::new(); - while let Some(item) = match operands.next() { - Some(&dr::Operand::LiteralInt32(ref value)) => Some(*value), - Some(_) => return Err(OperandError::WrongType.into()), - None => None, - } { - vec.push(item); - } - vec - }, - }), 5946u32 => Ok(ops::Op::ReadPipeBlockingINTEL { packet_size: (match operands.next() { Some(&dr::Operand::IdRef(ref value)) => Some(*value), @@ -8577,6 +11157,27 @@ impl LiftContext { }) .ok_or(OperandError::Missing)?, }), + 6086u32 => Ok(Type::BufferSurfaceINTEL { + access_qualifier: (match operands.next() { + Some(&dr::Operand::AccessQualifier(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + }) + .ok_or(OperandError::Missing)?, + }), + 6090u32 => Ok(Type::StructContinuedINTEL { + member_0_type_member_1_type: { + let mut vec = Vec::new(); + while let Some(item) = match operands.next() { + Some(&dr::Operand::IdRef(ref value)) => Some(*value), + Some(_) => return Err(OperandError::WrongType.into()), + None => None, + } { + vec.push(item); + } + vec + }, + }), _ => Err(InstructionError::WrongOpcode), } } diff --git a/rspirv/lift/mod.rs b/rspirv/lift/mod.rs index b562bd71..5784adbf 100644 --- a/rspirv/lift/mod.rs +++ b/rspirv/lift/mod.rs @@ -304,6 +304,8 @@ impl LiftContext { }) } spirv::Op::ConstantNull => Ok(Constant::Null), + spirv::Op::ConstantCompositeContinuedINTEL + | spirv::Op::SpecConstantCompositeContinuedINTEL => todo!(), _ => Err(InstructionError::WrongOpcode), } } diff --git a/rspirv/sr/autogen_decoration.rs b/rspirv/sr/autogen_decoration.rs index 75831b3c..8e421de3 100644 --- a/rspirv/sr/autogen_decoration.rs +++ b/rspirv/sr/autogen_decoration.rs @@ -70,12 +70,26 @@ pub enum Decoration { RestrictPointerEXT, AliasedPointer, AliasedPointerEXT, + BindlessSamplerNV, + BindlessImageNV, + BoundSamplerNV, + BoundImageNV, + SIMTCallINTEL(u32), ReferencedIndirectlyINTEL, + ClobberINTEL(String), + SideEffectsINTEL, + VectorComputeVariableINTEL, + FuncParamIOKindINTEL(u32), + VectorComputeFunctionINTEL, + StackCallINTEL, + GlobalVariableOffsetINTEL(u32), CounterBuffer(spirv::Word), HlslCounterBufferGOOGLE(spirv::Word), UserSemantic(String), HlslSemanticGOOGLE(String), UserTypeGOOGLE(String), + FunctionRoundingModeINTEL(u32, spirv::FPRoundingMode), + FunctionDenormModeINTEL(u32, spirv::FPDenormMode), RegisterINTEL, MemoryINTEL(String), NumbanksINTEL(u32), @@ -88,4 +102,15 @@ pub enum Decoration { MergeINTEL(String, String), BankBitsINTEL(Vec), ForcePow2DepthINTEL(u32), + BurstCoalesceINTEL, + CacheSizeINTEL(u32), + DontStaticallyCoalesceINTEL, + PrefetchINTEL(u32), + StallEnableINTEL, + FuseLoopsInFunctionINTEL, + BufferLocationINTEL(u32), + IOPipeStorageINTEL(u32), + FunctionFloatingPointModeINTEL(u32, spirv::FPOperationMode), + SingleElementVectorINTEL, + VectorComputeCallableFunctionINTEL, } diff --git a/rspirv/sr/autogen_ops.rs b/rspirv/sr/autogen_ops.rs index 059bc95c..77df5240 100644 --- a/rspirv/sr/autogen_ops.rs +++ b/rspirv/sr/autogen_ops.rs @@ -1365,6 +1365,39 @@ pub enum Op { ConvertUToAccelerationStructureKHR { accel: spirv::Word, }, + SDotKHR { + vector_1: spirv::Word, + vector_2: spirv::Word, + packed_vector_format: Option, + }, + UDotKHR { + vector_1: spirv::Word, + vector_2: spirv::Word, + packed_vector_format: Option, + }, + SUDotKHR { + vector_1: spirv::Word, + vector_2: spirv::Word, + packed_vector_format: Option, + }, + SDotAccSatKHR { + vector_1: spirv::Word, + vector_2: spirv::Word, + accumulator: spirv::Word, + packed_vector_format: Option, + }, + UDotAccSatKHR { + vector_1: spirv::Word, + vector_2: spirv::Word, + accumulator: spirv::Word, + packed_vector_format: Option, + }, + SUDotAccSatKHR { + vector_1: spirv::Word, + vector_2: spirv::Word, + accumulator: spirv::Word, + packed_vector_format: Option, + }, RayQueryInitializeKHR { ray_query: spirv::Word, accel: spirv::Word, @@ -1442,7 +1475,7 @@ pub enum Op { fragment_index: spirv::Word, }, ReadClockKHR { - execution: spirv::Word, + scope: spirv::Word, }, ImageSampleFootprintNV { sampled_image: spirv::Word, @@ -1481,6 +1514,34 @@ pub enum Op { ray_tmax: spirv::Word, payload_id: spirv::Word, }, + TraceMotionNV { + accel: spirv::Word, + ray_flags: spirv::Word, + cull_mask: spirv::Word, + sbt_offset: spirv::Word, + sbt_stride: spirv::Word, + miss_index: spirv::Word, + ray_origin: spirv::Word, + ray_tmin: spirv::Word, + ray_direction: spirv::Word, + ray_tmax: spirv::Word, + time: spirv::Word, + payload_id: spirv::Word, + }, + TraceRayMotionNV { + accel: spirv::Word, + ray_flags: spirv::Word, + cull_mask: spirv::Word, + sbt_offset: spirv::Word, + sbt_stride: spirv::Word, + miss_index: spirv::Word, + ray_origin: spirv::Word, + ray_tmin: spirv::Word, + ray_direction: spirv::Word, + ray_tmax: spirv::Word, + time: spirv::Word, + payload: spirv::Word, + }, TypeAccelerationStructureNV, ExecuteCallableNV { sbt_index: spirv::Word, @@ -1511,6 +1572,27 @@ pub enum Op { EndInvocationInterlockEXT, DemoteToHelperInvocationEXT, IsHelperInvocationEXT, + ConvertUToImageNV { + operand: spirv::Word, + }, + ConvertUToSamplerNV { + operand: spirv::Word, + }, + ConvertImageToUNV { + operand: spirv::Word, + }, + ConvertSamplerToUNV { + operand: spirv::Word, + }, + ConvertUToSampledImageNV { + operand: spirv::Word, + }, + ConvertSampledImageToUNV { + operand: spirv::Word, + }, + SamplerImageAddressingModeNV { + bit_width: u32, + }, SubgroupShuffleINTEL { data: spirv::Word, invocation_id: spirv::Word, @@ -1612,12 +1694,44 @@ pub enum Op { operand_1: spirv::Word, operand_2: spirv::Word, }, - FunctionPointerINTEL { + ConstantFunctionPointerINTEL { function: spirv::Word, }, FunctionPointerCallINTEL { operand_1: Vec, }, + AsmTargetINTEL { + asm_target: String, + }, + AsmINTEL { + asm_type: spirv::Word, + target: spirv::Word, + asm_instructions: String, + constraints: String, + }, + AsmCallINTEL { + asm: spirv::Word, + argument_0: Vec, + }, + AtomicFMinEXT { + pointer: spirv::Word, + memory: spirv::Word, + semantics: spirv::Word, + value: spirv::Word, + }, + AtomicFMaxEXT { + pointer: spirv::Word, + memory: spirv::Word, + semantics: spirv::Word, + value: spirv::Word, + }, + AssumeTrueKHR { + condition: spirv::Word, + }, + ExpectKHR { + value: spirv::Word, + expected_value: spirv::Word, + }, DecorateString { target: spirv::Word, decoration: spirv::Decoration, @@ -2087,9 +2201,456 @@ pub enum Op { SubgroupAvcSicGetInterRawSadsINTEL { payload: spirv::Word, }, + VariableLengthArrayINTEL { + lenght: spirv::Word, + }, + SaveMemoryINTEL, + RestoreMemoryINTEL { + ptr: spirv::Word, + }, + ArbitraryFloatSinCosPiINTEL { + a: spirv::Word, + m1: u32, + mout: u32, + from_sign: u32, + enable_subnormals: u32, + rounding_mode: u32, + rounding_accuracy: u32, + }, + ArbitraryFloatCastINTEL { + a: spirv::Word, + m1: u32, + mout: u32, + enable_subnormals: u32, + rounding_mode: u32, + rounding_accuracy: u32, + }, + ArbitraryFloatCastFromIntINTEL { + a: spirv::Word, + mout: u32, + from_sign: u32, + enable_subnormals: u32, + rounding_mode: u32, + rounding_accuracy: u32, + }, + ArbitraryFloatCastToIntINTEL { + a: spirv::Word, + m1: u32, + enable_subnormals: u32, + rounding_mode: u32, + rounding_accuracy: u32, + }, + ArbitraryFloatAddINTEL { + a: spirv::Word, + m1: u32, + b: spirv::Word, + m2: u32, + mout: u32, + enable_subnormals: u32, + rounding_mode: u32, + rounding_accuracy: u32, + }, + ArbitraryFloatSubINTEL { + a: spirv::Word, + m1: u32, + b: spirv::Word, + m2: u32, + mout: u32, + enable_subnormals: u32, + rounding_mode: u32, + rounding_accuracy: u32, + }, + ArbitraryFloatMulINTEL { + a: spirv::Word, + m1: u32, + b: spirv::Word, + m2: u32, + mout: u32, + enable_subnormals: u32, + rounding_mode: u32, + rounding_accuracy: u32, + }, + ArbitraryFloatDivINTEL { + a: spirv::Word, + m1: u32, + b: spirv::Word, + m2: u32, + mout: u32, + enable_subnormals: u32, + rounding_mode: u32, + rounding_accuracy: u32, + }, + ArbitraryFloatGTINTEL { + a: spirv::Word, + m1: u32, + b: spirv::Word, + m2: u32, + }, + ArbitraryFloatGEINTEL { + a: spirv::Word, + m1: u32, + b: spirv::Word, + m2: u32, + }, + ArbitraryFloatLTINTEL { + a: spirv::Word, + m1: u32, + b: spirv::Word, + m2: u32, + }, + ArbitraryFloatLEINTEL { + a: spirv::Word, + m1: u32, + b: spirv::Word, + m2: u32, + }, + ArbitraryFloatEQINTEL { + a: spirv::Word, + m1: u32, + b: spirv::Word, + m2: u32, + }, + ArbitraryFloatRecipINTEL { + a: spirv::Word, + m1: u32, + mout: u32, + enable_subnormals: u32, + rounding_mode: u32, + rounding_accuracy: u32, + }, + ArbitraryFloatRSqrtINTEL { + a: spirv::Word, + m1: u32, + mout: u32, + enable_subnormals: u32, + rounding_mode: u32, + rounding_accuracy: u32, + }, + ArbitraryFloatCbrtINTEL { + a: spirv::Word, + m1: u32, + mout: u32, + enable_subnormals: u32, + rounding_mode: u32, + rounding_accuracy: u32, + }, + ArbitraryFloatHypotINTEL { + a: spirv::Word, + m1: u32, + b: spirv::Word, + m2: u32, + mout: u32, + enable_subnormals: u32, + rounding_mode: u32, + rounding_accuracy: u32, + }, + ArbitraryFloatSqrtINTEL { + a: spirv::Word, + m1: u32, + mout: u32, + enable_subnormals: u32, + rounding_mode: u32, + rounding_accuracy: u32, + }, + ArbitraryFloatLogINTEL { + a: spirv::Word, + m1: u32, + mout: u32, + enable_subnormals: u32, + rounding_mode: u32, + rounding_accuracy: u32, + }, + ArbitraryFloatLog2INTEL { + a: spirv::Word, + m1: u32, + mout: u32, + enable_subnormals: u32, + rounding_mode: u32, + rounding_accuracy: u32, + }, + ArbitraryFloatLog10INTEL { + a: spirv::Word, + m1: u32, + mout: u32, + enable_subnormals: u32, + rounding_mode: u32, + rounding_accuracy: u32, + }, + ArbitraryFloatLog1pINTEL { + a: spirv::Word, + m1: u32, + mout: u32, + enable_subnormals: u32, + rounding_mode: u32, + rounding_accuracy: u32, + }, + ArbitraryFloatExpINTEL { + a: spirv::Word, + m1: u32, + mout: u32, + enable_subnormals: u32, + rounding_mode: u32, + rounding_accuracy: u32, + }, + ArbitraryFloatExp2INTEL { + a: spirv::Word, + m1: u32, + mout: u32, + enable_subnormals: u32, + rounding_mode: u32, + rounding_accuracy: u32, + }, + ArbitraryFloatExp10INTEL { + a: spirv::Word, + m1: u32, + mout: u32, + enable_subnormals: u32, + rounding_mode: u32, + rounding_accuracy: u32, + }, + ArbitraryFloatExpm1INTEL { + a: spirv::Word, + m1: u32, + mout: u32, + enable_subnormals: u32, + rounding_mode: u32, + rounding_accuracy: u32, + }, + ArbitraryFloatSinINTEL { + a: spirv::Word, + m1: u32, + mout: u32, + enable_subnormals: u32, + rounding_mode: u32, + rounding_accuracy: u32, + }, + ArbitraryFloatCosINTEL { + a: spirv::Word, + m1: u32, + mout: u32, + enable_subnormals: u32, + rounding_mode: u32, + rounding_accuracy: u32, + }, + ArbitraryFloatSinCosINTEL { + a: spirv::Word, + m1: u32, + mout: u32, + enable_subnormals: u32, + rounding_mode: u32, + rounding_accuracy: u32, + }, + ArbitraryFloatSinPiINTEL { + a: spirv::Word, + m1: u32, + mout: u32, + enable_subnormals: u32, + rounding_mode: u32, + rounding_accuracy: u32, + }, + ArbitraryFloatCosPiINTEL { + a: spirv::Word, + m1: u32, + mout: u32, + enable_subnormals: u32, + rounding_mode: u32, + rounding_accuracy: u32, + }, + ArbitraryFloatASinINTEL { + a: spirv::Word, + m1: u32, + mout: u32, + enable_subnormals: u32, + rounding_mode: u32, + rounding_accuracy: u32, + }, + ArbitraryFloatASinPiINTEL { + a: spirv::Word, + m1: u32, + mout: u32, + enable_subnormals: u32, + rounding_mode: u32, + rounding_accuracy: u32, + }, + ArbitraryFloatACosINTEL { + a: spirv::Word, + m1: u32, + mout: u32, + enable_subnormals: u32, + rounding_mode: u32, + rounding_accuracy: u32, + }, + ArbitraryFloatACosPiINTEL { + a: spirv::Word, + m1: u32, + mout: u32, + enable_subnormals: u32, + rounding_mode: u32, + rounding_accuracy: u32, + }, + ArbitraryFloatATanINTEL { + a: spirv::Word, + m1: u32, + mout: u32, + enable_subnormals: u32, + rounding_mode: u32, + rounding_accuracy: u32, + }, + ArbitraryFloatATanPiINTEL { + a: spirv::Word, + m1: u32, + mout: u32, + enable_subnormals: u32, + rounding_mode: u32, + rounding_accuracy: u32, + }, + ArbitraryFloatATan2INTEL { + a: spirv::Word, + m1: u32, + b: spirv::Word, + m2: u32, + mout: u32, + enable_subnormals: u32, + rounding_mode: u32, + rounding_accuracy: u32, + }, + ArbitraryFloatPowINTEL { + a: spirv::Word, + m1: u32, + b: spirv::Word, + m2: u32, + mout: u32, + enable_subnormals: u32, + rounding_mode: u32, + rounding_accuracy: u32, + }, + ArbitraryFloatPowRINTEL { + a: spirv::Word, + m1: u32, + b: spirv::Word, + m2: u32, + mout: u32, + enable_subnormals: u32, + rounding_mode: u32, + rounding_accuracy: u32, + }, + ArbitraryFloatPowNINTEL { + a: spirv::Word, + m1: u32, + b: spirv::Word, + mout: u32, + enable_subnormals: u32, + rounding_mode: u32, + rounding_accuracy: u32, + }, LoopControlINTEL { loop_control_parameters: Vec, }, + FixedSqrtINTEL { + input_type: Token, + input: spirv::Word, + s: u32, + i: u32, + r_i: u32, + q: u32, + o: u32, + }, + FixedRecipINTEL { + input_type: Token, + input: spirv::Word, + s: u32, + i: u32, + r_i: u32, + q: u32, + o: u32, + }, + FixedRsqrtINTEL { + input_type: Token, + input: spirv::Word, + s: u32, + i: u32, + r_i: u32, + q: u32, + o: u32, + }, + FixedSinINTEL { + input_type: Token, + input: spirv::Word, + s: u32, + i: u32, + r_i: u32, + q: u32, + o: u32, + }, + FixedCosINTEL { + input_type: Token, + input: spirv::Word, + s: u32, + i: u32, + r_i: u32, + q: u32, + o: u32, + }, + FixedSinCosINTEL { + input_type: Token, + input: spirv::Word, + s: u32, + i: u32, + r_i: u32, + q: u32, + o: u32, + }, + FixedSinPiINTEL { + input_type: Token, + input: spirv::Word, + s: u32, + i: u32, + r_i: u32, + q: u32, + o: u32, + }, + FixedCosPiINTEL { + input_type: Token, + input: spirv::Word, + s: u32, + i: u32, + r_i: u32, + q: u32, + o: u32, + }, + FixedSinCosPiINTEL { + input_type: Token, + input: spirv::Word, + s: u32, + i: u32, + r_i: u32, + q: u32, + o: u32, + }, + FixedLogINTEL { + input_type: Token, + input: spirv::Word, + s: u32, + i: u32, + r_i: u32, + q: u32, + o: u32, + }, + FixedExpINTEL { + input_type: Token, + input: spirv::Word, + s: u32, + i: u32, + r_i: u32, + q: u32, + o: u32, + }, + PtrCastToCrossWorkgroupINTEL { + pointer: spirv::Word, + }, + CrossWorkgroupCastToPtrINTEL { + pointer: spirv::Word, + }, ReadPipeBlockingINTEL { packet_size: spirv::Word, packet_alignment: spirv::Word, diff --git a/rspirv/sr/autogen_types.rs b/rspirv/sr/autogen_types.rs index cd371d28..325f8c9a 100644 --- a/rspirv/sr/autogen_types.rs +++ b/rspirv/sr/autogen_types.rs @@ -78,4 +78,10 @@ pub enum Type { rows: spirv::Word, columns: spirv::Word, }, + BufferSurfaceINTEL { + access_qualifier: spirv::AccessQualifier, + }, + StructContinuedINTEL { + member_0_type_member_1_type: Vec, + }, } diff --git a/spirv/Cargo.toml b/spirv/Cargo.toml index 3596ec7a..fdc732ec 100644 --- a/spirv/Cargo.toml +++ b/spirv/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "spirv" -version = "0.2.0+1.5.4" +version = "0.2.0+sdk-1.2.198" authors = ["Lei Zhang "] edition = "2018" diff --git a/spirv/README.md b/spirv/README.md index 540854da..9c7b8db0 100644 --- a/spirv/README.md +++ b/spirv/README.md @@ -18,7 +18,7 @@ First add to your `Cargo.toml`: ```toml [dependencies] -spirv = "0.2.0+1.5.4" +spirv = "0.2.0+sdk-1.2.198" ``` Version diff --git a/spirv/autogen_spirv.rs b/spirv/autogen_spirv.rs index 58c219ae..f8c1dbc7 100644 --- a/spirv/autogen_spirv.rs +++ b/spirv/autogen_spirv.rs @@ -7,11 +7,11 @@ pub const MAGIC_NUMBER: u32 = 0x07230203; pub const MAJOR_VERSION: u8 = 1u8; pub const MINOR_VERSION: u8 = 5u8; pub const REVISION: u8 = 4u8; -bitflags! { # [doc = "SPIR-V operand kind: [ImageOperands](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_image_operands_a_image_operands)"] # [cfg_attr (feature = "serialize" , derive (serde :: Serialize))] # [cfg_attr (feature = "deserialize" , derive (serde :: Deserialize))] pub struct ImageOperands : u32 { const NONE = 0u32 ; const BIAS = 1u32 ; const LOD = 2u32 ; const GRAD = 4u32 ; const CONST_OFFSET = 8u32 ; const OFFSET = 16u32 ; const CONST_OFFSETS = 32u32 ; const SAMPLE = 64u32 ; const MIN_LOD = 128u32 ; const MAKE_TEXEL_AVAILABLE = 256u32 ; const MAKE_TEXEL_AVAILABLE_KHR = 256u32 ; const MAKE_TEXEL_VISIBLE = 512u32 ; const MAKE_TEXEL_VISIBLE_KHR = 512u32 ; const NON_PRIVATE_TEXEL = 1024u32 ; const NON_PRIVATE_TEXEL_KHR = 1024u32 ; const VOLATILE_TEXEL = 2048u32 ; const VOLATILE_TEXEL_KHR = 2048u32 ; const SIGN_EXTEND = 4096u32 ; const ZERO_EXTEND = 8192u32 ; } } -bitflags! { # [doc = "SPIR-V operand kind: [FPFastMathMode](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_fp_fast_math_mode_a_fp_fast_math_mode)"] # [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 ; } } +bitflags! { # [doc = "SPIR-V operand kind: [ImageOperands](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_image_operands_a_image_operands)"] # [cfg_attr (feature = "serialize" , derive (serde :: Serialize))] # [cfg_attr (feature = "deserialize" , derive (serde :: Deserialize))] pub struct ImageOperands : u32 { const NONE = 0u32 ; const BIAS = 1u32 ; const LOD = 2u32 ; const GRAD = 4u32 ; const CONST_OFFSET = 8u32 ; const OFFSET = 16u32 ; const CONST_OFFSETS = 32u32 ; const SAMPLE = 64u32 ; const MIN_LOD = 128u32 ; const MAKE_TEXEL_AVAILABLE = 256u32 ; const MAKE_TEXEL_AVAILABLE_KHR = 256u32 ; const MAKE_TEXEL_VISIBLE = 512u32 ; const MAKE_TEXEL_VISIBLE_KHR = 512u32 ; const NON_PRIVATE_TEXEL = 1024u32 ; const NON_PRIVATE_TEXEL_KHR = 1024u32 ; const VOLATILE_TEXEL = 2048u32 ; const VOLATILE_TEXEL_KHR = 2048u32 ; const SIGN_EXTEND = 4096u32 ; const ZERO_EXTEND = 8192u32 ; const OFFSETS = 65536u32 ; } } +bitflags! { # [doc = "SPIR-V operand kind: [FPFastMathMode](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_fp_fast_math_mode_a_fp_fast_math_mode)"] # [cfg_attr (feature = "serialize" , derive (serde :: Serialize))] # [cfg_attr (feature = "deserialize" , derive (serde :: Deserialize))] pub struct FPFastMathMode : u32 { const NONE = 0u32 ; const NOT_NAN = 1u32 ; const NOT_INF = 2u32 ; const NSZ = 4u32 ; const ALLOW_RECIP = 8u32 ; const FAST = 16u32 ; const ALLOW_CONTRACT_FAST_INTEL = 65536u32 ; const ALLOW_REASSOC_INTEL = 131072u32 ; } } bitflags! { # [doc = "SPIR-V operand kind: [SelectionControl](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_selection_control_a_selection_control)"] # [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 ; } } -bitflags! { # [doc = "SPIR-V operand kind: [LoopControl](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_loop_control_a_loop_control)"] # [cfg_attr (feature = "serialize" , derive (serde :: Serialize))] # [cfg_attr (feature = "deserialize" , derive (serde :: Deserialize))] pub struct LoopControl : u32 { const NONE = 0u32 ; const UNROLL = 1u32 ; const DONT_UNROLL = 2u32 ; const DEPENDENCY_INFINITE = 4u32 ; const DEPENDENCY_LENGTH = 8u32 ; const MIN_ITERATIONS = 16u32 ; const MAX_ITERATIONS = 32u32 ; const ITERATION_MULTIPLE = 64u32 ; const PEEL_COUNT = 128u32 ; const PARTIAL_COUNT = 256u32 ; const INITIATION_INTERVAL_INTEL = 65536u32 ; const MAX_CONCURRENCY_INTEL = 131072u32 ; const DEPENDENCY_ARRAY_INTEL = 262144u32 ; const PIPELINE_ENABLE_INTEL = 524288u32 ; const LOOP_COALESCE_INTEL = 1048576u32 ; const MAX_INTERLEAVING_INTEL = 2097152u32 ; const SPECULATED_ITERATIONS_INTEL = 4194304u32 ; } } -bitflags! { # [doc = "SPIR-V operand kind: [FunctionControl](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_function_control_a_function_control)"] # [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 ; } } +bitflags! { # [doc = "SPIR-V operand kind: [LoopControl](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_loop_control_a_loop_control)"] # [cfg_attr (feature = "serialize" , derive (serde :: Serialize))] # [cfg_attr (feature = "deserialize" , derive (serde :: Deserialize))] pub struct LoopControl : u32 { const NONE = 0u32 ; const UNROLL = 1u32 ; const DONT_UNROLL = 2u32 ; const DEPENDENCY_INFINITE = 4u32 ; const DEPENDENCY_LENGTH = 8u32 ; const MIN_ITERATIONS = 16u32 ; const MAX_ITERATIONS = 32u32 ; const ITERATION_MULTIPLE = 64u32 ; const PEEL_COUNT = 128u32 ; const PARTIAL_COUNT = 256u32 ; const INITIATION_INTERVAL_INTEL = 65536u32 ; const MAX_CONCURRENCY_INTEL = 131072u32 ; const DEPENDENCY_ARRAY_INTEL = 262144u32 ; const PIPELINE_ENABLE_INTEL = 524288u32 ; const LOOP_COALESCE_INTEL = 1048576u32 ; const MAX_INTERLEAVING_INTEL = 2097152u32 ; const SPECULATED_ITERATIONS_INTEL = 4194304u32 ; const NO_FUSION_INTEL = 8388608u32 ; } } +bitflags! { # [doc = "SPIR-V operand kind: [FunctionControl](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_function_control_a_function_control)"] # [cfg_attr (feature = "serialize" , derive (serde :: Serialize))] # [cfg_attr (feature = "deserialize" , derive (serde :: Deserialize))] pub struct FunctionControl : u32 { const NONE = 0u32 ; const INLINE = 1u32 ; const DONT_INLINE = 2u32 ; const PURE = 4u32 ; const CONST = 8u32 ; const OPT_NONE_INTEL = 65536u32 ; } } bitflags! { # [doc = "SPIR-V operand kind: [MemorySemantics](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_memory_semantics_a_memory_semantics)"] # [cfg_attr (feature = "serialize" , derive (serde :: Serialize))] # [cfg_attr (feature = "deserialize" , derive (serde :: Deserialize))] pub struct MemorySemantics : u32 { const RELAXED = 0u32 ; const NONE = 0u32 ; const ACQUIRE = 2u32 ; const RELEASE = 4u32 ; const ACQUIRE_RELEASE = 8u32 ; const SEQUENTIALLY_CONSISTENT = 16u32 ; const UNIFORM_MEMORY = 64u32 ; const SUBGROUP_MEMORY = 128u32 ; const WORKGROUP_MEMORY = 256u32 ; const CROSS_WORKGROUP_MEMORY = 512u32 ; const ATOMIC_COUNTER_MEMORY = 1024u32 ; const IMAGE_MEMORY = 2048u32 ; const OUTPUT_MEMORY = 4096u32 ; const OUTPUT_MEMORY_KHR = 4096u32 ; const MAKE_AVAILABLE = 8192u32 ; const MAKE_AVAILABLE_KHR = 8192u32 ; const MAKE_VISIBLE = 16384u32 ; const MAKE_VISIBLE_KHR = 16384u32 ; const VOLATILE = 32768u32 ; } } bitflags! { # [doc = "SPIR-V operand kind: [MemoryAccess](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_memory_access_a_memory_access)"] # [cfg_attr (feature = "serialize" , derive (serde :: Serialize))] # [cfg_attr (feature = "deserialize" , derive (serde :: Deserialize))] pub struct MemoryAccess : u32 { const NONE = 0u32 ; const VOLATILE = 1u32 ; const ALIGNED = 2u32 ; const NONTEMPORAL = 4u32 ; const MAKE_POINTER_AVAILABLE = 8u32 ; const MAKE_POINTER_AVAILABLE_KHR = 8u32 ; const MAKE_POINTER_VISIBLE = 16u32 ; const MAKE_POINTER_VISIBLE_KHR = 16u32 ; const NON_PRIVATE_POINTER = 32u32 ; const NON_PRIVATE_POINTER_KHR = 32u32 ; } } bitflags! { # [doc = "SPIR-V operand kind: [KernelProfilingInfo](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_kernel_profiling_info_a_kernel_profiling_info)"] # [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 ; } } @@ -30,11 +30,12 @@ pub enum SourceLanguage { OpenCL_C = 3u32, OpenCL_CPP = 4u32, HLSL = 5u32, + CPP_for_OpenCL = 6u32, } impl SourceLanguage { pub fn from_u32(n: u32) -> Option { Some(match n { - 0u32..=5u32 => unsafe { core::mem::transmute::(n) }, + 0u32..=6u32 => unsafe { core::mem::transmute::(n) }, _ => return None, }) } @@ -51,6 +52,7 @@ impl core::str::FromStr for SourceLanguage { "OpenCL_C" => Ok(Self::OpenCL_C), "OpenCL_CPP" => Ok(Self::OpenCL_CPP), "HLSL" => Ok(Self::HLSL), + "CPP_for_OpenCL" => Ok(Self::CPP_for_OpenCL), _ => Err(()), } } @@ -246,6 +248,7 @@ pub enum ExecutionMode { SubgroupsPerWorkgroupId = 37u32, LocalSizeId = 38u32, LocalSizeHintId = 39u32, + SubgroupUniformControlFlowKHR = 4421u32, PostDepthCoverage = 4446u32, DenormPreserve = 4459u32, DenormFlushToZero = 4460u32, @@ -264,10 +267,16 @@ pub enum ExecutionMode { SampleInterlockUnorderedEXT = 5369u32, ShadingRateInterlockOrderedEXT = 5370u32, ShadingRateInterlockUnorderedEXT = 5371u32, + SharedLocalMemorySizeINTEL = 5618u32, + RoundingModeRTPINTEL = 5620u32, + RoundingModeRTNINTEL = 5621u32, + FloatingPointModeALTINTEL = 5622u32, + FloatingPointModeIEEEINTEL = 5623u32, MaxWorkgroupSizeINTEL = 5893u32, MaxWorkDimINTEL = 5894u32, NoGlobalOffsetINTEL = 5895u32, NumSIMDWorkitemsINTEL = 5896u32, + SchedulerTargetFmaxMhzINTEL = 5903u32, } impl ExecutionMode { pub fn from_u32(n: u32) -> Option { @@ -275,6 +284,7 @@ impl ExecutionMode { 0u32..=12u32 => unsafe { core::mem::transmute::(n) }, 14u32..=31u32 => unsafe { core::mem::transmute::(n) }, 33u32..=39u32 => unsafe { core::mem::transmute::(n) }, + 4421u32 => unsafe { core::mem::transmute::(4421u32) }, 4446u32 => unsafe { core::mem::transmute::(4446u32) }, 4459u32..=4463u32 => unsafe { core::mem::transmute::(n) }, 5027u32 => unsafe { core::mem::transmute::(5027u32) }, @@ -282,7 +292,10 @@ impl ExecutionMode { 5289u32..=5290u32 => unsafe { core::mem::transmute::(n) }, 5298u32 => unsafe { core::mem::transmute::(5298u32) }, 5366u32..=5371u32 => unsafe { core::mem::transmute::(n) }, + 5618u32 => unsafe { core::mem::transmute::(5618u32) }, + 5620u32..=5623u32 => unsafe { core::mem::transmute::(n) }, 5893u32..=5896u32 => unsafe { core::mem::transmute::(n) }, + 5903u32 => unsafe { core::mem::transmute::(5903u32) }, _ => return None, }) } @@ -331,6 +344,7 @@ impl core::str::FromStr for ExecutionMode { "SubgroupsPerWorkgroupId" => Ok(Self::SubgroupsPerWorkgroupId), "LocalSizeId" => Ok(Self::LocalSizeId), "LocalSizeHintId" => Ok(Self::LocalSizeHintId), + "SubgroupUniformControlFlowKHR" => Ok(Self::SubgroupUniformControlFlowKHR), "PostDepthCoverage" => Ok(Self::PostDepthCoverage), "DenormPreserve" => Ok(Self::DenormPreserve), "DenormFlushToZero" => Ok(Self::DenormFlushToZero), @@ -349,10 +363,16 @@ impl core::str::FromStr for ExecutionMode { "SampleInterlockUnorderedEXT" => Ok(Self::SampleInterlockUnorderedEXT), "ShadingRateInterlockOrderedEXT" => Ok(Self::ShadingRateInterlockOrderedEXT), "ShadingRateInterlockUnorderedEXT" => Ok(Self::ShadingRateInterlockUnorderedEXT), + "SharedLocalMemorySizeINTEL" => Ok(Self::SharedLocalMemorySizeINTEL), + "RoundingModeRTPINTEL" => Ok(Self::RoundingModeRTPINTEL), + "RoundingModeRTNINTEL" => Ok(Self::RoundingModeRTNINTEL), + "FloatingPointModeALTINTEL" => Ok(Self::FloatingPointModeALTINTEL), + "FloatingPointModeIEEEINTEL" => Ok(Self::FloatingPointModeIEEEINTEL), "MaxWorkgroupSizeINTEL" => Ok(Self::MaxWorkgroupSizeINTEL), "MaxWorkDimINTEL" => Ok(Self::MaxWorkDimINTEL), "NoGlobalOffsetINTEL" => Ok(Self::NoGlobalOffsetINTEL), "NumSIMDWorkitemsINTEL" => Ok(Self::NumSIMDWorkitemsINTEL), + "SchedulerTargetFmaxMhzINTEL" => Ok(Self::SchedulerTargetFmaxMhzINTEL), _ => Err(()), } } @@ -385,6 +405,8 @@ pub enum StorageClass { ShaderRecordBufferNV = 5343u32, PhysicalStorageBuffer = 5349u32, CodeSectionINTEL = 5605u32, + DeviceOnlyINTEL = 5936u32, + HostOnlyINTEL = 5937u32, } impl StorageClass { pub fn from_u32(n: u32) -> Option { @@ -395,6 +417,7 @@ impl StorageClass { 5342u32..=5343u32 => unsafe { core::mem::transmute::(n) }, 5349u32 => unsafe { core::mem::transmute::(5349u32) }, 5605u32 => unsafe { core::mem::transmute::(5605u32) }, + 5936u32..=5937u32 => unsafe { core::mem::transmute::(n) }, _ => return None, }) } @@ -441,6 +464,8 @@ impl core::str::FromStr for StorageClass { "PhysicalStorageBuffer" => Ok(Self::PhysicalStorageBuffer), "PhysicalStorageBufferEXT" => Ok(Self::PhysicalStorageBuffer), "CodeSectionINTEL" => Ok(Self::CodeSectionINTEL), + "DeviceOnlyINTEL" => Ok(Self::DeviceOnlyINTEL), + "HostOnlyINTEL" => Ok(Self::HostOnlyINTEL), _ => Err(()), } } @@ -821,6 +846,142 @@ impl core::str::FromStr for FPRoundingMode { } } } +#[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)"] +#[repr(u32)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] +#[cfg_attr(feature = "serialize", derive(serde::Serialize))] +#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] +#[allow(clippy::upper_case_acronyms)] +pub enum FPDenormMode { + Preserve = 0u32, + FlushToZero = 1u32, +} +impl FPDenormMode { + pub fn from_u32(n: u32) -> Option { + Some(match n { + 0u32..=1u32 => unsafe { core::mem::transmute::(n) }, + _ => return None, + }) + } +} +#[allow(non_upper_case_globals)] +impl FPDenormMode {} +impl core::str::FromStr for FPDenormMode { + type Err = (); + fn from_str(s: &str) -> Result { + match s { + "Preserve" => Ok(Self::Preserve), + "FlushToZero" => Ok(Self::FlushToZero), + _ => Err(()), + } + } +} +#[doc = "SPIR-V operand kind: [QuantizationModes](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_quantization_modes_a_quantization_modes)"] +#[repr(u32)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] +#[cfg_attr(feature = "serialize", derive(serde::Serialize))] +#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] +#[allow(clippy::upper_case_acronyms)] +pub enum QuantizationModes { + TRN = 0u32, + TRN_ZERO = 1u32, + RND = 2u32, + RND_ZERO = 3u32, + RND_INF = 4u32, + RND_MIN_INF = 5u32, + RND_CONV = 6u32, + RND_CONV_ODD = 7u32, +} +impl QuantizationModes { + pub fn from_u32(n: u32) -> Option { + Some(match n { + 0u32..=7u32 => unsafe { core::mem::transmute::(n) }, + _ => return None, + }) + } +} +#[allow(non_upper_case_globals)] +impl QuantizationModes {} +impl core::str::FromStr for QuantizationModes { + type Err = (); + fn from_str(s: &str) -> Result { + match s { + "TRN" => Ok(Self::TRN), + "TRN_ZERO" => Ok(Self::TRN_ZERO), + "RND" => Ok(Self::RND), + "RND_ZERO" => Ok(Self::RND_ZERO), + "RND_INF" => Ok(Self::RND_INF), + "RND_MIN_INF" => Ok(Self::RND_MIN_INF), + "RND_CONV" => Ok(Self::RND_CONV), + "RND_CONV_ODD" => Ok(Self::RND_CONV_ODD), + _ => Err(()), + } + } +} +#[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)"] +#[repr(u32)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] +#[cfg_attr(feature = "serialize", derive(serde::Serialize))] +#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] +#[allow(clippy::upper_case_acronyms)] +pub enum FPOperationMode { + IEEE = 0u32, + ALT = 1u32, +} +impl FPOperationMode { + pub fn from_u32(n: u32) -> Option { + Some(match n { + 0u32..=1u32 => unsafe { core::mem::transmute::(n) }, + _ => return None, + }) + } +} +#[allow(non_upper_case_globals)] +impl FPOperationMode {} +impl core::str::FromStr for FPOperationMode { + type Err = (); + fn from_str(s: &str) -> Result { + match s { + "IEEE" => Ok(Self::IEEE), + "ALT" => Ok(Self::ALT), + _ => Err(()), + } + } +} +#[doc = "SPIR-V operand kind: [OverflowModes](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_overflow_modes_a_overflow_modes)"] +#[repr(u32)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] +#[cfg_attr(feature = "serialize", derive(serde::Serialize))] +#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] +#[allow(clippy::upper_case_acronyms)] +pub enum OverflowModes { + WRAP = 0u32, + SAT = 1u32, + SAT_ZERO = 2u32, + SAT_SYM = 3u32, +} +impl OverflowModes { + pub fn from_u32(n: u32) -> Option { + Some(match n { + 0u32..=3u32 => unsafe { core::mem::transmute::(n) }, + _ => return None, + }) + } +} +#[allow(non_upper_case_globals)] +impl OverflowModes {} +impl core::str::FromStr for OverflowModes { + type Err = (); + fn from_str(s: &str) -> Result { + match s { + "WRAP" => Ok(Self::WRAP), + "SAT" => Ok(Self::SAT), + "SAT_ZERO" => Ok(Self::SAT_ZERO), + "SAT_SYM" => Ok(Self::SAT_SYM), + _ => Err(()), + } + } +} #[doc = "SPIR-V operand kind: [LinkageType](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_linkage_type_a_linkage_type)"] #[repr(u32)] #[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] @@ -830,11 +991,12 @@ impl core::str::FromStr for FPRoundingMode { pub enum LinkageType { Export = 0u32, Import = 1u32, + LinkOnceODR = 2u32, } impl LinkageType { pub fn from_u32(n: u32) -> Option { Some(match n { - 0u32..=1u32 => unsafe { core::mem::transmute::(n) }, + 0u32..=2u32 => unsafe { core::mem::transmute::(n) }, _ => return None, }) } @@ -847,6 +1009,7 @@ impl core::str::FromStr for LinkageType { match s { "Export" => Ok(Self::Export), "Import" => Ok(Self::Import), + "LinkOnceODR" => Ok(Self::LinkOnceODR), _ => Err(()), } } @@ -993,10 +1156,24 @@ pub enum Decoration { NonUniform = 5300u32, RestrictPointer = 5355u32, AliasedPointer = 5356u32, + BindlessSamplerNV = 5398u32, + BindlessImageNV = 5399u32, + BoundSamplerNV = 5400u32, + BoundImageNV = 5401u32, + SIMTCallINTEL = 5599u32, ReferencedIndirectlyINTEL = 5602u32, + ClobberINTEL = 5607u32, + SideEffectsINTEL = 5608u32, + VectorComputeVariableINTEL = 5624u32, + FuncParamIOKindINTEL = 5625u32, + VectorComputeFunctionINTEL = 5626u32, + StackCallINTEL = 5627u32, + GlobalVariableOffsetINTEL = 5628u32, CounterBuffer = 5634u32, UserSemantic = 5635u32, UserTypeGOOGLE = 5636u32, + FunctionRoundingModeINTEL = 5822u32, + FunctionDenormModeINTEL = 5823u32, RegisterINTEL = 5825u32, MemoryINTEL = 5826u32, NumbanksINTEL = 5827u32, @@ -1009,6 +1186,17 @@ pub enum Decoration { MergeINTEL = 5834u32, BankBitsINTEL = 5835u32, ForcePow2DepthINTEL = 5836u32, + BurstCoalesceINTEL = 5899u32, + CacheSizeINTEL = 5900u32, + DontStaticallyCoalesceINTEL = 5901u32, + PrefetchINTEL = 5902u32, + StallEnableINTEL = 5905u32, + FuseLoopsInFunctionINTEL = 5907u32, + BufferLocationINTEL = 5921u32, + IOPipeStorageINTEL = 5944u32, + FunctionFloatingPointModeINTEL = 6080u32, + SingleElementVectorINTEL = 6085u32, + VectorComputeCallableFunctionINTEL = 6087u32, } impl Decoration { pub fn from_u32(n: u32) -> Option { @@ -1025,9 +1213,22 @@ impl Decoration { 5285u32 => unsafe { core::mem::transmute::(5285u32) }, 5300u32 => unsafe { core::mem::transmute::(5300u32) }, 5355u32..=5356u32 => unsafe { core::mem::transmute::(n) }, + 5398u32..=5401u32 => unsafe { core::mem::transmute::(n) }, + 5599u32 => unsafe { core::mem::transmute::(5599u32) }, 5602u32 => unsafe { core::mem::transmute::(5602u32) }, + 5607u32..=5608u32 => unsafe { core::mem::transmute::(n) }, + 5624u32..=5628u32 => unsafe { core::mem::transmute::(n) }, 5634u32..=5636u32 => unsafe { core::mem::transmute::(n) }, + 5822u32..=5823u32 => unsafe { core::mem::transmute::(n) }, 5825u32..=5836u32 => unsafe { core::mem::transmute::(n) }, + 5899u32..=5902u32 => unsafe { core::mem::transmute::(n) }, + 5905u32 => unsafe { core::mem::transmute::(5905u32) }, + 5907u32 => unsafe { core::mem::transmute::(5907u32) }, + 5921u32 => unsafe { core::mem::transmute::(5921u32) }, + 5944u32 => unsafe { core::mem::transmute::(5944u32) }, + 6080u32 => unsafe { core::mem::transmute::(6080u32) }, + 6085u32 => unsafe { core::mem::transmute::(6085u32) }, + 6087u32 => unsafe { core::mem::transmute::(6087u32) }, _ => return None, }) } @@ -1108,12 +1309,26 @@ impl core::str::FromStr for Decoration { "RestrictPointerEXT" => Ok(Self::RestrictPointer), "AliasedPointer" => Ok(Self::AliasedPointer), "AliasedPointerEXT" => Ok(Self::AliasedPointer), + "BindlessSamplerNV" => Ok(Self::BindlessSamplerNV), + "BindlessImageNV" => Ok(Self::BindlessImageNV), + "BoundSamplerNV" => Ok(Self::BoundSamplerNV), + "BoundImageNV" => Ok(Self::BoundImageNV), + "SIMTCallINTEL" => Ok(Self::SIMTCallINTEL), "ReferencedIndirectlyINTEL" => Ok(Self::ReferencedIndirectlyINTEL), + "ClobberINTEL" => Ok(Self::ClobberINTEL), + "SideEffectsINTEL" => Ok(Self::SideEffectsINTEL), + "VectorComputeVariableINTEL" => Ok(Self::VectorComputeVariableINTEL), + "FuncParamIOKindINTEL" => Ok(Self::FuncParamIOKindINTEL), + "VectorComputeFunctionINTEL" => Ok(Self::VectorComputeFunctionINTEL), + "StackCallINTEL" => Ok(Self::StackCallINTEL), + "GlobalVariableOffsetINTEL" => Ok(Self::GlobalVariableOffsetINTEL), "CounterBuffer" => Ok(Self::CounterBuffer), "HlslCounterBufferGOOGLE" => Ok(Self::CounterBuffer), "UserSemantic" => Ok(Self::UserSemantic), "HlslSemanticGOOGLE" => Ok(Self::UserSemantic), "UserTypeGOOGLE" => Ok(Self::UserTypeGOOGLE), + "FunctionRoundingModeINTEL" => Ok(Self::FunctionRoundingModeINTEL), + "FunctionDenormModeINTEL" => Ok(Self::FunctionDenormModeINTEL), "RegisterINTEL" => Ok(Self::RegisterINTEL), "MemoryINTEL" => Ok(Self::MemoryINTEL), "NumbanksINTEL" => Ok(Self::NumbanksINTEL), @@ -1126,6 +1341,17 @@ impl core::str::FromStr for Decoration { "MergeINTEL" => Ok(Self::MergeINTEL), "BankBitsINTEL" => Ok(Self::BankBitsINTEL), "ForcePow2DepthINTEL" => Ok(Self::ForcePow2DepthINTEL), + "BurstCoalesceINTEL" => Ok(Self::BurstCoalesceINTEL), + "CacheSizeINTEL" => Ok(Self::CacheSizeINTEL), + "DontStaticallyCoalesceINTEL" => Ok(Self::DontStaticallyCoalesceINTEL), + "PrefetchINTEL" => Ok(Self::PrefetchINTEL), + "StallEnableINTEL" => Ok(Self::StallEnableINTEL), + "FuseLoopsInFunctionINTEL" => Ok(Self::FuseLoopsInFunctionINTEL), + "BufferLocationINTEL" => Ok(Self::BufferLocationINTEL), + "IOPipeStorageINTEL" => Ok(Self::IOPipeStorageINTEL), + "FunctionFloatingPointModeINTEL" => Ok(Self::FunctionFloatingPointModeINTEL), + "SingleElementVectorINTEL" => Ok(Self::SingleElementVectorINTEL), + "VectorComputeCallableFunctionINTEL" => Ok(Self::VectorComputeCallableFunctionINTEL), _ => Err(()), } } @@ -1229,6 +1455,7 @@ pub enum BuiltIn { WorldToObjectNV = 5331u32, HitTNV = 5332u32, HitKindNV = 5333u32, + CurrentRayTimeNV = 5334u32, IncomingRayFlagsNV = 5351u32, RayGeometryIndexKHR = 5352u32, WarpsPerSMNV = 5374u32, @@ -1259,7 +1486,7 @@ impl BuiltIn { 5286u32..=5287u32 => unsafe { core::mem::transmute::(n) }, 5292u32..=5293u32 => unsafe { core::mem::transmute::(n) }, 5319u32..=5327u32 => unsafe { core::mem::transmute::(n) }, - 5330u32..=5333u32 => unsafe { core::mem::transmute::(n) }, + 5330u32..=5334u32 => unsafe { core::mem::transmute::(n) }, 5351u32..=5352u32 => unsafe { core::mem::transmute::(n) }, 5374u32..=5377u32 => unsafe { core::mem::transmute::(n) }, _ => return None, @@ -1335,14 +1562,14 @@ impl core::str::FromStr for BuiltIn { "VertexIndex" => Ok(Self::VertexIndex), "InstanceIndex" => Ok(Self::InstanceIndex), "SubgroupEqMask" => Ok(Self::SubgroupEqMask), - "SubgroupGeMask" => Ok(Self::SubgroupGeMask), - "SubgroupGtMask" => Ok(Self::SubgroupGtMask), - "SubgroupLeMask" => Ok(Self::SubgroupLeMask), - "SubgroupLtMask" => Ok(Self::SubgroupLtMask), "SubgroupEqMaskKHR" => Ok(Self::SubgroupEqMask), + "SubgroupGeMask" => Ok(Self::SubgroupGeMask), "SubgroupGeMaskKHR" => Ok(Self::SubgroupGeMask), + "SubgroupGtMask" => Ok(Self::SubgroupGtMask), "SubgroupGtMaskKHR" => Ok(Self::SubgroupGtMask), + "SubgroupLeMask" => Ok(Self::SubgroupLeMask), "SubgroupLeMaskKHR" => Ok(Self::SubgroupLeMask), + "SubgroupLtMask" => Ok(Self::SubgroupLtMask), "SubgroupLtMaskKHR" => Ok(Self::SubgroupLtMask), "BaseVertex" => Ok(Self::BaseVertex), "BaseInstance" => Ok(Self::BaseInstance), @@ -1404,6 +1631,7 @@ impl core::str::FromStr for BuiltIn { "HitTNV" => Ok(Self::HitTNV), "HitKindNV" => Ok(Self::HitKindNV), "HitKindKHR" => Ok(Self::HitKindNV), + "CurrentRayTimeNV" => Ok(Self::CurrentRayTimeNV), "IncomingRayFlagsNV" => Ok(Self::IncomingRayFlagsNV), "IncomingRayFlagsKHR" => Ok(Self::IncomingRayFlagsNV), "RayGeometryIndexKHR" => Ok(Self::RayGeometryIndexKHR), @@ -1610,6 +1838,9 @@ pub enum Capability { FragmentShadingRateKHR = 4422u32, SubgroupBallotKHR = 4423u32, DrawParameters = 4427u32, + WorkgroupMemoryExplicitLayoutKHR = 4428u32, + WorkgroupMemoryExplicitLayout8BitAccessKHR = 4429u32, + WorkgroupMemoryExplicitLayout16BitAccessKHR = 4430u32, SubgroupVoteKHR = 4431u32, StorageBuffer16BitAccess = 4433u32, UniformAndStorageBuffer16BitAccess = 4434u32, @@ -1666,6 +1897,7 @@ pub enum Capability { UniformTexelBufferArrayNonUniformIndexing = 5311u32, StorageTexelBufferArrayNonUniformIndexing = 5312u32, RayTracingNV = 5340u32, + RayTracingMotionBlurNV = 5341u32, VulkanMemoryModel = 5345u32, VulkanMemoryModelDeviceScope = 5346u32, PhysicalStorageBufferAddresses = 5347u32, @@ -1677,25 +1909,56 @@ pub enum Capability { ShaderSMBuiltinsNV = 5373u32, FragmentShaderPixelInterlockEXT = 5378u32, DemoteToHelperInvocationEXT = 5379u32, + BindlessTextureNV = 5390u32, SubgroupShuffleINTEL = 5568u32, SubgroupBufferBlockIOINTEL = 5569u32, SubgroupImageBlockIOINTEL = 5570u32, SubgroupImageMediaBlockIOINTEL = 5579u32, + RoundToInfinityINTEL = 5582u32, + FloatingPointModeINTEL = 5583u32, IntegerFunctions2INTEL = 5584u32, FunctionPointersINTEL = 5603u32, IndirectReferencesINTEL = 5604u32, + AsmINTEL = 5606u32, + AtomicFloat32MinMaxEXT = 5612u32, + AtomicFloat64MinMaxEXT = 5613u32, + AtomicFloat16MinMaxEXT = 5616u32, + VectorComputeINTEL = 5617u32, + VectorAnyINTEL = 5619u32, + ExpectAssumeKHR = 5629u32, SubgroupAvcMotionEstimationINTEL = 5696u32, SubgroupAvcMotionEstimationIntraINTEL = 5697u32, SubgroupAvcMotionEstimationChromaINTEL = 5698u32, + VariableLengthArrayINTEL = 5817u32, + FunctionFloatControlINTEL = 5821u32, FPGAMemoryAttributesINTEL = 5824u32, + FPFastMathModeINTEL = 5837u32, + ArbitraryPrecisionIntegersINTEL = 5844u32, + ArbitraryPrecisionFloatingPointINTEL = 5845u32, UnstructuredLoopControlsINTEL = 5886u32, FPGALoopControlsINTEL = 5888u32, KernelAttributesINTEL = 5892u32, FPGAKernelAttributesINTEL = 5897u32, + FPGAMemoryAccessesINTEL = 5898u32, + FPGAClusterAttributesINTEL = 5904u32, + LoopFuseINTEL = 5906u32, + FPGABufferLocationINTEL = 5920u32, + ArbitraryPrecisionFixedPointINTEL = 5922u32, + USMStorageClassesINTEL = 5935u32, + IOPipesINTEL = 5943u32, BlockingPipesINTEL = 5945u32, FPGARegINTEL = 5948u32, + DotProductInputAllKHR = 6016u32, + DotProductInput4x8BitKHR = 6017u32, + DotProductInput4x8BitPackedKHR = 6018u32, + DotProductKHR = 6019u32, + BitInstructions = 6025u32, AtomicFloat32AddEXT = 6033u32, AtomicFloat64AddEXT = 6034u32, + LongConstantCompositeINTEL = 6089u32, + OptNoneINTEL = 6094u32, + AtomicFloat16AddEXT = 6095u32, + DebugInfoModuleINTEL = 6114u32, } impl Capability { pub fn from_u32(n: u32) -> Option { @@ -1704,8 +1967,7 @@ impl Capability { 17u32..=25u32 => unsafe { core::mem::transmute::(n) }, 27u32..=70u32 => unsafe { core::mem::transmute::(n) }, 4422u32..=4423u32 => unsafe { core::mem::transmute::(n) }, - 4427u32 => unsafe { core::mem::transmute::(4427u32) }, - 4431u32 => unsafe { core::mem::transmute::(4431u32) }, + 4427u32..=4431u32 => unsafe { core::mem::transmute::(n) }, 4433u32..=4437u32 => unsafe { core::mem::transmute::(n) }, 4439u32 => unsafe { core::mem::transmute::(4439u32) }, 4441u32..=4442u32 => unsafe { core::mem::transmute::(n) }, @@ -1729,7 +1991,7 @@ impl Capability { 5291u32 => unsafe { core::mem::transmute::(5291u32) }, 5297u32 => unsafe { core::mem::transmute::(5297u32) }, 5301u32..=5312u32 => unsafe { core::mem::transmute::(n) }, - 5340u32 => unsafe { core::mem::transmute::(5340u32) }, + 5340u32..=5341u32 => unsafe { core::mem::transmute::(n) }, 5345u32..=5347u32 => unsafe { core::mem::transmute::(n) }, 5350u32 => unsafe { core::mem::transmute::(5350u32) }, 5353u32 => unsafe { core::mem::transmute::(5353u32) }, @@ -1737,19 +1999,40 @@ impl Capability { 5363u32 => unsafe { core::mem::transmute::(5363u32) }, 5372u32..=5373u32 => unsafe { core::mem::transmute::(n) }, 5378u32..=5379u32 => unsafe { core::mem::transmute::(n) }, + 5390u32 => unsafe { core::mem::transmute::(5390u32) }, 5568u32..=5570u32 => unsafe { core::mem::transmute::(n) }, 5579u32 => unsafe { core::mem::transmute::(5579u32) }, - 5584u32 => unsafe { core::mem::transmute::(5584u32) }, + 5582u32..=5584u32 => unsafe { core::mem::transmute::(n) }, 5603u32..=5604u32 => unsafe { core::mem::transmute::(n) }, + 5606u32 => unsafe { core::mem::transmute::(5606u32) }, + 5612u32..=5613u32 => unsafe { core::mem::transmute::(n) }, + 5616u32..=5617u32 => unsafe { core::mem::transmute::(n) }, + 5619u32 => unsafe { core::mem::transmute::(5619u32) }, + 5629u32 => unsafe { core::mem::transmute::(5629u32) }, 5696u32..=5698u32 => unsafe { core::mem::transmute::(n) }, + 5817u32 => unsafe { core::mem::transmute::(5817u32) }, + 5821u32 => unsafe { core::mem::transmute::(5821u32) }, 5824u32 => unsafe { core::mem::transmute::(5824u32) }, + 5837u32 => unsafe { core::mem::transmute::(5837u32) }, + 5844u32..=5845u32 => unsafe { core::mem::transmute::(n) }, 5886u32 => unsafe { core::mem::transmute::(5886u32) }, 5888u32 => unsafe { core::mem::transmute::(5888u32) }, 5892u32 => unsafe { core::mem::transmute::(5892u32) }, - 5897u32 => unsafe { core::mem::transmute::(5897u32) }, + 5897u32..=5898u32 => unsafe { core::mem::transmute::(n) }, + 5904u32 => unsafe { core::mem::transmute::(5904u32) }, + 5906u32 => unsafe { core::mem::transmute::(5906u32) }, + 5920u32 => unsafe { core::mem::transmute::(5920u32) }, + 5922u32 => unsafe { core::mem::transmute::(5922u32) }, + 5935u32 => unsafe { core::mem::transmute::(5935u32) }, + 5943u32 => unsafe { core::mem::transmute::(5943u32) }, 5945u32 => unsafe { core::mem::transmute::(5945u32) }, 5948u32 => unsafe { core::mem::transmute::(5948u32) }, + 6016u32..=6019u32 => unsafe { core::mem::transmute::(n) }, + 6025u32 => unsafe { core::mem::transmute::(6025u32) }, 6033u32..=6034u32 => unsafe { core::mem::transmute::(n) }, + 6089u32 => unsafe { core::mem::transmute::(6089u32) }, + 6094u32..=6095u32 => unsafe { core::mem::transmute::(n) }, + 6114u32 => unsafe { core::mem::transmute::(6114u32) }, _ => return None, }) } @@ -1862,6 +2145,13 @@ impl core::str::FromStr for Capability { "FragmentShadingRateKHR" => Ok(Self::FragmentShadingRateKHR), "SubgroupBallotKHR" => Ok(Self::SubgroupBallotKHR), "DrawParameters" => Ok(Self::DrawParameters), + "WorkgroupMemoryExplicitLayoutKHR" => Ok(Self::WorkgroupMemoryExplicitLayoutKHR), + "WorkgroupMemoryExplicitLayout8BitAccessKHR" => { + Ok(Self::WorkgroupMemoryExplicitLayout8BitAccessKHR) + } + "WorkgroupMemoryExplicitLayout16BitAccessKHR" => { + Ok(Self::WorkgroupMemoryExplicitLayout16BitAccessKHR) + } "SubgroupVoteKHR" => Ok(Self::SubgroupVoteKHR), "StorageBuffer16BitAccess" => Ok(Self::StorageBuffer16BitAccess), "StorageUniformBufferBlock16" => Ok(Self::StorageBuffer16BitAccess), @@ -1968,6 +2258,7 @@ impl core::str::FromStr for Capability { Ok(Self::StorageTexelBufferArrayNonUniformIndexing) } "RayTracingNV" => Ok(Self::RayTracingNV), + "RayTracingMotionBlurNV" => Ok(Self::RayTracingMotionBlurNV), "VulkanMemoryModel" => Ok(Self::VulkanMemoryModel), "VulkanMemoryModelKHR" => Ok(Self::VulkanMemoryModel), "VulkanMemoryModelDeviceScope" => Ok(Self::VulkanMemoryModelDeviceScope), @@ -1984,13 +2275,23 @@ impl core::str::FromStr for Capability { "ShaderSMBuiltinsNV" => Ok(Self::ShaderSMBuiltinsNV), "FragmentShaderPixelInterlockEXT" => Ok(Self::FragmentShaderPixelInterlockEXT), "DemoteToHelperInvocationEXT" => Ok(Self::DemoteToHelperInvocationEXT), + "BindlessTextureNV" => Ok(Self::BindlessTextureNV), "SubgroupShuffleINTEL" => Ok(Self::SubgroupShuffleINTEL), "SubgroupBufferBlockIOINTEL" => Ok(Self::SubgroupBufferBlockIOINTEL), "SubgroupImageBlockIOINTEL" => Ok(Self::SubgroupImageBlockIOINTEL), "SubgroupImageMediaBlockIOINTEL" => Ok(Self::SubgroupImageMediaBlockIOINTEL), + "RoundToInfinityINTEL" => Ok(Self::RoundToInfinityINTEL), + "FloatingPointModeINTEL" => Ok(Self::FloatingPointModeINTEL), "IntegerFunctions2INTEL" => Ok(Self::IntegerFunctions2INTEL), "FunctionPointersINTEL" => Ok(Self::FunctionPointersINTEL), "IndirectReferencesINTEL" => Ok(Self::IndirectReferencesINTEL), + "AsmINTEL" => Ok(Self::AsmINTEL), + "AtomicFloat32MinMaxEXT" => Ok(Self::AtomicFloat32MinMaxEXT), + "AtomicFloat64MinMaxEXT" => Ok(Self::AtomicFloat64MinMaxEXT), + "AtomicFloat16MinMaxEXT" => Ok(Self::AtomicFloat16MinMaxEXT), + "VectorComputeINTEL" => Ok(Self::VectorComputeINTEL), + "VectorAnyINTEL" => Ok(Self::VectorAnyINTEL), + "ExpectAssumeKHR" => Ok(Self::ExpectAssumeKHR), "SubgroupAvcMotionEstimationINTEL" => Ok(Self::SubgroupAvcMotionEstimationINTEL), "SubgroupAvcMotionEstimationIntraINTEL" => { Ok(Self::SubgroupAvcMotionEstimationIntraINTEL) @@ -1998,15 +2299,38 @@ impl core::str::FromStr for Capability { "SubgroupAvcMotionEstimationChromaINTEL" => { Ok(Self::SubgroupAvcMotionEstimationChromaINTEL) } + "VariableLengthArrayINTEL" => Ok(Self::VariableLengthArrayINTEL), + "FunctionFloatControlINTEL" => Ok(Self::FunctionFloatControlINTEL), "FPGAMemoryAttributesINTEL" => Ok(Self::FPGAMemoryAttributesINTEL), + "FPFastMathModeINTEL" => Ok(Self::FPFastMathModeINTEL), + "ArbitraryPrecisionIntegersINTEL" => Ok(Self::ArbitraryPrecisionIntegersINTEL), + "ArbitraryPrecisionFloatingPointINTEL" => { + Ok(Self::ArbitraryPrecisionFloatingPointINTEL) + } "UnstructuredLoopControlsINTEL" => Ok(Self::UnstructuredLoopControlsINTEL), "FPGALoopControlsINTEL" => Ok(Self::FPGALoopControlsINTEL), "KernelAttributesINTEL" => Ok(Self::KernelAttributesINTEL), "FPGAKernelAttributesINTEL" => Ok(Self::FPGAKernelAttributesINTEL), + "FPGAMemoryAccessesINTEL" => Ok(Self::FPGAMemoryAccessesINTEL), + "FPGAClusterAttributesINTEL" => Ok(Self::FPGAClusterAttributesINTEL), + "LoopFuseINTEL" => Ok(Self::LoopFuseINTEL), + "FPGABufferLocationINTEL" => Ok(Self::FPGABufferLocationINTEL), + "ArbitraryPrecisionFixedPointINTEL" => Ok(Self::ArbitraryPrecisionFixedPointINTEL), + "USMStorageClassesINTEL" => Ok(Self::USMStorageClassesINTEL), + "IOPipesINTEL" => Ok(Self::IOPipesINTEL), "BlockingPipesINTEL" => Ok(Self::BlockingPipesINTEL), "FPGARegINTEL" => Ok(Self::FPGARegINTEL), + "DotProductInputAllKHR" => Ok(Self::DotProductInputAllKHR), + "DotProductInput4x8BitKHR" => Ok(Self::DotProductInput4x8BitKHR), + "DotProductInput4x8BitPackedKHR" => Ok(Self::DotProductInput4x8BitPackedKHR), + "DotProductKHR" => Ok(Self::DotProductKHR), + "BitInstructions" => Ok(Self::BitInstructions), "AtomicFloat32AddEXT" => Ok(Self::AtomicFloat32AddEXT), "AtomicFloat64AddEXT" => Ok(Self::AtomicFloat64AddEXT), + "LongConstantCompositeINTEL" => Ok(Self::LongConstantCompositeINTEL), + "OptNoneINTEL" => Ok(Self::OptNoneINTEL), + "AtomicFloat16AddEXT" => Ok(Self::AtomicFloat16AddEXT), + "DebugInfoModuleINTEL" => Ok(Self::DebugInfoModuleINTEL), _ => Err(()), } } @@ -2117,6 +2441,34 @@ impl core::str::FromStr for RayQueryCandidateIntersectionType { } } } +#[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)"] +#[repr(u32)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] +#[cfg_attr(feature = "serialize", derive(serde::Serialize))] +#[cfg_attr(feature = "deserialize", derive(serde::Deserialize))] +#[allow(clippy::upper_case_acronyms)] +pub enum PackedVectorFormat { + PackedVectorFormat4x8BitKHR = 0u32, +} +impl PackedVectorFormat { + pub fn from_u32(n: u32) -> Option { + Some(match n { + 0u32 => unsafe { core::mem::transmute::(0u32) }, + _ => return None, + }) + } +} +#[allow(non_upper_case_globals)] +impl PackedVectorFormat {} +impl core::str::FromStr for PackedVectorFormat { + type Err = (); + fn from_str(s: &str) -> Result { + match s { + "PackedVectorFormat4x8BitKHR" => Ok(Self::PackedVectorFormat4x8BitKHR), + _ => Err(()), + } + } +} #[doc = "SPIR-V [instructions](https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_instructions_a_instructions) opcodes"] #[repr(u32)] #[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] @@ -2480,6 +2832,12 @@ pub enum Op { ConvertUToAccelerationStructureKHR = 4447u32, IgnoreIntersectionKHR = 4448u32, TerminateRayKHR = 4449u32, + SDotKHR = 4450u32, + UDotKHR = 4451u32, + SUDotKHR = 4452u32, + SDotAccSatKHR = 4453u32, + UDotAccSatKHR = 4454u32, + SUDotAccSatKHR = 4455u32, TypeRayQueryKHR = 4472u32, RayQueryInitializeKHR = 4473u32, RayQueryTerminateKHR = 4474u32, @@ -2505,6 +2863,8 @@ pub enum Op { IgnoreIntersectionNV = 5335u32, TerminateRayNV = 5336u32, TraceNV = 5337u32, + TraceMotionNV = 5338u32, + TraceRayMotionNV = 5339u32, TypeAccelerationStructureNV = 5341u32, ExecuteCallableNV = 5344u32, TypeCooperativeMatrixNV = 5358u32, @@ -2516,6 +2876,13 @@ pub enum Op { EndInvocationInterlockEXT = 5365u32, DemoteToHelperInvocationEXT = 5380u32, IsHelperInvocationEXT = 5381u32, + ConvertUToImageNV = 5391u32, + ConvertUToSamplerNV = 5392u32, + ConvertImageToUNV = 5393u32, + ConvertSamplerToUNV = 5394u32, + ConvertUToSampledImageNV = 5395u32, + ConvertSampledImageToUNV = 5396u32, + SamplerImageAddressingModeNV = 5397u32, SubgroupShuffleINTEL = 5571u32, SubgroupShuffleDownINTEL = 5572u32, SubgroupShuffleUpINTEL = 5573u32, @@ -2540,8 +2907,15 @@ pub enum Op { USubSatINTEL = 5596u32, IMul32x16INTEL = 5597u32, UMul32x16INTEL = 5598u32, - FunctionPointerINTEL = 5600u32, + ConstantFunctionPointerINTEL = 5600u32, FunctionPointerCallINTEL = 5601u32, + AsmTargetINTEL = 5609u32, + AsmINTEL = 5610u32, + AsmCallINTEL = 5611u32, + AtomicFMinEXT = 5614u32, + AtomicFMaxEXT = 5615u32, + AssumeTrueKHR = 5630u32, + ExpectKHR = 5631u32, DecorateString = 5632u32, MemberDecorateString = 5633u32, VmeImageINTEL = 5699u32, @@ -2662,7 +3036,64 @@ pub enum Op { SubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL = 5814u32, SubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL = 5815u32, SubgroupAvcSicGetInterRawSadsINTEL = 5816u32, + VariableLengthArrayINTEL = 5818u32, + SaveMemoryINTEL = 5819u32, + RestoreMemoryINTEL = 5820u32, + ArbitraryFloatSinCosPiINTEL = 5840u32, + ArbitraryFloatCastINTEL = 5841u32, + ArbitraryFloatCastFromIntINTEL = 5842u32, + ArbitraryFloatCastToIntINTEL = 5843u32, + ArbitraryFloatAddINTEL = 5846u32, + ArbitraryFloatSubINTEL = 5847u32, + ArbitraryFloatMulINTEL = 5848u32, + ArbitraryFloatDivINTEL = 5849u32, + ArbitraryFloatGTINTEL = 5850u32, + ArbitraryFloatGEINTEL = 5851u32, + ArbitraryFloatLTINTEL = 5852u32, + ArbitraryFloatLEINTEL = 5853u32, + ArbitraryFloatEQINTEL = 5854u32, + ArbitraryFloatRecipINTEL = 5855u32, + ArbitraryFloatRSqrtINTEL = 5856u32, + ArbitraryFloatCbrtINTEL = 5857u32, + ArbitraryFloatHypotINTEL = 5858u32, + ArbitraryFloatSqrtINTEL = 5859u32, + ArbitraryFloatLogINTEL = 5860u32, + ArbitraryFloatLog2INTEL = 5861u32, + ArbitraryFloatLog10INTEL = 5862u32, + ArbitraryFloatLog1pINTEL = 5863u32, + ArbitraryFloatExpINTEL = 5864u32, + ArbitraryFloatExp2INTEL = 5865u32, + ArbitraryFloatExp10INTEL = 5866u32, + ArbitraryFloatExpm1INTEL = 5867u32, + ArbitraryFloatSinINTEL = 5868u32, + ArbitraryFloatCosINTEL = 5869u32, + ArbitraryFloatSinCosINTEL = 5870u32, + ArbitraryFloatSinPiINTEL = 5871u32, + ArbitraryFloatCosPiINTEL = 5872u32, + ArbitraryFloatASinINTEL = 5873u32, + ArbitraryFloatASinPiINTEL = 5874u32, + ArbitraryFloatACosINTEL = 5875u32, + ArbitraryFloatACosPiINTEL = 5876u32, + ArbitraryFloatATanINTEL = 5877u32, + ArbitraryFloatATanPiINTEL = 5878u32, + ArbitraryFloatATan2INTEL = 5879u32, + ArbitraryFloatPowINTEL = 5880u32, + ArbitraryFloatPowRINTEL = 5881u32, + ArbitraryFloatPowNINTEL = 5882u32, LoopControlINTEL = 5887u32, + FixedSqrtINTEL = 5923u32, + FixedRecipINTEL = 5924u32, + FixedRsqrtINTEL = 5925u32, + FixedSinINTEL = 5926u32, + FixedCosINTEL = 5927u32, + FixedSinCosINTEL = 5928u32, + FixedSinPiINTEL = 5929u32, + FixedCosPiINTEL = 5930u32, + FixedSinCosPiINTEL = 5931u32, + FixedLogINTEL = 5932u32, + FixedExpINTEL = 5933u32, + PtrCastToCrossWorkgroupINTEL = 5934u32, + CrossWorkgroupCastToPtrINTEL = 5938u32, ReadPipeBlockingINTEL = 5946u32, WritePipeBlockingINTEL = 5947u32, FPGARegINTEL = 5949u32, @@ -2684,6 +3115,10 @@ pub enum Op { RayQueryGetIntersectionObjectToWorldKHR = 6031u32, RayQueryGetIntersectionWorldToObjectKHR = 6032u32, AtomicFAddEXT = 6035u32, + TypeBufferSurfaceINTEL = 6086u32, + TypeStructContinuedINTEL = 6090u32, + ConstantCompositeContinuedINTEL = 6091u32, + SpecConstantCompositeContinuedINTEL = 6092u32, } impl Op { pub fn from_u32(n: u32) -> Option { @@ -2715,7 +3150,7 @@ impl Op { 4421u32..=4422u32 => unsafe { core::mem::transmute::(n) }, 4428u32..=4430u32 => unsafe { core::mem::transmute::(n) }, 4432u32 => unsafe { core::mem::transmute::(4432u32) }, - 4445u32..=4449u32 => unsafe { core::mem::transmute::(n) }, + 4445u32..=4455u32 => unsafe { core::mem::transmute::(n) }, 4472u32..=4477u32 => unsafe { core::mem::transmute::(n) }, 4479u32 => unsafe { core::mem::transmute::(4479u32) }, 5000u32..=5007u32 => unsafe { core::mem::transmute::(n) }, @@ -2724,23 +3159,33 @@ impl Op { 5283u32 => unsafe { core::mem::transmute::(5283u32) }, 5296u32 => unsafe { core::mem::transmute::(5296u32) }, 5299u32 => unsafe { core::mem::transmute::(5299u32) }, - 5334u32..=5337u32 => unsafe { core::mem::transmute::(n) }, + 5334u32..=5339u32 => unsafe { core::mem::transmute::(n) }, 5341u32 => unsafe { core::mem::transmute::(5341u32) }, 5344u32 => unsafe { core::mem::transmute::(5344u32) }, 5358u32..=5362u32 => unsafe { core::mem::transmute::(n) }, 5364u32..=5365u32 => unsafe { core::mem::transmute::(n) }, 5380u32..=5381u32 => unsafe { core::mem::transmute::(n) }, + 5391u32..=5397u32 => unsafe { core::mem::transmute::(n) }, 5571u32..=5578u32 => unsafe { core::mem::transmute::(n) }, 5580u32..=5581u32 => unsafe { core::mem::transmute::(n) }, 5585u32..=5598u32 => unsafe { core::mem::transmute::(n) }, 5600u32..=5601u32 => unsafe { core::mem::transmute::(n) }, - 5632u32..=5633u32 => unsafe { core::mem::transmute::(n) }, + 5609u32..=5611u32 => unsafe { core::mem::transmute::(n) }, + 5614u32..=5615u32 => unsafe { core::mem::transmute::(n) }, + 5630u32..=5633u32 => unsafe { core::mem::transmute::(n) }, 5699u32..=5816u32 => unsafe { core::mem::transmute::(n) }, + 5818u32..=5820u32 => unsafe { core::mem::transmute::(n) }, + 5840u32..=5843u32 => unsafe { core::mem::transmute::(n) }, + 5846u32..=5882u32 => unsafe { core::mem::transmute::(n) }, 5887u32 => unsafe { core::mem::transmute::(5887u32) }, + 5923u32..=5934u32 => unsafe { core::mem::transmute::(n) }, + 5938u32 => unsafe { core::mem::transmute::(5938u32) }, 5946u32..=5947u32 => unsafe { core::mem::transmute::(n) }, 5949u32 => unsafe { core::mem::transmute::(5949u32) }, 6016u32..=6032u32 => unsafe { core::mem::transmute::(n) }, 6035u32 => unsafe { core::mem::transmute::(6035u32) }, + 6086u32 => unsafe { core::mem::transmute::(6086u32) }, + 6090u32..=6092u32 => unsafe { core::mem::transmute::(n) }, _ => return None, }) }