blob: b5d64c400b18263a0ad1a67a321bc2896c267099 [file] [log] [blame]
// This file is auto-generated by vulkano autogen from SPIR-V grammar version 1.6.1.
// It should not be edited manually. Changes should be made by editing autogen.
#[derive(Clone, Debug, PartialEq, Eq)]
#[doc = "A parsed SPIR-V instruction."]
pub enum Instruction {
Nop,
Undef {
result_type_id: Id,
result_id: Id,
},
SourceContinued {
continued_source: String,
},
Source {
source_language: SourceLanguage,
version: u32,
file: Option<Id>,
source: Option<String>,
},
SourceExtension {
extension: String,
},
Name {
target: Id,
name: String,
},
MemberName {
ty: Id,
member: u32,
name: String,
},
String {
result_id: Id,
string: String,
},
Line {
file: Id,
line: u32,
column: u32,
},
Extension {
name: String,
},
ExtInstImport {
result_id: Id,
name: String,
},
ExtInst {
result_type_id: Id,
result_id: Id,
set: Id,
instruction: u32,
operands: Vec<Id>,
},
MemoryModel {
addressing_model: AddressingModel,
memory_model: MemoryModel,
},
EntryPoint {
execution_model: ExecutionModel,
entry_point: Id,
name: String,
interface: Vec<Id>,
},
ExecutionMode {
entry_point: Id,
mode: ExecutionMode,
},
Capability {
capability: Capability,
},
TypeVoid {
result_id: Id,
},
TypeBool {
result_id: Id,
},
TypeInt {
result_id: Id,
width: u32,
signedness: u32,
},
TypeFloat {
result_id: Id,
width: u32,
},
TypeVector {
result_id: Id,
component_type: Id,
component_count: u32,
},
TypeMatrix {
result_id: Id,
column_type: Id,
column_count: u32,
},
TypeImage {
result_id: Id,
sampled_type: Id,
dim: Dim,
depth: u32,
arrayed: u32,
ms: u32,
sampled: u32,
image_format: ImageFormat,
access_qualifier: Option<AccessQualifier>,
},
TypeSampler {
result_id: Id,
},
TypeSampledImage {
result_id: Id,
image_type: Id,
},
TypeArray {
result_id: Id,
element_type: Id,
length: Id,
},
TypeRuntimeArray {
result_id: Id,
element_type: Id,
},
TypeStruct {
result_id: Id,
member_types: Vec<Id>,
},
TypeOpaque {
result_id: Id,
name: String,
},
TypePointer {
result_id: Id,
storage_class: StorageClass,
ty: Id,
},
TypeFunction {
result_id: Id,
return_type: Id,
parameter_types: Vec<Id>,
},
TypeEvent {
result_id: Id,
},
TypeDeviceEvent {
result_id: Id,
},
TypeReserveId {
result_id: Id,
},
TypeQueue {
result_id: Id,
},
TypePipe {
result_id: Id,
qualifier: AccessQualifier,
},
TypeForwardPointer {
pointer_type: Id,
storage_class: StorageClass,
},
ConstantTrue {
result_type_id: Id,
result_id: Id,
},
ConstantFalse {
result_type_id: Id,
result_id: Id,
},
Constant {
result_type_id: Id,
result_id: Id,
value: Vec<u32>,
},
ConstantComposite {
result_type_id: Id,
result_id: Id,
constituents: Vec<Id>,
},
ConstantSampler {
result_type_id: Id,
result_id: Id,
sampler_addressing_mode: SamplerAddressingMode,
param: u32,
sampler_filter_mode: SamplerFilterMode,
},
ConstantNull {
result_type_id: Id,
result_id: Id,
},
SpecConstantTrue {
result_type_id: Id,
result_id: Id,
},
SpecConstantFalse {
result_type_id: Id,
result_id: Id,
},
SpecConstant {
result_type_id: Id,
result_id: Id,
value: Vec<u32>,
},
SpecConstantComposite {
result_type_id: Id,
result_id: Id,
constituents: Vec<Id>,
},
SpecConstantOp {
result_type_id: Id,
result_id: Id,
opcode: SpecConstantInstruction,
},
Function {
result_type_id: Id,
result_id: Id,
function_control: FunctionControl,
function_type: Id,
},
FunctionParameter {
result_type_id: Id,
result_id: Id,
},
FunctionEnd,
FunctionCall {
result_type_id: Id,
result_id: Id,
function: Id,
arguments: Vec<Id>,
},
Variable {
result_type_id: Id,
result_id: Id,
storage_class: StorageClass,
initializer: Option<Id>,
},
ImageTexelPointer {
result_type_id: Id,
result_id: Id,
image: Id,
coordinate: Id,
sample: Id,
},
Load {
result_type_id: Id,
result_id: Id,
pointer: Id,
memory_access: Option<MemoryAccess>,
},
Store {
pointer: Id,
object: Id,
memory_access: Option<MemoryAccess>,
},
CopyMemory {
target: Id,
source: Id,
memory_access1: Option<MemoryAccess>,
memory_access2: Option<MemoryAccess>,
},
CopyMemorySized {
target: Id,
source: Id,
size: Id,
memory_access1: Option<MemoryAccess>,
memory_access2: Option<MemoryAccess>,
},
AccessChain {
result_type_id: Id,
result_id: Id,
base: Id,
indexes: Vec<Id>,
},
InBoundsAccessChain {
result_type_id: Id,
result_id: Id,
base: Id,
indexes: Vec<Id>,
},
PtrAccessChain {
result_type_id: Id,
result_id: Id,
base: Id,
element: Id,
indexes: Vec<Id>,
},
ArrayLength {
result_type_id: Id,
result_id: Id,
structure: Id,
array_member: u32,
},
GenericPtrMemSemantics {
result_type_id: Id,
result_id: Id,
pointer: Id,
},
InBoundsPtrAccessChain {
result_type_id: Id,
result_id: Id,
base: Id,
element: Id,
indexes: Vec<Id>,
},
Decorate {
target: Id,
decoration: Decoration,
},
MemberDecorate {
structure_type: Id,
member: u32,
decoration: Decoration,
},
DecorationGroup {
result_id: Id,
},
GroupDecorate {
decoration_group: Id,
targets: Vec<Id>,
},
GroupMemberDecorate {
decoration_group: Id,
targets: Vec<(Id, u32)>,
},
VectorExtractDynamic {
result_type_id: Id,
result_id: Id,
vector: Id,
index: Id,
},
VectorInsertDynamic {
result_type_id: Id,
result_id: Id,
vector: Id,
component: Id,
index: Id,
},
VectorShuffle {
result_type_id: Id,
result_id: Id,
vector_1: Id,
vector_2: Id,
components: Vec<u32>,
},
CompositeConstruct {
result_type_id: Id,
result_id: Id,
constituents: Vec<Id>,
},
CompositeExtract {
result_type_id: Id,
result_id: Id,
composite: Id,
indexes: Vec<u32>,
},
CompositeInsert {
result_type_id: Id,
result_id: Id,
object: Id,
composite: Id,
indexes: Vec<u32>,
},
CopyObject {
result_type_id: Id,
result_id: Id,
operand: Id,
},
Transpose {
result_type_id: Id,
result_id: Id,
matrix: Id,
},
SampledImage {
result_type_id: Id,
result_id: Id,
image: Id,
sampler: Id,
},
ImageSampleImplicitLod {
result_type_id: Id,
result_id: Id,
sampled_image: Id,
coordinate: Id,
image_operands: Option<ImageOperands>,
},
ImageSampleExplicitLod {
result_type_id: Id,
result_id: Id,
sampled_image: Id,
coordinate: Id,
image_operands: ImageOperands,
},
ImageSampleDrefImplicitLod {
result_type_id: Id,
result_id: Id,
sampled_image: Id,
coordinate: Id,
dref: Id,
image_operands: Option<ImageOperands>,
},
ImageSampleDrefExplicitLod {
result_type_id: Id,
result_id: Id,
sampled_image: Id,
coordinate: Id,
dref: Id,
image_operands: ImageOperands,
},
ImageSampleProjImplicitLod {
result_type_id: Id,
result_id: Id,
sampled_image: Id,
coordinate: Id,
image_operands: Option<ImageOperands>,
},
ImageSampleProjExplicitLod {
result_type_id: Id,
result_id: Id,
sampled_image: Id,
coordinate: Id,
image_operands: ImageOperands,
},
ImageSampleProjDrefImplicitLod {
result_type_id: Id,
result_id: Id,
sampled_image: Id,
coordinate: Id,
dref: Id,
image_operands: Option<ImageOperands>,
},
ImageSampleProjDrefExplicitLod {
result_type_id: Id,
result_id: Id,
sampled_image: Id,
coordinate: Id,
dref: Id,
image_operands: ImageOperands,
},
ImageFetch {
result_type_id: Id,
result_id: Id,
image: Id,
coordinate: Id,
image_operands: Option<ImageOperands>,
},
ImageGather {
result_type_id: Id,
result_id: Id,
sampled_image: Id,
coordinate: Id,
component: Id,
image_operands: Option<ImageOperands>,
},
ImageDrefGather {
result_type_id: Id,
result_id: Id,
sampled_image: Id,
coordinate: Id,
dref: Id,
image_operands: Option<ImageOperands>,
},
ImageRead {
result_type_id: Id,
result_id: Id,
image: Id,
coordinate: Id,
image_operands: Option<ImageOperands>,
},
ImageWrite {
image: Id,
coordinate: Id,
texel: Id,
image_operands: Option<ImageOperands>,
},
Image {
result_type_id: Id,
result_id: Id,
sampled_image: Id,
},
ImageQueryFormat {
result_type_id: Id,
result_id: Id,
image: Id,
},
ImageQueryOrder {
result_type_id: Id,
result_id: Id,
image: Id,
},
ImageQuerySizeLod {
result_type_id: Id,
result_id: Id,
image: Id,
level_of_detail: Id,
},
ImageQuerySize {
result_type_id: Id,
result_id: Id,
image: Id,
},
ImageQueryLod {
result_type_id: Id,
result_id: Id,
sampled_image: Id,
coordinate: Id,
},
ImageQueryLevels {
result_type_id: Id,
result_id: Id,
image: Id,
},
ImageQuerySamples {
result_type_id: Id,
result_id: Id,
image: Id,
},
ConvertFToU {
result_type_id: Id,
result_id: Id,
float_value: Id,
},
ConvertFToS {
result_type_id: Id,
result_id: Id,
float_value: Id,
},
ConvertSToF {
result_type_id: Id,
result_id: Id,
signed_value: Id,
},
ConvertUToF {
result_type_id: Id,
result_id: Id,
unsigned_value: Id,
},
UConvert {
result_type_id: Id,
result_id: Id,
unsigned_value: Id,
},
SConvert {
result_type_id: Id,
result_id: Id,
signed_value: Id,
},
FConvert {
result_type_id: Id,
result_id: Id,
float_value: Id,
},
QuantizeToF16 {
result_type_id: Id,
result_id: Id,
value: Id,
},
ConvertPtrToU {
result_type_id: Id,
result_id: Id,
pointer: Id,
},
SatConvertSToU {
result_type_id: Id,
result_id: Id,
signed_value: Id,
},
SatConvertUToS {
result_type_id: Id,
result_id: Id,
unsigned_value: Id,
},
ConvertUToPtr {
result_type_id: Id,
result_id: Id,
integer_value: Id,
},
PtrCastToGeneric {
result_type_id: Id,
result_id: Id,
pointer: Id,
},
GenericCastToPtr {
result_type_id: Id,
result_id: Id,
pointer: Id,
},
GenericCastToPtrExplicit {
result_type_id: Id,
result_id: Id,
pointer: Id,
storage: StorageClass,
},
Bitcast {
result_type_id: Id,
result_id: Id,
operand: Id,
},
SNegate {
result_type_id: Id,
result_id: Id,
operand: Id,
},
FNegate {
result_type_id: Id,
result_id: Id,
operand: Id,
},
IAdd {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
FAdd {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
ISub {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
FSub {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
IMul {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
FMul {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
UDiv {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
SDiv {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
FDiv {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
UMod {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
SRem {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
SMod {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
FRem {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
FMod {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
VectorTimesScalar {
result_type_id: Id,
result_id: Id,
vector: Id,
scalar: Id,
},
MatrixTimesScalar {
result_type_id: Id,
result_id: Id,
matrix: Id,
scalar: Id,
},
VectorTimesMatrix {
result_type_id: Id,
result_id: Id,
vector: Id,
matrix: Id,
},
MatrixTimesVector {
result_type_id: Id,
result_id: Id,
matrix: Id,
vector: Id,
},
MatrixTimesMatrix {
result_type_id: Id,
result_id: Id,
left_matrix: Id,
right_matrix: Id,
},
OuterProduct {
result_type_id: Id,
result_id: Id,
vector_1: Id,
vector_2: Id,
},
Dot {
result_type_id: Id,
result_id: Id,
vector_1: Id,
vector_2: Id,
},
IAddCarry {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
ISubBorrow {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
UMulExtended {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
SMulExtended {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
Any {
result_type_id: Id,
result_id: Id,
vector: Id,
},
All {
result_type_id: Id,
result_id: Id,
vector: Id,
},
IsNan {
result_type_id: Id,
result_id: Id,
x: Id,
},
IsInf {
result_type_id: Id,
result_id: Id,
x: Id,
},
IsFinite {
result_type_id: Id,
result_id: Id,
x: Id,
},
IsNormal {
result_type_id: Id,
result_id: Id,
x: Id,
},
SignBitSet {
result_type_id: Id,
result_id: Id,
x: Id,
},
LessOrGreater {
result_type_id: Id,
result_id: Id,
x: Id,
y: Id,
},
Ordered {
result_type_id: Id,
result_id: Id,
x: Id,
y: Id,
},
Unordered {
result_type_id: Id,
result_id: Id,
x: Id,
y: Id,
},
LogicalEqual {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
LogicalNotEqual {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
LogicalOr {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
LogicalAnd {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
LogicalNot {
result_type_id: Id,
result_id: Id,
operand: Id,
},
Select {
result_type_id: Id,
result_id: Id,
condition: Id,
object_1: Id,
object_2: Id,
},
IEqual {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
INotEqual {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
UGreaterThan {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
SGreaterThan {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
UGreaterThanEqual {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
SGreaterThanEqual {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
ULessThan {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
SLessThan {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
ULessThanEqual {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
SLessThanEqual {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
FOrdEqual {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
FUnordEqual {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
FOrdNotEqual {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
FUnordNotEqual {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
FOrdLessThan {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
FUnordLessThan {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
FOrdGreaterThan {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
FUnordGreaterThan {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
FOrdLessThanEqual {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
FUnordLessThanEqual {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
FOrdGreaterThanEqual {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
FUnordGreaterThanEqual {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
ShiftRightLogical {
result_type_id: Id,
result_id: Id,
base: Id,
shift: Id,
},
ShiftRightArithmetic {
result_type_id: Id,
result_id: Id,
base: Id,
shift: Id,
},
ShiftLeftLogical {
result_type_id: Id,
result_id: Id,
base: Id,
shift: Id,
},
BitwiseOr {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
BitwiseXor {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
BitwiseAnd {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
Not {
result_type_id: Id,
result_id: Id,
operand: Id,
},
BitFieldInsert {
result_type_id: Id,
result_id: Id,
base: Id,
insert: Id,
offset: Id,
count: Id,
},
BitFieldSExtract {
result_type_id: Id,
result_id: Id,
base: Id,
offset: Id,
count: Id,
},
BitFieldUExtract {
result_type_id: Id,
result_id: Id,
base: Id,
offset: Id,
count: Id,
},
BitReverse {
result_type_id: Id,
result_id: Id,
base: Id,
},
BitCount {
result_type_id: Id,
result_id: Id,
base: Id,
},
DPdx {
result_type_id: Id,
result_id: Id,
p: Id,
},
DPdy {
result_type_id: Id,
result_id: Id,
p: Id,
},
Fwidth {
result_type_id: Id,
result_id: Id,
p: Id,
},
DPdxFine {
result_type_id: Id,
result_id: Id,
p: Id,
},
DPdyFine {
result_type_id: Id,
result_id: Id,
p: Id,
},
FwidthFine {
result_type_id: Id,
result_id: Id,
p: Id,
},
DPdxCoarse {
result_type_id: Id,
result_id: Id,
p: Id,
},
DPdyCoarse {
result_type_id: Id,
result_id: Id,
p: Id,
},
FwidthCoarse {
result_type_id: Id,
result_id: Id,
p: Id,
},
EmitVertex,
EndPrimitive,
EmitStreamVertex {
stream: Id,
},
EndStreamPrimitive {
stream: Id,
},
ControlBarrier {
execution: Id,
memory: Id,
semantics: Id,
},
MemoryBarrier {
memory: Id,
semantics: Id,
},
AtomicLoad {
result_type_id: Id,
result_id: Id,
pointer: Id,
memory: Id,
semantics: Id,
},
AtomicStore {
pointer: Id,
memory: Id,
semantics: Id,
value: Id,
},
AtomicExchange {
result_type_id: Id,
result_id: Id,
pointer: Id,
memory: Id,
semantics: Id,
value: Id,
},
AtomicCompareExchange {
result_type_id: Id,
result_id: Id,
pointer: Id,
memory: Id,
equal: Id,
unequal: Id,
value: Id,
comparator: Id,
},
AtomicCompareExchangeWeak {
result_type_id: Id,
result_id: Id,
pointer: Id,
memory: Id,
equal: Id,
unequal: Id,
value: Id,
comparator: Id,
},
AtomicIIncrement {
result_type_id: Id,
result_id: Id,
pointer: Id,
memory: Id,
semantics: Id,
},
AtomicIDecrement {
result_type_id: Id,
result_id: Id,
pointer: Id,
memory: Id,
semantics: Id,
},
AtomicIAdd {
result_type_id: Id,
result_id: Id,
pointer: Id,
memory: Id,
semantics: Id,
value: Id,
},
AtomicISub {
result_type_id: Id,
result_id: Id,
pointer: Id,
memory: Id,
semantics: Id,
value: Id,
},
AtomicSMin {
result_type_id: Id,
result_id: Id,
pointer: Id,
memory: Id,
semantics: Id,
value: Id,
},
AtomicUMin {
result_type_id: Id,
result_id: Id,
pointer: Id,
memory: Id,
semantics: Id,
value: Id,
},
AtomicSMax {
result_type_id: Id,
result_id: Id,
pointer: Id,
memory: Id,
semantics: Id,
value: Id,
},
AtomicUMax {
result_type_id: Id,
result_id: Id,
pointer: Id,
memory: Id,
semantics: Id,
value: Id,
},
AtomicAnd {
result_type_id: Id,
result_id: Id,
pointer: Id,
memory: Id,
semantics: Id,
value: Id,
},
AtomicOr {
result_type_id: Id,
result_id: Id,
pointer: Id,
memory: Id,
semantics: Id,
value: Id,
},
AtomicXor {
result_type_id: Id,
result_id: Id,
pointer: Id,
memory: Id,
semantics: Id,
value: Id,
},
Phi {
result_type_id: Id,
result_id: Id,
variable_parent: Vec<(Id, Id)>,
},
LoopMerge {
merge_block: Id,
continue_target: Id,
loop_control: LoopControl,
},
SelectionMerge {
merge_block: Id,
selection_control: SelectionControl,
},
Label {
result_id: Id,
},
Branch {
target_label: Id,
},
BranchConditional {
condition: Id,
true_label: Id,
false_label: Id,
branch_weights: Vec<u32>,
},
Switch {
selector: Id,
default: Id,
target: Vec<(u32, Id)>,
},
Kill,
Return,
ReturnValue {
value: Id,
},
Unreachable,
LifetimeStart {
pointer: Id,
size: u32,
},
LifetimeStop {
pointer: Id,
size: u32,
},
GroupAsyncCopy {
result_type_id: Id,
result_id: Id,
execution: Id,
destination: Id,
source: Id,
num_elements: Id,
stride: Id,
event: Id,
},
GroupWaitEvents {
execution: Id,
num_events: Id,
events_list: Id,
},
GroupAll {
result_type_id: Id,
result_id: Id,
execution: Id,
predicate: Id,
},
GroupAny {
result_type_id: Id,
result_id: Id,
execution: Id,
predicate: Id,
},
GroupBroadcast {
result_type_id: Id,
result_id: Id,
execution: Id,
value: Id,
local_id: Id,
},
GroupIAdd {
result_type_id: Id,
result_id: Id,
execution: Id,
operation: GroupOperation,
x: Id,
},
GroupFAdd {
result_type_id: Id,
result_id: Id,
execution: Id,
operation: GroupOperation,
x: Id,
},
GroupFMin {
result_type_id: Id,
result_id: Id,
execution: Id,
operation: GroupOperation,
x: Id,
},
GroupUMin {
result_type_id: Id,
result_id: Id,
execution: Id,
operation: GroupOperation,
x: Id,
},
GroupSMin {
result_type_id: Id,
result_id: Id,
execution: Id,
operation: GroupOperation,
x: Id,
},
GroupFMax {
result_type_id: Id,
result_id: Id,
execution: Id,
operation: GroupOperation,
x: Id,
},
GroupUMax {
result_type_id: Id,
result_id: Id,
execution: Id,
operation: GroupOperation,
x: Id,
},
GroupSMax {
result_type_id: Id,
result_id: Id,
execution: Id,
operation: GroupOperation,
x: Id,
},
ReadPipe {
result_type_id: Id,
result_id: Id,
pipe: Id,
pointer: Id,
packet_size: Id,
packet_alignment: Id,
},
WritePipe {
result_type_id: Id,
result_id: Id,
pipe: Id,
pointer: Id,
packet_size: Id,
packet_alignment: Id,
},
ReservedReadPipe {
result_type_id: Id,
result_id: Id,
pipe: Id,
reserve_id: Id,
index: Id,
pointer: Id,
packet_size: Id,
packet_alignment: Id,
},
ReservedWritePipe {
result_type_id: Id,
result_id: Id,
pipe: Id,
reserve_id: Id,
index: Id,
pointer: Id,
packet_size: Id,
packet_alignment: Id,
},
ReserveReadPipePackets {
result_type_id: Id,
result_id: Id,
pipe: Id,
num_packets: Id,
packet_size: Id,
packet_alignment: Id,
},
ReserveWritePipePackets {
result_type_id: Id,
result_id: Id,
pipe: Id,
num_packets: Id,
packet_size: Id,
packet_alignment: Id,
},
CommitReadPipe {
pipe: Id,
reserve_id: Id,
packet_size: Id,
packet_alignment: Id,
},
CommitWritePipe {
pipe: Id,
reserve_id: Id,
packet_size: Id,
packet_alignment: Id,
},
IsValidReserveId {
result_type_id: Id,
result_id: Id,
reserve_id: Id,
},
GetNumPipePackets {
result_type_id: Id,
result_id: Id,
pipe: Id,
packet_size: Id,
packet_alignment: Id,
},
GetMaxPipePackets {
result_type_id: Id,
result_id: Id,
pipe: Id,
packet_size: Id,
packet_alignment: Id,
},
GroupReserveReadPipePackets {
result_type_id: Id,
result_id: Id,
execution: Id,
pipe: Id,
num_packets: Id,
packet_size: Id,
packet_alignment: Id,
},
GroupReserveWritePipePackets {
result_type_id: Id,
result_id: Id,
execution: Id,
pipe: Id,
num_packets: Id,
packet_size: Id,
packet_alignment: Id,
},
GroupCommitReadPipe {
execution: Id,
pipe: Id,
reserve_id: Id,
packet_size: Id,
packet_alignment: Id,
},
GroupCommitWritePipe {
execution: Id,
pipe: Id,
reserve_id: Id,
packet_size: Id,
packet_alignment: Id,
},
EnqueueMarker {
result_type_id: Id,
result_id: Id,
queue: Id,
num_events: Id,
wait_events: Id,
ret_event: Id,
},
EnqueueKernel {
result_type_id: Id,
result_id: Id,
queue: Id,
flags: Id,
nd_range: Id,
num_events: Id,
wait_events: Id,
ret_event: Id,
invoke: Id,
param: Id,
param_size: Id,
param_align: Id,
local_size: Vec<Id>,
},
GetKernelNDrangeSubGroupCount {
result_type_id: Id,
result_id: Id,
nd_range: Id,
invoke: Id,
param: Id,
param_size: Id,
param_align: Id,
},
GetKernelNDrangeMaxSubGroupSize {
result_type_id: Id,
result_id: Id,
nd_range: Id,
invoke: Id,
param: Id,
param_size: Id,
param_align: Id,
},
GetKernelWorkGroupSize {
result_type_id: Id,
result_id: Id,
invoke: Id,
param: Id,
param_size: Id,
param_align: Id,
},
GetKernelPreferredWorkGroupSizeMultiple {
result_type_id: Id,
result_id: Id,
invoke: Id,
param: Id,
param_size: Id,
param_align: Id,
},
RetainEvent {
event: Id,
},
ReleaseEvent {
event: Id,
},
CreateUserEvent {
result_type_id: Id,
result_id: Id,
},
IsValidEvent {
result_type_id: Id,
result_id: Id,
event: Id,
},
SetUserEventStatus {
event: Id,
status: Id,
},
CaptureEventProfilingInfo {
event: Id,
profiling_info: Id,
value: Id,
},
GetDefaultQueue {
result_type_id: Id,
result_id: Id,
},
BuildNDRange {
result_type_id: Id,
result_id: Id,
global_work_size: Id,
local_work_size: Id,
global_work_offset: Id,
},
ImageSparseSampleImplicitLod {
result_type_id: Id,
result_id: Id,
sampled_image: Id,
coordinate: Id,
image_operands: Option<ImageOperands>,
},
ImageSparseSampleExplicitLod {
result_type_id: Id,
result_id: Id,
sampled_image: Id,
coordinate: Id,
image_operands: ImageOperands,
},
ImageSparseSampleDrefImplicitLod {
result_type_id: Id,
result_id: Id,
sampled_image: Id,
coordinate: Id,
dref: Id,
image_operands: Option<ImageOperands>,
},
ImageSparseSampleDrefExplicitLod {
result_type_id: Id,
result_id: Id,
sampled_image: Id,
coordinate: Id,
dref: Id,
image_operands: ImageOperands,
},
ImageSparseSampleProjImplicitLod {
result_type_id: Id,
result_id: Id,
sampled_image: Id,
coordinate: Id,
image_operands: Option<ImageOperands>,
},
ImageSparseSampleProjExplicitLod {
result_type_id: Id,
result_id: Id,
sampled_image: Id,
coordinate: Id,
image_operands: ImageOperands,
},
ImageSparseSampleProjDrefImplicitLod {
result_type_id: Id,
result_id: Id,
sampled_image: Id,
coordinate: Id,
dref: Id,
image_operands: Option<ImageOperands>,
},
ImageSparseSampleProjDrefExplicitLod {
result_type_id: Id,
result_id: Id,
sampled_image: Id,
coordinate: Id,
dref: Id,
image_operands: ImageOperands,
},
ImageSparseFetch {
result_type_id: Id,
result_id: Id,
image: Id,
coordinate: Id,
image_operands: Option<ImageOperands>,
},
ImageSparseGather {
result_type_id: Id,
result_id: Id,
sampled_image: Id,
coordinate: Id,
component: Id,
image_operands: Option<ImageOperands>,
},
ImageSparseDrefGather {
result_type_id: Id,
result_id: Id,
sampled_image: Id,
coordinate: Id,
dref: Id,
image_operands: Option<ImageOperands>,
},
ImageSparseTexelsResident {
result_type_id: Id,
result_id: Id,
resident_code: Id,
},
NoLine,
AtomicFlagTestAndSet {
result_type_id: Id,
result_id: Id,
pointer: Id,
memory: Id,
semantics: Id,
},
AtomicFlagClear {
pointer: Id,
memory: Id,
semantics: Id,
},
ImageSparseRead {
result_type_id: Id,
result_id: Id,
image: Id,
coordinate: Id,
image_operands: Option<ImageOperands>,
},
SizeOf {
result_type_id: Id,
result_id: Id,
pointer: Id,
},
TypePipeStorage {
result_id: Id,
},
ConstantPipeStorage {
result_type_id: Id,
result_id: Id,
packet_size: u32,
packet_alignment: u32,
capacity: u32,
},
CreatePipeFromPipeStorage {
result_type_id: Id,
result_id: Id,
pipe_storage: Id,
},
GetKernelLocalSizeForSubgroupCount {
result_type_id: Id,
result_id: Id,
subgroup_count: Id,
invoke: Id,
param: Id,
param_size: Id,
param_align: Id,
},
GetKernelMaxNumSubgroups {
result_type_id: Id,
result_id: Id,
invoke: Id,
param: Id,
param_size: Id,
param_align: Id,
},
TypeNamedBarrier {
result_id: Id,
},
NamedBarrierInitialize {
result_type_id: Id,
result_id: Id,
subgroup_count: Id,
},
MemoryNamedBarrier {
named_barrier: Id,
memory: Id,
semantics: Id,
},
ModuleProcessed {
process: String,
},
ExecutionModeId {
entry_point: Id,
mode: ExecutionMode,
},
DecorateId {
target: Id,
decoration: Decoration,
},
GroupNonUniformElect {
result_type_id: Id,
result_id: Id,
execution: Id,
},
GroupNonUniformAll {
result_type_id: Id,
result_id: Id,
execution: Id,
predicate: Id,
},
GroupNonUniformAny {
result_type_id: Id,
result_id: Id,
execution: Id,
predicate: Id,
},
GroupNonUniformAllEqual {
result_type_id: Id,
result_id: Id,
execution: Id,
value: Id,
},
GroupNonUniformBroadcast {
result_type_id: Id,
result_id: Id,
execution: Id,
value: Id,
id: Id,
},
GroupNonUniformBroadcastFirst {
result_type_id: Id,
result_id: Id,
execution: Id,
value: Id,
},
GroupNonUniformBallot {
result_type_id: Id,
result_id: Id,
execution: Id,
predicate: Id,
},
GroupNonUniformInverseBallot {
result_type_id: Id,
result_id: Id,
execution: Id,
value: Id,
},
GroupNonUniformBallotBitExtract {
result_type_id: Id,
result_id: Id,
execution: Id,
value: Id,
index: Id,
},
GroupNonUniformBallotBitCount {
result_type_id: Id,
result_id: Id,
execution: Id,
operation: GroupOperation,
value: Id,
},
GroupNonUniformBallotFindLSB {
result_type_id: Id,
result_id: Id,
execution: Id,
value: Id,
},
GroupNonUniformBallotFindMSB {
result_type_id: Id,
result_id: Id,
execution: Id,
value: Id,
},
GroupNonUniformShuffle {
result_type_id: Id,
result_id: Id,
execution: Id,
value: Id,
id: Id,
},
GroupNonUniformShuffleXor {
result_type_id: Id,
result_id: Id,
execution: Id,
value: Id,
mask: Id,
},
GroupNonUniformShuffleUp {
result_type_id: Id,
result_id: Id,
execution: Id,
value: Id,
delta: Id,
},
GroupNonUniformShuffleDown {
result_type_id: Id,
result_id: Id,
execution: Id,
value: Id,
delta: Id,
},
GroupNonUniformIAdd {
result_type_id: Id,
result_id: Id,
execution: Id,
operation: GroupOperation,
value: Id,
cluster_size: Option<Id>,
},
GroupNonUniformFAdd {
result_type_id: Id,
result_id: Id,
execution: Id,
operation: GroupOperation,
value: Id,
cluster_size: Option<Id>,
},
GroupNonUniformIMul {
result_type_id: Id,
result_id: Id,
execution: Id,
operation: GroupOperation,
value: Id,
cluster_size: Option<Id>,
},
GroupNonUniformFMul {
result_type_id: Id,
result_id: Id,
execution: Id,
operation: GroupOperation,
value: Id,
cluster_size: Option<Id>,
},
GroupNonUniformSMin {
result_type_id: Id,
result_id: Id,
execution: Id,
operation: GroupOperation,
value: Id,
cluster_size: Option<Id>,
},
GroupNonUniformUMin {
result_type_id: Id,
result_id: Id,
execution: Id,
operation: GroupOperation,
value: Id,
cluster_size: Option<Id>,
},
GroupNonUniformFMin {
result_type_id: Id,
result_id: Id,
execution: Id,
operation: GroupOperation,
value: Id,
cluster_size: Option<Id>,
},
GroupNonUniformSMax {
result_type_id: Id,
result_id: Id,
execution: Id,
operation: GroupOperation,
value: Id,
cluster_size: Option<Id>,
},
GroupNonUniformUMax {
result_type_id: Id,
result_id: Id,
execution: Id,
operation: GroupOperation,
value: Id,
cluster_size: Option<Id>,
},
GroupNonUniformFMax {
result_type_id: Id,
result_id: Id,
execution: Id,
operation: GroupOperation,
value: Id,
cluster_size: Option<Id>,
},
GroupNonUniformBitwiseAnd {
result_type_id: Id,
result_id: Id,
execution: Id,
operation: GroupOperation,
value: Id,
cluster_size: Option<Id>,
},
GroupNonUniformBitwiseOr {
result_type_id: Id,
result_id: Id,
execution: Id,
operation: GroupOperation,
value: Id,
cluster_size: Option<Id>,
},
GroupNonUniformBitwiseXor {
result_type_id: Id,
result_id: Id,
execution: Id,
operation: GroupOperation,
value: Id,
cluster_size: Option<Id>,
},
GroupNonUniformLogicalAnd {
result_type_id: Id,
result_id: Id,
execution: Id,
operation: GroupOperation,
value: Id,
cluster_size: Option<Id>,
},
GroupNonUniformLogicalOr {
result_type_id: Id,
result_id: Id,
execution: Id,
operation: GroupOperation,
value: Id,
cluster_size: Option<Id>,
},
GroupNonUniformLogicalXor {
result_type_id: Id,
result_id: Id,
execution: Id,
operation: GroupOperation,
value: Id,
cluster_size: Option<Id>,
},
GroupNonUniformQuadBroadcast {
result_type_id: Id,
result_id: Id,
execution: Id,
value: Id,
index: Id,
},
GroupNonUniformQuadSwap {
result_type_id: Id,
result_id: Id,
execution: Id,
value: Id,
direction: Id,
},
CopyLogical {
result_type_id: Id,
result_id: Id,
operand: Id,
},
PtrEqual {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
PtrNotEqual {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
PtrDiff {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
TerminateInvocation,
SubgroupBallotKHR {
result_type_id: Id,
result_id: Id,
predicate: Id,
},
SubgroupFirstInvocationKHR {
result_type_id: Id,
result_id: Id,
value: Id,
},
SubgroupAllKHR {
result_type_id: Id,
result_id: Id,
predicate: Id,
},
SubgroupAnyKHR {
result_type_id: Id,
result_id: Id,
predicate: Id,
},
SubgroupAllEqualKHR {
result_type_id: Id,
result_id: Id,
predicate: Id,
},
SubgroupReadInvocationKHR {
result_type_id: Id,
result_id: Id,
value: Id,
index: Id,
},
TraceRayKHR {
accel: Id,
ray_flags: Id,
cull_mask: Id,
sbt_offset: Id,
sbt_stride: Id,
miss_index: Id,
ray_origin: Id,
ray_tmin: Id,
ray_direction: Id,
ray_tmax: Id,
payload: Id,
},
ExecuteCallableKHR {
sbt_index: Id,
callable_data: Id,
},
ConvertUToAccelerationStructureKHR {
result_type_id: Id,
result_id: Id,
accel: Id,
},
IgnoreIntersectionKHR,
TerminateRayKHR,
SDot {
result_type_id: Id,
result_id: Id,
vector_1: Id,
vector_2: Id,
packed_vector_format: Option<PackedVectorFormat>,
},
UDot {
result_type_id: Id,
result_id: Id,
vector_1: Id,
vector_2: Id,
packed_vector_format: Option<PackedVectorFormat>,
},
SUDot {
result_type_id: Id,
result_id: Id,
vector_1: Id,
vector_2: Id,
packed_vector_format: Option<PackedVectorFormat>,
},
SDotAccSat {
result_type_id: Id,
result_id: Id,
vector_1: Id,
vector_2: Id,
accumulator: Id,
packed_vector_format: Option<PackedVectorFormat>,
},
UDotAccSat {
result_type_id: Id,
result_id: Id,
vector_1: Id,
vector_2: Id,
accumulator: Id,
packed_vector_format: Option<PackedVectorFormat>,
},
SUDotAccSat {
result_type_id: Id,
result_id: Id,
vector_1: Id,
vector_2: Id,
accumulator: Id,
packed_vector_format: Option<PackedVectorFormat>,
},
TypeRayQueryKHR {
result_id: Id,
},
RayQueryInitializeKHR {
ray_query: Id,
accel: Id,
ray_flags: Id,
cull_mask: Id,
ray_origin: Id,
ray_t_min: Id,
ray_direction: Id,
ray_t_max: Id,
},
RayQueryTerminateKHR {
ray_query: Id,
},
RayQueryGenerateIntersectionKHR {
ray_query: Id,
hit_t: Id,
},
RayQueryConfirmIntersectionKHR {
ray_query: Id,
},
RayQueryProceedKHR {
result_type_id: Id,
result_id: Id,
ray_query: Id,
},
RayQueryGetIntersectionTypeKHR {
result_type_id: Id,
result_id: Id,
ray_query: Id,
intersection: Id,
},
GroupIAddNonUniformAMD {
result_type_id: Id,
result_id: Id,
execution: Id,
operation: GroupOperation,
x: Id,
},
GroupFAddNonUniformAMD {
result_type_id: Id,
result_id: Id,
execution: Id,
operation: GroupOperation,
x: Id,
},
GroupFMinNonUniformAMD {
result_type_id: Id,
result_id: Id,
execution: Id,
operation: GroupOperation,
x: Id,
},
GroupUMinNonUniformAMD {
result_type_id: Id,
result_id: Id,
execution: Id,
operation: GroupOperation,
x: Id,
},
GroupSMinNonUniformAMD {
result_type_id: Id,
result_id: Id,
execution: Id,
operation: GroupOperation,
x: Id,
},
GroupFMaxNonUniformAMD {
result_type_id: Id,
result_id: Id,
execution: Id,
operation: GroupOperation,
x: Id,
},
GroupUMaxNonUniformAMD {
result_type_id: Id,
result_id: Id,
execution: Id,
operation: GroupOperation,
x: Id,
},
GroupSMaxNonUniformAMD {
result_type_id: Id,
result_id: Id,
execution: Id,
operation: GroupOperation,
x: Id,
},
FragmentMaskFetchAMD {
result_type_id: Id,
result_id: Id,
image: Id,
coordinate: Id,
},
FragmentFetchAMD {
result_type_id: Id,
result_id: Id,
image: Id,
coordinate: Id,
fragment_index: Id,
},
ReadClockKHR {
result_type_id: Id,
result_id: Id,
scope: Id,
},
ImageSampleFootprintNV {
result_type_id: Id,
result_id: Id,
sampled_image: Id,
coordinate: Id,
granularity: Id,
coarse: Id,
image_operands: Option<ImageOperands>,
},
GroupNonUniformPartitionNV {
result_type_id: Id,
result_id: Id,
value: Id,
},
WritePackedPrimitiveIndices4x8NV {
index_offset: Id,
packed_indices: Id,
},
ReportIntersectionKHR {
result_type_id: Id,
result_id: Id,
hit: Id,
hit_kind: Id,
},
IgnoreIntersectionNV,
TerminateRayNV,
TraceNV {
accel: Id,
ray_flags: Id,
cull_mask: Id,
sbt_offset: Id,
sbt_stride: Id,
miss_index: Id,
ray_origin: Id,
ray_tmin: Id,
ray_direction: Id,
ray_tmax: Id,
payload_id: Id,
},
TraceMotionNV {
accel: Id,
ray_flags: Id,
cull_mask: Id,
sbt_offset: Id,
sbt_stride: Id,
miss_index: Id,
ray_origin: Id,
ray_tmin: Id,
ray_direction: Id,
ray_tmax: Id,
time: Id,
payload_id: Id,
},
TraceRayMotionNV {
accel: Id,
ray_flags: Id,
cull_mask: Id,
sbt_offset: Id,
sbt_stride: Id,
miss_index: Id,
ray_origin: Id,
ray_tmin: Id,
ray_direction: Id,
ray_tmax: Id,
time: Id,
payload: Id,
},
TypeAccelerationStructureKHR {
result_id: Id,
},
ExecuteCallableNV {
sbt_index: Id,
callable_data_id: Id,
},
TypeCooperativeMatrixNV {
result_id: Id,
component_type: Id,
execution: Id,
rows: Id,
columns: Id,
},
CooperativeMatrixLoadNV {
result_type_id: Id,
result_id: Id,
pointer: Id,
stride: Id,
column_major: Id,
memory_access: Option<MemoryAccess>,
},
CooperativeMatrixStoreNV {
pointer: Id,
object: Id,
stride: Id,
column_major: Id,
memory_access: Option<MemoryAccess>,
},
CooperativeMatrixMulAddNV {
result_type_id: Id,
result_id: Id,
a: Id,
b: Id,
c: Id,
},
CooperativeMatrixLengthNV {
result_type_id: Id,
result_id: Id,
ty: Id,
},
BeginInvocationInterlockEXT,
EndInvocationInterlockEXT,
DemoteToHelperInvocation,
IsHelperInvocationEXT {
result_type_id: Id,
result_id: Id,
},
ConvertUToImageNV {
result_type_id: Id,
result_id: Id,
operand: Id,
},
ConvertUToSamplerNV {
result_type_id: Id,
result_id: Id,
operand: Id,
},
ConvertImageToUNV {
result_type_id: Id,
result_id: Id,
operand: Id,
},
ConvertSamplerToUNV {
result_type_id: Id,
result_id: Id,
operand: Id,
},
ConvertUToSampledImageNV {
result_type_id: Id,
result_id: Id,
operand: Id,
},
ConvertSampledImageToUNV {
result_type_id: Id,
result_id: Id,
operand: Id,
},
SamplerImageAddressingModeNV {
bit_width: u32,
},
SubgroupShuffleINTEL {
result_type_id: Id,
result_id: Id,
data: Id,
invocation_id: Id,
},
SubgroupShuffleDownINTEL {
result_type_id: Id,
result_id: Id,
current: Id,
next: Id,
delta: Id,
},
SubgroupShuffleUpINTEL {
result_type_id: Id,
result_id: Id,
previous: Id,
current: Id,
delta: Id,
},
SubgroupShuffleXorINTEL {
result_type_id: Id,
result_id: Id,
data: Id,
value: Id,
},
SubgroupBlockReadINTEL {
result_type_id: Id,
result_id: Id,
ptr: Id,
},
SubgroupBlockWriteINTEL {
ptr: Id,
data: Id,
},
SubgroupImageBlockReadINTEL {
result_type_id: Id,
result_id: Id,
image: Id,
coordinate: Id,
},
SubgroupImageBlockWriteINTEL {
image: Id,
coordinate: Id,
data: Id,
},
SubgroupImageMediaBlockReadINTEL {
result_type_id: Id,
result_id: Id,
image: Id,
coordinate: Id,
width: Id,
height: Id,
},
SubgroupImageMediaBlockWriteINTEL {
image: Id,
coordinate: Id,
width: Id,
height: Id,
data: Id,
},
UCountLeadingZerosINTEL {
result_type_id: Id,
result_id: Id,
operand: Id,
},
UCountTrailingZerosINTEL {
result_type_id: Id,
result_id: Id,
operand: Id,
},
AbsISubINTEL {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
AbsUSubINTEL {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
IAddSatINTEL {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
UAddSatINTEL {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
IAverageINTEL {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
UAverageINTEL {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
IAverageRoundedINTEL {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
UAverageRoundedINTEL {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
ISubSatINTEL {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
USubSatINTEL {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
IMul32x16INTEL {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
UMul32x16INTEL {
result_type_id: Id,
result_id: Id,
operand1: Id,
operand2: Id,
},
ConstantFunctionPointerINTEL {
result_type_id: Id,
result_id: Id,
function: Id,
},
FunctionPointerCallINTEL {
result_type_id: Id,
result_id: Id,
operand1: Vec<Id>,
},
AsmTargetINTEL {
result_type_id: Id,
result_id: Id,
asm_target: String,
},
AsmINTEL {
result_type_id: Id,
result_id: Id,
asm_type: Id,
target: Id,
asm_instructions: String,
constraints: String,
},
AsmCallINTEL {
result_type_id: Id,
result_id: Id,
asm: Id,
argument_0: Vec<Id>,
},
AtomicFMinEXT {
result_type_id: Id,
result_id: Id,
pointer: Id,
memory: Id,
semantics: Id,
value: Id,
},
AtomicFMaxEXT {
result_type_id: Id,
result_id: Id,
pointer: Id,
memory: Id,
semantics: Id,
value: Id,
},
AssumeTrueKHR {
condition: Id,
},
ExpectKHR {
result_type_id: Id,
result_id: Id,
value: Id,
expected_value: Id,
},
DecorateString {
target: Id,
decoration: Decoration,
},
MemberDecorateString {
struct_type: Id,
member: u32,
decoration: Decoration,
},
VmeImageINTEL {
result_type_id: Id,
result_id: Id,
image_type: Id,
sampler: Id,
},
TypeVmeImageINTEL {
result_id: Id,
image_type: Id,
},
TypeAvcImePayloadINTEL {
result_id: Id,
},
TypeAvcRefPayloadINTEL {
result_id: Id,
},
TypeAvcSicPayloadINTEL {
result_id: Id,
},
TypeAvcMcePayloadINTEL {
result_id: Id,
},
TypeAvcMceResultINTEL {
result_id: Id,
},
TypeAvcImeResultINTEL {
result_id: Id,
},
TypeAvcImeResultSingleReferenceStreamoutINTEL {
result_id: Id,
},
TypeAvcImeResultDualReferenceStreamoutINTEL {
result_id: Id,
},
TypeAvcImeSingleReferenceStreaminINTEL {
result_id: Id,
},
TypeAvcImeDualReferenceStreaminINTEL {
result_id: Id,
},
TypeAvcRefResultINTEL {
result_id: Id,
},
TypeAvcSicResultINTEL {
result_id: Id,
},
SubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL {
result_type_id: Id,
result_id: Id,
slice_type: Id,
qp: Id,
},
SubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL {
result_type_id: Id,
result_id: Id,
reference_base_penalty: Id,
payload: Id,
},
SubgroupAvcMceGetDefaultInterShapePenaltyINTEL {
result_type_id: Id,
result_id: Id,
slice_type: Id,
qp: Id,
},
SubgroupAvcMceSetInterShapePenaltyINTEL {
result_type_id: Id,
result_id: Id,
packed_shape_penalty: Id,
payload: Id,
},
SubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL {
result_type_id: Id,
result_id: Id,
slice_type: Id,
qp: Id,
},
SubgroupAvcMceSetInterDirectionPenaltyINTEL {
result_type_id: Id,
result_id: Id,
direction_cost: Id,
payload: Id,
},
SubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL {
result_type_id: Id,
result_id: Id,
slice_type: Id,
qp: Id,
},
SubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL {
result_type_id: Id,
result_id: Id,
slice_type: Id,
qp: Id,
},
SubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL {
result_type_id: Id,
result_id: Id,
},
SubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL {
result_type_id: Id,
result_id: Id,
},
SubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL {
result_type_id: Id,
result_id: Id,
},
SubgroupAvcMceSetMotionVectorCostFunctionINTEL {
result_type_id: Id,
result_id: Id,
packed_cost_center_delta: Id,
packed_cost_table: Id,
cost_precision: Id,
payload: Id,
},
SubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL {
result_type_id: Id,
result_id: Id,
slice_type: Id,
qp: Id,
},
SubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL {
result_type_id: Id,
result_id: Id,
},
SubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL {
result_type_id: Id,
result_id: Id,
},
SubgroupAvcMceSetAcOnlyHaarINTEL {
result_type_id: Id,
result_id: Id,
payload: Id,
},
SubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL {
result_type_id: Id,
result_id: Id,
source_field_polarity: Id,
payload: Id,
},
SubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL {
result_type_id: Id,
result_id: Id,
reference_field_polarity: Id,
payload: Id,
},
SubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL {
result_type_id: Id,
result_id: Id,
forward_reference_field_polarity: Id,
backward_reference_field_polarity: Id,
payload: Id,
},
SubgroupAvcMceConvertToImePayloadINTEL {
result_type_id: Id,
result_id: Id,
payload: Id,
},
SubgroupAvcMceConvertToImeResultINTEL {
result_type_id: Id,
result_id: Id,
payload: Id,
},
SubgroupAvcMceConvertToRefPayloadINTEL {
result_type_id: Id,
result_id: Id,
payload: Id,
},
SubgroupAvcMceConvertToRefResultINTEL {
result_type_id: Id,
result_id: Id,
payload: Id,
},
SubgroupAvcMceConvertToSicPayloadINTEL {
result_type_id: Id,
result_id: Id,
payload: Id,
},
SubgroupAvcMceConvertToSicResultINTEL {
result_type_id: Id,
result_id: Id,
payload: Id,
},
SubgroupAvcMceGetMotionVectorsINTEL {
result_type_id: Id,
result_id: Id,
payload: Id,
},
SubgroupAvcMceGetInterDistortionsINTEL {
result_type_id: Id,
result_id: Id,
payload: Id,
},
SubgroupAvcMceGetBestInterDistortionsINTEL {
result_type_id: Id,
result_id: Id,
payload: Id,
},
SubgroupAvcMceGetInterMajorShapeINTEL {
result_type_id: Id,
result_id: Id,
payload: Id,
},
SubgroupAvcMceGetInterMinorShapeINTEL {
result_type_id: Id,
result_id: Id,
payload: Id,
},
SubgroupAvcMceGetInterDirectionsINTEL {
result_type_id: Id,
result_id: Id,
payload: Id,
},
SubgroupAvcMceGetInterMotionVectorCountINTEL {
result_type_id: Id,
result_id: Id,
payload: Id,
},
SubgroupAvcMceGetInterReferenceIdsINTEL {
result_type_id: Id,
result_id: Id,
payload: Id,
},
SubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL {
result_type_id: Id,
result_id: Id,
packed_reference_ids: Id,
packed_reference_parameter_field_polarities: Id,
payload: Id,
},
SubgroupAvcImeInitializeINTEL {
result_type_id: Id,
result_id: Id,
src_coord: Id,
partition_mask: Id,
sad_adjustment: Id,
},
SubgroupAvcImeSetSingleReferenceINTEL {
result_type_id: Id,
result_id: Id,
ref_offset: Id,
search_window_config: Id,
payload: Id,
},
SubgroupAvcImeSetDualReferenceINTEL {
result_type_id: Id,
result_id: Id,
fwd_ref_offset: Id,
bwd_ref_offset: Id,
id_search_window_config: Id,
payload: Id,
},
SubgroupAvcImeRefWindowSizeINTEL {
result_type_id: Id,
result_id: Id,
search_window_config: Id,
dual_ref: Id,
},
SubgroupAvcImeAdjustRefOffsetINTEL {
result_type_id: Id,
result_id: Id,
ref_offset: Id,
src_coord: Id,
ref_window_size: Id,
image_size: Id,
},
SubgroupAvcImeConvertToMcePayloadINTEL {
result_type_id: Id,
result_id: Id,
payload: Id,
},
SubgroupAvcImeSetMaxMotionVectorCountINTEL {
result_type_id: Id,
result_id: Id,
max_motion_vector_count: Id,
payload: Id,
},
SubgroupAvcImeSetUnidirectionalMixDisableINTEL {
result_type_id: Id,
result_id: Id,
payload: Id,
},
SubgroupAvcImeSetEarlySearchTerminationThresholdINTEL {
result_type_id: Id,
result_id: Id,
threshold: Id,
payload: Id,
},
SubgroupAvcImeSetWeightedSadINTEL {
result_type_id: Id,
result_id: Id,
packed_sad_weights: Id,
payload: Id,
},
SubgroupAvcImeEvaluateWithSingleReferenceINTEL {
result_type_id: Id,
result_id: Id,
src_image: Id,
ref_image: Id,
payload: Id,
},
SubgroupAvcImeEvaluateWithDualReferenceINTEL {
result_type_id: Id,
result_id: Id,
src_image: Id,
fwd_ref_image: Id,
bwd_ref_image: Id,
payload: Id,
},
SubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL {
result_type_id: Id,
result_id: Id,
src_image: Id,
ref_image: Id,
payload: Id,
streamin_components: Id,
},
SubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL {
result_type_id: Id,
result_id: Id,
src_image: Id,
fwd_ref_image: Id,
bwd_ref_image: Id,
payload: Id,
streamin_components: Id,
},
SubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL {
result_type_id: Id,
result_id: Id,
src_image: Id,
ref_image: Id,
payload: Id,
},
SubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL {
result_type_id: Id,
result_id: Id,
src_image: Id,
fwd_ref_image: Id,
bwd_ref_image: Id,
payload: Id,
},
SubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL {
result_type_id: Id,
result_id: Id,
src_image: Id,
ref_image: Id,
payload: Id,
streamin_components: Id,
},
SubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL {
result_type_id: Id,
result_id: Id,
src_image: Id,
fwd_ref_image: Id,
bwd_ref_image: Id,
payload: Id,
streamin_components: Id,
},
SubgroupAvcImeConvertToMceResultINTEL {
result_type_id: Id,
result_id: Id,
payload: Id,
},
SubgroupAvcImeGetSingleReferenceStreaminINTEL {
result_type_id: Id,
result_id: Id,
payload: Id,
},
SubgroupAvcImeGetDualReferenceStreaminINTEL {
result_type_id: Id,
result_id: Id,
payload: Id,
},
SubgroupAvcImeStripSingleReferenceStreamoutINTEL {
result_type_id: Id,
result_id: Id,
payload: Id,
},
SubgroupAvcImeStripDualReferenceStreamoutINTEL {
result_type_id: Id,
result_id: Id,
payload: Id,
},
SubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL {
result_type_id: Id,
result_id: Id,
payload: Id,
major_shape: Id,
},
SubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL {
result_type_id: Id,
result_id: Id,
payload: Id,
major_shape: Id,
},
SubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL {
result_type_id: Id,
result_id: Id,
payload: Id,
major_shape: Id,
},
SubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL {
result_type_id: Id,
result_id: Id,
payload: Id,
major_shape: Id,
direction: Id,
},
SubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL {
result_type_id: Id,
result_id: Id,
payload: Id,
major_shape: Id,
direction: Id,
},
SubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL {
result_type_id: Id,
result_id: Id,
payload: Id,
major_shape: Id,
direction: Id,
},
SubgroupAvcImeGetBorderReachedINTEL {
result_type_id: Id,
result_id: Id,
image_select: Id,
payload: Id,
},
SubgroupAvcImeGetTruncatedSearchIndicationINTEL {
result_type_id: Id,
result_id: Id,
payload: Id,
},
SubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL {
result_type_id: Id,
result_id: Id,
payload: Id,
},
SubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL {
result_type_id: Id,
result_id: Id,
payload: Id,
},
SubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL {
result_type_id: Id,
result_id: Id,
payload: Id,
},
SubgroupAvcFmeInitializeINTEL {
result_type_id: Id,
result_id: Id,
src_coord: Id,
motion_vectors: Id,
major_shapes: Id,
minor_shapes: Id,
direction: Id,
pixel_resolution: Id,
sad_adjustment: Id,
},
SubgroupAvcBmeInitializeINTEL {
result_type_id: Id,
result_id: Id,
src_coord: Id,
motion_vectors: Id,
major_shapes: Id,
minor_shapes: Id,
direction: Id,
pixel_resolution: Id,
bidirectional_weight: Id,
sad_adjustment: Id,
},
SubgroupAvcRefConvertToMcePayloadINTEL {
result_type_id: Id,
result_id: Id,
payload: Id,
},
SubgroupAvcRefSetBidirectionalMixDisableINTEL {
result_type_id: Id,
result_id: Id,
payload: Id,
},
SubgroupAvcRefSetBilinearFilterEnableINTEL {
result_type_id: Id,
result_id: Id,
payload: Id,
},
SubgroupAvcRefEvaluateWithSingleReferenceINTEL {
result_type_id: Id,
result_id: Id,
src_image: Id,
ref_image: Id,
payload: Id,
},
SubgroupAvcRefEvaluateWithDualReferenceINTEL {
result_type_id: Id,
result_id: Id,
src_image: Id,
fwd_ref_image: Id,
bwd_ref_image: Id,
payload: Id,
},
SubgroupAvcRefEvaluateWithMultiReferenceINTEL {
result_type_id: Id,
result_id: Id,
src_image: Id,
packed_reference_ids: Id,
payload: Id,
},
SubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL {
result_type_id: Id,
result_id: Id,
src_image: Id,
packed_reference_ids: Id,
packed_reference_field_polarities: Id,
payload: Id,
},
SubgroupAvcRefConvertToMceResultINTEL {
result_type_id: Id,
result_id: Id,
payload: Id,
},
SubgroupAvcSicInitializeINTEL {
result_type_id: Id,
result_id: Id,
src_coord: Id,
},
SubgroupAvcSicConfigureSkcINTEL {
result_type_id: Id,
result_id: Id,
skip_block_partition_type: Id,
skip_motion_vector_mask: Id,
motion_vectors: Id,
bidirectional_weight: Id,
sad_adjustment: Id,
payload: Id,
},
SubgroupAvcSicConfigureIpeLumaINTEL {
result_type_id: Id,
result_id: Id,
luma_intra_partition_mask: Id,
intra_neighbour_availabilty: Id,
left_edge_luma_pixels: Id,
upper_left_corner_luma_pixel: Id,
upper_edge_luma_pixels: Id,
upper_right_edge_luma_pixels: Id,
sad_adjustment: Id,
payload: Id,
},
SubgroupAvcSicConfigureIpeLumaChromaINTEL {
result_type_id: Id,
result_id: Id,
luma_intra_partition_mask: Id,
intra_neighbour_availabilty: Id,
left_edge_luma_pixels: Id,
upper_left_corner_luma_pixel: Id,
upper_edge_luma_pixels: Id,
upper_right_edge_luma_pixels: Id,
left_edge_chroma_pixels: Id,
upper_left_corner_chroma_pixel: Id,
upper_edge_chroma_pixels: Id,
sad_adjustment: Id,
payload: Id,
},
SubgroupAvcSicGetMotionVectorMaskINTEL {
result_type_id: Id,
result_id: Id,
skip_block_partition_type: Id,
direction: Id,
},
SubgroupAvcSicConvertToMcePayloadINTEL {
result_type_id: Id,
result_id: Id,
payload: Id,
},
SubgroupAvcSicSetIntraLumaShapePenaltyINTEL {
result_type_id: Id,
result_id: Id,
packed_shape_penalty: Id,
payload: Id,
},
SubgroupAvcSicSetIntraLumaModeCostFunctionINTEL {
result_type_id: Id,
result_id: Id,
luma_mode_penalty: Id,
luma_packed_neighbor_modes: Id,
luma_packed_non_dc_penalty: Id,
payload: Id,
},
SubgroupAvcSicSetIntraChromaModeCostFunctionINTEL {
result_type_id: Id,
result_id: Id,
chroma_mode_base_penalty: Id,
payload: Id,
},
SubgroupAvcSicSetBilinearFilterEnableINTEL {
result_type_id: Id,
result_id: Id,
payload: Id,
},
SubgroupAvcSicSetSkcForwardTransformEnableINTEL {
result_type_id: Id,
result_id: Id,
packed_sad_coefficients: Id,
payload: Id,
},
SubgroupAvcSicSetBlockBasedRawSkipSadINTEL {
result_type_id: Id,
result_id: Id,
block_based_skip_type: Id,
payload: Id,
},
SubgroupAvcSicEvaluateIpeINTEL {
result_type_id: Id,
result_id: Id,
src_image: Id,
payload: Id,
},
SubgroupAvcSicEvaluateWithSingleReferenceINTEL {
result_type_id: Id,
result_id: Id,
src_image: Id,
ref_image: Id,
payload: Id,
},
SubgroupAvcSicEvaluateWithDualReferenceINTEL {
result_type_id: Id,
result_id: Id,
src_image: Id,
fwd_ref_image: Id,
bwd_ref_image: Id,
payload: Id,
},
SubgroupAvcSicEvaluateWithMultiReferenceINTEL {
result_type_id: Id,
result_id: Id,
src_image: Id,
packed_reference_ids: Id,
payload: Id,
},
SubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL {
result_type_id: Id,
result_id: Id,
src_image: Id,
packed_reference_ids: Id,
packed_reference_field_polarities: Id,
payload: Id,
},
SubgroupAvcSicConvertToMceResultINTEL {
result_type_id: Id,
result_id: Id,
payload: Id,
},
SubgroupAvcSicGetIpeLumaShapeINTEL {
result_type_id: Id,
result_id: Id,
payload: Id,
},
SubgroupAvcSicGetBestIpeLumaDistortionINTEL {
result_type_id: Id,
result_id: Id,
payload: Id,
},
SubgroupAvcSicGetBestIpeChromaDistortionINTEL {
result_type_id: Id,
result_id: Id,
payload: Id,
},
SubgroupAvcSicGetPackedIpeLumaModesINTEL {
result_type_id: Id,
result_id: Id,
payload: Id,
},
SubgroupAvcSicGetIpeChromaModeINTEL {
result_type_id: Id,
result_id: Id,
payload: Id,
},
SubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL {
result_type_id: Id,
result_id: Id,
payload: Id,
},
SubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL {
result_type_id: Id,
result_id: Id,
payload: Id,
},
SubgroupAvcSicGetInterRawSadsINTEL {
result_type_id: Id,
result_id: Id,
payload: Id,
},
VariableLengthArrayINTEL {
result_type_id: Id,
result_id: Id,
lenght: Id,
},
SaveMemoryINTEL {
result_type_id: Id,
result_id: Id,
},
RestoreMemoryINTEL {
ptr: Id,
},
ArbitraryFloatSinCosPiINTEL {
result_type_id: Id,
result_id: Id,
a: Id,
m1: u32,
mout: u32,
from_sign: u32,
enable_subnormals: u32,
rounding_mode: u32,
rounding_accuracy: u32,
},
ArbitraryFloatCastINTEL {
result_type_id: Id,
result_id: Id,
a: Id,
m1: u32,
mout: u32,
enable_subnormals: u32,
rounding_mode: u32,
rounding_accuracy: u32,
},
ArbitraryFloatCastFromIntINTEL {
result_type_id: Id,
result_id: Id,
a: Id,
mout: u32,
from_sign: u32,
enable_subnormals: u32,
rounding_mode: u32,
rounding_accuracy: u32,
},
ArbitraryFloatCastToIntINTEL {
result_type_id: Id,
result_id: Id,
a: Id,
m1: u32,
enable_subnormals: u32,
rounding_mode: u32,
rounding_accuracy: u32,
},
ArbitraryFloatAddINTEL {
result_type_id: Id,
result_id: Id,
a: Id,
m1: u32,
b: Id,
m2: u32,
mout: u32,
enable_subnormals: u32,
rounding_mode: u32,
rounding_accuracy: u32,
},
ArbitraryFloatSubINTEL {
result_type_id: Id,
result_id: Id,
a: Id,
m1: u32,
b: Id,
m2: u32,
mout: u32,
enable_subnormals: u32,
rounding_mode: u32,
rounding_accuracy: u32,
},
ArbitraryFloatMulINTEL {
result_type_id: Id,
result_id: Id,
a: Id,
m1: u32,
b: Id,
m2: u32,
mout: u32,
enable_subnormals: u32,
rounding_mode: u32,
rounding_accuracy: u32,
},
ArbitraryFloatDivINTEL {
result_type_id: Id,
result_id: Id,
a: Id,
m1: u32,
b: Id,
m2: u32,
mout: u32,
enable_subnormals: u32,
rounding_mode: u32,
rounding_accuracy: u32,
},
ArbitraryFloatGTINTEL {
result_type_id: Id,
result_id: Id,
a: Id,
m1: u32,
b: Id,
m2: u32,
},
ArbitraryFloatGEINTEL {
result_type_id: Id,
result_id: Id,
a: Id,
m1: u32,
b: Id,
m2: u32,
},
ArbitraryFloatLTINTEL {
result_type_id: Id,
result_id: Id,
a: Id,
m1: u32,
b: Id,
m2: u32,
},
ArbitraryFloatLEINTEL {
result_type_id: Id,
result_id: Id,
a: Id,
m1: u32,
b: Id,
m2: u32,
},
ArbitraryFloatEQINTEL {
result_type_id: Id,
result_id: Id,
a: Id,
m1: u32,
b: Id,
m2: u32,
},
ArbitraryFloatRecipINTEL {
result_type_id: Id,
result_id: Id,
a: Id,
m1: u32,
mout: u32,
enable_subnormals: u32,
rounding_mode: u32,
rounding_accuracy: u32,
},
ArbitraryFloatRSqrtINTEL {
result_type_id: Id,
result_id: Id,
a: Id,
m1: u32,
mout: u32,
enable_subnormals: u32,
rounding_mode: u32,
rounding_accuracy: u32,
},
ArbitraryFloatCbrtINTEL {
result_type_id: Id,
result_id: Id,
a: Id,
m1: u32,
mout: u32,
enable_subnormals: u32,
rounding_mode: u32,
rounding_accuracy: u32,
},
ArbitraryFloatHypotINTEL {
result_type_id: Id,
result_id: Id,
a: Id,
m1: u32,
b: Id,
m2: u32,
mout: u32,
enable_subnormals: u32,
rounding_mode: u32,
rounding_accuracy: u32,
},
ArbitraryFloatSqrtINTEL {
result_type_id: Id,
result_id: Id,
a: Id,
m1: u32,
mout: u32,
enable_subnormals: u32,
rounding_mode: u32,
rounding_accuracy: u32,
},
ArbitraryFloatLogINTEL {
result_type_id: Id,
result_id: Id,
a: Id,
m1: u32,
mout: u32,
enable_subnormals: u32,
rounding_mode: u32,
rounding_accuracy: u32,
},
ArbitraryFloatLog2INTEL {
result_type_id: Id,
result_id: Id,
a: Id,
m1: u32,
mout: u32,
enable_subnormals: u32,
rounding_mode: u32,
rounding_accuracy: u32,
},
ArbitraryFloatLog10INTEL {
result_type_id: Id,
result_id: Id,
a: Id,
m1: u32,
mout: u32,
enable_subnormals: u32,
rounding_mode: u32,
rounding_accuracy: u32,
},
ArbitraryFloatLog1pINTEL {
result_type_id: Id,
result_id: Id,
a: Id,
m1: u32,
mout: u32,
enable_subnormals: u32,
rounding_mode: u32,
rounding_accuracy: u32,
},
ArbitraryFloatExpINTEL {
result_type_id: Id,
result_id: Id,
a: Id,
m1: u32,
mout: u32,
enable_subnormals: u32,
rounding_mode: u32,
rounding_accuracy: u32,
},
ArbitraryFloatExp2INTEL {
result_type_id: Id,
result_id: Id,
a: Id,
m1: u32,
mout: u32,
enable_subnormals: u32,
rounding_mode: u32,
rounding_accuracy: u32,
},
ArbitraryFloatExp10INTEL {
result_type_id: Id,
result_id: Id,
a: Id,
m1: u32,
mout: u32,
enable_subnormals: u32,
rounding_mode: u32,
rounding_accuracy: u32,
},
ArbitraryFloatExpm1INTEL {
result_type_id: Id,
result_id: Id,
a: Id,
m1: u32,
mout: u32,
enable_subnormals: u32,
rounding_mode: u32,
rounding_accuracy: u32,
},
ArbitraryFloatSinINTEL {
result_type_id: Id,
result_id: Id,
a: Id,
m1: u32,
mout: u32,
enable_subnormals: u32,
rounding_mode: u32,
rounding_accuracy: u32,
},
ArbitraryFloatCosINTEL {
result_type_id: Id,
result_id: Id,
a: Id,
m1: u32,
mout: u32,
enable_subnormals: u32,
rounding_mode: u32,
rounding_accuracy: u32,
},
ArbitraryFloatSinCosINTEL {
result_type_id: Id,
result_id: Id,
a: Id,
m1: u32,
mout: u32,
enable_subnormals: u32,
rounding_mode: u32,
rounding_accuracy: u32,
},
ArbitraryFloatSinPiINTEL {
result_type_id: Id,
result_id: Id,
a: Id,
m1: u32,
mout: u32,
enable_subnormals: u32,
rounding_mode: u32,
rounding_accuracy: u32,
},
ArbitraryFloatCosPiINTEL {
result_type_id: Id,
result_id: Id,
a: Id,
m1: u32,
mout: u32,
enable_subnormals: u32,
rounding_mode: u32,
rounding_accuracy: u32,
},
ArbitraryFloatASinINTEL {
result_type_id: Id,
result_id: Id,
a: Id,
m1: u32,
mout: u32,
enable_subnormals: u32,
rounding_mode: u32,
rounding_accuracy: u32,
},
ArbitraryFloatASinPiINTEL {
result_type_id: Id,
result_id: Id,
a: Id,
m1: u32,
mout: u32,
enable_subnormals: u32,
rounding_mode: u32,
rounding_accuracy: u32,
},
ArbitraryFloatACosINTEL {
result_type_id: Id,
result_id: Id,
a: Id,
m1: u32,
mout: u32,
enable_subnormals: u32,
rounding_mode: u32,
rounding_accuracy: u32,
},
ArbitraryFloatACosPiINTEL {
result_type_id: Id,
result_id: Id,
a: Id,
m1: u32,
mout: u32,
enable_subnormals: u32,
rounding_mode: u32,
rounding_accuracy: u32,
},
ArbitraryFloatATanINTEL {
result_type_id: Id,
result_id: Id,
a: Id,
m1: u32,
mout: u32,
enable_subnormals: u32,
rounding_mode: u32,
rounding_accuracy: u32,
},
ArbitraryFloatATanPiINTEL {
result_type_id: Id,
result_id: Id,
a: Id,
m1: u32,
mout: u32,
enable_subnormals: u32,
rounding_mode: u32,
rounding_accuracy: u32,
},
ArbitraryFloatATan2INTEL {
result_type_id: Id,
result_id: Id,
a: Id,
m1: u32,
b: Id,
m2: u32,
mout: u32,
enable_subnormals: u32,
rounding_mode: u32,
rounding_accuracy: u32,
},
ArbitraryFloatPowINTEL {
result_type_id: Id,
result_id: Id,
a: Id,
m1: u32,
b: Id,
m2: u32,
mout: u32,
enable_subnormals: u32,
rounding_mode: u32,
rounding_accuracy: u32,
},
ArbitraryFloatPowRINTEL {
result_type_id: Id,
result_id: Id,
a: Id,
m1: u32,
b: Id,
m2: u32,
mout: u32,
enable_subnormals: u32,
rounding_mode: u32,
rounding_accuracy: u32,
},
ArbitraryFloatPowNINTEL {
result_type_id: Id,
result_id: Id,
a: Id,
m1: u32,
b: Id,
mout: u32,
enable_subnormals: u32,
rounding_mode: u32,
rounding_accuracy: u32,
},
LoopControlINTEL {
loop_control_parameters: Vec<u32>,
},
FixedSqrtINTEL {
result_type_id: Id,
result_id: Id,
input_type: Id,
input: Id,
s: u32,
i: u32,
r_i: u32,
q: u32,
o: u32,
},
FixedRecipINTEL {
result_type_id: Id,
result_id: Id,
input_type: Id,
input: Id,
s: u32,
i: u32,
r_i: u32,
q: u32,
o: u32,
},
FixedRsqrtINTEL {
result_type_id: Id,
result_id: Id,
input_type: Id,
input: Id,
s: u32,
i: u32,
r_i: u32,
q: u32,
o: u32,
},
FixedSinINTEL {
result_type_id: Id,
result_id: Id,
input_type: Id,
input: Id,
s: u32,
i: u32,
r_i: u32,
q: u32,
o: u32,
},
FixedCosINTEL {
result_type_id: Id,
result_id: Id,
input_type: Id,
input: Id,
s: u32,
i: u32,
r_i: u32,
q: u32,
o: u32,
},
FixedSinCosINTEL {
result_type_id: Id,
result_id: Id,
input_type: Id,
input: Id,
s: u32,
i: u32,
r_i: u32,
q: u32,
o: u32,
},
FixedSinPiINTEL {
result_type_id: Id,
result_id: Id,
input_type: Id,
input: Id,
s: u32,
i: u32,
r_i: u32,
q: u32,
o: u32,
},
FixedCosPiINTEL {
result_type_id: Id,
result_id: Id,
input_type: Id,
input: Id,
s: u32,
i: u32,
r_i: u32,
q: u32,
o: u32,
},
FixedSinCosPiINTEL {
result_type_id: Id,
result_id: Id,
input_type: Id,
input: Id,
s: u32,
i: u32,
r_i: u32,
q: u32,
o: u32,
},
FixedLogINTEL {
result_type_id: Id,
result_id: Id,
input_type: Id,
input: Id,
s: u32,
i: u32,
r_i: u32,
q: u32,
o: u32,
},
FixedExpINTEL {
result_type_id: Id,
result_id: Id,
input_type: Id,
input: Id,
s: u32,
i: u32,
r_i: u32,
q: u32,
o: u32,
},
PtrCastToCrossWorkgroupINTEL {
result_type_id: Id,
result_id: Id,
pointer: Id,
},
CrossWorkgroupCastToPtrINTEL {
result_type_id: Id,
result_id: Id,
pointer: Id,
},
ReadPipeBlockingINTEL {
result_type_id: Id,
result_id: Id,
packet_size: Id,
packet_alignment: Id,
},
WritePipeBlockingINTEL {
result_type_id: Id,
result_id: Id,
packet_size: Id,
packet_alignment: Id,
},
FPGARegINTEL {
result_type_id: Id,
result_id: Id,
result: Id,
input: Id,
},
RayQueryGetRayTMinKHR {
result_type_id: Id,
result_id: Id,
ray_query: Id,
},
RayQueryGetRayFlagsKHR {
result_type_id: Id,
result_id: Id,
ray_query: Id,
},
RayQueryGetIntersectionTKHR {
result_type_id: Id,
result_id: Id,
ray_query: Id,
intersection: Id,
},
RayQueryGetIntersectionInstanceCustomIndexKHR {
result_type_id: Id,
result_id: Id,
ray_query: Id,
intersection: Id,
},
RayQueryGetIntersectionInstanceIdKHR {
result_type_id: Id,
result_id: Id,
ray_query: Id,
intersection: Id,
},
RayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR {
result_type_id: Id,
result_id: Id,
ray_query: Id,
intersection: Id,
},
RayQueryGetIntersectionGeometryIndexKHR {
result_type_id: Id,
result_id: Id,
ray_query: Id,
intersection: Id,
},
RayQueryGetIntersectionPrimitiveIndexKHR {
result_type_id: Id,
result_id: Id,
ray_query: Id,
intersection: Id,
},
RayQueryGetIntersectionBarycentricsKHR {
result_type_id: Id,
result_id: Id,
ray_query: Id,
intersection: Id,
},
RayQueryGetIntersectionFrontFaceKHR {
result_type_id: Id,
result_id: Id,
ray_query: Id,
intersection: Id,
},
RayQueryGetIntersectionCandidateAABBOpaqueKHR {
result_type_id: Id,
result_id: Id,
ray_query: Id,
},
RayQueryGetIntersectionObjectRayDirectionKHR {
result_type_id: Id,
result_id: Id,
ray_query: Id,
intersection: Id,
},
RayQueryGetIntersectionObjectRayOriginKHR {
result_type_id: Id,
result_id: Id,
ray_query: Id,
intersection: Id,
},
RayQueryGetWorldRayDirectionKHR {
result_type_id: Id,
result_id: Id,
ray_query: Id,
},
RayQueryGetWorldRayOriginKHR {
result_type_id: Id,
result_id: Id,
ray_query: Id,
},
RayQueryGetIntersectionObjectToWorldKHR {
result_type_id: Id,
result_id: Id,
ray_query: Id,
intersection: Id,
},
RayQueryGetIntersectionWorldToObjectKHR {
result_type_id: Id,
result_id: Id,
ray_query: Id,
intersection: Id,
},
AtomicFAddEXT {
result_type_id: Id,
result_id: Id,
pointer: Id,
memory: Id,
semantics: Id,
value: Id,
},
TypeBufferSurfaceINTEL {
result_id: Id,
access_qualifier: AccessQualifier,
},
TypeStructContinuedINTEL {
member_types: Vec<Id>,
},
ConstantCompositeContinuedINTEL {
constituents: Vec<Id>,
},
SpecConstantCompositeContinuedINTEL {
constituents: Vec<Id>,
},
}
impl Instruction {
#[allow(dead_code)]
fn parse(reader: &mut InstructionReader<'_>) -> Result<Self, ParseError> {
let opcode = (reader.next_u32()? & 0xffff) as u16;
Ok(match opcode {
0u16 => Self::Nop,
1u16 => Self::Undef {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
},
2u16 => Self::SourceContinued { continued_source: reader.next_string()? },
3u16 => Self::Source {
source_language: SourceLanguage::parse(reader)?,
version: reader.next_u32()?,
file: if !reader.is_empty() { Some(Id(reader.next_u32()?)) } else { None },
source: if !reader.is_empty() { Some(reader.next_string()?) } else { None },
},
4u16 => Self::SourceExtension { extension: reader.next_string()? },
5u16 => Self::Name { target: Id(reader.next_u32()?), name: reader.next_string()? },
6u16 => Self::MemberName {
ty: Id(reader.next_u32()?),
member: reader.next_u32()?,
name: reader.next_string()?,
},
7u16 => {
Self::String { result_id: Id(reader.next_u32()?), string: reader.next_string()? }
}
8u16 => Self::Line {
file: Id(reader.next_u32()?),
line: reader.next_u32()?,
column: reader.next_u32()?,
},
10u16 => Self::Extension { name: reader.next_string()? },
11u16 => Self::ExtInstImport {
result_id: Id(reader.next_u32()?),
name: reader.next_string()?,
},
12u16 => Self::ExtInst {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
set: Id(reader.next_u32()?),
instruction: reader.next_u32()?,
operands: {
let mut vec = Vec::new();
while !reader.is_empty() {
vec.push(Id(reader.next_u32()?));
}
vec
},
},
14u16 => Self::MemoryModel {
addressing_model: AddressingModel::parse(reader)?,
memory_model: MemoryModel::parse(reader)?,
},
15u16 => Self::EntryPoint {
execution_model: ExecutionModel::parse(reader)?,
entry_point: Id(reader.next_u32()?),
name: reader.next_string()?,
interface: {
let mut vec = Vec::new();
while !reader.is_empty() {
vec.push(Id(reader.next_u32()?));
}
vec
},
},
16u16 => Self::ExecutionMode {
entry_point: Id(reader.next_u32()?),
mode: ExecutionMode::parse(reader)?,
},
17u16 => Self::Capability { capability: Capability::parse(reader)? },
19u16 => Self::TypeVoid { result_id: Id(reader.next_u32()?) },
20u16 => Self::TypeBool { result_id: Id(reader.next_u32()?) },
21u16 => Self::TypeInt {
result_id: Id(reader.next_u32()?),
width: reader.next_u32()?,
signedness: reader.next_u32()?,
},
22u16 => {
Self::TypeFloat { result_id: Id(reader.next_u32()?), width: reader.next_u32()? }
}
23u16 => Self::TypeVector {
result_id: Id(reader.next_u32()?),
component_type: Id(reader.next_u32()?),
component_count: reader.next_u32()?,
},
24u16 => Self::TypeMatrix {
result_id: Id(reader.next_u32()?),
column_type: Id(reader.next_u32()?),
column_count: reader.next_u32()?,
},
25u16 => Self::TypeImage {
result_id: Id(reader.next_u32()?),
sampled_type: Id(reader.next_u32()?),
dim: Dim::parse(reader)?,
depth: reader.next_u32()?,
arrayed: reader.next_u32()?,
ms: reader.next_u32()?,
sampled: reader.next_u32()?,
image_format: ImageFormat::parse(reader)?,
access_qualifier: if !reader.is_empty() {
Some(AccessQualifier::parse(reader)?)
} else {
None
},
},
26u16 => Self::TypeSampler { result_id: Id(reader.next_u32()?) },
27u16 => Self::TypeSampledImage {
result_id: Id(reader.next_u32()?),
image_type: Id(reader.next_u32()?),
},
28u16 => Self::TypeArray {
result_id: Id(reader.next_u32()?),
element_type: Id(reader.next_u32()?),
length: Id(reader.next_u32()?),
},
29u16 => Self::TypeRuntimeArray {
result_id: Id(reader.next_u32()?),
element_type: Id(reader.next_u32()?),
},
30u16 => Self::TypeStruct {
result_id: Id(reader.next_u32()?),
member_types: {
let mut vec = Vec::new();
while !reader.is_empty() {
vec.push(Id(reader.next_u32()?));
}
vec
},
},
31u16 => {
Self::TypeOpaque { result_id: Id(reader.next_u32()?), name: reader.next_string()? }
}
32u16 => Self::TypePointer {
result_id: Id(reader.next_u32()?),
storage_class: StorageClass::parse(reader)?,
ty: Id(reader.next_u32()?),
},
33u16 => Self::TypeFunction {
result_id: Id(reader.next_u32()?),
return_type: Id(reader.next_u32()?),
parameter_types: {
let mut vec = Vec::new();
while !reader.is_empty() {
vec.push(Id(reader.next_u32()?));
}
vec
},
},
34u16 => Self::TypeEvent { result_id: Id(reader.next_u32()?) },
35u16 => Self::TypeDeviceEvent { result_id: Id(reader.next_u32()?) },
36u16 => Self::TypeReserveId { result_id: Id(reader.next_u32()?) },
37u16 => Self::TypeQueue { result_id: Id(reader.next_u32()?) },
38u16 => Self::TypePipe {
result_id: Id(reader.next_u32()?),
qualifier: AccessQualifier::parse(reader)?,
},
39u16 => Self::TypeForwardPointer {
pointer_type: Id(reader.next_u32()?),
storage_class: StorageClass::parse(reader)?,
},
41u16 => Self::ConstantTrue {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
},
42u16 => Self::ConstantFalse {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
},
43u16 => Self::Constant {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
value: reader.remainder(),
},
44u16 => Self::ConstantComposite {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
constituents: {
let mut vec = Vec::new();
while !reader.is_empty() {
vec.push(Id(reader.next_u32()?));
}
vec
},
},
45u16 => Self::ConstantSampler {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
sampler_addressing_mode: SamplerAddressingMode::parse(reader)?,
param: reader.next_u32()?,
sampler_filter_mode: SamplerFilterMode::parse(reader)?,
},
46u16 => Self::ConstantNull {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
},
48u16 => Self::SpecConstantTrue {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
},
49u16 => Self::SpecConstantFalse {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
},
50u16 => Self::SpecConstant {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
value: reader.remainder(),
},
51u16 => Self::SpecConstantComposite {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
constituents: {
let mut vec = Vec::new();
while !reader.is_empty() {
vec.push(Id(reader.next_u32()?));
}
vec
},
},
52u16 => Self::SpecConstantOp {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
opcode: SpecConstantInstruction::parse(reader)?,
},
54u16 => Self::Function {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
function_control: FunctionControl::parse(reader)?,
function_type: Id(reader.next_u32()?),
},
55u16 => Self::FunctionParameter {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
},
56u16 => Self::FunctionEnd,
57u16 => Self::FunctionCall {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
function: Id(reader.next_u32()?),
arguments: {
let mut vec = Vec::new();
while !reader.is_empty() {
vec.push(Id(reader.next_u32()?));
}
vec
},
},
59u16 => Self::Variable {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
storage_class: StorageClass::parse(reader)?,
initializer: if !reader.is_empty() { Some(Id(reader.next_u32()?)) } else { None },
},
60u16 => Self::ImageTexelPointer {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
image: Id(reader.next_u32()?),
coordinate: Id(reader.next_u32()?),
sample: Id(reader.next_u32()?),
},
61u16 => Self::Load {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
pointer: Id(reader.next_u32()?),
memory_access: if !reader.is_empty() {
Some(MemoryAccess::parse(reader)?)
} else {
None
},
},
62u16 => Self::Store {
pointer: Id(reader.next_u32()?),
object: Id(reader.next_u32()?),
memory_access: if !reader.is_empty() {
Some(MemoryAccess::parse(reader)?)
} else {
None
},
},
63u16 => Self::CopyMemory {
target: Id(reader.next_u32()?),
source: Id(reader.next_u32()?),
memory_access1: if !reader.is_empty() {
Some(MemoryAccess::parse(reader)?)
} else {
None
},
memory_access2: if !reader.is_empty() {
Some(MemoryAccess::parse(reader)?)
} else {
None
},
},
64u16 => Self::CopyMemorySized {
target: Id(reader.next_u32()?),
source: Id(reader.next_u32()?),
size: Id(reader.next_u32()?),
memory_access1: if !reader.is_empty() {
Some(MemoryAccess::parse(reader)?)
} else {
None
},
memory_access2: if !reader.is_empty() {
Some(MemoryAccess::parse(reader)?)
} else {
None
},
},
65u16 => Self::AccessChain {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
base: Id(reader.next_u32()?),
indexes: {
let mut vec = Vec::new();
while !reader.is_empty() {
vec.push(Id(reader.next_u32()?));
}
vec
},
},
66u16 => Self::InBoundsAccessChain {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
base: Id(reader.next_u32()?),
indexes: {
let mut vec = Vec::new();
while !reader.is_empty() {
vec.push(Id(reader.next_u32()?));
}
vec
},
},
67u16 => Self::PtrAccessChain {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
base: Id(reader.next_u32()?),
element: Id(reader.next_u32()?),
indexes: {
let mut vec = Vec::new();
while !reader.is_empty() {
vec.push(Id(reader.next_u32()?));
}
vec
},
},
68u16 => Self::ArrayLength {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
structure: Id(reader.next_u32()?),
array_member: reader.next_u32()?,
},
69u16 => Self::GenericPtrMemSemantics {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
pointer: Id(reader.next_u32()?),
},
70u16 => Self::InBoundsPtrAccessChain {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
base: Id(reader.next_u32()?),
element: Id(reader.next_u32()?),
indexes: {
let mut vec = Vec::new();
while !reader.is_empty() {
vec.push(Id(reader.next_u32()?));
}
vec
},
},
71u16 => Self::Decorate {
target: Id(reader.next_u32()?),
decoration: Decoration::parse(reader)?,
},
72u16 => Self::MemberDecorate {
structure_type: Id(reader.next_u32()?),
member: reader.next_u32()?,
decoration: Decoration::parse(reader)?,
},
73u16 => Self::DecorationGroup { result_id: Id(reader.next_u32()?) },
74u16 => Self::GroupDecorate {
decoration_group: Id(reader.next_u32()?),
targets: {
let mut vec = Vec::new();
while !reader.is_empty() {
vec.push(Id(reader.next_u32()?));
}
vec
},
},
75u16 => Self::GroupMemberDecorate {
decoration_group: Id(reader.next_u32()?),
targets: {
let mut vec = Vec::new();
while !reader.is_empty() {
vec.push((Id(reader.next_u32()?), reader.next_u32()?));
}
vec
},
},
77u16 => Self::VectorExtractDynamic {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
vector: Id(reader.next_u32()?),
index: Id(reader.next_u32()?),
},
78u16 => Self::VectorInsertDynamic {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
vector: Id(reader.next_u32()?),
component: Id(reader.next_u32()?),
index: Id(reader.next_u32()?),
},
79u16 => Self::VectorShuffle {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
vector_1: Id(reader.next_u32()?),
vector_2: Id(reader.next_u32()?),
components: {
let mut vec = Vec::new();
while !reader.is_empty() {
vec.push(reader.next_u32()?);
}
vec
},
},
80u16 => Self::CompositeConstruct {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
constituents: {
let mut vec = Vec::new();
while !reader.is_empty() {
vec.push(Id(reader.next_u32()?));
}
vec
},
},
81u16 => Self::CompositeExtract {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
composite: Id(reader.next_u32()?),
indexes: {
let mut vec = Vec::new();
while !reader.is_empty() {
vec.push(reader.next_u32()?);
}
vec
},
},
82u16 => Self::CompositeInsert {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
object: Id(reader.next_u32()?),
composite: Id(reader.next_u32()?),
indexes: {
let mut vec = Vec::new();
while !reader.is_empty() {
vec.push(reader.next_u32()?);
}
vec
},
},
83u16 => Self::CopyObject {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand: Id(reader.next_u32()?),
},
84u16 => Self::Transpose {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
matrix: Id(reader.next_u32()?),
},
86u16 => Self::SampledImage {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
image: Id(reader.next_u32()?),
sampler: Id(reader.next_u32()?),
},
87u16 => Self::ImageSampleImplicitLod {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
sampled_image: Id(reader.next_u32()?),
coordinate: Id(reader.next_u32()?),
image_operands: if !reader.is_empty() {
Some(ImageOperands::parse(reader)?)
} else {
None
},
},
88u16 => Self::ImageSampleExplicitLod {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
sampled_image: Id(reader.next_u32()?),
coordinate: Id(reader.next_u32()?),
image_operands: ImageOperands::parse(reader)?,
},
89u16 => Self::ImageSampleDrefImplicitLod {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
sampled_image: Id(reader.next_u32()?),
coordinate: Id(reader.next_u32()?),
dref: Id(reader.next_u32()?),
image_operands: if !reader.is_empty() {
Some(ImageOperands::parse(reader)?)
} else {
None
},
},
90u16 => Self::ImageSampleDrefExplicitLod {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
sampled_image: Id(reader.next_u32()?),
coordinate: Id(reader.next_u32()?),
dref: Id(reader.next_u32()?),
image_operands: ImageOperands::parse(reader)?,
},
91u16 => Self::ImageSampleProjImplicitLod {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
sampled_image: Id(reader.next_u32()?),
coordinate: Id(reader.next_u32()?),
image_operands: if !reader.is_empty() {
Some(ImageOperands::parse(reader)?)
} else {
None
},
},
92u16 => Self::ImageSampleProjExplicitLod {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
sampled_image: Id(reader.next_u32()?),
coordinate: Id(reader.next_u32()?),
image_operands: ImageOperands::parse(reader)?,
},
93u16 => Self::ImageSampleProjDrefImplicitLod {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
sampled_image: Id(reader.next_u32()?),
coordinate: Id(reader.next_u32()?),
dref: Id(reader.next_u32()?),
image_operands: if !reader.is_empty() {
Some(ImageOperands::parse(reader)?)
} else {
None
},
},
94u16 => Self::ImageSampleProjDrefExplicitLod {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
sampled_image: Id(reader.next_u32()?),
coordinate: Id(reader.next_u32()?),
dref: Id(reader.next_u32()?),
image_operands: ImageOperands::parse(reader)?,
},
95u16 => Self::ImageFetch {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
image: Id(reader.next_u32()?),
coordinate: Id(reader.next_u32()?),
image_operands: if !reader.is_empty() {
Some(ImageOperands::parse(reader)?)
} else {
None
},
},
96u16 => Self::ImageGather {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
sampled_image: Id(reader.next_u32()?),
coordinate: Id(reader.next_u32()?),
component: Id(reader.next_u32()?),
image_operands: if !reader.is_empty() {
Some(ImageOperands::parse(reader)?)
} else {
None
},
},
97u16 => Self::ImageDrefGather {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
sampled_image: Id(reader.next_u32()?),
coordinate: Id(reader.next_u32()?),
dref: Id(reader.next_u32()?),
image_operands: if !reader.is_empty() {
Some(ImageOperands::parse(reader)?)
} else {
None
},
},
98u16 => Self::ImageRead {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
image: Id(reader.next_u32()?),
coordinate: Id(reader.next_u32()?),
image_operands: if !reader.is_empty() {
Some(ImageOperands::parse(reader)?)
} else {
None
},
},
99u16 => Self::ImageWrite {
image: Id(reader.next_u32()?),
coordinate: Id(reader.next_u32()?),
texel: Id(reader.next_u32()?),
image_operands: if !reader.is_empty() {
Some(ImageOperands::parse(reader)?)
} else {
None
},
},
100u16 => Self::Image {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
sampled_image: Id(reader.next_u32()?),
},
101u16 => Self::ImageQueryFormat {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
image: Id(reader.next_u32()?),
},
102u16 => Self::ImageQueryOrder {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
image: Id(reader.next_u32()?),
},
103u16 => Self::ImageQuerySizeLod {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
image: Id(reader.next_u32()?),
level_of_detail: Id(reader.next_u32()?),
},
104u16 => Self::ImageQuerySize {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
image: Id(reader.next_u32()?),
},
105u16 => Self::ImageQueryLod {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
sampled_image: Id(reader.next_u32()?),
coordinate: Id(reader.next_u32()?),
},
106u16 => Self::ImageQueryLevels {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
image: Id(reader.next_u32()?),
},
107u16 => Self::ImageQuerySamples {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
image: Id(reader.next_u32()?),
},
109u16 => Self::ConvertFToU {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
float_value: Id(reader.next_u32()?),
},
110u16 => Self::ConvertFToS {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
float_value: Id(reader.next_u32()?),
},
111u16 => Self::ConvertSToF {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
signed_value: Id(reader.next_u32()?),
},
112u16 => Self::ConvertUToF {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
unsigned_value: Id(reader.next_u32()?),
},
113u16 => Self::UConvert {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
unsigned_value: Id(reader.next_u32()?),
},
114u16 => Self::SConvert {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
signed_value: Id(reader.next_u32()?),
},
115u16 => Self::FConvert {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
float_value: Id(reader.next_u32()?),
},
116u16 => Self::QuantizeToF16 {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
value: Id(reader.next_u32()?),
},
117u16 => Self::ConvertPtrToU {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
pointer: Id(reader.next_u32()?),
},
118u16 => Self::SatConvertSToU {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
signed_value: Id(reader.next_u32()?),
},
119u16 => Self::SatConvertUToS {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
unsigned_value: Id(reader.next_u32()?),
},
120u16 => Self::ConvertUToPtr {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
integer_value: Id(reader.next_u32()?),
},
121u16 => Self::PtrCastToGeneric {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
pointer: Id(reader.next_u32()?),
},
122u16 => Self::GenericCastToPtr {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
pointer: Id(reader.next_u32()?),
},
123u16 => Self::GenericCastToPtrExplicit {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
pointer: Id(reader.next_u32()?),
storage: StorageClass::parse(reader)?,
},
124u16 => Self::Bitcast {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand: Id(reader.next_u32()?),
},
126u16 => Self::SNegate {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand: Id(reader.next_u32()?),
},
127u16 => Self::FNegate {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand: Id(reader.next_u32()?),
},
128u16 => Self::IAdd {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
129u16 => Self::FAdd {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
130u16 => Self::ISub {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
131u16 => Self::FSub {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
132u16 => Self::IMul {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
133u16 => Self::FMul {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
134u16 => Self::UDiv {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
135u16 => Self::SDiv {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
136u16 => Self::FDiv {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
137u16 => Self::UMod {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
138u16 => Self::SRem {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
139u16 => Self::SMod {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
140u16 => Self::FRem {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
141u16 => Self::FMod {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
142u16 => Self::VectorTimesScalar {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
vector: Id(reader.next_u32()?),
scalar: Id(reader.next_u32()?),
},
143u16 => Self::MatrixTimesScalar {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
matrix: Id(reader.next_u32()?),
scalar: Id(reader.next_u32()?),
},
144u16 => Self::VectorTimesMatrix {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
vector: Id(reader.next_u32()?),
matrix: Id(reader.next_u32()?),
},
145u16 => Self::MatrixTimesVector {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
matrix: Id(reader.next_u32()?),
vector: Id(reader.next_u32()?),
},
146u16 => Self::MatrixTimesMatrix {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
left_matrix: Id(reader.next_u32()?),
right_matrix: Id(reader.next_u32()?),
},
147u16 => Self::OuterProduct {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
vector_1: Id(reader.next_u32()?),
vector_2: Id(reader.next_u32()?),
},
148u16 => Self::Dot {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
vector_1: Id(reader.next_u32()?),
vector_2: Id(reader.next_u32()?),
},
149u16 => Self::IAddCarry {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
150u16 => Self::ISubBorrow {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
151u16 => Self::UMulExtended {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
152u16 => Self::SMulExtended {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
154u16 => Self::Any {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
vector: Id(reader.next_u32()?),
},
155u16 => Self::All {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
vector: Id(reader.next_u32()?),
},
156u16 => Self::IsNan {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
x: Id(reader.next_u32()?),
},
157u16 => Self::IsInf {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
x: Id(reader.next_u32()?),
},
158u16 => Self::IsFinite {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
x: Id(reader.next_u32()?),
},
159u16 => Self::IsNormal {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
x: Id(reader.next_u32()?),
},
160u16 => Self::SignBitSet {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
x: Id(reader.next_u32()?),
},
161u16 => Self::LessOrGreater {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
x: Id(reader.next_u32()?),
y: Id(reader.next_u32()?),
},
162u16 => Self::Ordered {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
x: Id(reader.next_u32()?),
y: Id(reader.next_u32()?),
},
163u16 => Self::Unordered {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
x: Id(reader.next_u32()?),
y: Id(reader.next_u32()?),
},
164u16 => Self::LogicalEqual {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
165u16 => Self::LogicalNotEqual {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
166u16 => Self::LogicalOr {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
167u16 => Self::LogicalAnd {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
168u16 => Self::LogicalNot {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand: Id(reader.next_u32()?),
},
169u16 => Self::Select {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
condition: Id(reader.next_u32()?),
object_1: Id(reader.next_u32()?),
object_2: Id(reader.next_u32()?),
},
170u16 => Self::IEqual {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
171u16 => Self::INotEqual {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
172u16 => Self::UGreaterThan {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
173u16 => Self::SGreaterThan {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
174u16 => Self::UGreaterThanEqual {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
175u16 => Self::SGreaterThanEqual {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
176u16 => Self::ULessThan {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
177u16 => Self::SLessThan {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
178u16 => Self::ULessThanEqual {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
179u16 => Self::SLessThanEqual {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
180u16 => Self::FOrdEqual {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
181u16 => Self::FUnordEqual {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
182u16 => Self::FOrdNotEqual {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
183u16 => Self::FUnordNotEqual {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
184u16 => Self::FOrdLessThan {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
185u16 => Self::FUnordLessThan {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
186u16 => Self::FOrdGreaterThan {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
187u16 => Self::FUnordGreaterThan {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
188u16 => Self::FOrdLessThanEqual {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
189u16 => Self::FUnordLessThanEqual {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
190u16 => Self::FOrdGreaterThanEqual {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
191u16 => Self::FUnordGreaterThanEqual {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
194u16 => Self::ShiftRightLogical {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
base: Id(reader.next_u32()?),
shift: Id(reader.next_u32()?),
},
195u16 => Self::ShiftRightArithmetic {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
base: Id(reader.next_u32()?),
shift: Id(reader.next_u32()?),
},
196u16 => Self::ShiftLeftLogical {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
base: Id(reader.next_u32()?),
shift: Id(reader.next_u32()?),
},
197u16 => Self::BitwiseOr {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
198u16 => Self::BitwiseXor {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
199u16 => Self::BitwiseAnd {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
200u16 => Self::Not {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand: Id(reader.next_u32()?),
},
201u16 => Self::BitFieldInsert {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
base: Id(reader.next_u32()?),
insert: Id(reader.next_u32()?),
offset: Id(reader.next_u32()?),
count: Id(reader.next_u32()?),
},
202u16 => Self::BitFieldSExtract {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
base: Id(reader.next_u32()?),
offset: Id(reader.next_u32()?),
count: Id(reader.next_u32()?),
},
203u16 => Self::BitFieldUExtract {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
base: Id(reader.next_u32()?),
offset: Id(reader.next_u32()?),
count: Id(reader.next_u32()?),
},
204u16 => Self::BitReverse {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
base: Id(reader.next_u32()?),
},
205u16 => Self::BitCount {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
base: Id(reader.next_u32()?),
},
207u16 => Self::DPdx {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
p: Id(reader.next_u32()?),
},
208u16 => Self::DPdy {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
p: Id(reader.next_u32()?),
},
209u16 => Self::Fwidth {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
p: Id(reader.next_u32()?),
},
210u16 => Self::DPdxFine {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
p: Id(reader.next_u32()?),
},
211u16 => Self::DPdyFine {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
p: Id(reader.next_u32()?),
},
212u16 => Self::FwidthFine {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
p: Id(reader.next_u32()?),
},
213u16 => Self::DPdxCoarse {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
p: Id(reader.next_u32()?),
},
214u16 => Self::DPdyCoarse {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
p: Id(reader.next_u32()?),
},
215u16 => Self::FwidthCoarse {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
p: Id(reader.next_u32()?),
},
218u16 => Self::EmitVertex,
219u16 => Self::EndPrimitive,
220u16 => Self::EmitStreamVertex { stream: Id(reader.next_u32()?) },
221u16 => Self::EndStreamPrimitive { stream: Id(reader.next_u32()?) },
224u16 => Self::ControlBarrier {
execution: Id(reader.next_u32()?),
memory: Id(reader.next_u32()?),
semantics: Id(reader.next_u32()?),
},
225u16 => Self::MemoryBarrier {
memory: Id(reader.next_u32()?),
semantics: Id(reader.next_u32()?),
},
227u16 => Self::AtomicLoad {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
pointer: Id(reader.next_u32()?),
memory: Id(reader.next_u32()?),
semantics: Id(reader.next_u32()?),
},
228u16 => Self::AtomicStore {
pointer: Id(reader.next_u32()?),
memory: Id(reader.next_u32()?),
semantics: Id(reader.next_u32()?),
value: Id(reader.next_u32()?),
},
229u16 => Self::AtomicExchange {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
pointer: Id(reader.next_u32()?),
memory: Id(reader.next_u32()?),
semantics: Id(reader.next_u32()?),
value: Id(reader.next_u32()?),
},
230u16 => Self::AtomicCompareExchange {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
pointer: Id(reader.next_u32()?),
memory: Id(reader.next_u32()?),
equal: Id(reader.next_u32()?),
unequal: Id(reader.next_u32()?),
value: Id(reader.next_u32()?),
comparator: Id(reader.next_u32()?),
},
231u16 => Self::AtomicCompareExchangeWeak {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
pointer: Id(reader.next_u32()?),
memory: Id(reader.next_u32()?),
equal: Id(reader.next_u32()?),
unequal: Id(reader.next_u32()?),
value: Id(reader.next_u32()?),
comparator: Id(reader.next_u32()?),
},
232u16 => Self::AtomicIIncrement {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
pointer: Id(reader.next_u32()?),
memory: Id(reader.next_u32()?),
semantics: Id(reader.next_u32()?),
},
233u16 => Self::AtomicIDecrement {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
pointer: Id(reader.next_u32()?),
memory: Id(reader.next_u32()?),
semantics: Id(reader.next_u32()?),
},
234u16 => Self::AtomicIAdd {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
pointer: Id(reader.next_u32()?),
memory: Id(reader.next_u32()?),
semantics: Id(reader.next_u32()?),
value: Id(reader.next_u32()?),
},
235u16 => Self::AtomicISub {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
pointer: Id(reader.next_u32()?),
memory: Id(reader.next_u32()?),
semantics: Id(reader.next_u32()?),
value: Id(reader.next_u32()?),
},
236u16 => Self::AtomicSMin {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
pointer: Id(reader.next_u32()?),
memory: Id(reader.next_u32()?),
semantics: Id(reader.next_u32()?),
value: Id(reader.next_u32()?),
},
237u16 => Self::AtomicUMin {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
pointer: Id(reader.next_u32()?),
memory: Id(reader.next_u32()?),
semantics: Id(reader.next_u32()?),
value: Id(reader.next_u32()?),
},
238u16 => Self::AtomicSMax {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
pointer: Id(reader.next_u32()?),
memory: Id(reader.next_u32()?),
semantics: Id(reader.next_u32()?),
value: Id(reader.next_u32()?),
},
239u16 => Self::AtomicUMax {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
pointer: Id(reader.next_u32()?),
memory: Id(reader.next_u32()?),
semantics: Id(reader.next_u32()?),
value: Id(reader.next_u32()?),
},
240u16 => Self::AtomicAnd {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
pointer: Id(reader.next_u32()?),
memory: Id(reader.next_u32()?),
semantics: Id(reader.next_u32()?),
value: Id(reader.next_u32()?),
},
241u16 => Self::AtomicOr {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
pointer: Id(reader.next_u32()?),
memory: Id(reader.next_u32()?),
semantics: Id(reader.next_u32()?),
value: Id(reader.next_u32()?),
},
242u16 => Self::AtomicXor {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
pointer: Id(reader.next_u32()?),
memory: Id(reader.next_u32()?),
semantics: Id(reader.next_u32()?),
value: Id(reader.next_u32()?),
},
245u16 => Self::Phi {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
variable_parent: {
let mut vec = Vec::new();
while !reader.is_empty() {
vec.push((Id(reader.next_u32()?), Id(reader.next_u32()?)));
}
vec
},
},
246u16 => Self::LoopMerge {
merge_block: Id(reader.next_u32()?),
continue_target: Id(reader.next_u32()?),
loop_control: LoopControl::parse(reader)?,
},
247u16 => Self::SelectionMerge {
merge_block: Id(reader.next_u32()?),
selection_control: SelectionControl::parse(reader)?,
},
248u16 => Self::Label { result_id: Id(reader.next_u32()?) },
249u16 => Self::Branch { target_label: Id(reader.next_u32()?) },
250u16 => Self::BranchConditional {
condition: Id(reader.next_u32()?),
true_label: Id(reader.next_u32()?),
false_label: Id(reader.next_u32()?),
branch_weights: {
let mut vec = Vec::new();
while !reader.is_empty() {
vec.push(reader.next_u32()?);
}
vec
},
},
251u16 => Self::Switch {
selector: Id(reader.next_u32()?),
default: Id(reader.next_u32()?),
target: {
let mut vec = Vec::new();
while !reader.is_empty() {
vec.push((reader.next_u32()?, Id(reader.next_u32()?)));
}
vec
},
},
252u16 => Self::Kill,
253u16 => Self::Return,
254u16 => Self::ReturnValue { value: Id(reader.next_u32()?) },
255u16 => Self::Unreachable,
256u16 => {
Self::LifetimeStart { pointer: Id(reader.next_u32()?), size: reader.next_u32()? }
}
257u16 => {
Self::LifetimeStop { pointer: Id(reader.next_u32()?), size: reader.next_u32()? }
}
259u16 => Self::GroupAsyncCopy {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
destination: Id(reader.next_u32()?),
source: Id(reader.next_u32()?),
num_elements: Id(reader.next_u32()?),
stride: Id(reader.next_u32()?),
event: Id(reader.next_u32()?),
},
260u16 => Self::GroupWaitEvents {
execution: Id(reader.next_u32()?),
num_events: Id(reader.next_u32()?),
events_list: Id(reader.next_u32()?),
},
261u16 => Self::GroupAll {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
predicate: Id(reader.next_u32()?),
},
262u16 => Self::GroupAny {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
predicate: Id(reader.next_u32()?),
},
263u16 => Self::GroupBroadcast {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
value: Id(reader.next_u32()?),
local_id: Id(reader.next_u32()?),
},
264u16 => Self::GroupIAdd {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
operation: GroupOperation::parse(reader)?,
x: Id(reader.next_u32()?),
},
265u16 => Self::GroupFAdd {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
operation: GroupOperation::parse(reader)?,
x: Id(reader.next_u32()?),
},
266u16 => Self::GroupFMin {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
operation: GroupOperation::parse(reader)?,
x: Id(reader.next_u32()?),
},
267u16 => Self::GroupUMin {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
operation: GroupOperation::parse(reader)?,
x: Id(reader.next_u32()?),
},
268u16 => Self::GroupSMin {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
operation: GroupOperation::parse(reader)?,
x: Id(reader.next_u32()?),
},
269u16 => Self::GroupFMax {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
operation: GroupOperation::parse(reader)?,
x: Id(reader.next_u32()?),
},
270u16 => Self::GroupUMax {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
operation: GroupOperation::parse(reader)?,
x: Id(reader.next_u32()?),
},
271u16 => Self::GroupSMax {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
operation: GroupOperation::parse(reader)?,
x: Id(reader.next_u32()?),
},
274u16 => Self::ReadPipe {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
pipe: Id(reader.next_u32()?),
pointer: Id(reader.next_u32()?),
packet_size: Id(reader.next_u32()?),
packet_alignment: Id(reader.next_u32()?),
},
275u16 => Self::WritePipe {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
pipe: Id(reader.next_u32()?),
pointer: Id(reader.next_u32()?),
packet_size: Id(reader.next_u32()?),
packet_alignment: Id(reader.next_u32()?),
},
276u16 => Self::ReservedReadPipe {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
pipe: Id(reader.next_u32()?),
reserve_id: Id(reader.next_u32()?),
index: Id(reader.next_u32()?),
pointer: Id(reader.next_u32()?),
packet_size: Id(reader.next_u32()?),
packet_alignment: Id(reader.next_u32()?),
},
277u16 => Self::ReservedWritePipe {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
pipe: Id(reader.next_u32()?),
reserve_id: Id(reader.next_u32()?),
index: Id(reader.next_u32()?),
pointer: Id(reader.next_u32()?),
packet_size: Id(reader.next_u32()?),
packet_alignment: Id(reader.next_u32()?),
},
278u16 => Self::ReserveReadPipePackets {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
pipe: Id(reader.next_u32()?),
num_packets: Id(reader.next_u32()?),
packet_size: Id(reader.next_u32()?),
packet_alignment: Id(reader.next_u32()?),
},
279u16 => Self::ReserveWritePipePackets {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
pipe: Id(reader.next_u32()?),
num_packets: Id(reader.next_u32()?),
packet_size: Id(reader.next_u32()?),
packet_alignment: Id(reader.next_u32()?),
},
280u16 => Self::CommitReadPipe {
pipe: Id(reader.next_u32()?),
reserve_id: Id(reader.next_u32()?),
packet_size: Id(reader.next_u32()?),
packet_alignment: Id(reader.next_u32()?),
},
281u16 => Self::CommitWritePipe {
pipe: Id(reader.next_u32()?),
reserve_id: Id(reader.next_u32()?),
packet_size: Id(reader.next_u32()?),
packet_alignment: Id(reader.next_u32()?),
},
282u16 => Self::IsValidReserveId {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
reserve_id: Id(reader.next_u32()?),
},
283u16 => Self::GetNumPipePackets {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
pipe: Id(reader.next_u32()?),
packet_size: Id(reader.next_u32()?),
packet_alignment: Id(reader.next_u32()?),
},
284u16 => Self::GetMaxPipePackets {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
pipe: Id(reader.next_u32()?),
packet_size: Id(reader.next_u32()?),
packet_alignment: Id(reader.next_u32()?),
},
285u16 => Self::GroupReserveReadPipePackets {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
pipe: Id(reader.next_u32()?),
num_packets: Id(reader.next_u32()?),
packet_size: Id(reader.next_u32()?),
packet_alignment: Id(reader.next_u32()?),
},
286u16 => Self::GroupReserveWritePipePackets {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
pipe: Id(reader.next_u32()?),
num_packets: Id(reader.next_u32()?),
packet_size: Id(reader.next_u32()?),
packet_alignment: Id(reader.next_u32()?),
},
287u16 => Self::GroupCommitReadPipe {
execution: Id(reader.next_u32()?),
pipe: Id(reader.next_u32()?),
reserve_id: Id(reader.next_u32()?),
packet_size: Id(reader.next_u32()?),
packet_alignment: Id(reader.next_u32()?),
},
288u16 => Self::GroupCommitWritePipe {
execution: Id(reader.next_u32()?),
pipe: Id(reader.next_u32()?),
reserve_id: Id(reader.next_u32()?),
packet_size: Id(reader.next_u32()?),
packet_alignment: Id(reader.next_u32()?),
},
291u16 => Self::EnqueueMarker {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
queue: Id(reader.next_u32()?),
num_events: Id(reader.next_u32()?),
wait_events: Id(reader.next_u32()?),
ret_event: Id(reader.next_u32()?),
},
292u16 => Self::EnqueueKernel {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
queue: Id(reader.next_u32()?),
flags: Id(reader.next_u32()?),
nd_range: Id(reader.next_u32()?),
num_events: Id(reader.next_u32()?),
wait_events: Id(reader.next_u32()?),
ret_event: Id(reader.next_u32()?),
invoke: Id(reader.next_u32()?),
param: Id(reader.next_u32()?),
param_size: Id(reader.next_u32()?),
param_align: Id(reader.next_u32()?),
local_size: {
let mut vec = Vec::new();
while !reader.is_empty() {
vec.push(Id(reader.next_u32()?));
}
vec
},
},
293u16 => Self::GetKernelNDrangeSubGroupCount {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
nd_range: Id(reader.next_u32()?),
invoke: Id(reader.next_u32()?),
param: Id(reader.next_u32()?),
param_size: Id(reader.next_u32()?),
param_align: Id(reader.next_u32()?),
},
294u16 => Self::GetKernelNDrangeMaxSubGroupSize {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
nd_range: Id(reader.next_u32()?),
invoke: Id(reader.next_u32()?),
param: Id(reader.next_u32()?),
param_size: Id(reader.next_u32()?),
param_align: Id(reader.next_u32()?),
},
295u16 => Self::GetKernelWorkGroupSize {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
invoke: Id(reader.next_u32()?),
param: Id(reader.next_u32()?),
param_size: Id(reader.next_u32()?),
param_align: Id(reader.next_u32()?),
},
296u16 => Self::GetKernelPreferredWorkGroupSizeMultiple {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
invoke: Id(reader.next_u32()?),
param: Id(reader.next_u32()?),
param_size: Id(reader.next_u32()?),
param_align: Id(reader.next_u32()?),
},
297u16 => Self::RetainEvent { event: Id(reader.next_u32()?) },
298u16 => Self::ReleaseEvent { event: Id(reader.next_u32()?) },
299u16 => Self::CreateUserEvent {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
},
300u16 => Self::IsValidEvent {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
event: Id(reader.next_u32()?),
},
301u16 => Self::SetUserEventStatus {
event: Id(reader.next_u32()?),
status: Id(reader.next_u32()?),
},
302u16 => Self::CaptureEventProfilingInfo {
event: Id(reader.next_u32()?),
profiling_info: Id(reader.next_u32()?),
value: Id(reader.next_u32()?),
},
303u16 => Self::GetDefaultQueue {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
},
304u16 => Self::BuildNDRange {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
global_work_size: Id(reader.next_u32()?),
local_work_size: Id(reader.next_u32()?),
global_work_offset: Id(reader.next_u32()?),
},
305u16 => Self::ImageSparseSampleImplicitLod {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
sampled_image: Id(reader.next_u32()?),
coordinate: Id(reader.next_u32()?),
image_operands: if !reader.is_empty() {
Some(ImageOperands::parse(reader)?)
} else {
None
},
},
306u16 => Self::ImageSparseSampleExplicitLod {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
sampled_image: Id(reader.next_u32()?),
coordinate: Id(reader.next_u32()?),
image_operands: ImageOperands::parse(reader)?,
},
307u16 => Self::ImageSparseSampleDrefImplicitLod {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
sampled_image: Id(reader.next_u32()?),
coordinate: Id(reader.next_u32()?),
dref: Id(reader.next_u32()?),
image_operands: if !reader.is_empty() {
Some(ImageOperands::parse(reader)?)
} else {
None
},
},
308u16 => Self::ImageSparseSampleDrefExplicitLod {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
sampled_image: Id(reader.next_u32()?),
coordinate: Id(reader.next_u32()?),
dref: Id(reader.next_u32()?),
image_operands: ImageOperands::parse(reader)?,
},
309u16 => Self::ImageSparseSampleProjImplicitLod {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
sampled_image: Id(reader.next_u32()?),
coordinate: Id(reader.next_u32()?),
image_operands: if !reader.is_empty() {
Some(ImageOperands::parse(reader)?)
} else {
None
},
},
310u16 => Self::ImageSparseSampleProjExplicitLod {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
sampled_image: Id(reader.next_u32()?),
coordinate: Id(reader.next_u32()?),
image_operands: ImageOperands::parse(reader)?,
},
311u16 => Self::ImageSparseSampleProjDrefImplicitLod {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
sampled_image: Id(reader.next_u32()?),
coordinate: Id(reader.next_u32()?),
dref: Id(reader.next_u32()?),
image_operands: if !reader.is_empty() {
Some(ImageOperands::parse(reader)?)
} else {
None
},
},
312u16 => Self::ImageSparseSampleProjDrefExplicitLod {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
sampled_image: Id(reader.next_u32()?),
coordinate: Id(reader.next_u32()?),
dref: Id(reader.next_u32()?),
image_operands: ImageOperands::parse(reader)?,
},
313u16 => Self::ImageSparseFetch {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
image: Id(reader.next_u32()?),
coordinate: Id(reader.next_u32()?),
image_operands: if !reader.is_empty() {
Some(ImageOperands::parse(reader)?)
} else {
None
},
},
314u16 => Self::ImageSparseGather {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
sampled_image: Id(reader.next_u32()?),
coordinate: Id(reader.next_u32()?),
component: Id(reader.next_u32()?),
image_operands: if !reader.is_empty() {
Some(ImageOperands::parse(reader)?)
} else {
None
},
},
315u16 => Self::ImageSparseDrefGather {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
sampled_image: Id(reader.next_u32()?),
coordinate: Id(reader.next_u32()?),
dref: Id(reader.next_u32()?),
image_operands: if !reader.is_empty() {
Some(ImageOperands::parse(reader)?)
} else {
None
},
},
316u16 => Self::ImageSparseTexelsResident {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
resident_code: Id(reader.next_u32()?),
},
317u16 => Self::NoLine,
318u16 => Self::AtomicFlagTestAndSet {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
pointer: Id(reader.next_u32()?),
memory: Id(reader.next_u32()?),
semantics: Id(reader.next_u32()?),
},
319u16 => Self::AtomicFlagClear {
pointer: Id(reader.next_u32()?),
memory: Id(reader.next_u32()?),
semantics: Id(reader.next_u32()?),
},
320u16 => Self::ImageSparseRead {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
image: Id(reader.next_u32()?),
coordinate: Id(reader.next_u32()?),
image_operands: if !reader.is_empty() {
Some(ImageOperands::parse(reader)?)
} else {
None
},
},
321u16 => Self::SizeOf {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
pointer: Id(reader.next_u32()?),
},
322u16 => Self::TypePipeStorage { result_id: Id(reader.next_u32()?) },
323u16 => Self::ConstantPipeStorage {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
packet_size: reader.next_u32()?,
packet_alignment: reader.next_u32()?,
capacity: reader.next_u32()?,
},
324u16 => Self::CreatePipeFromPipeStorage {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
pipe_storage: Id(reader.next_u32()?),
},
325u16 => Self::GetKernelLocalSizeForSubgroupCount {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
subgroup_count: Id(reader.next_u32()?),
invoke: Id(reader.next_u32()?),
param: Id(reader.next_u32()?),
param_size: Id(reader.next_u32()?),
param_align: Id(reader.next_u32()?),
},
326u16 => Self::GetKernelMaxNumSubgroups {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
invoke: Id(reader.next_u32()?),
param: Id(reader.next_u32()?),
param_size: Id(reader.next_u32()?),
param_align: Id(reader.next_u32()?),
},
327u16 => Self::TypeNamedBarrier { result_id: Id(reader.next_u32()?) },
328u16 => Self::NamedBarrierInitialize {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
subgroup_count: Id(reader.next_u32()?),
},
329u16 => Self::MemoryNamedBarrier {
named_barrier: Id(reader.next_u32()?),
memory: Id(reader.next_u32()?),
semantics: Id(reader.next_u32()?),
},
330u16 => Self::ModuleProcessed { process: reader.next_string()? },
331u16 => Self::ExecutionModeId {
entry_point: Id(reader.next_u32()?),
mode: ExecutionMode::parse(reader)?,
},
332u16 => Self::DecorateId {
target: Id(reader.next_u32()?),
decoration: Decoration::parse(reader)?,
},
333u16 => Self::GroupNonUniformElect {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
},
334u16 => Self::GroupNonUniformAll {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
predicate: Id(reader.next_u32()?),
},
335u16 => Self::GroupNonUniformAny {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
predicate: Id(reader.next_u32()?),
},
336u16 => Self::GroupNonUniformAllEqual {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
value: Id(reader.next_u32()?),
},
337u16 => Self::GroupNonUniformBroadcast {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
value: Id(reader.next_u32()?),
id: Id(reader.next_u32()?),
},
338u16 => Self::GroupNonUniformBroadcastFirst {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
value: Id(reader.next_u32()?),
},
339u16 => Self::GroupNonUniformBallot {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
predicate: Id(reader.next_u32()?),
},
340u16 => Self::GroupNonUniformInverseBallot {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
value: Id(reader.next_u32()?),
},
341u16 => Self::GroupNonUniformBallotBitExtract {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
value: Id(reader.next_u32()?),
index: Id(reader.next_u32()?),
},
342u16 => Self::GroupNonUniformBallotBitCount {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
operation: GroupOperation::parse(reader)?,
value: Id(reader.next_u32()?),
},
343u16 => Self::GroupNonUniformBallotFindLSB {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
value: Id(reader.next_u32()?),
},
344u16 => Self::GroupNonUniformBallotFindMSB {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
value: Id(reader.next_u32()?),
},
345u16 => Self::GroupNonUniformShuffle {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
value: Id(reader.next_u32()?),
id: Id(reader.next_u32()?),
},
346u16 => Self::GroupNonUniformShuffleXor {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
value: Id(reader.next_u32()?),
mask: Id(reader.next_u32()?),
},
347u16 => Self::GroupNonUniformShuffleUp {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
value: Id(reader.next_u32()?),
delta: Id(reader.next_u32()?),
},
348u16 => Self::GroupNonUniformShuffleDown {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
value: Id(reader.next_u32()?),
delta: Id(reader.next_u32()?),
},
349u16 => Self::GroupNonUniformIAdd {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
operation: GroupOperation::parse(reader)?,
value: Id(reader.next_u32()?),
cluster_size: if !reader.is_empty() { Some(Id(reader.next_u32()?)) } else { None },
},
350u16 => Self::GroupNonUniformFAdd {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
operation: GroupOperation::parse(reader)?,
value: Id(reader.next_u32()?),
cluster_size: if !reader.is_empty() { Some(Id(reader.next_u32()?)) } else { None },
},
351u16 => Self::GroupNonUniformIMul {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
operation: GroupOperation::parse(reader)?,
value: Id(reader.next_u32()?),
cluster_size: if !reader.is_empty() { Some(Id(reader.next_u32()?)) } else { None },
},
352u16 => Self::GroupNonUniformFMul {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
operation: GroupOperation::parse(reader)?,
value: Id(reader.next_u32()?),
cluster_size: if !reader.is_empty() { Some(Id(reader.next_u32()?)) } else { None },
},
353u16 => Self::GroupNonUniformSMin {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
operation: GroupOperation::parse(reader)?,
value: Id(reader.next_u32()?),
cluster_size: if !reader.is_empty() { Some(Id(reader.next_u32()?)) } else { None },
},
354u16 => Self::GroupNonUniformUMin {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
operation: GroupOperation::parse(reader)?,
value: Id(reader.next_u32()?),
cluster_size: if !reader.is_empty() { Some(Id(reader.next_u32()?)) } else { None },
},
355u16 => Self::GroupNonUniformFMin {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
operation: GroupOperation::parse(reader)?,
value: Id(reader.next_u32()?),
cluster_size: if !reader.is_empty() { Some(Id(reader.next_u32()?)) } else { None },
},
356u16 => Self::GroupNonUniformSMax {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
operation: GroupOperation::parse(reader)?,
value: Id(reader.next_u32()?),
cluster_size: if !reader.is_empty() { Some(Id(reader.next_u32()?)) } else { None },
},
357u16 => Self::GroupNonUniformUMax {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
operation: GroupOperation::parse(reader)?,
value: Id(reader.next_u32()?),
cluster_size: if !reader.is_empty() { Some(Id(reader.next_u32()?)) } else { None },
},
358u16 => Self::GroupNonUniformFMax {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
operation: GroupOperation::parse(reader)?,
value: Id(reader.next_u32()?),
cluster_size: if !reader.is_empty() { Some(Id(reader.next_u32()?)) } else { None },
},
359u16 => Self::GroupNonUniformBitwiseAnd {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
operation: GroupOperation::parse(reader)?,
value: Id(reader.next_u32()?),
cluster_size: if !reader.is_empty() { Some(Id(reader.next_u32()?)) } else { None },
},
360u16 => Self::GroupNonUniformBitwiseOr {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
operation: GroupOperation::parse(reader)?,
value: Id(reader.next_u32()?),
cluster_size: if !reader.is_empty() { Some(Id(reader.next_u32()?)) } else { None },
},
361u16 => Self::GroupNonUniformBitwiseXor {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
operation: GroupOperation::parse(reader)?,
value: Id(reader.next_u32()?),
cluster_size: if !reader.is_empty() { Some(Id(reader.next_u32()?)) } else { None },
},
362u16 => Self::GroupNonUniformLogicalAnd {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
operation: GroupOperation::parse(reader)?,
value: Id(reader.next_u32()?),
cluster_size: if !reader.is_empty() { Some(Id(reader.next_u32()?)) } else { None },
},
363u16 => Self::GroupNonUniformLogicalOr {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
operation: GroupOperation::parse(reader)?,
value: Id(reader.next_u32()?),
cluster_size: if !reader.is_empty() { Some(Id(reader.next_u32()?)) } else { None },
},
364u16 => Self::GroupNonUniformLogicalXor {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
operation: GroupOperation::parse(reader)?,
value: Id(reader.next_u32()?),
cluster_size: if !reader.is_empty() { Some(Id(reader.next_u32()?)) } else { None },
},
365u16 => Self::GroupNonUniformQuadBroadcast {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
value: Id(reader.next_u32()?),
index: Id(reader.next_u32()?),
},
366u16 => Self::GroupNonUniformQuadSwap {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
value: Id(reader.next_u32()?),
direction: Id(reader.next_u32()?),
},
400u16 => Self::CopyLogical {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand: Id(reader.next_u32()?),
},
401u16 => Self::PtrEqual {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
402u16 => Self::PtrNotEqual {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
403u16 => Self::PtrDiff {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
4416u16 => Self::TerminateInvocation,
4421u16 => Self::SubgroupBallotKHR {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
predicate: Id(reader.next_u32()?),
},
4422u16 => Self::SubgroupFirstInvocationKHR {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
value: Id(reader.next_u32()?),
},
4428u16 => Self::SubgroupAllKHR {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
predicate: Id(reader.next_u32()?),
},
4429u16 => Self::SubgroupAnyKHR {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
predicate: Id(reader.next_u32()?),
},
4430u16 => Self::SubgroupAllEqualKHR {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
predicate: Id(reader.next_u32()?),
},
4432u16 => Self::SubgroupReadInvocationKHR {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
value: Id(reader.next_u32()?),
index: Id(reader.next_u32()?),
},
4445u16 => Self::TraceRayKHR {
accel: Id(reader.next_u32()?),
ray_flags: Id(reader.next_u32()?),
cull_mask: Id(reader.next_u32()?),
sbt_offset: Id(reader.next_u32()?),
sbt_stride: Id(reader.next_u32()?),
miss_index: Id(reader.next_u32()?),
ray_origin: Id(reader.next_u32()?),
ray_tmin: Id(reader.next_u32()?),
ray_direction: Id(reader.next_u32()?),
ray_tmax: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
4446u16 => Self::ExecuteCallableKHR {
sbt_index: Id(reader.next_u32()?),
callable_data: Id(reader.next_u32()?),
},
4447u16 => Self::ConvertUToAccelerationStructureKHR {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
accel: Id(reader.next_u32()?),
},
4448u16 => Self::IgnoreIntersectionKHR,
4449u16 => Self::TerminateRayKHR,
4450u16 => Self::SDot {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
vector_1: Id(reader.next_u32()?),
vector_2: Id(reader.next_u32()?),
packed_vector_format: if !reader.is_empty() {
Some(PackedVectorFormat::parse(reader)?)
} else {
None
},
},
4451u16 => Self::UDot {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
vector_1: Id(reader.next_u32()?),
vector_2: Id(reader.next_u32()?),
packed_vector_format: if !reader.is_empty() {
Some(PackedVectorFormat::parse(reader)?)
} else {
None
},
},
4452u16 => Self::SUDot {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
vector_1: Id(reader.next_u32()?),
vector_2: Id(reader.next_u32()?),
packed_vector_format: if !reader.is_empty() {
Some(PackedVectorFormat::parse(reader)?)
} else {
None
},
},
4453u16 => Self::SDotAccSat {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
vector_1: Id(reader.next_u32()?),
vector_2: Id(reader.next_u32()?),
accumulator: Id(reader.next_u32()?),
packed_vector_format: if !reader.is_empty() {
Some(PackedVectorFormat::parse(reader)?)
} else {
None
},
},
4454u16 => Self::UDotAccSat {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
vector_1: Id(reader.next_u32()?),
vector_2: Id(reader.next_u32()?),
accumulator: Id(reader.next_u32()?),
packed_vector_format: if !reader.is_empty() {
Some(PackedVectorFormat::parse(reader)?)
} else {
None
},
},
4455u16 => Self::SUDotAccSat {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
vector_1: Id(reader.next_u32()?),
vector_2: Id(reader.next_u32()?),
accumulator: Id(reader.next_u32()?),
packed_vector_format: if !reader.is_empty() {
Some(PackedVectorFormat::parse(reader)?)
} else {
None
},
},
4472u16 => Self::TypeRayQueryKHR { result_id: Id(reader.next_u32()?) },
4473u16 => Self::RayQueryInitializeKHR {
ray_query: Id(reader.next_u32()?),
accel: Id(reader.next_u32()?),
ray_flags: Id(reader.next_u32()?),
cull_mask: Id(reader.next_u32()?),
ray_origin: Id(reader.next_u32()?),
ray_t_min: Id(reader.next_u32()?),
ray_direction: Id(reader.next_u32()?),
ray_t_max: Id(reader.next_u32()?),
},
4474u16 => Self::RayQueryTerminateKHR { ray_query: Id(reader.next_u32()?) },
4475u16 => Self::RayQueryGenerateIntersectionKHR {
ray_query: Id(reader.next_u32()?),
hit_t: Id(reader.next_u32()?),
},
4476u16 => Self::RayQueryConfirmIntersectionKHR { ray_query: Id(reader.next_u32()?) },
4477u16 => Self::RayQueryProceedKHR {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
ray_query: Id(reader.next_u32()?),
},
4479u16 => Self::RayQueryGetIntersectionTypeKHR {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
ray_query: Id(reader.next_u32()?),
intersection: Id(reader.next_u32()?),
},
5000u16 => Self::GroupIAddNonUniformAMD {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
operation: GroupOperation::parse(reader)?,
x: Id(reader.next_u32()?),
},
5001u16 => Self::GroupFAddNonUniformAMD {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
operation: GroupOperation::parse(reader)?,
x: Id(reader.next_u32()?),
},
5002u16 => Self::GroupFMinNonUniformAMD {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
operation: GroupOperation::parse(reader)?,
x: Id(reader.next_u32()?),
},
5003u16 => Self::GroupUMinNonUniformAMD {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
operation: GroupOperation::parse(reader)?,
x: Id(reader.next_u32()?),
},
5004u16 => Self::GroupSMinNonUniformAMD {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
operation: GroupOperation::parse(reader)?,
x: Id(reader.next_u32()?),
},
5005u16 => Self::GroupFMaxNonUniformAMD {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
operation: GroupOperation::parse(reader)?,
x: Id(reader.next_u32()?),
},
5006u16 => Self::GroupUMaxNonUniformAMD {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
operation: GroupOperation::parse(reader)?,
x: Id(reader.next_u32()?),
},
5007u16 => Self::GroupSMaxNonUniformAMD {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
operation: GroupOperation::parse(reader)?,
x: Id(reader.next_u32()?),
},
5011u16 => Self::FragmentMaskFetchAMD {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
image: Id(reader.next_u32()?),
coordinate: Id(reader.next_u32()?),
},
5012u16 => Self::FragmentFetchAMD {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
image: Id(reader.next_u32()?),
coordinate: Id(reader.next_u32()?),
fragment_index: Id(reader.next_u32()?),
},
5056u16 => Self::ReadClockKHR {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
scope: Id(reader.next_u32()?),
},
5283u16 => Self::ImageSampleFootprintNV {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
sampled_image: Id(reader.next_u32()?),
coordinate: Id(reader.next_u32()?),
granularity: Id(reader.next_u32()?),
coarse: Id(reader.next_u32()?),
image_operands: if !reader.is_empty() {
Some(ImageOperands::parse(reader)?)
} else {
None
},
},
5296u16 => Self::GroupNonUniformPartitionNV {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
value: Id(reader.next_u32()?),
},
5299u16 => Self::WritePackedPrimitiveIndices4x8NV {
index_offset: Id(reader.next_u32()?),
packed_indices: Id(reader.next_u32()?),
},
5334u16 => Self::ReportIntersectionKHR {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
hit: Id(reader.next_u32()?),
hit_kind: Id(reader.next_u32()?),
},
5335u16 => Self::IgnoreIntersectionNV,
5336u16 => Self::TerminateRayNV,
5337u16 => Self::TraceNV {
accel: Id(reader.next_u32()?),
ray_flags: Id(reader.next_u32()?),
cull_mask: Id(reader.next_u32()?),
sbt_offset: Id(reader.next_u32()?),
sbt_stride: Id(reader.next_u32()?),
miss_index: Id(reader.next_u32()?),
ray_origin: Id(reader.next_u32()?),
ray_tmin: Id(reader.next_u32()?),
ray_direction: Id(reader.next_u32()?),
ray_tmax: Id(reader.next_u32()?),
payload_id: Id(reader.next_u32()?),
},
5338u16 => Self::TraceMotionNV {
accel: Id(reader.next_u32()?),
ray_flags: Id(reader.next_u32()?),
cull_mask: Id(reader.next_u32()?),
sbt_offset: Id(reader.next_u32()?),
sbt_stride: Id(reader.next_u32()?),
miss_index: Id(reader.next_u32()?),
ray_origin: Id(reader.next_u32()?),
ray_tmin: Id(reader.next_u32()?),
ray_direction: Id(reader.next_u32()?),
ray_tmax: Id(reader.next_u32()?),
time: Id(reader.next_u32()?),
payload_id: Id(reader.next_u32()?),
},
5339u16 => Self::TraceRayMotionNV {
accel: Id(reader.next_u32()?),
ray_flags: Id(reader.next_u32()?),
cull_mask: Id(reader.next_u32()?),
sbt_offset: Id(reader.next_u32()?),
sbt_stride: Id(reader.next_u32()?),
miss_index: Id(reader.next_u32()?),
ray_origin: Id(reader.next_u32()?),
ray_tmin: Id(reader.next_u32()?),
ray_direction: Id(reader.next_u32()?),
ray_tmax: Id(reader.next_u32()?),
time: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5341u16 => Self::TypeAccelerationStructureKHR { result_id: Id(reader.next_u32()?) },
5344u16 => Self::ExecuteCallableNV {
sbt_index: Id(reader.next_u32()?),
callable_data_id: Id(reader.next_u32()?),
},
5358u16 => Self::TypeCooperativeMatrixNV {
result_id: Id(reader.next_u32()?),
component_type: Id(reader.next_u32()?),
execution: Id(reader.next_u32()?),
rows: Id(reader.next_u32()?),
columns: Id(reader.next_u32()?),
},
5359u16 => Self::CooperativeMatrixLoadNV {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
pointer: Id(reader.next_u32()?),
stride: Id(reader.next_u32()?),
column_major: Id(reader.next_u32()?),
memory_access: if !reader.is_empty() {
Some(MemoryAccess::parse(reader)?)
} else {
None
},
},
5360u16 => Self::CooperativeMatrixStoreNV {
pointer: Id(reader.next_u32()?),
object: Id(reader.next_u32()?),
stride: Id(reader.next_u32()?),
column_major: Id(reader.next_u32()?),
memory_access: if !reader.is_empty() {
Some(MemoryAccess::parse(reader)?)
} else {
None
},
},
5361u16 => Self::CooperativeMatrixMulAddNV {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
a: Id(reader.next_u32()?),
b: Id(reader.next_u32()?),
c: Id(reader.next_u32()?),
},
5362u16 => Self::CooperativeMatrixLengthNV {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
ty: Id(reader.next_u32()?),
},
5364u16 => Self::BeginInvocationInterlockEXT,
5365u16 => Self::EndInvocationInterlockEXT,
5380u16 => Self::DemoteToHelperInvocation,
5381u16 => Self::IsHelperInvocationEXT {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
},
5391u16 => Self::ConvertUToImageNV {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand: Id(reader.next_u32()?),
},
5392u16 => Self::ConvertUToSamplerNV {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand: Id(reader.next_u32()?),
},
5393u16 => Self::ConvertImageToUNV {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand: Id(reader.next_u32()?),
},
5394u16 => Self::ConvertSamplerToUNV {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand: Id(reader.next_u32()?),
},
5395u16 => Self::ConvertUToSampledImageNV {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand: Id(reader.next_u32()?),
},
5396u16 => Self::ConvertSampledImageToUNV {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand: Id(reader.next_u32()?),
},
5397u16 => Self::SamplerImageAddressingModeNV { bit_width: reader.next_u32()? },
5571u16 => Self::SubgroupShuffleINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
data: Id(reader.next_u32()?),
invocation_id: Id(reader.next_u32()?),
},
5572u16 => Self::SubgroupShuffleDownINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
current: Id(reader.next_u32()?),
next: Id(reader.next_u32()?),
delta: Id(reader.next_u32()?),
},
5573u16 => Self::SubgroupShuffleUpINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
previous: Id(reader.next_u32()?),
current: Id(reader.next_u32()?),
delta: Id(reader.next_u32()?),
},
5574u16 => Self::SubgroupShuffleXorINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
data: Id(reader.next_u32()?),
value: Id(reader.next_u32()?),
},
5575u16 => Self::SubgroupBlockReadINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
ptr: Id(reader.next_u32()?),
},
5576u16 => Self::SubgroupBlockWriteINTEL {
ptr: Id(reader.next_u32()?),
data: Id(reader.next_u32()?),
},
5577u16 => Self::SubgroupImageBlockReadINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
image: Id(reader.next_u32()?),
coordinate: Id(reader.next_u32()?),
},
5578u16 => Self::SubgroupImageBlockWriteINTEL {
image: Id(reader.next_u32()?),
coordinate: Id(reader.next_u32()?),
data: Id(reader.next_u32()?),
},
5580u16 => Self::SubgroupImageMediaBlockReadINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
image: Id(reader.next_u32()?),
coordinate: Id(reader.next_u32()?),
width: Id(reader.next_u32()?),
height: Id(reader.next_u32()?),
},
5581u16 => Self::SubgroupImageMediaBlockWriteINTEL {
image: Id(reader.next_u32()?),
coordinate: Id(reader.next_u32()?),
width: Id(reader.next_u32()?),
height: Id(reader.next_u32()?),
data: Id(reader.next_u32()?),
},
5585u16 => Self::UCountLeadingZerosINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand: Id(reader.next_u32()?),
},
5586u16 => Self::UCountTrailingZerosINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand: Id(reader.next_u32()?),
},
5587u16 => Self::AbsISubINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
5588u16 => Self::AbsUSubINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
5589u16 => Self::IAddSatINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
5590u16 => Self::UAddSatINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
5591u16 => Self::IAverageINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
5592u16 => Self::UAverageINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
5593u16 => Self::IAverageRoundedINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
5594u16 => Self::UAverageRoundedINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
5595u16 => Self::ISubSatINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
5596u16 => Self::USubSatINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
5597u16 => Self::IMul32x16INTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
5598u16 => Self::UMul32x16INTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
5600u16 => Self::ConstantFunctionPointerINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
function: Id(reader.next_u32()?),
},
5601u16 => Self::FunctionPointerCallINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
operand1: {
let mut vec = Vec::new();
while !reader.is_empty() {
vec.push(Id(reader.next_u32()?));
}
vec
},
},
5609u16 => Self::AsmTargetINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
asm_target: reader.next_string()?,
},
5610u16 => Self::AsmINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
asm_type: Id(reader.next_u32()?),
target: Id(reader.next_u32()?),
asm_instructions: reader.next_string()?,
constraints: reader.next_string()?,
},
5611u16 => Self::AsmCallINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
asm: Id(reader.next_u32()?),
argument_0: {
let mut vec = Vec::new();
while !reader.is_empty() {
vec.push(Id(reader.next_u32()?));
}
vec
},
},
5614u16 => Self::AtomicFMinEXT {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
pointer: Id(reader.next_u32()?),
memory: Id(reader.next_u32()?),
semantics: Id(reader.next_u32()?),
value: Id(reader.next_u32()?),
},
5615u16 => Self::AtomicFMaxEXT {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
pointer: Id(reader.next_u32()?),
memory: Id(reader.next_u32()?),
semantics: Id(reader.next_u32()?),
value: Id(reader.next_u32()?),
},
5630u16 => Self::AssumeTrueKHR { condition: Id(reader.next_u32()?) },
5631u16 => Self::ExpectKHR {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
value: Id(reader.next_u32()?),
expected_value: Id(reader.next_u32()?),
},
5632u16 => Self::DecorateString {
target: Id(reader.next_u32()?),
decoration: Decoration::parse(reader)?,
},
5633u16 => Self::MemberDecorateString {
struct_type: Id(reader.next_u32()?),
member: reader.next_u32()?,
decoration: Decoration::parse(reader)?,
},
5699u16 => Self::VmeImageINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
image_type: Id(reader.next_u32()?),
sampler: Id(reader.next_u32()?),
},
5700u16 => Self::TypeVmeImageINTEL {
result_id: Id(reader.next_u32()?),
image_type: Id(reader.next_u32()?),
},
5701u16 => Self::TypeAvcImePayloadINTEL { result_id: Id(reader.next_u32()?) },
5702u16 => Self::TypeAvcRefPayloadINTEL { result_id: Id(reader.next_u32()?) },
5703u16 => Self::TypeAvcSicPayloadINTEL { result_id: Id(reader.next_u32()?) },
5704u16 => Self::TypeAvcMcePayloadINTEL { result_id: Id(reader.next_u32()?) },
5705u16 => Self::TypeAvcMceResultINTEL { result_id: Id(reader.next_u32()?) },
5706u16 => Self::TypeAvcImeResultINTEL { result_id: Id(reader.next_u32()?) },
5707u16 => Self::TypeAvcImeResultSingleReferenceStreamoutINTEL {
result_id: Id(reader.next_u32()?),
},
5708u16 => Self::TypeAvcImeResultDualReferenceStreamoutINTEL {
result_id: Id(reader.next_u32()?),
},
5709u16 => {
Self::TypeAvcImeSingleReferenceStreaminINTEL { result_id: Id(reader.next_u32()?) }
}
5710u16 => {
Self::TypeAvcImeDualReferenceStreaminINTEL { result_id: Id(reader.next_u32()?) }
}
5711u16 => Self::TypeAvcRefResultINTEL { result_id: Id(reader.next_u32()?) },
5712u16 => Self::TypeAvcSicResultINTEL { result_id: Id(reader.next_u32()?) },
5713u16 => Self::SubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
slice_type: Id(reader.next_u32()?),
qp: Id(reader.next_u32()?),
},
5714u16 => Self::SubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
reference_base_penalty: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5715u16 => Self::SubgroupAvcMceGetDefaultInterShapePenaltyINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
slice_type: Id(reader.next_u32()?),
qp: Id(reader.next_u32()?),
},
5716u16 => Self::SubgroupAvcMceSetInterShapePenaltyINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
packed_shape_penalty: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5717u16 => Self::SubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
slice_type: Id(reader.next_u32()?),
qp: Id(reader.next_u32()?),
},
5718u16 => Self::SubgroupAvcMceSetInterDirectionPenaltyINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
direction_cost: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5719u16 => Self::SubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
slice_type: Id(reader.next_u32()?),
qp: Id(reader.next_u32()?),
},
5720u16 => Self::SubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
slice_type: Id(reader.next_u32()?),
qp: Id(reader.next_u32()?),
},
5721u16 => Self::SubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
},
5722u16 => Self::SubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
},
5723u16 => Self::SubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
},
5724u16 => Self::SubgroupAvcMceSetMotionVectorCostFunctionINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
packed_cost_center_delta: Id(reader.next_u32()?),
packed_cost_table: Id(reader.next_u32()?),
cost_precision: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5725u16 => Self::SubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
slice_type: Id(reader.next_u32()?),
qp: Id(reader.next_u32()?),
},
5726u16 => Self::SubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
},
5727u16 => Self::SubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
},
5728u16 => Self::SubgroupAvcMceSetAcOnlyHaarINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5729u16 => Self::SubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
source_field_polarity: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5730u16 => Self::SubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
reference_field_polarity: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5731u16 => Self::SubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
forward_reference_field_polarity: Id(reader.next_u32()?),
backward_reference_field_polarity: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5732u16 => Self::SubgroupAvcMceConvertToImePayloadINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5733u16 => Self::SubgroupAvcMceConvertToImeResultINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5734u16 => Self::SubgroupAvcMceConvertToRefPayloadINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5735u16 => Self::SubgroupAvcMceConvertToRefResultINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5736u16 => Self::SubgroupAvcMceConvertToSicPayloadINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5737u16 => Self::SubgroupAvcMceConvertToSicResultINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5738u16 => Self::SubgroupAvcMceGetMotionVectorsINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5739u16 => Self::SubgroupAvcMceGetInterDistortionsINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5740u16 => Self::SubgroupAvcMceGetBestInterDistortionsINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5741u16 => Self::SubgroupAvcMceGetInterMajorShapeINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5742u16 => Self::SubgroupAvcMceGetInterMinorShapeINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5743u16 => Self::SubgroupAvcMceGetInterDirectionsINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5744u16 => Self::SubgroupAvcMceGetInterMotionVectorCountINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5745u16 => Self::SubgroupAvcMceGetInterReferenceIdsINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5746u16 => Self::SubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
packed_reference_ids: Id(reader.next_u32()?),
packed_reference_parameter_field_polarities: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5747u16 => Self::SubgroupAvcImeInitializeINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
src_coord: Id(reader.next_u32()?),
partition_mask: Id(reader.next_u32()?),
sad_adjustment: Id(reader.next_u32()?),
},
5748u16 => Self::SubgroupAvcImeSetSingleReferenceINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
ref_offset: Id(reader.next_u32()?),
search_window_config: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5749u16 => Self::SubgroupAvcImeSetDualReferenceINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
fwd_ref_offset: Id(reader.next_u32()?),
bwd_ref_offset: Id(reader.next_u32()?),
id_search_window_config: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5750u16 => Self::SubgroupAvcImeRefWindowSizeINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
search_window_config: Id(reader.next_u32()?),
dual_ref: Id(reader.next_u32()?),
},
5751u16 => Self::SubgroupAvcImeAdjustRefOffsetINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
ref_offset: Id(reader.next_u32()?),
src_coord: Id(reader.next_u32()?),
ref_window_size: Id(reader.next_u32()?),
image_size: Id(reader.next_u32()?),
},
5752u16 => Self::SubgroupAvcImeConvertToMcePayloadINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5753u16 => Self::SubgroupAvcImeSetMaxMotionVectorCountINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
max_motion_vector_count: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5754u16 => Self::SubgroupAvcImeSetUnidirectionalMixDisableINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5755u16 => Self::SubgroupAvcImeSetEarlySearchTerminationThresholdINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
threshold: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5756u16 => Self::SubgroupAvcImeSetWeightedSadINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
packed_sad_weights: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5757u16 => Self::SubgroupAvcImeEvaluateWithSingleReferenceINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
src_image: Id(reader.next_u32()?),
ref_image: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5758u16 => Self::SubgroupAvcImeEvaluateWithDualReferenceINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
src_image: Id(reader.next_u32()?),
fwd_ref_image: Id(reader.next_u32()?),
bwd_ref_image: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5759u16 => Self::SubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
src_image: Id(reader.next_u32()?),
ref_image: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
streamin_components: Id(reader.next_u32()?),
},
5760u16 => Self::SubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
src_image: Id(reader.next_u32()?),
fwd_ref_image: Id(reader.next_u32()?),
bwd_ref_image: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
streamin_components: Id(reader.next_u32()?),
},
5761u16 => Self::SubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
src_image: Id(reader.next_u32()?),
ref_image: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5762u16 => Self::SubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
src_image: Id(reader.next_u32()?),
fwd_ref_image: Id(reader.next_u32()?),
bwd_ref_image: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5763u16 => Self::SubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
src_image: Id(reader.next_u32()?),
ref_image: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
streamin_components: Id(reader.next_u32()?),
},
5764u16 => Self::SubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
src_image: Id(reader.next_u32()?),
fwd_ref_image: Id(reader.next_u32()?),
bwd_ref_image: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
streamin_components: Id(reader.next_u32()?),
},
5765u16 => Self::SubgroupAvcImeConvertToMceResultINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5766u16 => Self::SubgroupAvcImeGetSingleReferenceStreaminINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5767u16 => Self::SubgroupAvcImeGetDualReferenceStreaminINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5768u16 => Self::SubgroupAvcImeStripSingleReferenceStreamoutINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5769u16 => Self::SubgroupAvcImeStripDualReferenceStreamoutINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5770u16 => {
Self::SubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
major_shape: Id(reader.next_u32()?),
}
}
5771u16 => Self::SubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
major_shape: Id(reader.next_u32()?),
},
5772u16 => Self::SubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
major_shape: Id(reader.next_u32()?),
},
5773u16 => Self::SubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
major_shape: Id(reader.next_u32()?),
direction: Id(reader.next_u32()?),
},
5774u16 => Self::SubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
major_shape: Id(reader.next_u32()?),
direction: Id(reader.next_u32()?),
},
5775u16 => Self::SubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
major_shape: Id(reader.next_u32()?),
direction: Id(reader.next_u32()?),
},
5776u16 => Self::SubgroupAvcImeGetBorderReachedINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
image_select: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5777u16 => Self::SubgroupAvcImeGetTruncatedSearchIndicationINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5778u16 => Self::SubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5779u16 => Self::SubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5780u16 => Self::SubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5781u16 => Self::SubgroupAvcFmeInitializeINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
src_coord: Id(reader.next_u32()?),
motion_vectors: Id(reader.next_u32()?),
major_shapes: Id(reader.next_u32()?),
minor_shapes: Id(reader.next_u32()?),
direction: Id(reader.next_u32()?),
pixel_resolution: Id(reader.next_u32()?),
sad_adjustment: Id(reader.next_u32()?),
},
5782u16 => Self::SubgroupAvcBmeInitializeINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
src_coord: Id(reader.next_u32()?),
motion_vectors: Id(reader.next_u32()?),
major_shapes: Id(reader.next_u32()?),
minor_shapes: Id(reader.next_u32()?),
direction: Id(reader.next_u32()?),
pixel_resolution: Id(reader.next_u32()?),
bidirectional_weight: Id(reader.next_u32()?),
sad_adjustment: Id(reader.next_u32()?),
},
5783u16 => Self::SubgroupAvcRefConvertToMcePayloadINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5784u16 => Self::SubgroupAvcRefSetBidirectionalMixDisableINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5785u16 => Self::SubgroupAvcRefSetBilinearFilterEnableINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5786u16 => Self::SubgroupAvcRefEvaluateWithSingleReferenceINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
src_image: Id(reader.next_u32()?),
ref_image: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5787u16 => Self::SubgroupAvcRefEvaluateWithDualReferenceINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
src_image: Id(reader.next_u32()?),
fwd_ref_image: Id(reader.next_u32()?),
bwd_ref_image: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5788u16 => Self::SubgroupAvcRefEvaluateWithMultiReferenceINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
src_image: Id(reader.next_u32()?),
packed_reference_ids: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5789u16 => Self::SubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
src_image: Id(reader.next_u32()?),
packed_reference_ids: Id(reader.next_u32()?),
packed_reference_field_polarities: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5790u16 => Self::SubgroupAvcRefConvertToMceResultINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5791u16 => Self::SubgroupAvcSicInitializeINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
src_coord: Id(reader.next_u32()?),
},
5792u16 => Self::SubgroupAvcSicConfigureSkcINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
skip_block_partition_type: Id(reader.next_u32()?),
skip_motion_vector_mask: Id(reader.next_u32()?),
motion_vectors: Id(reader.next_u32()?),
bidirectional_weight: Id(reader.next_u32()?),
sad_adjustment: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5793u16 => Self::SubgroupAvcSicConfigureIpeLumaINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
luma_intra_partition_mask: Id(reader.next_u32()?),
intra_neighbour_availabilty: Id(reader.next_u32()?),
left_edge_luma_pixels: Id(reader.next_u32()?),
upper_left_corner_luma_pixel: Id(reader.next_u32()?),
upper_edge_luma_pixels: Id(reader.next_u32()?),
upper_right_edge_luma_pixels: Id(reader.next_u32()?),
sad_adjustment: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5794u16 => Self::SubgroupAvcSicConfigureIpeLumaChromaINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
luma_intra_partition_mask: Id(reader.next_u32()?),
intra_neighbour_availabilty: Id(reader.next_u32()?),
left_edge_luma_pixels: Id(reader.next_u32()?),
upper_left_corner_luma_pixel: Id(reader.next_u32()?),
upper_edge_luma_pixels: Id(reader.next_u32()?),
upper_right_edge_luma_pixels: Id(reader.next_u32()?),
left_edge_chroma_pixels: Id(reader.next_u32()?),
upper_left_corner_chroma_pixel: Id(reader.next_u32()?),
upper_edge_chroma_pixels: Id(reader.next_u32()?),
sad_adjustment: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5795u16 => Self::SubgroupAvcSicGetMotionVectorMaskINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
skip_block_partition_type: Id(reader.next_u32()?),
direction: Id(reader.next_u32()?),
},
5796u16 => Self::SubgroupAvcSicConvertToMcePayloadINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5797u16 => Self::SubgroupAvcSicSetIntraLumaShapePenaltyINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
packed_shape_penalty: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5798u16 => Self::SubgroupAvcSicSetIntraLumaModeCostFunctionINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
luma_mode_penalty: Id(reader.next_u32()?),
luma_packed_neighbor_modes: Id(reader.next_u32()?),
luma_packed_non_dc_penalty: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5799u16 => Self::SubgroupAvcSicSetIntraChromaModeCostFunctionINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
chroma_mode_base_penalty: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5800u16 => Self::SubgroupAvcSicSetBilinearFilterEnableINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5801u16 => Self::SubgroupAvcSicSetSkcForwardTransformEnableINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
packed_sad_coefficients: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5802u16 => Self::SubgroupAvcSicSetBlockBasedRawSkipSadINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
block_based_skip_type: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5803u16 => Self::SubgroupAvcSicEvaluateIpeINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
src_image: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5804u16 => Self::SubgroupAvcSicEvaluateWithSingleReferenceINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
src_image: Id(reader.next_u32()?),
ref_image: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5805u16 => Self::SubgroupAvcSicEvaluateWithDualReferenceINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
src_image: Id(reader.next_u32()?),
fwd_ref_image: Id(reader.next_u32()?),
bwd_ref_image: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5806u16 => Self::SubgroupAvcSicEvaluateWithMultiReferenceINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
src_image: Id(reader.next_u32()?),
packed_reference_ids: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5807u16 => Self::SubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
src_image: Id(reader.next_u32()?),
packed_reference_ids: Id(reader.next_u32()?),
packed_reference_field_polarities: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5808u16 => Self::SubgroupAvcSicConvertToMceResultINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5809u16 => Self::SubgroupAvcSicGetIpeLumaShapeINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5810u16 => Self::SubgroupAvcSicGetBestIpeLumaDistortionINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5811u16 => Self::SubgroupAvcSicGetBestIpeChromaDistortionINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5812u16 => Self::SubgroupAvcSicGetPackedIpeLumaModesINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5813u16 => Self::SubgroupAvcSicGetIpeChromaModeINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5814u16 => Self::SubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5815u16 => Self::SubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5816u16 => Self::SubgroupAvcSicGetInterRawSadsINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
payload: Id(reader.next_u32()?),
},
5818u16 => Self::VariableLengthArrayINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
lenght: Id(reader.next_u32()?),
},
5819u16 => Self::SaveMemoryINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
},
5820u16 => Self::RestoreMemoryINTEL { ptr: Id(reader.next_u32()?) },
5840u16 => Self::ArbitraryFloatSinCosPiINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
a: Id(reader.next_u32()?),
m1: reader.next_u32()?,
mout: reader.next_u32()?,
from_sign: reader.next_u32()?,
enable_subnormals: reader.next_u32()?,
rounding_mode: reader.next_u32()?,
rounding_accuracy: reader.next_u32()?,
},
5841u16 => Self::ArbitraryFloatCastINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
a: Id(reader.next_u32()?),
m1: reader.next_u32()?,
mout: reader.next_u32()?,
enable_subnormals: reader.next_u32()?,
rounding_mode: reader.next_u32()?,
rounding_accuracy: reader.next_u32()?,
},
5842u16 => Self::ArbitraryFloatCastFromIntINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
a: Id(reader.next_u32()?),
mout: reader.next_u32()?,
from_sign: reader.next_u32()?,
enable_subnormals: reader.next_u32()?,
rounding_mode: reader.next_u32()?,
rounding_accuracy: reader.next_u32()?,
},
5843u16 => Self::ArbitraryFloatCastToIntINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
a: Id(reader.next_u32()?),
m1: reader.next_u32()?,
enable_subnormals: reader.next_u32()?,
rounding_mode: reader.next_u32()?,
rounding_accuracy: reader.next_u32()?,
},
5846u16 => Self::ArbitraryFloatAddINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
a: Id(reader.next_u32()?),
m1: reader.next_u32()?,
b: Id(reader.next_u32()?),
m2: reader.next_u32()?,
mout: reader.next_u32()?,
enable_subnormals: reader.next_u32()?,
rounding_mode: reader.next_u32()?,
rounding_accuracy: reader.next_u32()?,
},
5847u16 => Self::ArbitraryFloatSubINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
a: Id(reader.next_u32()?),
m1: reader.next_u32()?,
b: Id(reader.next_u32()?),
m2: reader.next_u32()?,
mout: reader.next_u32()?,
enable_subnormals: reader.next_u32()?,
rounding_mode: reader.next_u32()?,
rounding_accuracy: reader.next_u32()?,
},
5848u16 => Self::ArbitraryFloatMulINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
a: Id(reader.next_u32()?),
m1: reader.next_u32()?,
b: Id(reader.next_u32()?),
m2: reader.next_u32()?,
mout: reader.next_u32()?,
enable_subnormals: reader.next_u32()?,
rounding_mode: reader.next_u32()?,
rounding_accuracy: reader.next_u32()?,
},
5849u16 => Self::ArbitraryFloatDivINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
a: Id(reader.next_u32()?),
m1: reader.next_u32()?,
b: Id(reader.next_u32()?),
m2: reader.next_u32()?,
mout: reader.next_u32()?,
enable_subnormals: reader.next_u32()?,
rounding_mode: reader.next_u32()?,
rounding_accuracy: reader.next_u32()?,
},
5850u16 => Self::ArbitraryFloatGTINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
a: Id(reader.next_u32()?),
m1: reader.next_u32()?,
b: Id(reader.next_u32()?),
m2: reader.next_u32()?,
},
5851u16 => Self::ArbitraryFloatGEINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
a: Id(reader.next_u32()?),
m1: reader.next_u32()?,
b: Id(reader.next_u32()?),
m2: reader.next_u32()?,
},
5852u16 => Self::ArbitraryFloatLTINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
a: Id(reader.next_u32()?),
m1: reader.next_u32()?,
b: Id(reader.next_u32()?),
m2: reader.next_u32()?,
},
5853u16 => Self::ArbitraryFloatLEINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
a: Id(reader.next_u32()?),
m1: reader.next_u32()?,
b: Id(reader.next_u32()?),
m2: reader.next_u32()?,
},
5854u16 => Self::ArbitraryFloatEQINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
a: Id(reader.next_u32()?),
m1: reader.next_u32()?,
b: Id(reader.next_u32()?),
m2: reader.next_u32()?,
},
5855u16 => Self::ArbitraryFloatRecipINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
a: Id(reader.next_u32()?),
m1: reader.next_u32()?,
mout: reader.next_u32()?,
enable_subnormals: reader.next_u32()?,
rounding_mode: reader.next_u32()?,
rounding_accuracy: reader.next_u32()?,
},
5856u16 => Self::ArbitraryFloatRSqrtINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
a: Id(reader.next_u32()?),
m1: reader.next_u32()?,
mout: reader.next_u32()?,
enable_subnormals: reader.next_u32()?,
rounding_mode: reader.next_u32()?,
rounding_accuracy: reader.next_u32()?,
},
5857u16 => Self::ArbitraryFloatCbrtINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
a: Id(reader.next_u32()?),
m1: reader.next_u32()?,
mout: reader.next_u32()?,
enable_subnormals: reader.next_u32()?,
rounding_mode: reader.next_u32()?,
rounding_accuracy: reader.next_u32()?,
},
5858u16 => Self::ArbitraryFloatHypotINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
a: Id(reader.next_u32()?),
m1: reader.next_u32()?,
b: Id(reader.next_u32()?),
m2: reader.next_u32()?,
mout: reader.next_u32()?,
enable_subnormals: reader.next_u32()?,
rounding_mode: reader.next_u32()?,
rounding_accuracy: reader.next_u32()?,
},
5859u16 => Self::ArbitraryFloatSqrtINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
a: Id(reader.next_u32()?),
m1: reader.next_u32()?,
mout: reader.next_u32()?,
enable_subnormals: reader.next_u32()?,
rounding_mode: reader.next_u32()?,
rounding_accuracy: reader.next_u32()?,
},
5860u16 => Self::ArbitraryFloatLogINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
a: Id(reader.next_u32()?),
m1: reader.next_u32()?,
mout: reader.next_u32()?,
enable_subnormals: reader.next_u32()?,
rounding_mode: reader.next_u32()?,
rounding_accuracy: reader.next_u32()?,
},
5861u16 => Self::ArbitraryFloatLog2INTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
a: Id(reader.next_u32()?),
m1: reader.next_u32()?,
mout: reader.next_u32()?,
enable_subnormals: reader.next_u32()?,
rounding_mode: reader.next_u32()?,
rounding_accuracy: reader.next_u32()?,
},
5862u16 => Self::ArbitraryFloatLog10INTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
a: Id(reader.next_u32()?),
m1: reader.next_u32()?,
mout: reader.next_u32()?,
enable_subnormals: reader.next_u32()?,
rounding_mode: reader.next_u32()?,
rounding_accuracy: reader.next_u32()?,
},
5863u16 => Self::ArbitraryFloatLog1pINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
a: Id(reader.next_u32()?),
m1: reader.next_u32()?,
mout: reader.next_u32()?,
enable_subnormals: reader.next_u32()?,
rounding_mode: reader.next_u32()?,
rounding_accuracy: reader.next_u32()?,
},
5864u16 => Self::ArbitraryFloatExpINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
a: Id(reader.next_u32()?),
m1: reader.next_u32()?,
mout: reader.next_u32()?,
enable_subnormals: reader.next_u32()?,
rounding_mode: reader.next_u32()?,
rounding_accuracy: reader.next_u32()?,
},
5865u16 => Self::ArbitraryFloatExp2INTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
a: Id(reader.next_u32()?),
m1: reader.next_u32()?,
mout: reader.next_u32()?,
enable_subnormals: reader.next_u32()?,
rounding_mode: reader.next_u32()?,
rounding_accuracy: reader.next_u32()?,
},
5866u16 => Self::ArbitraryFloatExp10INTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
a: Id(reader.next_u32()?),
m1: reader.next_u32()?,
mout: reader.next_u32()?,
enable_subnormals: reader.next_u32()?,
rounding_mode: reader.next_u32()?,
rounding_accuracy: reader.next_u32()?,
},
5867u16 => Self::ArbitraryFloatExpm1INTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
a: Id(reader.next_u32()?),
m1: reader.next_u32()?,
mout: reader.next_u32()?,
enable_subnormals: reader.next_u32()?,
rounding_mode: reader.next_u32()?,
rounding_accuracy: reader.next_u32()?,
},
5868u16 => Self::ArbitraryFloatSinINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
a: Id(reader.next_u32()?),
m1: reader.next_u32()?,
mout: reader.next_u32()?,
enable_subnormals: reader.next_u32()?,
rounding_mode: reader.next_u32()?,
rounding_accuracy: reader.next_u32()?,
},
5869u16 => Self::ArbitraryFloatCosINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
a: Id(reader.next_u32()?),
m1: reader.next_u32()?,
mout: reader.next_u32()?,
enable_subnormals: reader.next_u32()?,
rounding_mode: reader.next_u32()?,
rounding_accuracy: reader.next_u32()?,
},
5870u16 => Self::ArbitraryFloatSinCosINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
a: Id(reader.next_u32()?),
m1: reader.next_u32()?,
mout: reader.next_u32()?,
enable_subnormals: reader.next_u32()?,
rounding_mode: reader.next_u32()?,
rounding_accuracy: reader.next_u32()?,
},
5871u16 => Self::ArbitraryFloatSinPiINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
a: Id(reader.next_u32()?),
m1: reader.next_u32()?,
mout: reader.next_u32()?,
enable_subnormals: reader.next_u32()?,
rounding_mode: reader.next_u32()?,
rounding_accuracy: reader.next_u32()?,
},
5872u16 => Self::ArbitraryFloatCosPiINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
a: Id(reader.next_u32()?),
m1: reader.next_u32()?,
mout: reader.next_u32()?,
enable_subnormals: reader.next_u32()?,
rounding_mode: reader.next_u32()?,
rounding_accuracy: reader.next_u32()?,
},
5873u16 => Self::ArbitraryFloatASinINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
a: Id(reader.next_u32()?),
m1: reader.next_u32()?,
mout: reader.next_u32()?,
enable_subnormals: reader.next_u32()?,
rounding_mode: reader.next_u32()?,
rounding_accuracy: reader.next_u32()?,
},
5874u16 => Self::ArbitraryFloatASinPiINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
a: Id(reader.next_u32()?),
m1: reader.next_u32()?,
mout: reader.next_u32()?,
enable_subnormals: reader.next_u32()?,
rounding_mode: reader.next_u32()?,
rounding_accuracy: reader.next_u32()?,
},
5875u16 => Self::ArbitraryFloatACosINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
a: Id(reader.next_u32()?),
m1: reader.next_u32()?,
mout: reader.next_u32()?,
enable_subnormals: reader.next_u32()?,
rounding_mode: reader.next_u32()?,
rounding_accuracy: reader.next_u32()?,
},
5876u16 => Self::ArbitraryFloatACosPiINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
a: Id(reader.next_u32()?),
m1: reader.next_u32()?,
mout: reader.next_u32()?,
enable_subnormals: reader.next_u32()?,
rounding_mode: reader.next_u32()?,
rounding_accuracy: reader.next_u32()?,
},
5877u16 => Self::ArbitraryFloatATanINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
a: Id(reader.next_u32()?),
m1: reader.next_u32()?,
mout: reader.next_u32()?,
enable_subnormals: reader.next_u32()?,
rounding_mode: reader.next_u32()?,
rounding_accuracy: reader.next_u32()?,
},
5878u16 => Self::ArbitraryFloatATanPiINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
a: Id(reader.next_u32()?),
m1: reader.next_u32()?,
mout: reader.next_u32()?,
enable_subnormals: reader.next_u32()?,
rounding_mode: reader.next_u32()?,
rounding_accuracy: reader.next_u32()?,
},
5879u16 => Self::ArbitraryFloatATan2INTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
a: Id(reader.next_u32()?),
m1: reader.next_u32()?,
b: Id(reader.next_u32()?),
m2: reader.next_u32()?,
mout: reader.next_u32()?,
enable_subnormals: reader.next_u32()?,
rounding_mode: reader.next_u32()?,
rounding_accuracy: reader.next_u32()?,
},
5880u16 => Self::ArbitraryFloatPowINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
a: Id(reader.next_u32()?),
m1: reader.next_u32()?,
b: Id(reader.next_u32()?),
m2: reader.next_u32()?,
mout: reader.next_u32()?,
enable_subnormals: reader.next_u32()?,
rounding_mode: reader.next_u32()?,
rounding_accuracy: reader.next_u32()?,
},
5881u16 => Self::ArbitraryFloatPowRINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
a: Id(reader.next_u32()?),
m1: reader.next_u32()?,
b: Id(reader.next_u32()?),
m2: reader.next_u32()?,
mout: reader.next_u32()?,
enable_subnormals: reader.next_u32()?,
rounding_mode: reader.next_u32()?,
rounding_accuracy: reader.next_u32()?,
},
5882u16 => Self::ArbitraryFloatPowNINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
a: Id(reader.next_u32()?),
m1: reader.next_u32()?,
b: Id(reader.next_u32()?),
mout: reader.next_u32()?,
enable_subnormals: reader.next_u32()?,
rounding_mode: reader.next_u32()?,
rounding_accuracy: reader.next_u32()?,
},
5887u16 => Self::LoopControlINTEL {
loop_control_parameters: {
let mut vec = Vec::new();
while !reader.is_empty() {
vec.push(reader.next_u32()?);
}
vec
},
},
5923u16 => Self::FixedSqrtINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
input_type: Id(reader.next_u32()?),
input: Id(reader.next_u32()?),
s: reader.next_u32()?,
i: reader.next_u32()?,
r_i: reader.next_u32()?,
q: reader.next_u32()?,
o: reader.next_u32()?,
},
5924u16 => Self::FixedRecipINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
input_type: Id(reader.next_u32()?),
input: Id(reader.next_u32()?),
s: reader.next_u32()?,
i: reader.next_u32()?,
r_i: reader.next_u32()?,
q: reader.next_u32()?,
o: reader.next_u32()?,
},
5925u16 => Self::FixedRsqrtINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
input_type: Id(reader.next_u32()?),
input: Id(reader.next_u32()?),
s: reader.next_u32()?,
i: reader.next_u32()?,
r_i: reader.next_u32()?,
q: reader.next_u32()?,
o: reader.next_u32()?,
},
5926u16 => Self::FixedSinINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
input_type: Id(reader.next_u32()?),
input: Id(reader.next_u32()?),
s: reader.next_u32()?,
i: reader.next_u32()?,
r_i: reader.next_u32()?,
q: reader.next_u32()?,
o: reader.next_u32()?,
},
5927u16 => Self::FixedCosINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
input_type: Id(reader.next_u32()?),
input: Id(reader.next_u32()?),
s: reader.next_u32()?,
i: reader.next_u32()?,
r_i: reader.next_u32()?,
q: reader.next_u32()?,
o: reader.next_u32()?,
},
5928u16 => Self::FixedSinCosINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
input_type: Id(reader.next_u32()?),
input: Id(reader.next_u32()?),
s: reader.next_u32()?,
i: reader.next_u32()?,
r_i: reader.next_u32()?,
q: reader.next_u32()?,
o: reader.next_u32()?,
},
5929u16 => Self::FixedSinPiINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
input_type: Id(reader.next_u32()?),
input: Id(reader.next_u32()?),
s: reader.next_u32()?,
i: reader.next_u32()?,
r_i: reader.next_u32()?,
q: reader.next_u32()?,
o: reader.next_u32()?,
},
5930u16 => Self::FixedCosPiINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
input_type: Id(reader.next_u32()?),
input: Id(reader.next_u32()?),
s: reader.next_u32()?,
i: reader.next_u32()?,
r_i: reader.next_u32()?,
q: reader.next_u32()?,
o: reader.next_u32()?,
},
5931u16 => Self::FixedSinCosPiINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
input_type: Id(reader.next_u32()?),
input: Id(reader.next_u32()?),
s: reader.next_u32()?,
i: reader.next_u32()?,
r_i: reader.next_u32()?,
q: reader.next_u32()?,
o: reader.next_u32()?,
},
5932u16 => Self::FixedLogINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
input_type: Id(reader.next_u32()?),
input: Id(reader.next_u32()?),
s: reader.next_u32()?,
i: reader.next_u32()?,
r_i: reader.next_u32()?,
q: reader.next_u32()?,
o: reader.next_u32()?,
},
5933u16 => Self::FixedExpINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
input_type: Id(reader.next_u32()?),
input: Id(reader.next_u32()?),
s: reader.next_u32()?,
i: reader.next_u32()?,
r_i: reader.next_u32()?,
q: reader.next_u32()?,
o: reader.next_u32()?,
},
5934u16 => Self::PtrCastToCrossWorkgroupINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
pointer: Id(reader.next_u32()?),
},
5938u16 => Self::CrossWorkgroupCastToPtrINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
pointer: Id(reader.next_u32()?),
},
5946u16 => Self::ReadPipeBlockingINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
packet_size: Id(reader.next_u32()?),
packet_alignment: Id(reader.next_u32()?),
},
5947u16 => Self::WritePipeBlockingINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
packet_size: Id(reader.next_u32()?),
packet_alignment: Id(reader.next_u32()?),
},
5949u16 => Self::FPGARegINTEL {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
result: Id(reader.next_u32()?),
input: Id(reader.next_u32()?),
},
6016u16 => Self::RayQueryGetRayTMinKHR {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
ray_query: Id(reader.next_u32()?),
},
6017u16 => Self::RayQueryGetRayFlagsKHR {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
ray_query: Id(reader.next_u32()?),
},
6018u16 => Self::RayQueryGetIntersectionTKHR {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
ray_query: Id(reader.next_u32()?),
intersection: Id(reader.next_u32()?),
},
6019u16 => Self::RayQueryGetIntersectionInstanceCustomIndexKHR {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
ray_query: Id(reader.next_u32()?),
intersection: Id(reader.next_u32()?),
},
6020u16 => Self::RayQueryGetIntersectionInstanceIdKHR {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
ray_query: Id(reader.next_u32()?),
intersection: Id(reader.next_u32()?),
},
6021u16 => Self::RayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
ray_query: Id(reader.next_u32()?),
intersection: Id(reader.next_u32()?),
},
6022u16 => Self::RayQueryGetIntersectionGeometryIndexKHR {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
ray_query: Id(reader.next_u32()?),
intersection: Id(reader.next_u32()?),
},
6023u16 => Self::RayQueryGetIntersectionPrimitiveIndexKHR {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
ray_query: Id(reader.next_u32()?),
intersection: Id(reader.next_u32()?),
},
6024u16 => Self::RayQueryGetIntersectionBarycentricsKHR {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
ray_query: Id(reader.next_u32()?),
intersection: Id(reader.next_u32()?),
},
6025u16 => Self::RayQueryGetIntersectionFrontFaceKHR {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
ray_query: Id(reader.next_u32()?),
intersection: Id(reader.next_u32()?),
},
6026u16 => Self::RayQueryGetIntersectionCandidateAABBOpaqueKHR {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
ray_query: Id(reader.next_u32()?),
},
6027u16 => Self::RayQueryGetIntersectionObjectRayDirectionKHR {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
ray_query: Id(reader.next_u32()?),
intersection: Id(reader.next_u32()?),
},
6028u16 => Self::RayQueryGetIntersectionObjectRayOriginKHR {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
ray_query: Id(reader.next_u32()?),
intersection: Id(reader.next_u32()?),
},
6029u16 => Self::RayQueryGetWorldRayDirectionKHR {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
ray_query: Id(reader.next_u32()?),
},
6030u16 => Self::RayQueryGetWorldRayOriginKHR {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
ray_query: Id(reader.next_u32()?),
},
6031u16 => Self::RayQueryGetIntersectionObjectToWorldKHR {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
ray_query: Id(reader.next_u32()?),
intersection: Id(reader.next_u32()?),
},
6032u16 => Self::RayQueryGetIntersectionWorldToObjectKHR {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
ray_query: Id(reader.next_u32()?),
intersection: Id(reader.next_u32()?),
},
6035u16 => Self::AtomicFAddEXT {
result_type_id: Id(reader.next_u32()?),
result_id: Id(reader.next_u32()?),
pointer: Id(reader.next_u32()?),
memory: Id(reader.next_u32()?),
semantics: Id(reader.next_u32()?),
value: Id(reader.next_u32()?),
},
6086u16 => Self::TypeBufferSurfaceINTEL {
result_id: Id(reader.next_u32()?),
access_qualifier: AccessQualifier::parse(reader)?,
},
6090u16 => Self::TypeStructContinuedINTEL {
member_types: {
let mut vec = Vec::new();
while !reader.is_empty() {
vec.push(Id(reader.next_u32()?));
}
vec
},
},
6091u16 => Self::ConstantCompositeContinuedINTEL {
constituents: {
let mut vec = Vec::new();
while !reader.is_empty() {
vec.push(Id(reader.next_u32()?));
}
vec
},
},
6092u16 => Self::SpecConstantCompositeContinuedINTEL {
constituents: {
let mut vec = Vec::new();
while !reader.is_empty() {
vec.push(Id(reader.next_u32()?));
}
vec
},
},
opcode => return Err(reader.map_err(ParseErrors::UnknownOpcode(opcode))),
})
}
#[doc = r" Returns the `Id` that is assigned by this instruction, if any."]
pub fn result_id(&self) -> Option<Id> {
match self {
Self::Undef { result_id, .. }
| Self::String { result_id, .. }
| Self::ExtInstImport { result_id, .. }
| Self::ExtInst { result_id, .. }
| Self::TypeVoid { result_id, .. }
| Self::TypeBool { result_id, .. }
| Self::TypeInt { result_id, .. }
| Self::TypeFloat { result_id, .. }
| Self::TypeVector { result_id, .. }
| Self::TypeMatrix { result_id, .. }
| Self::TypeImage { result_id, .. }
| Self::TypeSampler { result_id, .. }
| Self::TypeSampledImage { result_id, .. }
| Self::TypeArray { result_id, .. }
| Self::TypeRuntimeArray { result_id, .. }
| Self::TypeStruct { result_id, .. }
| Self::TypeOpaque { result_id, .. }
| Self::TypePointer { result_id, .. }
| Self::TypeFunction { result_id, .. }
| Self::TypeEvent { result_id, .. }
| Self::TypeDeviceEvent { result_id, .. }
| Self::TypeReserveId { result_id, .. }
| Self::TypeQueue { result_id, .. }
| Self::TypePipe { result_id, .. }
| Self::ConstantTrue { result_id, .. }
| Self::ConstantFalse { result_id, .. }
| Self::Constant { result_id, .. }
| Self::ConstantComposite { result_id, .. }
| Self::ConstantSampler { result_id, .. }
| Self::ConstantNull { result_id, .. }
| Self::SpecConstantTrue { result_id, .. }
| Self::SpecConstantFalse { result_id, .. }
| Self::SpecConstant { result_id, .. }
| Self::SpecConstantComposite { result_id, .. }
| Self::SpecConstantOp { result_id, .. }
| Self::Function { result_id, .. }
| Self::FunctionParameter { result_id, .. }
| Self::FunctionCall { result_id, .. }
| Self::Variable { result_id, .. }
| Self::ImageTexelPointer { result_id, .. }
| Self::Load { result_id, .. }
| Self::AccessChain { result_id, .. }
| Self::InBoundsAccessChain { result_id, .. }
| Self::PtrAccessChain { result_id, .. }
| Self::ArrayLength { result_id, .. }
| Self::GenericPtrMemSemantics { result_id, .. }
| Self::InBoundsPtrAccessChain { result_id, .. }
| Self::DecorationGroup { result_id, .. }
| Self::VectorExtractDynamic { result_id, .. }
| Self::VectorInsertDynamic { result_id, .. }
| Self::VectorShuffle { result_id, .. }
| Self::CompositeConstruct { result_id, .. }
| Self::CompositeExtract { result_id, .. }
| Self::CompositeInsert { result_id, .. }
| Self::CopyObject { result_id, .. }
| Self::Transpose { result_id, .. }
| Self::SampledImage { result_id, .. }
| Self::ImageSampleImplicitLod { result_id, .. }
| Self::ImageSampleExplicitLod { result_id, .. }
| Self::ImageSampleDrefImplicitLod { result_id, .. }
| Self::ImageSampleDrefExplicitLod { result_id, .. }
| Self::ImageSampleProjImplicitLod { result_id, .. }
| Self::ImageSampleProjExplicitLod { result_id, .. }
| Self::ImageSampleProjDrefImplicitLod { result_id, .. }
| Self::ImageSampleProjDrefExplicitLod { result_id, .. }
| Self::ImageFetch { result_id, .. }
| Self::ImageGather { result_id, .. }
| Self::ImageDrefGather { result_id, .. }
| Self::ImageRead { result_id, .. }
| Self::Image { result_id, .. }
| Self::ImageQueryFormat { result_id, .. }
| Self::ImageQueryOrder { result_id, .. }
| Self::ImageQuerySizeLod { result_id, .. }
| Self::ImageQuerySize { result_id, .. }
| Self::ImageQueryLod { result_id, .. }
| Self::ImageQueryLevels { result_id, .. }
| Self::ImageQuerySamples { result_id, .. }
| Self::ConvertFToU { result_id, .. }
| Self::ConvertFToS { result_id, .. }
| Self::ConvertSToF { result_id, .. }
| Self::ConvertUToF { result_id, .. }
| Self::UConvert { result_id, .. }
| Self::SConvert { result_id, .. }
| Self::FConvert { result_id, .. }
| Self::QuantizeToF16 { result_id, .. }
| Self::ConvertPtrToU { result_id, .. }
| Self::SatConvertSToU { result_id, .. }
| Self::SatConvertUToS { result_id, .. }
| Self::ConvertUToPtr { result_id, .. }
| Self::PtrCastToGeneric { result_id, .. }
| Self::GenericCastToPtr { result_id, .. }
| Self::GenericCastToPtrExplicit { result_id, .. }
| Self::Bitcast { result_id, .. }
| Self::SNegate { result_id, .. }
| Self::FNegate { result_id, .. }
| Self::IAdd { result_id, .. }
| Self::FAdd { result_id, .. }
| Self::ISub { result_id, .. }
| Self::FSub { result_id, .. }
| Self::IMul { result_id, .. }
| Self::FMul { result_id, .. }
| Self::UDiv { result_id, .. }
| Self::SDiv { result_id, .. }
| Self::FDiv { result_id, .. }
| Self::UMod { result_id, .. }
| Self::SRem { result_id, .. }
| Self::SMod { result_id, .. }
| Self::FRem { result_id, .. }
| Self::FMod { result_id, .. }
| Self::VectorTimesScalar { result_id, .. }
| Self::MatrixTimesScalar { result_id, .. }
| Self::VectorTimesMatrix { result_id, .. }
| Self::MatrixTimesVector { result_id, .. }
| Self::MatrixTimesMatrix { result_id, .. }
| Self::OuterProduct { result_id, .. }
| Self::Dot { result_id, .. }
| Self::IAddCarry { result_id, .. }
| Self::ISubBorrow { result_id, .. }
| Self::UMulExtended { result_id, .. }
| Self::SMulExtended { result_id, .. }
| Self::Any { result_id, .. }
| Self::All { result_id, .. }
| Self::IsNan { result_id, .. }
| Self::IsInf { result_id, .. }
| Self::IsFinite { result_id, .. }
| Self::IsNormal { result_id, .. }
| Self::SignBitSet { result_id, .. }
| Self::LessOrGreater { result_id, .. }
| Self::Ordered { result_id, .. }
| Self::Unordered { result_id, .. }
| Self::LogicalEqual { result_id, .. }
| Self::LogicalNotEqual { result_id, .. }
| Self::LogicalOr { result_id, .. }
| Self::LogicalAnd { result_id, .. }
| Self::LogicalNot { result_id, .. }
| Self::Select { result_id, .. }
| Self::IEqual { result_id, .. }
| Self::INotEqual { result_id, .. }
| Self::UGreaterThan { result_id, .. }
| Self::SGreaterThan { result_id, .. }
| Self::UGreaterThanEqual { result_id, .. }
| Self::SGreaterThanEqual { result_id, .. }
| Self::ULessThan { result_id, .. }
| Self::SLessThan { result_id, .. }
| Self::ULessThanEqual { result_id, .. }
| Self::SLessThanEqual { result_id, .. }
| Self::FOrdEqual { result_id, .. }
| Self::FUnordEqual { result_id, .. }
| Self::FOrdNotEqual { result_id, .. }
| Self::FUnordNotEqual { result_id, .. }
| Self::FOrdLessThan { result_id, .. }
| Self::FUnordLessThan { result_id, .. }
| Self::FOrdGreaterThan { result_id, .. }
| Self::FUnordGreaterThan { result_id, .. }
| Self::FOrdLessThanEqual { result_id, .. }
| Self::FUnordLessThanEqual { result_id, .. }
| Self::FOrdGreaterThanEqual { result_id, .. }
| Self::FUnordGreaterThanEqual { result_id, .. }
| Self::ShiftRightLogical { result_id, .. }
| Self::ShiftRightArithmetic { result_id, .. }
| Self::ShiftLeftLogical { result_id, .. }
| Self::BitwiseOr { result_id, .. }
| Self::BitwiseXor { result_id, .. }
| Self::BitwiseAnd { result_id, .. }
| Self::Not { result_id, .. }
| Self::BitFieldInsert { result_id, .. }
| Self::BitFieldSExtract { result_id, .. }
| Self::BitFieldUExtract { result_id, .. }
| Self::BitReverse { result_id, .. }
| Self::BitCount { result_id, .. }
| Self::DPdx { result_id, .. }
| Self::DPdy { result_id, .. }
| Self::Fwidth { result_id, .. }
| Self::DPdxFine { result_id, .. }
| Self::DPdyFine { result_id, .. }
| Self::FwidthFine { result_id, .. }
| Self::DPdxCoarse { result_id, .. }
| Self::DPdyCoarse { result_id, .. }
| Self::FwidthCoarse { result_id, .. }
| Self::AtomicLoad { result_id, .. }
| Self::AtomicExchange { result_id, .. }
| Self::AtomicCompareExchange { result_id, .. }
| Self::AtomicCompareExchangeWeak { result_id, .. }
| Self::AtomicIIncrement { result_id, .. }
| Self::AtomicIDecrement { result_id, .. }
| Self::AtomicIAdd { result_id, .. }
| Self::AtomicISub { result_id, .. }
| Self::AtomicSMin { result_id, .. }
| Self::AtomicUMin { result_id, .. }
| Self::AtomicSMax { result_id, .. }
| Self::AtomicUMax { result_id, .. }
| Self::AtomicAnd { result_id, .. }
| Self::AtomicOr { result_id, .. }
| Self::AtomicXor { result_id, .. }
| Self::Phi { result_id, .. }
| Self::Label { result_id, .. }
| Self::GroupAsyncCopy { result_id, .. }
| Self::GroupAll { result_id, .. }
| Self::GroupAny { result_id, .. }
| Self::GroupBroadcast { result_id, .. }
| Self::GroupIAdd { result_id, .. }
| Self::GroupFAdd { result_id, .. }
| Self::GroupFMin { result_id, .. }
| Self::GroupUMin { result_id, .. }
| Self::GroupSMin { result_id, .. }
| Self::GroupFMax { result_id, .. }
| Self::GroupUMax { result_id, .. }
| Self::GroupSMax { result_id, .. }
| Self::ReadPipe { result_id, .. }
| Self::WritePipe { result_id, .. }
| Self::ReservedReadPipe { result_id, .. }
| Self::ReservedWritePipe { result_id, .. }
| Self::ReserveReadPipePackets { result_id, .. }
| Self::ReserveWritePipePackets { result_id, .. }
| Self::IsValidReserveId { result_id, .. }
| Self::GetNumPipePackets { result_id, .. }
| Self::GetMaxPipePackets { result_id, .. }
| Self::GroupReserveReadPipePackets { result_id, .. }
| Self::GroupReserveWritePipePackets { result_id, .. }
| Self::EnqueueMarker { result_id, .. }
| Self::EnqueueKernel { result_id, .. }
| Self::GetKernelNDrangeSubGroupCount { result_id, .. }
| Self::GetKernelNDrangeMaxSubGroupSize { result_id, .. }
| Self::GetKernelWorkGroupSize { result_id, .. }
| Self::GetKernelPreferredWorkGroupSizeMultiple { result_id, .. }
| Self::CreateUserEvent { result_id, .. }
| Self::IsValidEvent { result_id, .. }
| Self::GetDefaultQueue { result_id, .. }
| Self::BuildNDRange { result_id, .. }
| Self::ImageSparseSampleImplicitLod { result_id, .. }
| Self::ImageSparseSampleExplicitLod { result_id, .. }
| Self::ImageSparseSampleDrefImplicitLod { result_id, .. }
| Self::ImageSparseSampleDrefExplicitLod { result_id, .. }
| Self::ImageSparseSampleProjImplicitLod { result_id, .. }
| Self::ImageSparseSampleProjExplicitLod { result_id, .. }
| Self::ImageSparseSampleProjDrefImplicitLod { result_id, .. }
| Self::ImageSparseSampleProjDrefExplicitLod { result_id, .. }
| Self::ImageSparseFetch { result_id, .. }
| Self::ImageSparseGather { result_id, .. }
| Self::ImageSparseDrefGather { result_id, .. }
| Self::ImageSparseTexelsResident { result_id, .. }
| Self::AtomicFlagTestAndSet { result_id, .. }
| Self::ImageSparseRead { result_id, .. }
| Self::SizeOf { result_id, .. }
| Self::TypePipeStorage { result_id, .. }
| Self::ConstantPipeStorage { result_id, .. }
| Self::CreatePipeFromPipeStorage { result_id, .. }
| Self::GetKernelLocalSizeForSubgroupCount { result_id, .. }
| Self::GetKernelMaxNumSubgroups { result_id, .. }
| Self::TypeNamedBarrier { result_id, .. }
| Self::NamedBarrierInitialize { result_id, .. }
| Self::GroupNonUniformElect { result_id, .. }
| Self::GroupNonUniformAll { result_id, .. }
| Self::GroupNonUniformAny { result_id, .. }
| Self::GroupNonUniformAllEqual { result_id, .. }
| Self::GroupNonUniformBroadcast { result_id, .. }
| Self::GroupNonUniformBroadcastFirst { result_id, .. }
| Self::GroupNonUniformBallot { result_id, .. }
| Self::GroupNonUniformInverseBallot { result_id, .. }
| Self::GroupNonUniformBallotBitExtract { result_id, .. }
| Self::GroupNonUniformBallotBitCount { result_id, .. }
| Self::GroupNonUniformBallotFindLSB { result_id, .. }
| Self::GroupNonUniformBallotFindMSB { result_id, .. }
| Self::GroupNonUniformShuffle { result_id, .. }
| Self::GroupNonUniformShuffleXor { result_id, .. }
| Self::GroupNonUniformShuffleUp { result_id, .. }
| Self::GroupNonUniformShuffleDown { result_id, .. }
| Self::GroupNonUniformIAdd { result_id, .. }
| Self::GroupNonUniformFAdd { result_id, .. }
| Self::GroupNonUniformIMul { result_id, .. }
| Self::GroupNonUniformFMul { result_id, .. }
| Self::GroupNonUniformSMin { result_id, .. }
| Self::GroupNonUniformUMin { result_id, .. }
| Self::GroupNonUniformFMin { result_id, .. }
| Self::GroupNonUniformSMax { result_id, .. }
| Self::GroupNonUniformUMax { result_id, .. }
| Self::GroupNonUniformFMax { result_id, .. }
| Self::GroupNonUniformBitwiseAnd { result_id, .. }
| Self::GroupNonUniformBitwiseOr { result_id, .. }
| Self::GroupNonUniformBitwiseXor { result_id, .. }
| Self::GroupNonUniformLogicalAnd { result_id, .. }
| Self::GroupNonUniformLogicalOr { result_id, .. }
| Self::GroupNonUniformLogicalXor { result_id, .. }
| Self::GroupNonUniformQuadBroadcast { result_id, .. }
| Self::GroupNonUniformQuadSwap { result_id, .. }
| Self::CopyLogical { result_id, .. }
| Self::PtrEqual { result_id, .. }
| Self::PtrNotEqual { result_id, .. }
| Self::PtrDiff { result_id, .. }
| Self::SubgroupBallotKHR { result_id, .. }
| Self::SubgroupFirstInvocationKHR { result_id, .. }
| Self::SubgroupAllKHR { result_id, .. }
| Self::SubgroupAnyKHR { result_id, .. }
| Self::SubgroupAllEqualKHR { result_id, .. }
| Self::SubgroupReadInvocationKHR { result_id, .. }
| Self::ConvertUToAccelerationStructureKHR { result_id, .. }
| Self::SDot { result_id, .. }
| Self::UDot { result_id, .. }
| Self::SUDot { result_id, .. }
| Self::SDotAccSat { result_id, .. }
| Self::UDotAccSat { result_id, .. }
| Self::SUDotAccSat { result_id, .. }
| Self::TypeRayQueryKHR { result_id, .. }
| Self::RayQueryProceedKHR { result_id, .. }
| Self::RayQueryGetIntersectionTypeKHR { result_id, .. }
| Self::GroupIAddNonUniformAMD { result_id, .. }
| Self::GroupFAddNonUniformAMD { result_id, .. }
| Self::GroupFMinNonUniformAMD { result_id, .. }
| Self::GroupUMinNonUniformAMD { result_id, .. }
| Self::GroupSMinNonUniformAMD { result_id, .. }
| Self::GroupFMaxNonUniformAMD { result_id, .. }
| Self::GroupUMaxNonUniformAMD { result_id, .. }
| Self::GroupSMaxNonUniformAMD { result_id, .. }
| Self::FragmentMaskFetchAMD { result_id, .. }
| Self::FragmentFetchAMD { result_id, .. }
| Self::ReadClockKHR { result_id, .. }
| Self::ImageSampleFootprintNV { result_id, .. }
| Self::GroupNonUniformPartitionNV { result_id, .. }
| Self::ReportIntersectionKHR { result_id, .. }
| Self::TypeAccelerationStructureKHR { result_id, .. }
| Self::TypeCooperativeMatrixNV { result_id, .. }
| Self::CooperativeMatrixLoadNV { result_id, .. }
| Self::CooperativeMatrixMulAddNV { result_id, .. }
| Self::CooperativeMatrixLengthNV { result_id, .. }
| Self::IsHelperInvocationEXT { result_id, .. }
| Self::ConvertUToImageNV { result_id, .. }
| Self::ConvertUToSamplerNV { result_id, .. }
| Self::ConvertImageToUNV { result_id, .. }
| Self::ConvertSamplerToUNV { result_id, .. }
| Self::ConvertUToSampledImageNV { result_id, .. }
| Self::ConvertSampledImageToUNV { result_id, .. }
| Self::SubgroupShuffleINTEL { result_id, .. }
| Self::SubgroupShuffleDownINTEL { result_id, .. }
| Self::SubgroupShuffleUpINTEL { result_id, .. }
| Self::SubgroupShuffleXorINTEL { result_id, .. }
| Self::SubgroupBlockReadINTEL { result_id, .. }
| Self::SubgroupImageBlockReadINTEL { result_id, .. }
| Self::SubgroupImageMediaBlockReadINTEL { result_id, .. }
| Self::UCountLeadingZerosINTEL { result_id, .. }
| Self::UCountTrailingZerosINTEL { result_id, .. }
| Self::AbsISubINTEL { result_id, .. }
| Self::AbsUSubINTEL { result_id, .. }
| Self::IAddSatINTEL { result_id, .. }
| Self::UAddSatINTEL { result_id, .. }
| Self::IAverageINTEL { result_id, .. }
| Self::UAverageINTEL { result_id, .. }
| Self::IAverageRoundedINTEL { result_id, .. }
| Self::UAverageRoundedINTEL { result_id, .. }
| Self::ISubSatINTEL { result_id, .. }
| Self::USubSatINTEL { result_id, .. }
| Self::IMul32x16INTEL { result_id, .. }
| Self::UMul32x16INTEL { result_id, .. }
| Self::ConstantFunctionPointerINTEL { result_id, .. }
| Self::FunctionPointerCallINTEL { result_id, .. }
| Self::AsmTargetINTEL { result_id, .. }
| Self::AsmINTEL { result_id, .. }
| Self::AsmCallINTEL { result_id, .. }
| Self::AtomicFMinEXT { result_id, .. }
| Self::AtomicFMaxEXT { result_id, .. }
| Self::ExpectKHR { result_id, .. }
| Self::VmeImageINTEL { result_id, .. }
| Self::TypeVmeImageINTEL { result_id, .. }
| Self::TypeAvcImePayloadINTEL { result_id, .. }
| Self::TypeAvcRefPayloadINTEL { result_id, .. }
| Self::TypeAvcSicPayloadINTEL { result_id, .. }
| Self::TypeAvcMcePayloadINTEL { result_id, .. }
| Self::TypeAvcMceResultINTEL { result_id, .. }
| Self::TypeAvcImeResultINTEL { result_id, .. }
| Self::TypeAvcImeResultSingleReferenceStreamoutINTEL { result_id, .. }
| Self::TypeAvcImeResultDualReferenceStreamoutINTEL { result_id, .. }
| Self::TypeAvcImeSingleReferenceStreaminINTEL { result_id, .. }
| Self::TypeAvcImeDualReferenceStreaminINTEL { result_id, .. }
| Self::TypeAvcRefResultINTEL { result_id, .. }
| Self::TypeAvcSicResultINTEL { result_id, .. }
| Self::SubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL {
result_id, ..
}
| Self::SubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL { result_id, .. }
| Self::SubgroupAvcMceGetDefaultInterShapePenaltyINTEL { result_id, .. }
| Self::SubgroupAvcMceSetInterShapePenaltyINTEL { result_id, .. }
| Self::SubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL { result_id, .. }
| Self::SubgroupAvcMceSetInterDirectionPenaltyINTEL { result_id, .. }
| Self::SubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL { result_id, .. }
| Self::SubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL { result_id, .. }
| Self::SubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL { result_id, .. }
| Self::SubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL { result_id, .. }
| Self::SubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL { result_id, .. }
| Self::SubgroupAvcMceSetMotionVectorCostFunctionINTEL { result_id, .. }
| Self::SubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL { result_id, .. }
| Self::SubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL { result_id, .. }
| Self::SubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL { result_id, .. }
| Self::SubgroupAvcMceSetAcOnlyHaarINTEL { result_id, .. }
| Self::SubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL { result_id, .. }
| Self::SubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL {
result_id,
..
}
| Self::SubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL {
result_id,
..
}
| Self::SubgroupAvcMceConvertToImePayloadINTEL { result_id, .. }
| Self::SubgroupAvcMceConvertToImeResultINTEL { result_id, .. }
| Self::SubgroupAvcMceConvertToRefPayloadINTEL { result_id, .. }
| Self::SubgroupAvcMceConvertToRefResultINTEL { result_id, .. }
| Self::SubgroupAvcMceConvertToSicPayloadINTEL { result_id, .. }
| Self::SubgroupAvcMceConvertToSicResultINTEL { result_id, .. }
| Self::SubgroupAvcMceGetMotionVectorsINTEL { result_id, .. }
| Self::SubgroupAvcMceGetInterDistortionsINTEL { result_id, .. }
| Self::SubgroupAvcMceGetBestInterDistortionsINTEL { result_id, .. }
| Self::SubgroupAvcMceGetInterMajorShapeINTEL { result_id, .. }
| Self::SubgroupAvcMceGetInterMinorShapeINTEL { result_id, .. }
| Self::SubgroupAvcMceGetInterDirectionsINTEL { result_id, .. }
| Self::SubgroupAvcMceGetInterMotionVectorCountINTEL { result_id, .. }
| Self::SubgroupAvcMceGetInterReferenceIdsINTEL { result_id, .. }
| Self::SubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL {
result_id,
..
}
| Self::SubgroupAvcImeInitializeINTEL { result_id, .. }
| Self::SubgroupAvcImeSetSingleReferenceINTEL { result_id, .. }
| Self::SubgroupAvcImeSetDualReferenceINTEL { result_id, .. }
| Self::SubgroupAvcImeRefWindowSizeINTEL { result_id, .. }
| Self::SubgroupAvcImeAdjustRefOffsetINTEL { result_id, .. }
| Self::SubgroupAvcImeConvertToMcePayloadINTEL { result_id, .. }
| Self::SubgroupAvcImeSetMaxMotionVectorCountINTEL { result_id, .. }
| Self::SubgroupAvcImeSetUnidirectionalMixDisableINTEL { result_id, .. }
| Self::SubgroupAvcImeSetEarlySearchTerminationThresholdINTEL { result_id, .. }
| Self::SubgroupAvcImeSetWeightedSadINTEL { result_id, .. }
| Self::SubgroupAvcImeEvaluateWithSingleReferenceINTEL { result_id, .. }
| Self::SubgroupAvcImeEvaluateWithDualReferenceINTEL { result_id, .. }
| Self::SubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL { result_id, .. }
| Self::SubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL { result_id, .. }
| Self::SubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL { result_id, .. }
| Self::SubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL { result_id, .. }
| Self::SubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL {
result_id, ..
}
| Self::SubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL { result_id, .. }
| Self::SubgroupAvcImeConvertToMceResultINTEL { result_id, .. }
| Self::SubgroupAvcImeGetSingleReferenceStreaminINTEL { result_id, .. }
| Self::SubgroupAvcImeGetDualReferenceStreaminINTEL { result_id, .. }
| Self::SubgroupAvcImeStripSingleReferenceStreamoutINTEL { result_id, .. }
| Self::SubgroupAvcImeStripDualReferenceStreamoutINTEL { result_id, .. }
| Self::SubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL {
result_id,
..
}
| Self::SubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL {
result_id,
..
}
| Self::SubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL {
result_id,
..
}
| Self::SubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL {
result_id,
..
}
| Self::SubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL {
result_id,
..
}
| Self::SubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL {
result_id,
..
}
| Self::SubgroupAvcImeGetBorderReachedINTEL { result_id, .. }
| Self::SubgroupAvcImeGetTruncatedSearchIndicationINTEL { result_id, .. }
| Self::SubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL {
result_id, ..
}
| Self::SubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL {
result_id, ..
}
| Self::SubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL { result_id, .. }
| Self::SubgroupAvcFmeInitializeINTEL { result_id, .. }
| Self::SubgroupAvcBmeInitializeINTEL { result_id, .. }
| Self::SubgroupAvcRefConvertToMcePayloadINTEL { result_id, .. }
| Self::SubgroupAvcRefSetBidirectionalMixDisableINTEL { result_id, .. }
| Self::SubgroupAvcRefSetBilinearFilterEnableINTEL { result_id, .. }
| Self::SubgroupAvcRefEvaluateWithSingleReferenceINTEL { result_id, .. }
| Self::SubgroupAvcRefEvaluateWithDualReferenceINTEL { result_id, .. }
| Self::SubgroupAvcRefEvaluateWithMultiReferenceINTEL { result_id, .. }
| Self::SubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL { result_id, .. }
| Self::SubgroupAvcRefConvertToMceResultINTEL { result_id, .. }
| Self::SubgroupAvcSicInitializeINTEL { result_id, .. }
| Self::SubgroupAvcSicConfigureSkcINTEL { result_id, .. }
| Self::SubgroupAvcSicConfigureIpeLumaINTEL { result_id, .. }
| Self::SubgroupAvcSicConfigureIpeLumaChromaINTEL { result_id, .. }
| Self::SubgroupAvcSicGetMotionVectorMaskINTEL { result_id, .. }
| Self::SubgroupAvcSicConvertToMcePayloadINTEL { result_id, .. }
| Self::SubgroupAvcSicSetIntraLumaShapePenaltyINTEL { result_id, .. }
| Self::SubgroupAvcSicSetIntraLumaModeCostFunctionINTEL { result_id, .. }
| Self::SubgroupAvcSicSetIntraChromaModeCostFunctionINTEL { result_id, .. }
| Self::SubgroupAvcSicSetBilinearFilterEnableINTEL { result_id, .. }
| Self::SubgroupAvcSicSetSkcForwardTransformEnableINTEL { result_id, .. }
| Self::SubgroupAvcSicSetBlockBasedRawSkipSadINTEL { result_id, .. }
| Self::SubgroupAvcSicEvaluateIpeINTEL { result_id, .. }
| Self::SubgroupAvcSicEvaluateWithSingleReferenceINTEL { result_id, .. }
| Self::SubgroupAvcSicEvaluateWithDualReferenceINTEL { result_id, .. }
| Self::SubgroupAvcSicEvaluateWithMultiReferenceINTEL { result_id, .. }
| Self::SubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL { result_id, .. }
| Self::SubgroupAvcSicConvertToMceResultINTEL { result_id, .. }
| Self::SubgroupAvcSicGetIpeLumaShapeINTEL { result_id, .. }
| Self::SubgroupAvcSicGetBestIpeLumaDistortionINTEL { result_id, .. }
| Self::SubgroupAvcSicGetBestIpeChromaDistortionINTEL { result_id, .. }
| Self::SubgroupAvcSicGetPackedIpeLumaModesINTEL { result_id, .. }
| Self::SubgroupAvcSicGetIpeChromaModeINTEL { result_id, .. }
| Self::SubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL { result_id, .. }
| Self::SubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL { result_id, .. }
| Self::SubgroupAvcSicGetInterRawSadsINTEL { result_id, .. }
| Self::VariableLengthArrayINTEL { result_id, .. }
| Self::SaveMemoryINTEL { result_id, .. }
| Self::ArbitraryFloatSinCosPiINTEL { result_id, .. }
| Self::ArbitraryFloatCastINTEL { result_id, .. }
| Self::ArbitraryFloatCastFromIntINTEL { result_id, .. }
| Self::ArbitraryFloatCastToIntINTEL { result_id, .. }
| Self::ArbitraryFloatAddINTEL { result_id, .. }
| Self::ArbitraryFloatSubINTEL { result_id, .. }
| Self::ArbitraryFloatMulINTEL { result_id, .. }
| Self::ArbitraryFloatDivINTEL { result_id, .. }
| Self::ArbitraryFloatGTINTEL { result_id, .. }
| Self::ArbitraryFloatGEINTEL { result_id, .. }
| Self::ArbitraryFloatLTINTEL { result_id, .. }
| Self::ArbitraryFloatLEINTEL { result_id, .. }
| Self::ArbitraryFloatEQINTEL { result_id, .. }
| Self::ArbitraryFloatRecipINTEL { result_id, .. }
| Self::ArbitraryFloatRSqrtINTEL { result_id, .. }
| Self::ArbitraryFloatCbrtINTEL { result_id, .. }
| Self::ArbitraryFloatHypotINTEL { result_id, .. }
| Self::ArbitraryFloatSqrtINTEL { result_id, .. }
| Self::ArbitraryFloatLogINTEL { result_id, .. }
| Self::ArbitraryFloatLog2INTEL { result_id, .. }
| Self::ArbitraryFloatLog10INTEL { result_id, .. }
| Self::ArbitraryFloatLog1pINTEL { result_id, .. }
| Self::ArbitraryFloatExpINTEL { result_id, .. }
| Self::ArbitraryFloatExp2INTEL { result_id, .. }
| Self::ArbitraryFloatExp10INTEL { result_id, .. }
| Self::ArbitraryFloatExpm1INTEL { result_id, .. }
| Self::ArbitraryFloatSinINTEL { result_id, .. }
| Self::ArbitraryFloatCosINTEL { result_id, .. }
| Self::ArbitraryFloatSinCosINTEL { result_id, .. }
| Self::ArbitraryFloatSinPiINTEL { result_id, .. }
| Self::ArbitraryFloatCosPiINTEL { result_id, .. }
| Self::ArbitraryFloatASinINTEL { result_id, .. }
| Self::ArbitraryFloatASinPiINTEL { result_id, .. }
| Self::ArbitraryFloatACosINTEL { result_id, .. }
| Self::ArbitraryFloatACosPiINTEL { result_id, .. }
| Self::ArbitraryFloatATanINTEL { result_id, .. }
| Self::ArbitraryFloatATanPiINTEL { result_id, .. }
| Self::ArbitraryFloatATan2INTEL { result_id, .. }
| Self::ArbitraryFloatPowINTEL { result_id, .. }
| Self::ArbitraryFloatPowRINTEL { result_id, .. }
| Self::ArbitraryFloatPowNINTEL { result_id, .. }
| Self::FixedSqrtINTEL { result_id, .. }
| Self::FixedRecipINTEL { result_id, .. }
| Self::FixedRsqrtINTEL { result_id, .. }
| Self::FixedSinINTEL { result_id, .. }
| Self::FixedCosINTEL { result_id, .. }
| Self::FixedSinCosINTEL { result_id, .. }
| Self::FixedSinPiINTEL { result_id, .. }
| Self::FixedCosPiINTEL { result_id, .. }
| Self::FixedSinCosPiINTEL { result_id, .. }
| Self::FixedLogINTEL { result_id, .. }
| Self::FixedExpINTEL { result_id, .. }
| Self::PtrCastToCrossWorkgroupINTEL { result_id, .. }
| Self::CrossWorkgroupCastToPtrINTEL { result_id, .. }
| Self::ReadPipeBlockingINTEL { result_id, .. }
| Self::WritePipeBlockingINTEL { result_id, .. }
| Self::FPGARegINTEL { result_id, .. }
| Self::RayQueryGetRayTMinKHR { result_id, .. }
| Self::RayQueryGetRayFlagsKHR { result_id, .. }
| Self::RayQueryGetIntersectionTKHR { result_id, .. }
| Self::RayQueryGetIntersectionInstanceCustomIndexKHR { result_id, .. }
| Self::RayQueryGetIntersectionInstanceIdKHR { result_id, .. }
| Self::RayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR {
result_id,
..
}
| Self::RayQueryGetIntersectionGeometryIndexKHR { result_id, .. }
| Self::RayQueryGetIntersectionPrimitiveIndexKHR { result_id, .. }
| Self::RayQueryGetIntersectionBarycentricsKHR { result_id, .. }
| Self::RayQueryGetIntersectionFrontFaceKHR { result_id, .. }
| Self::RayQueryGetIntersectionCandidateAABBOpaqueKHR { result_id, .. }
| Self::RayQueryGetIntersectionObjectRayDirectionKHR { result_id, .. }
| Self::RayQueryGetIntersectionObjectRayOriginKHR { result_id, .. }
| Self::RayQueryGetWorldRayDirectionKHR { result_id, .. }
| Self::RayQueryGetWorldRayOriginKHR { result_id, .. }
| Self::RayQueryGetIntersectionObjectToWorldKHR { result_id, .. }
| Self::RayQueryGetIntersectionWorldToObjectKHR { result_id, .. }
| Self::AtomicFAddEXT { result_id, .. }
| Self::TypeBufferSurfaceINTEL { result_id, .. } => Some(*result_id),
_ => None,
}
}
}
#[derive(Clone, Debug, PartialEq, Eq)]
#[doc = "An instruction that is used as the operand of the `SpecConstantOp` instruction."]
pub enum SpecConstantInstruction {
AccessChain { base: Id, indexes: Vec<Id> },
InBoundsAccessChain { base: Id, indexes: Vec<Id> },
PtrAccessChain { base: Id, element: Id, indexes: Vec<Id> },
InBoundsPtrAccessChain { base: Id, element: Id, indexes: Vec<Id> },
VectorShuffle { vector_1: Id, vector_2: Id, components: Vec<u32> },
CompositeExtract { composite: Id, indexes: Vec<u32> },
CompositeInsert { object: Id, composite: Id, indexes: Vec<u32> },
ConvertFToU { float_value: Id },
ConvertFToS { float_value: Id },
ConvertSToF { signed_value: Id },
ConvertUToF { unsigned_value: Id },
UConvert { unsigned_value: Id },
SConvert { signed_value: Id },
FConvert { float_value: Id },
QuantizeToF16 { value: Id },
ConvertPtrToU { pointer: Id },
ConvertUToPtr { integer_value: Id },
PtrCastToGeneric { pointer: Id },
GenericCastToPtr { pointer: Id },
Bitcast { operand: Id },
SNegate { operand: Id },
FNegate { operand: Id },
IAdd { operand1: Id, operand2: Id },
FAdd { operand1: Id, operand2: Id },
ISub { operand1: Id, operand2: Id },
FSub { operand1: Id, operand2: Id },
IMul { operand1: Id, operand2: Id },
FMul { operand1: Id, operand2: Id },
UDiv { operand1: Id, operand2: Id },
SDiv { operand1: Id, operand2: Id },
FDiv { operand1: Id, operand2: Id },
UMod { operand1: Id, operand2: Id },
SRem { operand1: Id, operand2: Id },
SMod { operand1: Id, operand2: Id },
FRem { operand1: Id, operand2: Id },
FMod { operand1: Id, operand2: Id },
LogicalEqual { operand1: Id, operand2: Id },
LogicalNotEqual { operand1: Id, operand2: Id },
LogicalOr { operand1: Id, operand2: Id },
LogicalAnd { operand1: Id, operand2: Id },
LogicalNot { operand: Id },
Select { condition: Id, object_1: Id, object_2: Id },
IEqual { operand1: Id, operand2: Id },
INotEqual { operand1: Id, operand2: Id },
UGreaterThan { operand1: Id, operand2: Id },
SGreaterThan { operand1: Id, operand2: Id },
UGreaterThanEqual { operand1: Id, operand2: Id },
SGreaterThanEqual { operand1: Id, operand2: Id },
ULessThan { operand1: Id, operand2: Id },
SLessThan { operand1: Id, operand2: Id },
ULessThanEqual { operand1: Id, operand2: Id },
SLessThanEqual { operand1: Id, operand2: Id },
ShiftRightLogical { base: Id, shift: Id },
ShiftRightArithmetic { base: Id, shift: Id },
ShiftLeftLogical { base: Id, shift: Id },
BitwiseOr { operand1: Id, operand2: Id },
BitwiseXor { operand1: Id, operand2: Id },
BitwiseAnd { operand1: Id, operand2: Id },
Not { operand: Id },
}
impl SpecConstantInstruction {
#[allow(dead_code)]
fn parse(reader: &mut InstructionReader<'_>) -> Result<Self, ParseError> {
let opcode = (reader.next_u32()? & 0xffff) as u16;
Ok(match opcode {
65u16 => Self::AccessChain {
base: Id(reader.next_u32()?),
indexes: {
let mut vec = Vec::new();
while !reader.is_empty() {
vec.push(Id(reader.next_u32()?));
}
vec
},
},
66u16 => Self::InBoundsAccessChain {
base: Id(reader.next_u32()?),
indexes: {
let mut vec = Vec::new();
while !reader.is_empty() {
vec.push(Id(reader.next_u32()?));
}
vec
},
},
67u16 => Self::PtrAccessChain {
base: Id(reader.next_u32()?),
element: Id(reader.next_u32()?),
indexes: {
let mut vec = Vec::new();
while !reader.is_empty() {
vec.push(Id(reader.next_u32()?));
}
vec
},
},
70u16 => Self::InBoundsPtrAccessChain {
base: Id(reader.next_u32()?),
element: Id(reader.next_u32()?),
indexes: {
let mut vec = Vec::new();
while !reader.is_empty() {
vec.push(Id(reader.next_u32()?));
}
vec
},
},
79u16 => Self::VectorShuffle {
vector_1: Id(reader.next_u32()?),
vector_2: Id(reader.next_u32()?),
components: {
let mut vec = Vec::new();
while !reader.is_empty() {
vec.push(reader.next_u32()?);
}
vec
},
},
81u16 => Self::CompositeExtract {
composite: Id(reader.next_u32()?),
indexes: {
let mut vec = Vec::new();
while !reader.is_empty() {
vec.push(reader.next_u32()?);
}
vec
},
},
82u16 => Self::CompositeInsert {
object: Id(reader.next_u32()?),
composite: Id(reader.next_u32()?),
indexes: {
let mut vec = Vec::new();
while !reader.is_empty() {
vec.push(reader.next_u32()?);
}
vec
},
},
109u16 => Self::ConvertFToU { float_value: Id(reader.next_u32()?) },
110u16 => Self::ConvertFToS { float_value: Id(reader.next_u32()?) },
111u16 => Self::ConvertSToF { signed_value: Id(reader.next_u32()?) },
112u16 => Self::ConvertUToF { unsigned_value: Id(reader.next_u32()?) },
113u16 => Self::UConvert { unsigned_value: Id(reader.next_u32()?) },
114u16 => Self::SConvert { signed_value: Id(reader.next_u32()?) },
115u16 => Self::FConvert { float_value: Id(reader.next_u32()?) },
116u16 => Self::QuantizeToF16 { value: Id(reader.next_u32()?) },
117u16 => Self::ConvertPtrToU { pointer: Id(reader.next_u32()?) },
120u16 => Self::ConvertUToPtr { integer_value: Id(reader.next_u32()?) },
121u16 => Self::PtrCastToGeneric { pointer: Id(reader.next_u32()?) },
122u16 => Self::GenericCastToPtr { pointer: Id(reader.next_u32()?) },
124u16 => Self::Bitcast { operand: Id(reader.next_u32()?) },
126u16 => Self::SNegate { operand: Id(reader.next_u32()?) },
127u16 => Self::FNegate { operand: Id(reader.next_u32()?) },
128u16 => {
Self::IAdd { operand1: Id(reader.next_u32()?), operand2: Id(reader.next_u32()?) }
}
129u16 => {
Self::FAdd { operand1: Id(reader.next_u32()?), operand2: Id(reader.next_u32()?) }
}
130u16 => {
Self::ISub { operand1: Id(reader.next_u32()?), operand2: Id(reader.next_u32()?) }
}
131u16 => {
Self::FSub { operand1: Id(reader.next_u32()?), operand2: Id(reader.next_u32()?) }
}
132u16 => {
Self::IMul { operand1: Id(reader.next_u32()?), operand2: Id(reader.next_u32()?) }
}
133u16 => {
Self::FMul { operand1: Id(reader.next_u32()?), operand2: Id(reader.next_u32()?) }
}
134u16 => {
Self::UDiv { operand1: Id(reader.next_u32()?), operand2: Id(reader.next_u32()?) }
}
135u16 => {
Self::SDiv { operand1: Id(reader.next_u32()?), operand2: Id(reader.next_u32()?) }
}
136u16 => {
Self::FDiv { operand1: Id(reader.next_u32()?), operand2: Id(reader.next_u32()?) }
}
137u16 => {
Self::UMod { operand1: Id(reader.next_u32()?), operand2: Id(reader.next_u32()?) }
}
138u16 => {
Self::SRem { operand1: Id(reader.next_u32()?), operand2: Id(reader.next_u32()?) }
}
139u16 => {
Self::SMod { operand1: Id(reader.next_u32()?), operand2: Id(reader.next_u32()?) }
}
140u16 => {
Self::FRem { operand1: Id(reader.next_u32()?), operand2: Id(reader.next_u32()?) }
}
141u16 => {
Self::FMod { operand1: Id(reader.next_u32()?), operand2: Id(reader.next_u32()?) }
}
164u16 => Self::LogicalEqual {
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
165u16 => Self::LogicalNotEqual {
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
166u16 => Self::LogicalOr {
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
167u16 => Self::LogicalAnd {
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
168u16 => Self::LogicalNot { operand: Id(reader.next_u32()?) },
169u16 => Self::Select {
condition: Id(reader.next_u32()?),
object_1: Id(reader.next_u32()?),
object_2: Id(reader.next_u32()?),
},
170u16 => {
Self::IEqual { operand1: Id(reader.next_u32()?), operand2: Id(reader.next_u32()?) }
}
171u16 => Self::INotEqual {
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
172u16 => Self::UGreaterThan {
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
173u16 => Self::SGreaterThan {
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
174u16 => Self::UGreaterThanEqual {
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
175u16 => Self::SGreaterThanEqual {
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
176u16 => Self::ULessThan {
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
177u16 => Self::SLessThan {
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
178u16 => Self::ULessThanEqual {
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
179u16 => Self::SLessThanEqual {
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
194u16 => Self::ShiftRightLogical {
base: Id(reader.next_u32()?),
shift: Id(reader.next_u32()?),
},
195u16 => Self::ShiftRightArithmetic {
base: Id(reader.next_u32()?),
shift: Id(reader.next_u32()?),
},
196u16 => Self::ShiftLeftLogical {
base: Id(reader.next_u32()?),
shift: Id(reader.next_u32()?),
},
197u16 => Self::BitwiseOr {
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
198u16 => Self::BitwiseXor {
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
199u16 => Self::BitwiseAnd {
operand1: Id(reader.next_u32()?),
operand2: Id(reader.next_u32()?),
},
200u16 => Self::Not { operand: Id(reader.next_u32()?) },
opcode => return Err(reader.map_err(ParseErrors::UnknownSpecConstantOpcode(opcode))),
})
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[allow(non_camel_case_types)]
pub struct ImageOperands {
pub bias: Option<Id>,
pub lod: Option<Id>,
pub grad: Option<(Id, Id)>,
pub const_offset: Option<Id>,
pub offset: Option<Id>,
pub const_offsets: Option<Id>,
pub sample: Option<Id>,
pub min_lod: Option<Id>,
pub make_texel_available: Option<Id>,
pub make_texel_visible: Option<Id>,
pub non_private_texel: bool,
pub volatile_texel: bool,
pub sign_extend: bool,
pub zero_extend: bool,
pub nontemporal: bool,
pub offsets: Option<Id>,
}
impl ImageOperands {
#[allow(dead_code)]
fn parse(reader: &mut InstructionReader<'_>) -> Result<ImageOperands, ParseError> {
let value = reader.next_u32()?;
Ok(Self {
bias: if value & 1u32 != 0 { Some(Id(reader.next_u32()?)) } else { None },
lod: if value & 2u32 != 0 { Some(Id(reader.next_u32()?)) } else { None },
grad: if value & 4u32 != 0 {
Some((Id(reader.next_u32()?), Id(reader.next_u32()?)))
} else {
None
},
const_offset: if value & 8u32 != 0 { Some(Id(reader.next_u32()?)) } else { None },
offset: if value & 16u32 != 0 { Some(Id(reader.next_u32()?)) } else { None },
const_offsets: if value & 32u32 != 0 { Some(Id(reader.next_u32()?)) } else { None },
sample: if value & 64u32 != 0 { Some(Id(reader.next_u32()?)) } else { None },
min_lod: if value & 128u32 != 0 { Some(Id(reader.next_u32()?)) } else { None },
make_texel_available: if value & 256u32 != 0 {
Some(Id(reader.next_u32()?))
} else {
None
},
make_texel_visible: if value & 512u32 != 0 {
Some(Id(reader.next_u32()?))
} else {
None
},
non_private_texel: value & 1024u32 != 0,
volatile_texel: value & 2048u32 != 0,
sign_extend: value & 4096u32 != 0,
zero_extend: value & 8192u32 != 0,
nontemporal: value & 16384u32 != 0,
offsets: if value & 65536u32 != 0 { Some(Id(reader.next_u32()?)) } else { None },
})
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[allow(non_camel_case_types)]
pub struct FPFastMathMode {
pub not_nan: bool,
pub not_inf: bool,
pub nsz: bool,
pub allow_recip: bool,
pub fast: bool,
pub allow_contract_fast_intel: bool,
pub allow_reassoc_intel: bool,
}
impl FPFastMathMode {
#[allow(dead_code)]
fn parse(reader: &mut InstructionReader<'_>) -> Result<FPFastMathMode, ParseError> {
let value = reader.next_u32()?;
Ok(Self {
not_nan: value & 1u32 != 0,
not_inf: value & 2u32 != 0,
nsz: value & 4u32 != 0,
allow_recip: value & 8u32 != 0,
fast: value & 16u32 != 0,
allow_contract_fast_intel: value & 65536u32 != 0,
allow_reassoc_intel: value & 131072u32 != 0,
})
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[allow(non_camel_case_types)]
pub struct SelectionControl {
pub flatten: bool,
pub dont_flatten: bool,
}
impl SelectionControl {
#[allow(dead_code)]
fn parse(reader: &mut InstructionReader<'_>) -> Result<SelectionControl, ParseError> {
let value = reader.next_u32()?;
Ok(Self { flatten: value & 1u32 != 0, dont_flatten: value & 2u32 != 0 })
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[allow(non_camel_case_types)]
pub struct LoopControl {
pub unroll: bool,
pub dont_unroll: bool,
pub dependency_infinite: bool,
pub dependency_length: Option<u32>,
pub min_iterations: Option<u32>,
pub max_iterations: Option<u32>,
pub iteration_multiple: Option<u32>,
pub peel_count: Option<u32>,
pub partial_count: Option<u32>,
pub initiation_interval_intel: Option<u32>,
pub max_concurrency_intel: Option<u32>,
pub dependency_array_intel: Option<u32>,
pub pipeline_enable_intel: Option<u32>,
pub loop_coalesce_intel: Option<u32>,
pub max_interleaving_intel: Option<u32>,
pub speculated_iterations_intel: Option<u32>,
pub no_fusion_intel: Option<u32>,
}
impl LoopControl {
#[allow(dead_code)]
fn parse(reader: &mut InstructionReader<'_>) -> Result<LoopControl, ParseError> {
let value = reader.next_u32()?;
Ok(Self {
unroll: value & 1u32 != 0,
dont_unroll: value & 2u32 != 0,
dependency_infinite: value & 4u32 != 0,
dependency_length: if value & 8u32 != 0 { Some(reader.next_u32()?) } else { None },
min_iterations: if value & 16u32 != 0 { Some(reader.next_u32()?) } else { None },
max_iterations: if value & 32u32 != 0 { Some(reader.next_u32()?) } else { None },
iteration_multiple: if value & 64u32 != 0 { Some(reader.next_u32()?) } else { None },
peel_count: if value & 128u32 != 0 { Some(reader.next_u32()?) } else { None },
partial_count: if value & 256u32 != 0 { Some(reader.next_u32()?) } else { None },
initiation_interval_intel: if value & 65536u32 != 0 {
Some(reader.next_u32()?)
} else {
None
},
max_concurrency_intel: if value & 131072u32 != 0 {
Some(reader.next_u32()?)
} else {
None
},
dependency_array_intel: if value & 262144u32 != 0 {
Some(reader.next_u32()?)
} else {
None
},
pipeline_enable_intel: if value & 524288u32 != 0 {
Some(reader.next_u32()?)
} else {
None
},
loop_coalesce_intel: if value & 1048576u32 != 0 {
Some(reader.next_u32()?)
} else {
None
},
max_interleaving_intel: if value & 2097152u32 != 0 {
Some(reader.next_u32()?)
} else {
None
},
speculated_iterations_intel: if value & 4194304u32 != 0 {
Some(reader.next_u32()?)
} else {
None
},
no_fusion_intel: if value & 8388608u32 != 0 { Some(reader.next_u32()?) } else { None },
})
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[allow(non_camel_case_types)]
pub struct FunctionControl {
pub inline: bool,
pub dont_inline: bool,
pub pure: bool,
pub constant: bool,
pub opt_none_intel: bool,
}
impl FunctionControl {
#[allow(dead_code)]
fn parse(reader: &mut InstructionReader<'_>) -> Result<FunctionControl, ParseError> {
let value = reader.next_u32()?;
Ok(Self {
inline: value & 1u32 != 0,
dont_inline: value & 2u32 != 0,
pure: value & 4u32 != 0,
constant: value & 8u32 != 0,
opt_none_intel: value & 65536u32 != 0,
})
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[allow(non_camel_case_types)]
pub struct MemorySemantics {
pub acquire: bool,
pub release: bool,
pub acquire_release: bool,
pub sequentially_consistent: bool,
pub uniform_memory: bool,
pub subgroup_memory: bool,
pub workgroup_memory: bool,
pub cross_workgroup_memory: bool,
pub atomic_counter_memory: bool,
pub image_memory: bool,
pub output_memory: bool,
pub make_available: bool,
pub make_visible: bool,
pub volatile: bool,
}
impl MemorySemantics {
#[allow(dead_code)]
fn parse(reader: &mut InstructionReader<'_>) -> Result<MemorySemantics, ParseError> {
let value = reader.next_u32()?;
Ok(Self {
acquire: value & 2u32 != 0,
release: value & 4u32 != 0,
acquire_release: value & 8u32 != 0,
sequentially_consistent: value & 16u32 != 0,
uniform_memory: value & 64u32 != 0,
subgroup_memory: value & 128u32 != 0,
workgroup_memory: value & 256u32 != 0,
cross_workgroup_memory: value & 512u32 != 0,
atomic_counter_memory: value & 1024u32 != 0,
image_memory: value & 2048u32 != 0,
output_memory: value & 4096u32 != 0,
make_available: value & 8192u32 != 0,
make_visible: value & 16384u32 != 0,
volatile: value & 32768u32 != 0,
})
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[allow(non_camel_case_types)]
pub struct MemoryAccess {
pub volatile: bool,
pub aligned: Option<u32>,
pub nontemporal: bool,
pub make_pointer_available: Option<Id>,
pub make_pointer_visible: Option<Id>,
pub non_private_pointer: bool,
}
impl MemoryAccess {
#[allow(dead_code)]
fn parse(reader: &mut InstructionReader<'_>) -> Result<MemoryAccess, ParseError> {
let value = reader.next_u32()?;
Ok(Self {
volatile: value & 1u32 != 0,
aligned: if value & 2u32 != 0 { Some(reader.next_u32()?) } else { None },
nontemporal: value & 4u32 != 0,
make_pointer_available: if value & 8u32 != 0 {
Some(Id(reader.next_u32()?))
} else {
None
},
make_pointer_visible: if value & 16u32 != 0 {
Some(Id(reader.next_u32()?))
} else {
None
},
non_private_pointer: value & 32u32 != 0,
})
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[allow(non_camel_case_types)]
pub struct KernelProfilingInfo {
pub cmd_exec_time: bool,
}
impl KernelProfilingInfo {
#[allow(dead_code)]
fn parse(reader: &mut InstructionReader<'_>) -> Result<KernelProfilingInfo, ParseError> {
let value = reader.next_u32()?;
Ok(Self { cmd_exec_time: value & 1u32 != 0 })
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[allow(non_camel_case_types)]
pub struct RayFlags {
pub opaque_khr: bool,
pub no_opaque_khr: bool,
pub terminate_on_first_hit_khr: bool,
pub skip_closest_hit_shader_khr: bool,
pub cull_back_facing_triangles_khr: bool,
pub cull_front_facing_triangles_khr: bool,
pub cull_opaque_khr: bool,
pub cull_no_opaque_khr: bool,
pub skip_triangles_khr: bool,
pub skip_aab_bs_khr: bool,
}
impl RayFlags {
#[allow(dead_code)]
fn parse(reader: &mut InstructionReader<'_>) -> Result<RayFlags, ParseError> {
let value = reader.next_u32()?;
Ok(Self {
opaque_khr: value & 1u32 != 0,
no_opaque_khr: value & 2u32 != 0,
terminate_on_first_hit_khr: value & 4u32 != 0,
skip_closest_hit_shader_khr: value & 8u32 != 0,
cull_back_facing_triangles_khr: value & 16u32 != 0,
cull_front_facing_triangles_khr: value & 32u32 != 0,
cull_opaque_khr: value & 64u32 != 0,
cull_no_opaque_khr: value & 128u32 != 0,
skip_triangles_khr: value & 256u32 != 0,
skip_aab_bs_khr: value & 512u32 != 0,
})
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[allow(non_camel_case_types)]
pub struct FragmentShadingRate {
pub vertical2_pixels: bool,
pub vertical4_pixels: bool,
pub horizontal2_pixels: bool,
pub horizontal4_pixels: bool,
}
impl FragmentShadingRate {
#[allow(dead_code)]
fn parse(reader: &mut InstructionReader<'_>) -> Result<FragmentShadingRate, ParseError> {
let value = reader.next_u32()?;
Ok(Self {
vertical2_pixels: value & 1u32 != 0,
vertical4_pixels: value & 2u32 != 0,
horizontal2_pixels: value & 4u32 != 0,
horizontal4_pixels: value & 8u32 != 0,
})
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[allow(non_camel_case_types)]
pub enum SourceLanguage {
Unknown,
ESSL,
GLSL,
OpenCL_C,
OpenCL_CPP,
HLSL,
CPP_for_OpenCL,
}
impl SourceLanguage {
#[allow(dead_code)]
fn parse(reader: &mut InstructionReader<'_>) -> Result<SourceLanguage, ParseError> {
Ok(match reader.next_u32()? {
0u32 => Self::Unknown,
1u32 => Self::ESSL,
2u32 => Self::GLSL,
3u32 => Self::OpenCL_C,
4u32 => Self::OpenCL_CPP,
5u32 => Self::HLSL,
6u32 => Self::CPP_for_OpenCL,
value => {
return Err(reader.map_err(ParseErrors::UnknownEnumerant("SourceLanguage", value)))
}
})
}
}
#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq)]
#[allow(non_camel_case_types)]
pub enum ExecutionModel {
Vertex,
TessellationControl,
TessellationEvaluation,
Geometry,
Fragment,
GLCompute,
Kernel,
TaskNV,
MeshNV,
RayGenerationKHR,
IntersectionKHR,
AnyHitKHR,
ClosestHitKHR,
MissKHR,
CallableKHR,
}
impl ExecutionModel {
#[allow(dead_code)]
fn parse(reader: &mut InstructionReader<'_>) -> Result<ExecutionModel, ParseError> {
Ok(match reader.next_u32()? {
0u32 => Self::Vertex,
1u32 => Self::TessellationControl,
2u32 => Self::TessellationEvaluation,
3u32 => Self::Geometry,
4u32 => Self::Fragment,
5u32 => Self::GLCompute,
6u32 => Self::Kernel,
5267u32 => Self::TaskNV,
5268u32 => Self::MeshNV,
5313u32 => Self::RayGenerationKHR,
5314u32 => Self::IntersectionKHR,
5315u32 => Self::AnyHitKHR,
5316u32 => Self::ClosestHitKHR,
5317u32 => Self::MissKHR,
5318u32 => Self::CallableKHR,
value => {
return Err(reader.map_err(ParseErrors::UnknownEnumerant("ExecutionModel", value)))
}
})
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[allow(non_camel_case_types)]
pub enum AddressingModel {
Logical,
Physical32,
Physical64,
PhysicalStorageBuffer64,
}
impl AddressingModel {
#[allow(dead_code)]
fn parse(reader: &mut InstructionReader<'_>) -> Result<AddressingModel, ParseError> {
Ok(match reader.next_u32()? {
0u32 => Self::Logical,
1u32 => Self::Physical32,
2u32 => Self::Physical64,
5348u32 => Self::PhysicalStorageBuffer64,
value => {
return Err(reader.map_err(ParseErrors::UnknownEnumerant("AddressingModel", value)))
}
})
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[allow(non_camel_case_types)]
pub enum MemoryModel {
Simple,
GLSL450,
OpenCL,
Vulkan,
}
impl MemoryModel {
#[allow(dead_code)]
fn parse(reader: &mut InstructionReader<'_>) -> Result<MemoryModel, ParseError> {
Ok(match reader.next_u32()? {
0u32 => Self::Simple,
1u32 => Self::GLSL450,
2u32 => Self::OpenCL,
3u32 => Self::Vulkan,
value => {
return Err(reader.map_err(ParseErrors::UnknownEnumerant("MemoryModel", value)))
}
})
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[allow(non_camel_case_types)]
pub enum ExecutionMode {
Invocations { number_of_invocation_invocations: u32 },
SpacingEqual,
SpacingFractionalEven,
SpacingFractionalOdd,
VertexOrderCw,
VertexOrderCcw,
PixelCenterInteger,
OriginUpperLeft,
OriginLowerLeft,
EarlyFragmentTests,
PointMode,
Xfb,
DepthReplacing,
DepthGreater,
DepthLess,
DepthUnchanged,
LocalSize { x_size: u32, y_size: u32, z_size: u32 },
LocalSizeHint { x_size: u32, y_size: u32, z_size: u32 },
InputPoints,
InputLines,
InputLinesAdjacency,
Triangles,
InputTrianglesAdjacency,
Quads,
Isolines,
OutputVertices { vertex_count: u32 },
OutputPoints,
OutputLineStrip,
OutputTriangleStrip,
VecTypeHint { vector_type: u32 },
ContractionOff,
Initializer,
Finalizer,
SubgroupSize { subgroup_size: u32 },
SubgroupsPerWorkgroup { subgroups_per_workgroup: u32 },
SubgroupsPerWorkgroupId { subgroups_per_workgroup: Id },
LocalSizeId { x_size: Id, y_size: Id, z_size: Id },
LocalSizeHintId { x_size_hint: Id, y_size_hint: Id, z_size_hint: Id },
SubgroupUniformControlFlowKHR,
PostDepthCoverage,
DenormPreserve { target_width: u32 },
DenormFlushToZero { target_width: u32 },
SignedZeroInfNanPreserve { target_width: u32 },
RoundingModeRTE { target_width: u32 },
RoundingModeRTZ { target_width: u32 },
StencilRefReplacingEXT,
OutputLinesNV,
OutputPrimitivesNV { primitive_count: u32 },
DerivativeGroupQuadsNV,
DerivativeGroupLinearNV,
OutputTrianglesNV,
PixelInterlockOrderedEXT,
PixelInterlockUnorderedEXT,
SampleInterlockOrderedEXT,
SampleInterlockUnorderedEXT,
ShadingRateInterlockOrderedEXT,
ShadingRateInterlockUnorderedEXT,
SharedLocalMemorySizeINTEL { size: u32 },
RoundingModeRTPINTEL { target_width: u32 },
RoundingModeRTNINTEL { target_width: u32 },
FloatingPointModeALTINTEL { target_width: u32 },
FloatingPointModeIEEEINTEL { target_width: u32 },
MaxWorkgroupSizeINTEL { max_x_size: u32, max_y_size: u32, max_z_size: u32 },
MaxWorkDimINTEL { max_dimensions: u32 },
NoGlobalOffsetINTEL,
NumSIMDWorkitemsINTEL { vector_width: u32 },
SchedulerTargetFmaxMhzINTEL { target_fmax: u32 },
}
impl ExecutionMode {
#[allow(dead_code)]
fn parse(reader: &mut InstructionReader<'_>) -> Result<ExecutionMode, ParseError> {
Ok(match reader.next_u32()? {
0u32 => Self::Invocations { number_of_invocation_invocations: reader.next_u32()? },
1u32 => Self::SpacingEqual,
2u32 => Self::SpacingFractionalEven,
3u32 => Self::SpacingFractionalOdd,
4u32 => Self::VertexOrderCw,
5u32 => Self::VertexOrderCcw,
6u32 => Self::PixelCenterInteger,
7u32 => Self::OriginUpperLeft,
8u32 => Self::OriginLowerLeft,
9u32 => Self::EarlyFragmentTests,
10u32 => Self::PointMode,
11u32 => Self::Xfb,
12u32 => Self::DepthReplacing,
14u32 => Self::DepthGreater,
15u32 => Self::DepthLess,
16u32 => Self::DepthUnchanged,
17u32 => Self::LocalSize {
x_size: reader.next_u32()?,
y_size: reader.next_u32()?,
z_size: reader.next_u32()?,
},
18u32 => Self::LocalSizeHint {
x_size: reader.next_u32()?,
y_size: reader.next_u32()?,
z_size: reader.next_u32()?,
},
19u32 => Self::InputPoints,
20u32 => Self::InputLines,
21u32 => Self::InputLinesAdjacency,
22u32 => Self::Triangles,
23u32 => Self::InputTrianglesAdjacency,
24u32 => Self::Quads,
25u32 => Self::Isolines,
26u32 => Self::OutputVertices { vertex_count: reader.next_u32()? },
27u32 => Self::OutputPoints,
28u32 => Self::OutputLineStrip,
29u32 => Self::OutputTriangleStrip,
30u32 => Self::VecTypeHint { vector_type: reader.next_u32()? },
31u32 => Self::ContractionOff,
33u32 => Self::Initializer,
34u32 => Self::Finalizer,
35u32 => Self::SubgroupSize { subgroup_size: reader.next_u32()? },
36u32 => Self::SubgroupsPerWorkgroup { subgroups_per_workgroup: reader.next_u32()? },
37u32 => {
Self::SubgroupsPerWorkgroupId { subgroups_per_workgroup: Id(reader.next_u32()?) }
}
38u32 => Self::LocalSizeId {
x_size: Id(reader.next_u32()?),
y_size: Id(reader.next_u32()?),
z_size: Id(reader.next_u32()?),
},
39u32 => Self::LocalSizeHintId {
x_size_hint: Id(reader.next_u32()?),
y_size_hint: Id(reader.next_u32()?),
z_size_hint: Id(reader.next_u32()?),
},
4421u32 => Self::SubgroupUniformControlFlowKHR,
4446u32 => Self::PostDepthCoverage,
4459u32 => Self::DenormPreserve { target_width: reader.next_u32()? },
4460u32 => Self::DenormFlushToZero { target_width: reader.next_u32()? },
4461u32 => Self::SignedZeroInfNanPreserve { target_width: reader.next_u32()? },
4462u32 => Self::RoundingModeRTE { target_width: reader.next_u32()? },
4463u32 => Self::RoundingModeRTZ { target_width: reader.next_u32()? },
5027u32 => Self::StencilRefReplacingEXT,
5269u32 => Self::OutputLinesNV,
5270u32 => Self::OutputPrimitivesNV { primitive_count: reader.next_u32()? },
5289u32 => Self::DerivativeGroupQuadsNV,
5290u32 => Self::DerivativeGroupLinearNV,
5298u32 => Self::OutputTrianglesNV,
5366u32 => Self::PixelInterlockOrderedEXT,
5367u32 => Self::PixelInterlockUnorderedEXT,
5368u32 => Self::SampleInterlockOrderedEXT,
5369u32 => Self::SampleInterlockUnorderedEXT,
5370u32 => Self::ShadingRateInterlockOrderedEXT,
5371u32 => Self::ShadingRateInterlockUnorderedEXT,
5618u32 => Self::SharedLocalMemorySizeINTEL { size: reader.next_u32()? },
5620u32 => Self::RoundingModeRTPINTEL { target_width: reader.next_u32()? },
5621u32 => Self::RoundingModeRTNINTEL { target_width: reader.next_u32()? },
5622u32 => Self::FloatingPointModeALTINTEL { target_width: reader.next_u32()? },
5623u32 => Self::FloatingPointModeIEEEINTEL { target_width: reader.next_u32()? },
5893u32 => Self::MaxWorkgroupSizeINTEL {
max_x_size: reader.next_u32()?,
max_y_size: reader.next_u32()?,
max_z_size: reader.next_u32()?,
},
5894u32 => Self::MaxWorkDimINTEL { max_dimensions: reader.next_u32()? },
5895u32 => Self::NoGlobalOffsetINTEL,
5896u32 => Self::NumSIMDWorkitemsINTEL { vector_width: reader.next_u32()? },
5903u32 => Self::SchedulerTargetFmaxMhzINTEL { target_fmax: reader.next_u32()? },
value => {
return Err(reader.map_err(ParseErrors::UnknownEnumerant("ExecutionMode", value)))
}
})
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[allow(non_camel_case_types)]
pub enum StorageClass {
UniformConstant,
Input,
Uniform,
Output,
Workgroup,
CrossWorkgroup,
Private,
Function,
Generic,
PushConstant,
AtomicCounter,
Image,
StorageBuffer,
CallableDataKHR,
IncomingCallableDataKHR,
RayPayloadKHR,
HitAttributeKHR,
IncomingRayPayloadKHR,
ShaderRecordBufferKHR,
PhysicalStorageBuffer,
CodeSectionINTEL,
DeviceOnlyINTEL,
HostOnlyINTEL,
}
impl StorageClass {
#[allow(dead_code)]
fn parse(reader: &mut InstructionReader<'_>) -> Result<StorageClass, ParseError> {
Ok(match reader.next_u32()? {
0u32 => Self::UniformConstant,
1u32 => Self::Input,
2u32 => Self::Uniform,
3u32 => Self::Output,
4u32 => Self::Workgroup,
5u32 => Self::CrossWorkgroup,
6u32 => Self::Private,
7u32 => Self::Function,
8u32 => Self::Generic,
9u32 => Self::PushConstant,
10u32 => Self::AtomicCounter,
11u32 => Self::Image,
12u32 => Self::StorageBuffer,
5328u32 => Self::CallableDataKHR,
5329u32 => Self::IncomingCallableDataKHR,
5338u32 => Self::RayPayloadKHR,
5339u32 => Self::HitAttributeKHR,
5342u32 => Self::IncomingRayPayloadKHR,
5343u32 => Self::ShaderRecordBufferKHR,
5349u32 => Self::PhysicalStorageBuffer,
5605u32 => Self::CodeSectionINTEL,
5936u32 => Self::DeviceOnlyINTEL,
5937u32 => Self::HostOnlyINTEL,
value => {
return Err(reader.map_err(ParseErrors::UnknownEnumerant("StorageClass", value)))
}
})
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[allow(non_camel_case_types)]
pub enum Dim {
Dim1D,
Dim2D,
Dim3D,
Cube,
Rect,
Buffer,
SubpassData,
}
impl Dim {
#[allow(dead_code)]
fn parse(reader: &mut InstructionReader<'_>) -> Result<Dim, ParseError> {
Ok(match reader.next_u32()? {
0u32 => Self::Dim1D,
1u32 => Self::Dim2D,
2u32 => Self::Dim3D,
3u32 => Self::Cube,
4u32 => Self::Rect,
5u32 => Self::Buffer,
6u32 => Self::SubpassData,
value => return Err(reader.map_err(ParseErrors::UnknownEnumerant("Dim", value))),
})
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[allow(non_camel_case_types)]
pub enum SamplerAddressingMode {
None,
ClampToEdge,
Clamp,
Repeat,
RepeatMirrored,
}
impl SamplerAddressingMode {
#[allow(dead_code)]
fn parse(reader: &mut InstructionReader<'_>) -> Result<SamplerAddressingMode, ParseError> {
Ok(match reader.next_u32()? {
0u32 => Self::None,
1u32 => Self::ClampToEdge,
2u32 => Self::Clamp,
3u32 => Self::Repeat,
4u32 => Self::RepeatMirrored,
value => {
return Err(
reader.map_err(ParseErrors::UnknownEnumerant("SamplerAddressingMode", value))
)
}
})
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[allow(non_camel_case_types)]
pub enum SamplerFilterMode {
Nearest,
Linear,
}
impl SamplerFilterMode {
#[allow(dead_code)]
fn parse(reader: &mut InstructionReader<'_>) -> Result<SamplerFilterMode, ParseError> {
Ok(match reader.next_u32()? {
0u32 => Self::Nearest,
1u32 => Self::Linear,
value => {
return Err(
reader.map_err(ParseErrors::UnknownEnumerant("SamplerFilterMode", value))
)
}
})
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[allow(non_camel_case_types)]
pub enum ImageFormat {
Unknown,
Rgba32f,
Rgba16f,
R32f,
Rgba8,
Rgba8Snorm,
Rg32f,
Rg16f,
R11fG11fB10f,
R16f,
Rgba16,
Rgb10A2,
Rg16,
Rg8,
R16,
R8,
Rgba16Snorm,
Rg16Snorm,
Rg8Snorm,
R16Snorm,
R8Snorm,
Rgba32i,
Rgba16i,
Rgba8i,
R32i,
Rg32i,
Rg16i,
Rg8i,
R16i,
R8i,
Rgba32ui,
Rgba16ui,
Rgba8ui,
R32ui,
Rgb10a2ui,
Rg32ui,
Rg16ui,
Rg8ui,
R16ui,
R8ui,
R64ui,
R64i,
}
impl ImageFormat {
#[allow(dead_code)]
fn parse(reader: &mut InstructionReader<'_>) -> Result<ImageFormat, ParseError> {
Ok(match reader.next_u32()? {
0u32 => Self::Unknown,
1u32 => Self::Rgba32f,
2u32 => Self::Rgba16f,
3u32 => Self::R32f,
4u32 => Self::Rgba8,
5u32 => Self::Rgba8Snorm,
6u32 => Self::Rg32f,
7u32 => Self::Rg16f,
8u32 => Self::R11fG11fB10f,
9u32 => Self::R16f,
10u32 => Self::Rgba16,
11u32 => Self::Rgb10A2,
12u32 => Self::Rg16,
13u32 => Self::Rg8,
14u32 => Self::R16,
15u32 => Self::R8,
16u32 => Self::Rgba16Snorm,
17u32 => Self::Rg16Snorm,
18u32 => Self::Rg8Snorm,
19u32 => Self::R16Snorm,
20u32 => Self::R8Snorm,
21u32 => Self::Rgba32i,
22u32 => Self::Rgba16i,
23u32 => Self::Rgba8i,
24u32 => Self::R32i,
25u32 => Self::Rg32i,
26u32 => Self::Rg16i,
27u32 => Self::Rg8i,
28u32 => Self::R16i,
29u32 => Self::R8i,
30u32 => Self::Rgba32ui,
31u32 => Self::Rgba16ui,
32u32 => Self::Rgba8ui,
33u32 => Self::R32ui,
34u32 => Self::Rgb10a2ui,
35u32 => Self::Rg32ui,
36u32 => Self::Rg16ui,
37u32 => Self::Rg8ui,
38u32 => Self::R16ui,
39u32 => Self::R8ui,
40u32 => Self::R64ui,
41u32 => Self::R64i,
value => {
return Err(reader.map_err(ParseErrors::UnknownEnumerant("ImageFormat", value)))
}
})
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[allow(non_camel_case_types)]
pub enum ImageChannelOrder {
R,
A,
RG,
RA,
RGB,
RGBA,
BGRA,
ARGB,
Intensity,
Luminance,
Rx,
RGx,
RGBx,
Depth,
DepthStencil,
sRGB,
sRGBx,
sRGBA,
sBGRA,
ABGR,
}
impl ImageChannelOrder {
#[allow(dead_code)]
fn parse(reader: &mut InstructionReader<'_>) -> Result<ImageChannelOrder, ParseError> {
Ok(match reader.next_u32()? {
0u32 => Self::R,
1u32 => Self::A,
2u32 => Self::RG,
3u32 => Self::RA,
4u32 => Self::RGB,
5u32 => Self::RGBA,
6u32 => Self::BGRA,
7u32 => Self::ARGB,
8u32 => Self::Intensity,
9u32 => Self::Luminance,
10u32 => Self::Rx,
11u32 => Self::RGx,
12u32 => Self::RGBx,
13u32 => Self::Depth,
14u32 => Self::DepthStencil,
15u32 => Self::sRGB,
16u32 => Self::sRGBx,
17u32 => Self::sRGBA,
18u32 => Self::sBGRA,
19u32 => Self::ABGR,
value => {
return Err(
reader.map_err(ParseErrors::UnknownEnumerant("ImageChannelOrder", value))
)
}
})
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[allow(non_camel_case_types)]
pub enum ImageChannelDataType {
SnormInt8,
SnormInt16,
UnormInt8,
UnormInt16,
UnormShort565,
UnormShort555,
UnormInt101010,
SignedInt8,
SignedInt16,
SignedInt32,
UnsignedInt8,
UnsignedInt16,
UnsignedInt32,
HalfFloat,
Float,
UnormInt24,
UnormInt101010_2,
}
impl ImageChannelDataType {
#[allow(dead_code)]
fn parse(reader: &mut InstructionReader<'_>) -> Result<ImageChannelDataType, ParseError> {
Ok(match reader.next_u32()? {
0u32 => Self::SnormInt8,
1u32 => Self::SnormInt16,
2u32 => Self::UnormInt8,
3u32 => Self::UnormInt16,
4u32 => Self::UnormShort565,
5u32 => Self::UnormShort555,
6u32 => Self::UnormInt101010,
7u32 => Self::SignedInt8,
8u32 => Self::SignedInt16,
9u32 => Self::SignedInt32,
10u32 => Self::UnsignedInt8,
11u32 => Self::UnsignedInt16,
12u32 => Self::UnsignedInt32,
13u32 => Self::HalfFloat,
14u32 => Self::Float,
15u32 => Self::UnormInt24,
16u32 => Self::UnormInt101010_2,
value => {
return Err(
reader.map_err(ParseErrors::UnknownEnumerant("ImageChannelDataType", value))
)
}
})
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[allow(non_camel_case_types)]
pub enum FPRoundingMode {
RTE,
RTZ,
RTP,
RTN,
}
impl FPRoundingMode {
#[allow(dead_code)]
fn parse(reader: &mut InstructionReader<'_>) -> Result<FPRoundingMode, ParseError> {
Ok(match reader.next_u32()? {
0u32 => Self::RTE,
1u32 => Self::RTZ,
2u32 => Self::RTP,
3u32 => Self::RTN,
value => {
return Err(reader.map_err(ParseErrors::UnknownEnumerant("FPRoundingMode", value)))
}
})
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[allow(non_camel_case_types)]
pub enum FPDenormMode {
Preserve,
FlushToZero,
}
impl FPDenormMode {
#[allow(dead_code)]
fn parse(reader: &mut InstructionReader<'_>) -> Result<FPDenormMode, ParseError> {
Ok(match reader.next_u32()? {
0u32 => Self::Preserve,
1u32 => Self::FlushToZero,
value => {
return Err(reader.map_err(ParseErrors::UnknownEnumerant("FPDenormMode", value)))
}
})
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[allow(non_camel_case_types)]
pub enum QuantizationModes {
TRN,
TRN_ZERO,
RND,
RND_ZERO,
RND_INF,
RND_MIN_INF,
RND_CONV,
RND_CONV_ODD,
}
impl QuantizationModes {
#[allow(dead_code)]
fn parse(reader: &mut InstructionReader<'_>) -> Result<QuantizationModes, ParseError> {
Ok(match reader.next_u32()? {
0u32 => Self::TRN,
1u32 => Self::TRN_ZERO,
2u32 => Self::RND,
3u32 => Self::RND_ZERO,
4u32 => Self::RND_INF,
5u32 => Self::RND_MIN_INF,
6u32 => Self::RND_CONV,
7u32 => Self::RND_CONV_ODD,
value => {
return Err(
reader.map_err(ParseErrors::UnknownEnumerant("QuantizationModes", value))
)
}
})
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[allow(non_camel_case_types)]
pub enum FPOperationMode {
IEEE,
ALT,
}
impl FPOperationMode {
#[allow(dead_code)]
fn parse(reader: &mut InstructionReader<'_>) -> Result<FPOperationMode, ParseError> {
Ok(match reader.next_u32()? {
0u32 => Self::IEEE,
1u32 => Self::ALT,
value => {
return Err(reader.map_err(ParseErrors::UnknownEnumerant("FPOperationMode", value)))
}
})
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[allow(non_camel_case_types)]
pub enum OverflowModes {
WRAP,
SAT,
SAT_ZERO,
SAT_SYM,
}
impl OverflowModes {
#[allow(dead_code)]
fn parse(reader: &mut InstructionReader<'_>) -> Result<OverflowModes, ParseError> {
Ok(match reader.next_u32()? {
0u32 => Self::WRAP,
1u32 => Self::SAT,
2u32 => Self::SAT_ZERO,
3u32 => Self::SAT_SYM,
value => {
return Err(reader.map_err(ParseErrors::UnknownEnumerant("OverflowModes", value)))
}
})
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[allow(non_camel_case_types)]
pub enum LinkageType {
Export,
Import,
LinkOnceODR,
}
impl LinkageType {
#[allow(dead_code)]
fn parse(reader: &mut InstructionReader<'_>) -> Result<LinkageType, ParseError> {
Ok(match reader.next_u32()? {
0u32 => Self::Export,
1u32 => Self::Import,
2u32 => Self::LinkOnceODR,
value => {
return Err(reader.map_err(ParseErrors::UnknownEnumerant("LinkageType", value)))
}
})
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[allow(non_camel_case_types)]
pub enum AccessQualifier {
ReadOnly,
WriteOnly,
ReadWrite,
}
impl AccessQualifier {
#[allow(dead_code)]
fn parse(reader: &mut InstructionReader<'_>) -> Result<AccessQualifier, ParseError> {
Ok(match reader.next_u32()? {
0u32 => Self::ReadOnly,
1u32 => Self::WriteOnly,
2u32 => Self::ReadWrite,
value => {
return Err(reader.map_err(ParseErrors::UnknownEnumerant("AccessQualifier", value)))
}
})
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[allow(non_camel_case_types)]
pub enum FunctionParameterAttribute {
Zext,
Sext,
ByVal,
Sret,
NoAlias,
NoCapture,
NoWrite,
NoReadWrite,
}
impl FunctionParameterAttribute {
#[allow(dead_code)]
fn parse(reader: &mut InstructionReader<'_>) -> Result<FunctionParameterAttribute, ParseError> {
Ok(match reader.next_u32()? {
0u32 => Self::Zext,
1u32 => Self::Sext,
2u32 => Self::ByVal,
3u32 => Self::Sret,
4u32 => Self::NoAlias,
5u32 => Self::NoCapture,
6u32 => Self::NoWrite,
7u32 => Self::NoReadWrite,
value => {
return Err(reader
.map_err(ParseErrors::UnknownEnumerant("FunctionParameterAttribute", value)))
}
})
}
}
#[derive(Clone, Debug, PartialEq, Eq)]
#[allow(non_camel_case_types)]
pub enum Decoration {
RelaxedPrecision,
SpecId { specialization_constant_id: u32 },
Block,
BufferBlock,
RowMajor,
ColMajor,
ArrayStride { array_stride: u32 },
MatrixStride { matrix_stride: u32 },
GLSLShared,
GLSLPacked,
CPacked,
BuiltIn { built_in: BuiltIn },
NoPerspective,
Flat,
Patch,
Centroid,
Sample,
Invariant,
Restrict,
Aliased,
Volatile,
Constant,
Coherent,
NonWritable,
NonReadable,
Uniform,
UniformId { execution: Id },
SaturatedConversion,
Stream { stream_number: u32 },
Location { location: u32 },
Component { component: u32 },
Index { index: u32 },
Binding { binding_point: u32 },
DescriptorSet { descriptor_set: u32 },
Offset { byte_offset: u32 },
XfbBuffer { xfb_buffer_number: u32 },
XfbStride { xfb_stride: u32 },
FuncParamAttr { function_parameter_attribute: FunctionParameterAttribute },
FPRoundingMode { floating_point_rounding_mode: FPRoundingMode },
FPFastMathMode { fast_math_mode: FPFastMathMode },
LinkageAttributes { name: String, linkage_type: LinkageType },
NoContraction,
InputAttachmentIndex { attachment_index: u32 },
Alignment { alignment: u32 },
MaxByteOffset { max_byte_offset: u32 },
AlignmentId { alignment: Id },
MaxByteOffsetId { max_byte_offset: Id },
NoSignedWrap,
NoUnsignedWrap,
ExplicitInterpAMD,
OverrideCoverageNV,
PassthroughNV,
ViewportRelativeNV,
SecondaryViewportRelativeNV { offset: u32 },
PerPrimitiveNV,
PerViewNV,
PerTaskNV,
PerVertexKHR,
NonUniform,
RestrictPointer,
AliasedPointer,
BindlessSamplerNV,
BindlessImageNV,
BoundSamplerNV,
BoundImageNV,
SIMTCallINTEL { n: u32 },
ReferencedIndirectlyINTEL,
ClobberINTEL { register: String },
SideEffectsINTEL,
VectorComputeVariableINTEL,
FuncParamIOKindINTEL { kind: u32 },
VectorComputeFunctionINTEL,
StackCallINTEL,
GlobalVariableOffsetINTEL { offset: u32 },
CounterBuffer { counter_buffer: Id },
UserSemantic { semantic: String },
UserTypeGOOGLE { user_type: String },
FunctionRoundingModeINTEL { target_width: u32, fp_rounding_mode: FPRoundingMode },
FunctionDenormModeINTEL { target_width: u32, fp_denorm_mode: FPDenormMode },
RegisterINTEL,
MemoryINTEL { memory_type: String },
NumbanksINTEL { banks: u32 },
BankwidthINTEL { bank_width: u32 },
MaxPrivateCopiesINTEL { maximum_copies: u32 },
SinglepumpINTEL,
DoublepumpINTEL,
MaxReplicatesINTEL { maximum_replicates: u32 },
SimpleDualPortINTEL,
MergeINTEL { merge_key: String, merge_type: String },
BankBitsINTEL { bank_bits: u32 },
ForcePow2DepthINTEL { force_key: u32 },
BurstCoalesceINTEL,
CacheSizeINTEL { cache_size_in_bytes: u32 },
DontStaticallyCoalesceINTEL,
PrefetchINTEL { prefetcher_size_in_bytes: u32 },
StallEnableINTEL,
FuseLoopsInFunctionINTEL,
BufferLocationINTEL { buffer_location_id: u32 },
IOPipeStorageINTEL { io_pipe_id: u32 },
FunctionFloatingPointModeINTEL { target_width: u32, fp_operation_mode: FPOperationMode },
SingleElementVectorINTEL,
VectorComputeCallableFunctionINTEL,
MediaBlockIOINTEL,
}
impl Decoration {
#[allow(dead_code)]
fn parse(reader: &mut InstructionReader<'_>) -> Result<Decoration, ParseError> {
Ok(match reader.next_u32()? {
0u32 => Self::RelaxedPrecision,
1u32 => Self::SpecId { specialization_constant_id: reader.next_u32()? },
2u32 => Self::Block,
3u32 => Self::BufferBlock,
4u32 => Self::RowMajor,
5u32 => Self::ColMajor,
6u32 => Self::ArrayStride { array_stride: reader.next_u32()? },
7u32 => Self::MatrixStride { matrix_stride: reader.next_u32()? },
8u32 => Self::GLSLShared,
9u32 => Self::GLSLPacked,
10u32 => Self::CPacked,
11u32 => Self::BuiltIn { built_in: BuiltIn::parse(reader)? },
13u32 => Self::NoPerspective,
14u32 => Self::Flat,
15u32 => Self::Patch,
16u32 => Self::Centroid,
17u32 => Self::Sample,
18u32 => Self::Invariant,
19u32 => Self::Restrict,
20u32 => Self::Aliased,
21u32 => Self::Volatile,
22u32 => Self::Constant,
23u32 => Self::Coherent,
24u32 => Self::NonWritable,
25u32 => Self::NonReadable,
26u32 => Self::Uniform,
27u32 => Self::UniformId { execution: Id(reader.next_u32()?) },
28u32 => Self::SaturatedConversion,
29u32 => Self::Stream { stream_number: reader.next_u32()? },
30u32 => Self::Location { location: reader.next_u32()? },
31u32 => Self::Component { component: reader.next_u32()? },
32u32 => Self::Index { index: reader.next_u32()? },
33u32 => Self::Binding { binding_point: reader.next_u32()? },
34u32 => Self::DescriptorSet { descriptor_set: reader.next_u32()? },
35u32 => Self::Offset { byte_offset: reader.next_u32()? },
36u32 => Self::XfbBuffer { xfb_buffer_number: reader.next_u32()? },
37u32 => Self::XfbStride { xfb_stride: reader.next_u32()? },
38u32 => Self::FuncParamAttr {
function_parameter_attribute: FunctionParameterAttribute::parse(reader)?,
},
39u32 => Self::FPRoundingMode {
floating_point_rounding_mode: FPRoundingMode::parse(reader)?,
},
40u32 => Self::FPFastMathMode { fast_math_mode: FPFastMathMode::parse(reader)? },
41u32 => Self::LinkageAttributes {
name: reader.next_string()?,
linkage_type: LinkageType::parse(reader)?,
},
42u32 => Self::NoContraction,
43u32 => Self::InputAttachmentIndex { attachment_index: reader.next_u32()? },
44u32 => Self::Alignment { alignment: reader.next_u32()? },
45u32 => Self::MaxByteOffset { max_byte_offset: reader.next_u32()? },
46u32 => Self::AlignmentId { alignment: Id(reader.next_u32()?) },
47u32 => Self::MaxByteOffsetId { max_byte_offset: Id(reader.next_u32()?) },
4469u32 => Self::NoSignedWrap,
4470u32 => Self::NoUnsignedWrap,
4999u32 => Self::ExplicitInterpAMD,
5248u32 => Self::OverrideCoverageNV,
5250u32 => Self::PassthroughNV,
5252u32 => Self::ViewportRelativeNV,
5256u32 => Self::SecondaryViewportRelativeNV { offset: reader.next_u32()? },
5271u32 => Self::PerPrimitiveNV,
5272u32 => Self::PerViewNV,
5273u32 => Self::PerTaskNV,
5285u32 => Self::PerVertexKHR,
5300u32 => Self::NonUniform,
5355u32 => Self::RestrictPointer,
5356u32 => Self::AliasedPointer,
5398u32 => Self::BindlessSamplerNV,
5399u32 => Self::BindlessImageNV,
5400u32 => Self::BoundSamplerNV,
5401u32 => Self::BoundImageNV,
5599u32 => Self::SIMTCallINTEL { n: reader.next_u32()? },
5602u32 => Self::ReferencedIndirectlyINTEL,
5607u32 => Self::ClobberINTEL { register: reader.next_string()? },
5608u32 => Self::SideEffectsINTEL,
5624u32 => Self::VectorComputeVariableINTEL,
5625u32 => Self::FuncParamIOKindINTEL { kind: reader.next_u32()? },
5626u32 => Self::VectorComputeFunctionINTEL,
5627u32 => Self::StackCallINTEL,
5628u32 => Self::GlobalVariableOffsetINTEL { offset: reader.next_u32()? },
5634u32 => Self::CounterBuffer { counter_buffer: Id(reader.next_u32()?) },
5635u32 => Self::UserSemantic { semantic: reader.next_string()? },
5636u32 => Self::UserTypeGOOGLE { user_type: reader.next_string()? },
5822u32 => Self::FunctionRoundingModeINTEL {
target_width: reader.next_u32()?,
fp_rounding_mode: FPRoundingMode::parse(reader)?,
},
5823u32 => Self::FunctionDenormModeINTEL {
target_width: reader.next_u32()?,
fp_denorm_mode: FPDenormMode::parse(reader)?,
},
5825u32 => Self::RegisterINTEL,
5826u32 => Self::MemoryINTEL { memory_type: reader.next_string()? },
5827u32 => Self::NumbanksINTEL { banks: reader.next_u32()? },
5828u32 => Self::BankwidthINTEL { bank_width: reader.next_u32()? },
5829u32 => Self::MaxPrivateCopiesINTEL { maximum_copies: reader.next_u32()? },
5830u32 => Self::SinglepumpINTEL,
5831u32 => Self::DoublepumpINTEL,
5832u32 => Self::MaxReplicatesINTEL { maximum_replicates: reader.next_u32()? },
5833u32 => Self::SimpleDualPortINTEL,
5834u32 => Self::MergeINTEL {
merge_key: reader.next_string()?,
merge_type: reader.next_string()?,
},
5835u32 => Self::BankBitsINTEL { bank_bits: reader.next_u32()? },
5836u32 => Self::ForcePow2DepthINTEL { force_key: reader.next_u32()? },
5899u32 => Self::BurstCoalesceINTEL,
5900u32 => Self::CacheSizeINTEL { cache_size_in_bytes: reader.next_u32()? },
5901u32 => Self::DontStaticallyCoalesceINTEL,
5902u32 => Self::PrefetchINTEL { prefetcher_size_in_bytes: reader.next_u32()? },
5905u32 => Self::StallEnableINTEL,
5907u32 => Self::FuseLoopsInFunctionINTEL,
5921u32 => Self::BufferLocationINTEL { buffer_location_id: reader.next_u32()? },
5944u32 => Self::IOPipeStorageINTEL { io_pipe_id: reader.next_u32()? },
6080u32 => Self::FunctionFloatingPointModeINTEL {
target_width: reader.next_u32()?,
fp_operation_mode: FPOperationMode::parse(reader)?,
},
6085u32 => Self::SingleElementVectorINTEL,
6087u32 => Self::VectorComputeCallableFunctionINTEL,
6140u32 => Self::MediaBlockIOINTEL,
value => return Err(reader.map_err(ParseErrors::UnknownEnumerant("Decoration", value))),
})
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[allow(non_camel_case_types)]
pub enum BuiltIn {
Position,
PointSize,
ClipDistance,
CullDistance,
VertexId,
InstanceId,
PrimitiveId,
InvocationId,
Layer,
ViewportIndex,
TessLevelOuter,
TessLevelInner,
TessCoord,
PatchVertices,
FragCoord,
PointCoord,
FrontFacing,
SampleId,
SamplePosition,
SampleMask,
FragDepth,
HelperInvocation,
NumWorkgroups,
WorkgroupSize,
WorkgroupId,
LocalInvocationId,
GlobalInvocationId,
LocalInvocationIndex,
WorkDim,
GlobalSize,
EnqueuedWorkgroupSize,
GlobalOffset,
GlobalLinearId,
SubgroupSize,
SubgroupMaxSize,
NumSubgroups,
NumEnqueuedSubgroups,
SubgroupId,
SubgroupLocalInvocationId,
VertexIndex,
InstanceIndex,
SubgroupEqMask,
SubgroupGeMask,
SubgroupGtMask,
SubgroupLeMask,
SubgroupLtMask,
BaseVertex,
BaseInstance,
DrawIndex,
PrimitiveShadingRateKHR,
DeviceIndex,
ViewIndex,
ShadingRateKHR,
BaryCoordNoPerspAMD,
BaryCoordNoPerspCentroidAMD,
BaryCoordNoPerspSampleAMD,
BaryCoordSmoothAMD,
BaryCoordSmoothCentroidAMD,
BaryCoordSmoothSampleAMD,
BaryCoordPullModelAMD,
FragStencilRefEXT,
ViewportMaskNV,
SecondaryPositionNV,
SecondaryViewportMaskNV,
PositionPerViewNV,
ViewportMaskPerViewNV,
FullyCoveredEXT,
TaskCountNV,
PrimitiveCountNV,
PrimitiveIndicesNV,
ClipDistancePerViewNV,
CullDistancePerViewNV,
LayerPerViewNV,
MeshViewCountNV,
MeshViewIndicesNV,
BaryCoordKHR,
BaryCoordNoPerspKHR,
FragSizeEXT,
FragInvocationCountEXT,
LaunchIdKHR,
LaunchSizeKHR,
WorldRayOriginKHR,
WorldRayDirectionKHR,
ObjectRayOriginKHR,
ObjectRayDirectionKHR,
RayTminKHR,
RayTmaxKHR,
InstanceCustomIndexKHR,
ObjectToWorldKHR,
WorldToObjectKHR,
HitTNV,
HitKindKHR,
CurrentRayTimeNV,
IncomingRayFlagsKHR,
RayGeometryIndexKHR,
WarpsPerSMNV,
SMCountNV,
WarpIDNV,
SMIDNV,
}
impl BuiltIn {
#[allow(dead_code)]
fn parse(reader: &mut InstructionReader<'_>) -> Result<BuiltIn, ParseError> {
Ok(match reader.next_u32()? {
0u32 => Self::Position,
1u32 => Self::PointSize,
3u32 => Self::ClipDistance,
4u32 => Self::CullDistance,
5u32 => Self::VertexId,
6u32 => Self::InstanceId,
7u32 => Self::PrimitiveId,
8u32 => Self::InvocationId,
9u32 => Self::Layer,
10u32 => Self::ViewportIndex,
11u32 => Self::TessLevelOuter,
12u32 => Self::TessLevelInner,
13u32 => Self::TessCoord,
14u32 => Self::PatchVertices,
15u32 => Self::FragCoord,
16u32 => Self::PointCoord,
17u32 => Self::FrontFacing,
18u32 => Self::SampleId,
19u32 => Self::SamplePosition,
20u32 => Self::SampleMask,
22u32 => Self::FragDepth,
23u32 => Self::HelperInvocation,
24u32 => Self::NumWorkgroups,
25u32 => Self::WorkgroupSize,
26u32 => Self::WorkgroupId,
27u32 => Self::LocalInvocationId,
28u32 => Self::GlobalInvocationId,
29u32 => Self::LocalInvocationIndex,
30u32 => Self::WorkDim,
31u32 => Self::GlobalSize,
32u32 => Self::EnqueuedWorkgroupSize,
33u32 => Self::GlobalOffset,
34u32 => Self::GlobalLinearId,
36u32 => Self::SubgroupSize,
37u32 => Self::SubgroupMaxSize,
38u32 => Self::NumSubgroups,
39u32 => Self::NumEnqueuedSubgroups,
40u32 => Self::SubgroupId,
41u32 => Self::SubgroupLocalInvocationId,
42u32 => Self::VertexIndex,
43u32 => Self::InstanceIndex,
4416u32 => Self::SubgroupEqMask,
4417u32 => Self::SubgroupGeMask,
4418u32 => Self::SubgroupGtMask,
4419u32 => Self::SubgroupLeMask,
4420u32 => Self::SubgroupLtMask,
4424u32 => Self::BaseVertex,
4425u32 => Self::BaseInstance,
4426u32 => Self::DrawIndex,
4432u32 => Self::PrimitiveShadingRateKHR,
4438u32 => Self::DeviceIndex,
4440u32 => Self::ViewIndex,
4444u32 => Self::ShadingRateKHR,
4992u32 => Self::BaryCoordNoPerspAMD,
4993u32 => Self::BaryCoordNoPerspCentroidAMD,
4994u32 => Self::BaryCoordNoPerspSampleAMD,
4995u32 => Self::BaryCoordSmoothAMD,
4996u32 => Self::BaryCoordSmoothCentroidAMD,
4997u32 => Self::BaryCoordSmoothSampleAMD,
4998u32 => Self::BaryCoordPullModelAMD,
5014u32 => Self::FragStencilRefEXT,
5253u32 => Self::ViewportMaskNV,
5257u32 => Self::SecondaryPositionNV,
5258u32 => Self::SecondaryViewportMaskNV,
5261u32 => Self::PositionPerViewNV,
5262u32 => Self::ViewportMaskPerViewNV,
5264u32 => Self::FullyCoveredEXT,
5274u32 => Self::TaskCountNV,
5275u32 => Self::PrimitiveCountNV,
5276u32 => Self::PrimitiveIndicesNV,
5277u32 => Self::ClipDistancePerViewNV,
5278u32 => Self::CullDistancePerViewNV,
5279u32 => Self::LayerPerViewNV,
5280u32 => Self::MeshViewCountNV,
5281u32 => Self::MeshViewIndicesNV,
5286u32 => Self::BaryCoordKHR,
5287u32 => Self::BaryCoordNoPerspKHR,
5292u32 => Self::FragSizeEXT,
5293u32 => Self::FragInvocationCountEXT,
5319u32 => Self::LaunchIdKHR,
5320u32 => Self::LaunchSizeKHR,
5321u32 => Self::WorldRayOriginKHR,
5322u32 => Self::WorldRayDirectionKHR,
5323u32 => Self::ObjectRayOriginKHR,
5324u32 => Self::ObjectRayDirectionKHR,
5325u32 => Self::RayTminKHR,
5326u32 => Self::RayTmaxKHR,
5327u32 => Self::InstanceCustomIndexKHR,
5330u32 => Self::ObjectToWorldKHR,
5331u32 => Self::WorldToObjectKHR,
5332u32 => Self::HitTNV,
5333u32 => Self::HitKindKHR,
5334u32 => Self::CurrentRayTimeNV,
5351u32 => Self::IncomingRayFlagsKHR,
5352u32 => Self::RayGeometryIndexKHR,
5374u32 => Self::WarpsPerSMNV,
5375u32 => Self::SMCountNV,
5376u32 => Self::WarpIDNV,
5377u32 => Self::SMIDNV,
value => return Err(reader.map_err(ParseErrors::UnknownEnumerant("BuiltIn", value))),
})
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[allow(non_camel_case_types)]
pub enum Scope {
CrossDevice,
Device,
Workgroup,
Subgroup,
Invocation,
QueueFamily,
ShaderCallKHR,
}
impl Scope {
#[allow(dead_code)]
fn parse(reader: &mut InstructionReader<'_>) -> Result<Scope, ParseError> {
Ok(match reader.next_u32()? {
0u32 => Self::CrossDevice,
1u32 => Self::Device,
2u32 => Self::Workgroup,
3u32 => Self::Subgroup,
4u32 => Self::Invocation,
5u32 => Self::QueueFamily,
6u32 => Self::ShaderCallKHR,
value => return Err(reader.map_err(ParseErrors::UnknownEnumerant("Scope", value))),
})
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[allow(non_camel_case_types)]
pub enum GroupOperation {
Reduce,
InclusiveScan,
ExclusiveScan,
ClusteredReduce,
PartitionedReduceNV,
PartitionedInclusiveScanNV,
PartitionedExclusiveScanNV,
}
impl GroupOperation {
#[allow(dead_code)]
fn parse(reader: &mut InstructionReader<'_>) -> Result<GroupOperation, ParseError> {
Ok(match reader.next_u32()? {
0u32 => Self::Reduce,
1u32 => Self::InclusiveScan,
2u32 => Self::ExclusiveScan,
3u32 => Self::ClusteredReduce,
6u32 => Self::PartitionedReduceNV,
7u32 => Self::PartitionedInclusiveScanNV,
8u32 => Self::PartitionedExclusiveScanNV,
value => {
return Err(reader.map_err(ParseErrors::UnknownEnumerant("GroupOperation", value)))
}
})
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[allow(non_camel_case_types)]
pub enum KernelEnqueueFlags {
NoWait,
WaitKernel,
WaitWorkGroup,
}
impl KernelEnqueueFlags {
#[allow(dead_code)]
fn parse(reader: &mut InstructionReader<'_>) -> Result<KernelEnqueueFlags, ParseError> {
Ok(match reader.next_u32()? {
0u32 => Self::NoWait,
1u32 => Self::WaitKernel,
2u32 => Self::WaitWorkGroup,
value => {
return Err(
reader.map_err(ParseErrors::UnknownEnumerant("KernelEnqueueFlags", value))
)
}
})
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[allow(non_camel_case_types)]
pub enum Capability {
Matrix,
Shader,
Geometry,
Tessellation,
Addresses,
Linkage,
Kernel,
Vector16,
Float16Buffer,
Float16,
Float64,
Int64,
Int64Atomics,
ImageBasic,
ImageReadWrite,
ImageMipmap,
Pipes,
Groups,
DeviceEnqueue,
LiteralSampler,
AtomicStorage,
Int16,
TessellationPointSize,
GeometryPointSize,
ImageGatherExtended,
StorageImageMultisample,
UniformBufferArrayDynamicIndexing,
SampledImageArrayDynamicIndexing,
StorageBufferArrayDynamicIndexing,
StorageImageArrayDynamicIndexing,
ClipDistance,
CullDistance,
ImageCubeArray,
SampleRateShading,
ImageRect,
SampledRect,
GenericPointer,
Int8,
InputAttachment,
SparseResidency,
MinLod,
Sampled1D,
Image1D,
SampledCubeArray,
SampledBuffer,
ImageBuffer,
ImageMSArray,
StorageImageExtendedFormats,
ImageQuery,
DerivativeControl,
InterpolationFunction,
TransformFeedback,
GeometryStreams,
StorageImageReadWithoutFormat,
StorageImageWriteWithoutFormat,
MultiViewport,
SubgroupDispatch,
NamedBarrier,
PipeStorage,
GroupNonUniform,
GroupNonUniformVote,
GroupNonUniformArithmetic,
GroupNonUniformBallot,
GroupNonUniformShuffle,
GroupNonUniformShuffleRelative,
GroupNonUniformClustered,
GroupNonUniformQuad,
ShaderLayer,
ShaderViewportIndex,
UniformDecoration,
FragmentShadingRateKHR,
SubgroupBallotKHR,
DrawParameters,
WorkgroupMemoryExplicitLayoutKHR,
WorkgroupMemoryExplicitLayout8BitAccessKHR,
WorkgroupMemoryExplicitLayout16BitAccessKHR,
SubgroupVoteKHR,
StorageBuffer16BitAccess,
UniformAndStorageBuffer16BitAccess,
StoragePushConstant16,
StorageInputOutput16,
DeviceGroup,
MultiView,
VariablePointersStorageBuffer,
VariablePointers,
AtomicStorageOps,
SampleMaskPostDepthCoverage,
StorageBuffer8BitAccess,
UniformAndStorageBuffer8BitAccess,
StoragePushConstant8,
DenormPreserve,
DenormFlushToZero,
SignedZeroInfNanPreserve,
RoundingModeRTE,
RoundingModeRTZ,
RayQueryProvisionalKHR,
RayQueryKHR,
RayTraversalPrimitiveCullingKHR,
RayTracingKHR,
Float16ImageAMD,
ImageGatherBiasLodAMD,
FragmentMaskAMD,
StencilExportEXT,
ImageReadWriteLodAMD,
Int64ImageEXT,
ShaderClockKHR,
SampleMaskOverrideCoverageNV,
GeometryShaderPassthroughNV,
ShaderViewportIndexLayerEXT,
ShaderViewportMaskNV,
ShaderStereoViewNV,
PerViewAttributesNV,
FragmentFullyCoveredEXT,
MeshShadingNV,
ImageFootprintNV,
FragmentBarycentricKHR,
ComputeDerivativeGroupQuadsNV,
FragmentDensityEXT,
GroupNonUniformPartitionedNV,
ShaderNonUniform,
RuntimeDescriptorArray,
InputAttachmentArrayDynamicIndexing,
UniformTexelBufferArrayDynamicIndexing,
StorageTexelBufferArrayDynamicIndexing,
UniformBufferArrayNonUniformIndexing,
SampledImageArrayNonUniformIndexing,
StorageBufferArrayNonUniformIndexing,
StorageImageArrayNonUniformIndexing,
InputAttachmentArrayNonUniformIndexing,
UniformTexelBufferArrayNonUniformIndexing,
StorageTexelBufferArrayNonUniformIndexing,
RayTracingNV,
RayTracingMotionBlurNV,
VulkanMemoryModel,
VulkanMemoryModelDeviceScope,
PhysicalStorageBufferAddresses,
ComputeDerivativeGroupLinearNV,
RayTracingProvisionalKHR,
CooperativeMatrixNV,
FragmentShaderSampleInterlockEXT,
FragmentShaderShadingRateInterlockEXT,
ShaderSMBuiltinsNV,
FragmentShaderPixelInterlockEXT,
DemoteToHelperInvocation,
BindlessTextureNV,
SubgroupShuffleINTEL,
SubgroupBufferBlockIOINTEL,
SubgroupImageBlockIOINTEL,
SubgroupImageMediaBlockIOINTEL,
RoundToInfinityINTEL,
FloatingPointModeINTEL,
IntegerFunctions2INTEL,
FunctionPointersINTEL,
IndirectReferencesINTEL,
AsmINTEL,
AtomicFloat32MinMaxEXT,
AtomicFloat64MinMaxEXT,
AtomicFloat16MinMaxEXT,
VectorComputeINTEL,
VectorAnyINTEL,
ExpectAssumeKHR,
SubgroupAvcMotionEstimationINTEL,
SubgroupAvcMotionEstimationIntraINTEL,
SubgroupAvcMotionEstimationChromaINTEL,
VariableLengthArrayINTEL,
FunctionFloatControlINTEL,
FPGAMemoryAttributesINTEL,
FPFastMathModeINTEL,
ArbitraryPrecisionIntegersINTEL,
ArbitraryPrecisionFloatingPointINTEL,
UnstructuredLoopControlsINTEL,
FPGALoopControlsINTEL,
KernelAttributesINTEL,
FPGAKernelAttributesINTEL,
FPGAMemoryAccessesINTEL,
FPGAClusterAttributesINTEL,
LoopFuseINTEL,
FPGABufferLocationINTEL,
ArbitraryPrecisionFixedPointINTEL,
USMStorageClassesINTEL,
IOPipesINTEL,
BlockingPipesINTEL,
FPGARegINTEL,
DotProductInputAll,
DotProductInput4x8Bit,
DotProductInput4x8BitPacked,
DotProduct,
BitInstructions,
AtomicFloat32AddEXT,
AtomicFloat64AddEXT,
LongConstantCompositeINTEL,
OptNoneINTEL,
AtomicFloat16AddEXT,
DebugInfoModuleINTEL,
}
impl Capability {
#[allow(dead_code)]
fn parse(reader: &mut InstructionReader<'_>) -> Result<Capability, ParseError> {
Ok(match reader.next_u32()? {
0u32 => Self::Matrix,
1u32 => Self::Shader,
2u32 => Self::Geometry,
3u32 => Self::Tessellation,
4u32 => Self::Addresses,
5u32 => Self::Linkage,
6u32 => Self::Kernel,
7u32 => Self::Vector16,
8u32 => Self::Float16Buffer,
9u32 => Self::Float16,
10u32 => Self::Float64,
11u32 => Self::Int64,
12u32 => Self::Int64Atomics,
13u32 => Self::ImageBasic,
14u32 => Self::ImageReadWrite,
15u32 => Self::ImageMipmap,
17u32 => Self::Pipes,
18u32 => Self::Groups,
19u32 => Self::DeviceEnqueue,
20u32 => Self::LiteralSampler,
21u32 => Self::AtomicStorage,
22u32 => Self::Int16,
23u32 => Self::TessellationPointSize,
24u32 => Self::GeometryPointSize,
25u32 => Self::ImageGatherExtended,
27u32 => Self::StorageImageMultisample,
28u32 => Self::UniformBufferArrayDynamicIndexing,
29u32 => Self::SampledImageArrayDynamicIndexing,
30u32 => Self::StorageBufferArrayDynamicIndexing,
31u32 => Self::StorageImageArrayDynamicIndexing,
32u32 => Self::ClipDistance,
33u32 => Self::CullDistance,
34u32 => Self::ImageCubeArray,
35u32 => Self::SampleRateShading,
36u32 => Self::ImageRect,
37u32 => Self::SampledRect,
38u32 => Self::GenericPointer,
39u32 => Self::Int8,
40u32 => Self::InputAttachment,
41u32 => Self::SparseResidency,
42u32 => Self::MinLod,
43u32 => Self::Sampled1D,
44u32 => Self::Image1D,
45u32 => Self::SampledCubeArray,
46u32 => Self::SampledBuffer,
47u32 => Self::ImageBuffer,
48u32 => Self::ImageMSArray,
49u32 => Self::StorageImageExtendedFormats,
50u32 => Self::ImageQuery,
51u32 => Self::DerivativeControl,
52u32 => Self::InterpolationFunction,
53u32 => Self::TransformFeedback,
54u32 => Self::GeometryStreams,
55u32 => Self::StorageImageReadWithoutFormat,
56u32 => Self::StorageImageWriteWithoutFormat,
57u32 => Self::MultiViewport,
58u32 => Self::SubgroupDispatch,
59u32 => Self::NamedBarrier,
60u32 => Self::PipeStorage,
61u32 => Self::GroupNonUniform,
62u32 => Self::GroupNonUniformVote,
63u32 => Self::GroupNonUniformArithmetic,
64u32 => Self::GroupNonUniformBallot,
65u32 => Self::GroupNonUniformShuffle,
66u32 => Self::GroupNonUniformShuffleRelative,
67u32 => Self::GroupNonUniformClustered,
68u32 => Self::GroupNonUniformQuad,
69u32 => Self::ShaderLayer,
70u32 => Self::ShaderViewportIndex,
71u32 => Self::UniformDecoration,
4422u32 => Self::FragmentShadingRateKHR,
4423u32 => Self::SubgroupBallotKHR,
4427u32 => Self::DrawParameters,
4428u32 => Self::WorkgroupMemoryExplicitLayoutKHR,
4429u32 => Self::WorkgroupMemoryExplicitLayout8BitAccessKHR,
4430u32 => Self::WorkgroupMemoryExplicitLayout16BitAccessKHR,
4431u32 => Self::SubgroupVoteKHR,
4433u32 => Self::StorageBuffer16BitAccess,
4434u32 => Self::UniformAndStorageBuffer16BitAccess,
4435u32 => Self::StoragePushConstant16,
4436u32 => Self::StorageInputOutput16,
4437u32 => Self::DeviceGroup,
4439u32 => Self::MultiView,
4441u32 => Self::VariablePointersStorageBuffer,
4442u32 => Self::VariablePointers,
4445u32 => Self::AtomicStorageOps,
4447u32 => Self::SampleMaskPostDepthCoverage,
4448u32 => Self::StorageBuffer8BitAccess,
4449u32 => Self::UniformAndStorageBuffer8BitAccess,
4450u32 => Self::StoragePushConstant8,
4464u32 => Self::DenormPreserve,
4465u32 => Self::DenormFlushToZero,
4466u32 => Self::SignedZeroInfNanPreserve,
4467u32 => Self::RoundingModeRTE,
4468u32 => Self::RoundingModeRTZ,
4471u32 => Self::RayQueryProvisionalKHR,
4472u32 => Self::RayQueryKHR,
4478u32 => Self::RayTraversalPrimitiveCullingKHR,
4479u32 => Self::RayTracingKHR,
5008u32 => Self::Float16ImageAMD,
5009u32 => Self::ImageGatherBiasLodAMD,
5010u32 => Self::FragmentMaskAMD,
5013u32 => Self::StencilExportEXT,
5015u32 => Self::ImageReadWriteLodAMD,
5016u32 => Self::Int64ImageEXT,
5055u32 => Self::ShaderClockKHR,
5249u32 => Self::SampleMaskOverrideCoverageNV,
5251u32 => Self::GeometryShaderPassthroughNV,
5254u32 => Self::ShaderViewportIndexLayerEXT,
5255u32 => Self::ShaderViewportMaskNV,
5259u32 => Self::ShaderStereoViewNV,
5260u32 => Self::PerViewAttributesNV,
5265u32 => Self::FragmentFullyCoveredEXT,
5266u32 => Self::MeshShadingNV,
5282u32 => Self::ImageFootprintNV,
5284u32 => Self::FragmentBarycentricKHR,
5288u32 => Self::ComputeDerivativeGroupQuadsNV,
5291u32 => Self::FragmentDensityEXT,
5297u32 => Self::GroupNonUniformPartitionedNV,
5301u32 => Self::ShaderNonUniform,
5302u32 => Self::RuntimeDescriptorArray,
5303u32 => Self::InputAttachmentArrayDynamicIndexing,
5304u32 => Self::UniformTexelBufferArrayDynamicIndexing,
5305u32 => Self::StorageTexelBufferArrayDynamicIndexing,
5306u32 => Self::UniformBufferArrayNonUniformIndexing,
5307u32 => Self::SampledImageArrayNonUniformIndexing,
5308u32 => Self::StorageBufferArrayNonUniformIndexing,
5309u32 => Self::StorageImageArrayNonUniformIndexing,
5310u32 => Self::InputAttachmentArrayNonUniformIndexing,
5311u32 => Self::UniformTexelBufferArrayNonUniformIndexing,
5312u32 => Self::StorageTexelBufferArrayNonUniformIndexing,
5340u32 => Self::RayTracingNV,
5341u32 => Self::RayTracingMotionBlurNV,
5345u32 => Self::VulkanMemoryModel,
5346u32 => Self::VulkanMemoryModelDeviceScope,
5347u32 => Self::PhysicalStorageBufferAddresses,
5350u32 => Self::ComputeDerivativeGroupLinearNV,
5353u32 => Self::RayTracingProvisionalKHR,
5357u32 => Self::CooperativeMatrixNV,
5363u32 => Self::FragmentShaderSampleInterlockEXT,
5372u32 => Self::FragmentShaderShadingRateInterlockEXT,
5373u32 => Self::ShaderSMBuiltinsNV,
5378u32 => Self::FragmentShaderPixelInterlockEXT,
5379u32 => Self::DemoteToHelperInvocation,
5390u32 => Self::BindlessTextureNV,
5568u32 => Self::SubgroupShuffleINTEL,
5569u32 => Self::SubgroupBufferBlockIOINTEL,
5570u32 => Self::SubgroupImageBlockIOINTEL,
5579u32 => Self::SubgroupImageMediaBlockIOINTEL,
5582u32 => Self::RoundToInfinityINTEL,
5583u32 => Self::FloatingPointModeINTEL,
5584u32 => Self::IntegerFunctions2INTEL,
5603u32 => Self::FunctionPointersINTEL,
5604u32 => Self::IndirectReferencesINTEL,
5606u32 => Self::AsmINTEL,
5612u32 => Self::AtomicFloat32MinMaxEXT,
5613u32 => Self::AtomicFloat64MinMaxEXT,
5616u32 => Self::AtomicFloat16MinMaxEXT,
5617u32 => Self::VectorComputeINTEL,
5619u32 => Self::VectorAnyINTEL,
5629u32 => Self::ExpectAssumeKHR,
5696u32 => Self::SubgroupAvcMotionEstimationINTEL,
5697u32 => Self::SubgroupAvcMotionEstimationIntraINTEL,
5698u32 => Self::SubgroupAvcMotionEstimationChromaINTEL,
5817u32 => Self::VariableLengthArrayINTEL,
5821u32 => Self::FunctionFloatControlINTEL,
5824u32 => Self::FPGAMemoryAttributesINTEL,
5837u32 => Self::FPFastMathModeINTEL,
5844u32 => Self::ArbitraryPrecisionIntegersINTEL,
5845u32 => Self::ArbitraryPrecisionFloatingPointINTEL,
5886u32 => Self::UnstructuredLoopControlsINTEL,
5888u32 => Self::FPGALoopControlsINTEL,
5892u32 => Self::KernelAttributesINTEL,
5897u32 => Self::FPGAKernelAttributesINTEL,
5898u32 => Self::FPGAMemoryAccessesINTEL,
5904u32 => Self::FPGAClusterAttributesINTEL,
5906u32 => Self::LoopFuseINTEL,
5920u32 => Self::FPGABufferLocationINTEL,
5922u32 => Self::ArbitraryPrecisionFixedPointINTEL,
5935u32 => Self::USMStorageClassesINTEL,
5943u32 => Self::IOPipesINTEL,
5945u32 => Self::BlockingPipesINTEL,
5948u32 => Self::FPGARegINTEL,
6016u32 => Self::DotProductInputAll,
6017u32 => Self::DotProductInput4x8Bit,
6018u32 => Self::DotProductInput4x8BitPacked,
6019u32 => Self::DotProduct,
6025u32 => Self::BitInstructions,
6033u32 => Self::AtomicFloat32AddEXT,
6034u32 => Self::AtomicFloat64AddEXT,
6089u32 => Self::LongConstantCompositeINTEL,
6094u32 => Self::OptNoneINTEL,
6095u32 => Self::AtomicFloat16AddEXT,
6114u32 => Self::DebugInfoModuleINTEL,
value => return Err(reader.map_err(ParseErrors::UnknownEnumerant("Capability", value))),
})
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[allow(non_camel_case_types)]
pub enum RayQueryIntersection {
RayQueryCandidateIntersectionKHR,
RayQueryCommittedIntersectionKHR,
}
impl RayQueryIntersection {
#[allow(dead_code)]
fn parse(reader: &mut InstructionReader<'_>) -> Result<RayQueryIntersection, ParseError> {
Ok(match reader.next_u32()? {
0u32 => Self::RayQueryCandidateIntersectionKHR,
1u32 => Self::RayQueryCommittedIntersectionKHR,
value => {
return Err(
reader.map_err(ParseErrors::UnknownEnumerant("RayQueryIntersection", value))
)
}
})
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[allow(non_camel_case_types)]
pub enum RayQueryCommittedIntersectionType {
RayQueryCommittedIntersectionNoneKHR,
RayQueryCommittedIntersectionTriangleKHR,
RayQueryCommittedIntersectionGeneratedKHR,
}
impl RayQueryCommittedIntersectionType {
#[allow(dead_code)]
fn parse(
reader: &mut InstructionReader<'_>,
) -> Result<RayQueryCommittedIntersectionType, ParseError> {
Ok(match reader.next_u32()? {
0u32 => Self::RayQueryCommittedIntersectionNoneKHR,
1u32 => Self::RayQueryCommittedIntersectionTriangleKHR,
2u32 => Self::RayQueryCommittedIntersectionGeneratedKHR,
value => {
return Err(reader.map_err(ParseErrors::UnknownEnumerant(
"RayQueryCommittedIntersectionType",
value,
)))
}
})
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[allow(non_camel_case_types)]
pub enum RayQueryCandidateIntersectionType {
RayQueryCandidateIntersectionTriangleKHR,
RayQueryCandidateIntersectionAABBKHR,
}
impl RayQueryCandidateIntersectionType {
#[allow(dead_code)]
fn parse(
reader: &mut InstructionReader<'_>,
) -> Result<RayQueryCandidateIntersectionType, ParseError> {
Ok(match reader.next_u32()? {
0u32 => Self::RayQueryCandidateIntersectionTriangleKHR,
1u32 => Self::RayQueryCandidateIntersectionAABBKHR,
value => {
return Err(reader.map_err(ParseErrors::UnknownEnumerant(
"RayQueryCandidateIntersectionType",
value,
)))
}
})
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[allow(non_camel_case_types)]
pub enum PackedVectorFormat {
PackedVectorFormat4x8Bit,
}
impl PackedVectorFormat {
#[allow(dead_code)]
fn parse(reader: &mut InstructionReader<'_>) -> Result<PackedVectorFormat, ParseError> {
Ok(match reader.next_u32()? {
0u32 => Self::PackedVectorFormat4x8Bit,
value => {
return Err(
reader.map_err(ParseErrors::UnknownEnumerant("PackedVectorFormat", value))
)
}
})
}
}