aboutsummaryrefslogtreecommitdiff
path: root/src/codegen/spirv/spec.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/codegen/spirv/spec.zig')
-rw-r--r--src/codegen/spirv/spec.zig1053
1 files changed, 985 insertions, 68 deletions
diff --git a/src/codegen/spirv/spec.zig b/src/codegen/spirv/spec.zig
index 26d1925646..bb7453c006 100644
--- a/src/codegen/spirv/spec.zig
+++ b/src/codegen/spirv/spec.zig
@@ -1,8 +1,46 @@
//! This file is auto-generated by tools/gen_spirv_spec.zig.
const Version = @import("std").builtin.Version;
+
+pub const Word = u32;
+pub const IdResultType = struct {
+ id: Word,
+ pub fn toRef(self: IdResultType) IdRef {
+ return .{ .id = self.id };
+ }
+};
+pub const IdResult = struct {
+ id: Word,
+ pub fn toRef(self: IdResult) IdRef {
+ return .{ .id = self.id };
+ }
+ pub fn toResultType(self: IdResult) IdResultType {
+ return .{ .id = self.id };
+ }
+};
+pub const IdRef = struct { id: Word };
+
+pub const IdMemorySemantics = IdRef;
+pub const IdScope = IdRef;
+
+pub const LiteralInteger = Word;
+pub const LiteralString = []const u8;
+pub const LiteralContextDependentNumber = union(enum) {
+ int32: i32,
+ uint32: u32,
+ int64: i64,
+ uint64: u64,
+ float32: f32,
+ float64: f64,
+};
+pub const LiteralExtInstInteger = struct { inst: Word };
+pub const LiteralSpecConstantOpInteger = struct { opcode: Opcode };
+pub const PairLiteralIntegerIdRef = struct { value: LiteralInteger, label: IdRef };
+pub const PairIdRefLiteralInteger = struct { target: IdRef, member: LiteralInteger };
+pub const PairIdRefIdRef = [2]IdRef;
+
pub const version = Version{ .major = 1, .minor = 5, .patch = 4 };
-pub const magic_number: u32 = 0x07230203;
+pub const magic_number: Word = 0x07230203;
pub const Opcode = enum(u16) {
OpNop = 0,
OpUndef = 1,
@@ -381,11 +419,11 @@ pub const Opcode = enum(u16) {
OpImageSampleFootprintNV = 5283,
OpGroupNonUniformPartitionNV = 5296,
OpWritePackedPrimitiveIndices4x8NV = 5299,
- OpReportIntersectionNV = 5334,
+ OpReportIntersectionKHR = 5334,
OpIgnoreIntersectionNV = 5335,
OpTerminateRayNV = 5336,
OpTraceNV = 5337,
- OpTypeAccelerationStructureNV = 5341,
+ OpTypeAccelerationStructureKHR = 5341,
OpExecuteCallableNV = 5344,
OpTypeCooperativeMatrixNV = 5358,
OpCooperativeMatrixLoadNV = 5359,
@@ -580,10 +618,592 @@ pub const Opcode = enum(u16) {
OpTypeStructContinuedINTEL = 6090,
OpConstantCompositeContinuedINTEL = 6091,
OpSpecConstantCompositeContinuedINTEL = 6092,
- _,
- const OpReportIntersectionKHR: Opcode = .OpReportIntersectionNV;
- const OpTypeAccelerationStructureKHR: Opcode = .OpTypeAccelerationStructureNV;
+ pub const OpReportIntersectionNV = Opcode.OpReportIntersectionKHR;
+ pub const OpTypeAccelerationStructureNV = Opcode.OpTypeAccelerationStructureKHR;
+ pub const OpDecorateStringGOOGLE = Opcode.OpDecorateString;
+ pub const OpMemberDecorateStringGOOGLE = Opcode.OpMemberDecorateString;
+
+ pub fn Operands(comptime self: Opcode) type {
+ return switch (self) {
+ .OpNop => void,
+ .OpUndef => struct { id_result_type: IdResultType, id_result: IdResult },
+ .OpSourceContinued => struct { continued_source: LiteralString },
+ .OpSource => struct { source_language: SourceLanguage, version: LiteralInteger, file: ?IdRef = null, source: ?LiteralString = null },
+ .OpSourceExtension => struct { extension: LiteralString },
+ .OpName => struct { target: IdRef, name: LiteralString },
+ .OpMemberName => struct { type: IdRef, member: LiteralInteger, name: LiteralString },
+ .OpString => struct { id_result: IdResult, string: LiteralString },
+ .OpLine => struct { file: IdRef, line: LiteralInteger, column: LiteralInteger },
+ .OpExtension => struct { name: LiteralString },
+ .OpExtInstImport => struct { id_result: IdResult, name: LiteralString },
+ .OpExtInst => struct { id_result_type: IdResultType, id_result: IdResult, set: IdRef, instruction: LiteralExtInstInteger, id_ref_4: []const IdRef = &.{} },
+ .OpMemoryModel => struct { addressing_model: AddressingModel, memory_model: MemoryModel },
+ .OpEntryPoint => struct { execution_model: ExecutionModel, entry_point: IdRef, name: LiteralString, interface: []const IdRef = &.{} },
+ .OpExecutionMode => struct { entry_point: IdRef, mode: ExecutionMode.Extended },
+ .OpCapability => struct { capability: Capability },
+ .OpTypeVoid => struct { id_result: IdResult },
+ .OpTypeBool => struct { id_result: IdResult },
+ .OpTypeInt => struct { id_result: IdResult, width: LiteralInteger, signedness: LiteralInteger },
+ .OpTypeFloat => struct { id_result: IdResult, width: LiteralInteger },
+ .OpTypeVector => struct { id_result: IdResult, component_type: IdRef, component_count: LiteralInteger },
+ .OpTypeMatrix => struct { id_result: IdResult, column_type: IdRef, column_count: LiteralInteger },
+ .OpTypeImage => struct { id_result: IdResult, sampled_type: IdRef, dim: Dim, depth: LiteralInteger, arrayed: LiteralInteger, ms: LiteralInteger, sampled: LiteralInteger, image_format: ImageFormat, access_qualifier: ?AccessQualifier = null },
+ .OpTypeSampler => struct { id_result: IdResult },
+ .OpTypeSampledImage => struct { id_result: IdResult, image_type: IdRef },
+ .OpTypeArray => struct { id_result: IdResult, element_type: IdRef, length: IdRef },
+ .OpTypeRuntimeArray => struct { id_result: IdResult, element_type: IdRef },
+ .OpTypeStruct => struct { id_result: IdResult, id_ref: []const IdRef = &.{} },
+ .OpTypeOpaque => struct { id_result: IdResult, literal_string: LiteralString },
+ .OpTypePointer => struct { id_result: IdResult, storage_class: StorageClass, type: IdRef },
+ .OpTypeFunction => struct { id_result: IdResult, return_type: IdRef, id_ref_2: []const IdRef = &.{} },
+ .OpTypeEvent => struct { id_result: IdResult },
+ .OpTypeDeviceEvent => struct { id_result: IdResult },
+ .OpTypeReserveId => struct { id_result: IdResult },
+ .OpTypeQueue => struct { id_result: IdResult },
+ .OpTypePipe => struct { id_result: IdResult, qualifier: AccessQualifier },
+ .OpTypeForwardPointer => struct { pointer_type: IdRef, storage_class: StorageClass },
+ .OpConstantTrue => struct { id_result_type: IdResultType, id_result: IdResult },
+ .OpConstantFalse => struct { id_result_type: IdResultType, id_result: IdResult },
+ .OpConstant => struct { id_result_type: IdResultType, id_result: IdResult, value: LiteralContextDependentNumber },
+ .OpConstantComposite => struct { id_result_type: IdResultType, id_result: IdResult, constituents: []const IdRef = &.{} },
+ .OpConstantSampler => struct { id_result_type: IdResultType, id_result: IdResult, sampler_addressing_mode: SamplerAddressingMode, param: LiteralInteger, sampler_filter_mode: SamplerFilterMode },
+ .OpConstantNull => struct { id_result_type: IdResultType, id_result: IdResult },
+ .OpSpecConstantTrue => struct { id_result_type: IdResultType, id_result: IdResult },
+ .OpSpecConstantFalse => struct { id_result_type: IdResultType, id_result: IdResult },
+ .OpSpecConstant => struct { id_result_type: IdResultType, id_result: IdResult, value: LiteralContextDependentNumber },
+ .OpSpecConstantComposite => struct { id_result_type: IdResultType, id_result: IdResult, constituents: []const IdRef = &.{} },
+ .OpSpecConstantOp => struct { id_result_type: IdResultType, id_result: IdResult, opcode: LiteralSpecConstantOpInteger },
+ .OpFunction => struct { id_result_type: IdResultType, id_result: IdResult, function_control: FunctionControl, function_type: IdRef },
+ .OpFunctionParameter => struct { id_result_type: IdResultType, id_result: IdResult },
+ .OpFunctionEnd => void,
+ .OpFunctionCall => struct { id_result_type: IdResultType, id_result: IdResult, function: IdRef, id_ref_3: []const IdRef = &.{} },
+ .OpVariable => struct { id_result_type: IdResultType, id_result: IdResult, storage_class: StorageClass, initializer: ?IdRef = null },
+ .OpImageTexelPointer => struct { id_result_type: IdResultType, id_result: IdResult, image: IdRef, coordinate: IdRef, sample: IdRef },
+ .OpLoad => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory_access: ?MemoryAccess.Extended = null },
+ .OpStore => struct { pointer: IdRef, object: IdRef, memory_access: ?MemoryAccess.Extended = null },
+ .OpCopyMemory => struct { target: IdRef, source: IdRef, memory_access_2: ?MemoryAccess.Extended = null, memory_access_3: ?MemoryAccess.Extended = null },
+ .OpCopyMemorySized => struct { target: IdRef, source: IdRef, size: IdRef, memory_access_3: ?MemoryAccess.Extended = null, memory_access_4: ?MemoryAccess.Extended = null },
+ .OpAccessChain => struct { id_result_type: IdResultType, id_result: IdResult, base: IdRef, indexes: []const IdRef = &.{} },
+ .OpInBoundsAccessChain => struct { id_result_type: IdResultType, id_result: IdResult, base: IdRef, indexes: []const IdRef = &.{} },
+ .OpPtrAccessChain => struct { id_result_type: IdResultType, id_result: IdResult, base: IdRef, element: IdRef, indexes: []const IdRef = &.{} },
+ .OpArrayLength => struct { id_result_type: IdResultType, id_result: IdResult, structure: IdRef, array_member: LiteralInteger },
+ .OpGenericPtrMemSemantics => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef },
+ .OpInBoundsPtrAccessChain => struct { id_result_type: IdResultType, id_result: IdResult, base: IdRef, element: IdRef, indexes: []const IdRef = &.{} },
+ .OpDecorate => struct { target: IdRef, decoration: Decoration.Extended },
+ .OpMemberDecorate => struct { structure_type: IdRef, member: LiteralInteger, decoration: Decoration.Extended },
+ .OpDecorationGroup => struct { id_result: IdResult },
+ .OpGroupDecorate => struct { decoration_group: IdRef, targets: []const IdRef = &.{} },
+ .OpGroupMemberDecorate => struct { decoration_group: IdRef, targets: []const PairIdRefLiteralInteger = &.{} },
+ .OpVectorExtractDynamic => struct { id_result_type: IdResultType, id_result: IdResult, vector: IdRef, index: IdRef },
+ .OpVectorInsertDynamic => struct { id_result_type: IdResultType, id_result: IdResult, vector: IdRef, component: IdRef, index: IdRef },
+ .OpVectorShuffle => struct { id_result_type: IdResultType, id_result: IdResult, vector_1: IdRef, vector_2: IdRef, components: []const LiteralInteger = &.{} },
+ .OpCompositeConstruct => struct { id_result_type: IdResultType, id_result: IdResult, constituents: []const IdRef = &.{} },
+ .OpCompositeExtract => struct { id_result_type: IdResultType, id_result: IdResult, composite: IdRef, indexes: []const LiteralInteger = &.{} },
+ .OpCompositeInsert => struct { id_result_type: IdResultType, id_result: IdResult, object: IdRef, composite: IdRef, indexes: []const LiteralInteger = &.{} },
+ .OpCopyObject => struct { id_result_type: IdResultType, id_result: IdResult, operand: IdRef },
+ .OpTranspose => struct { id_result_type: IdResultType, id_result: IdResult, matrix: IdRef },
+ .OpSampledImage => struct { id_result_type: IdResultType, id_result: IdResult, image: IdRef, sampler: IdRef },
+ .OpImageSampleImplicitLod => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, image_operands: ?ImageOperands.Extended = null },
+ .OpImageSampleExplicitLod => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, image_operands: ImageOperands.Extended },
+ .OpImageSampleDrefImplicitLod => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, d_ref: IdRef, image_operands: ?ImageOperands.Extended = null },
+ .OpImageSampleDrefExplicitLod => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, d_ref: IdRef, image_operands: ImageOperands.Extended },
+ .OpImageSampleProjImplicitLod => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, image_operands: ?ImageOperands.Extended = null },
+ .OpImageSampleProjExplicitLod => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, image_operands: ImageOperands.Extended },
+ .OpImageSampleProjDrefImplicitLod => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, d_ref: IdRef, image_operands: ?ImageOperands.Extended = null },
+ .OpImageSampleProjDrefExplicitLod => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, d_ref: IdRef, image_operands: ImageOperands.Extended },
+ .OpImageFetch => struct { id_result_type: IdResultType, id_result: IdResult, image: IdRef, coordinate: IdRef, image_operands: ?ImageOperands.Extended = null },
+ .OpImageGather => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, component: IdRef, image_operands: ?ImageOperands.Extended = null },
+ .OpImageDrefGather => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, d_ref: IdRef, image_operands: ?ImageOperands.Extended = null },
+ .OpImageRead => struct { id_result_type: IdResultType, id_result: IdResult, image: IdRef, coordinate: IdRef, image_operands: ?ImageOperands.Extended = null },
+ .OpImageWrite => struct { image: IdRef, coordinate: IdRef, texel: IdRef, image_operands: ?ImageOperands.Extended = null },
+ .OpImage => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef },
+ .OpImageQueryFormat => struct { id_result_type: IdResultType, id_result: IdResult, image: IdRef },
+ .OpImageQueryOrder => struct { id_result_type: IdResultType, id_result: IdResult, image: IdRef },
+ .OpImageQuerySizeLod => struct { id_result_type: IdResultType, id_result: IdResult, image: IdRef, level_of_detail: IdRef },
+ .OpImageQuerySize => struct { id_result_type: IdResultType, id_result: IdResult, image: IdRef },
+ .OpImageQueryLod => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef },
+ .OpImageQueryLevels => struct { id_result_type: IdResultType, id_result: IdResult, image: IdRef },
+ .OpImageQuerySamples => struct { id_result_type: IdResultType, id_result: IdResult, image: IdRef },
+ .OpConvertFToU => struct { id_result_type: IdResultType, id_result: IdResult, float_value: IdRef },
+ .OpConvertFToS => struct { id_result_type: IdResultType, id_result: IdResult, float_value: IdRef },
+ .OpConvertSToF => struct { id_result_type: IdResultType, id_result: IdResult, signed_value: IdRef },
+ .OpConvertUToF => struct { id_result_type: IdResultType, id_result: IdResult, unsigned_value: IdRef },
+ .OpUConvert => struct { id_result_type: IdResultType, id_result: IdResult, unsigned_value: IdRef },
+ .OpSConvert => struct { id_result_type: IdResultType, id_result: IdResult, signed_value: IdRef },
+ .OpFConvert => struct { id_result_type: IdResultType, id_result: IdResult, float_value: IdRef },
+ .OpQuantizeToF16 => struct { id_result_type: IdResultType, id_result: IdResult, value: IdRef },
+ .OpConvertPtrToU => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef },
+ .OpSatConvertSToU => struct { id_result_type: IdResultType, id_result: IdResult, signed_value: IdRef },
+ .OpSatConvertUToS => struct { id_result_type: IdResultType, id_result: IdResult, unsigned_value: IdRef },
+ .OpConvertUToPtr => struct { id_result_type: IdResultType, id_result: IdResult, integer_value: IdRef },
+ .OpPtrCastToGeneric => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef },
+ .OpGenericCastToPtr => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef },
+ .OpGenericCastToPtrExplicit => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, storage: StorageClass },
+ .OpBitcast => struct { id_result_type: IdResultType, id_result: IdResult, operand: IdRef },
+ .OpSNegate => struct { id_result_type: IdResultType, id_result: IdResult, operand: IdRef },
+ .OpFNegate => struct { id_result_type: IdResultType, id_result: IdResult, operand: IdRef },
+ .OpIAdd => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpFAdd => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpISub => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpFSub => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpIMul => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpFMul => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpUDiv => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpSDiv => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpFDiv => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpUMod => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpSRem => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpSMod => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpFRem => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpFMod => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpVectorTimesScalar => struct { id_result_type: IdResultType, id_result: IdResult, vector: IdRef, scalar: IdRef },
+ .OpMatrixTimesScalar => struct { id_result_type: IdResultType, id_result: IdResult, matrix: IdRef, scalar: IdRef },
+ .OpVectorTimesMatrix => struct { id_result_type: IdResultType, id_result: IdResult, vector: IdRef, matrix: IdRef },
+ .OpMatrixTimesVector => struct { id_result_type: IdResultType, id_result: IdResult, matrix: IdRef, vector: IdRef },
+ .OpMatrixTimesMatrix => struct { id_result_type: IdResultType, id_result: IdResult, leftmatrix: IdRef, rightmatrix: IdRef },
+ .OpOuterProduct => struct { id_result_type: IdResultType, id_result: IdResult, vector_1: IdRef, vector_2: IdRef },
+ .OpDot => struct { id_result_type: IdResultType, id_result: IdResult, vector_1: IdRef, vector_2: IdRef },
+ .OpIAddCarry => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpISubBorrow => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpUMulExtended => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpSMulExtended => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpAny => struct { id_result_type: IdResultType, id_result: IdResult, vector: IdRef },
+ .OpAll => struct { id_result_type: IdResultType, id_result: IdResult, vector: IdRef },
+ .OpIsNan => struct { id_result_type: IdResultType, id_result: IdResult, x: IdRef },
+ .OpIsInf => struct { id_result_type: IdResultType, id_result: IdResult, x: IdRef },
+ .OpIsFinite => struct { id_result_type: IdResultType, id_result: IdResult, x: IdRef },
+ .OpIsNormal => struct { id_result_type: IdResultType, id_result: IdResult, x: IdRef },
+ .OpSignBitSet => struct { id_result_type: IdResultType, id_result: IdResult, x: IdRef },
+ .OpLessOrGreater => struct { id_result_type: IdResultType, id_result: IdResult, x: IdRef, y: IdRef },
+ .OpOrdered => struct { id_result_type: IdResultType, id_result: IdResult, x: IdRef, y: IdRef },
+ .OpUnordered => struct { id_result_type: IdResultType, id_result: IdResult, x: IdRef, y: IdRef },
+ .OpLogicalEqual => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpLogicalNotEqual => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpLogicalOr => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpLogicalAnd => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpLogicalNot => struct { id_result_type: IdResultType, id_result: IdResult, operand: IdRef },
+ .OpSelect => struct { id_result_type: IdResultType, id_result: IdResult, condition: IdRef, object_1: IdRef, object_2: IdRef },
+ .OpIEqual => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpINotEqual => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpUGreaterThan => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpSGreaterThan => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpUGreaterThanEqual => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpSGreaterThanEqual => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpULessThan => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpSLessThan => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpULessThanEqual => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpSLessThanEqual => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpFOrdEqual => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpFUnordEqual => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpFOrdNotEqual => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpFUnordNotEqual => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpFOrdLessThan => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpFUnordLessThan => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpFOrdGreaterThan => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpFUnordGreaterThan => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpFOrdLessThanEqual => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpFUnordLessThanEqual => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpFOrdGreaterThanEqual => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpFUnordGreaterThanEqual => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpShiftRightLogical => struct { id_result_type: IdResultType, id_result: IdResult, base: IdRef, shift: IdRef },
+ .OpShiftRightArithmetic => struct { id_result_type: IdResultType, id_result: IdResult, base: IdRef, shift: IdRef },
+ .OpShiftLeftLogical => struct { id_result_type: IdResultType, id_result: IdResult, base: IdRef, shift: IdRef },
+ .OpBitwiseOr => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpBitwiseXor => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpBitwiseAnd => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpNot => struct { id_result_type: IdResultType, id_result: IdResult, operand: IdRef },
+ .OpBitFieldInsert => struct { id_result_type: IdResultType, id_result: IdResult, base: IdRef, insert: IdRef, offset: IdRef, count: IdRef },
+ .OpBitFieldSExtract => struct { id_result_type: IdResultType, id_result: IdResult, base: IdRef, offset: IdRef, count: IdRef },
+ .OpBitFieldUExtract => struct { id_result_type: IdResultType, id_result: IdResult, base: IdRef, offset: IdRef, count: IdRef },
+ .OpBitReverse => struct { id_result_type: IdResultType, id_result: IdResult, base: IdRef },
+ .OpBitCount => struct { id_result_type: IdResultType, id_result: IdResult, base: IdRef },
+ .OpDPdx => struct { id_result_type: IdResultType, id_result: IdResult, p: IdRef },
+ .OpDPdy => struct { id_result_type: IdResultType, id_result: IdResult, p: IdRef },
+ .OpFwidth => struct { id_result_type: IdResultType, id_result: IdResult, p: IdRef },
+ .OpDPdxFine => struct { id_result_type: IdResultType, id_result: IdResult, p: IdRef },
+ .OpDPdyFine => struct { id_result_type: IdResultType, id_result: IdResult, p: IdRef },
+ .OpFwidthFine => struct { id_result_type: IdResultType, id_result: IdResult, p: IdRef },
+ .OpDPdxCoarse => struct { id_result_type: IdResultType, id_result: IdResult, p: IdRef },
+ .OpDPdyCoarse => struct { id_result_type: IdResultType, id_result: IdResult, p: IdRef },
+ .OpFwidthCoarse => struct { id_result_type: IdResultType, id_result: IdResult, p: IdRef },
+ .OpEmitVertex => void,
+ .OpEndPrimitive => void,
+ .OpEmitStreamVertex => struct { stream: IdRef },
+ .OpEndStreamPrimitive => struct { stream: IdRef },
+ .OpControlBarrier => struct { execution: IdScope, memory: IdScope, semantics: IdMemorySemantics },
+ .OpMemoryBarrier => struct { memory: IdScope, semantics: IdMemorySemantics },
+ .OpAtomicLoad => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics },
+ .OpAtomicStore => struct { pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics, value: IdRef },
+ .OpAtomicExchange => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics, value: IdRef },
+ .OpAtomicCompareExchange => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, equal: IdMemorySemantics, unequal: IdMemorySemantics, value: IdRef, comparator: IdRef },
+ .OpAtomicCompareExchangeWeak => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, equal: IdMemorySemantics, unequal: IdMemorySemantics, value: IdRef, comparator: IdRef },
+ .OpAtomicIIncrement => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics },
+ .OpAtomicIDecrement => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics },
+ .OpAtomicIAdd => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics, value: IdRef },
+ .OpAtomicISub => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics, value: IdRef },
+ .OpAtomicSMin => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics, value: IdRef },
+ .OpAtomicUMin => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics, value: IdRef },
+ .OpAtomicSMax => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics, value: IdRef },
+ .OpAtomicUMax => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics, value: IdRef },
+ .OpAtomicAnd => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics, value: IdRef },
+ .OpAtomicOr => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics, value: IdRef },
+ .OpAtomicXor => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics, value: IdRef },
+ .OpPhi => struct { id_result_type: IdResultType, id_result: IdResult, pair_id_ref_id_ref: []const PairIdRefIdRef = &.{} },
+ .OpLoopMerge => struct { merge_block: IdRef, continue_target: IdRef, loop_control: LoopControl.Extended },
+ .OpSelectionMerge => struct { merge_block: IdRef, selection_control: SelectionControl },
+ .OpLabel => struct { id_result: IdResult },
+ .OpBranch => struct { target_label: IdRef },
+ .OpBranchConditional => struct { condition: IdRef, true_label: IdRef, false_label: IdRef, branch_weights: []const LiteralInteger = &.{} },
+ .OpSwitch => struct { selector: IdRef, default: IdRef, target: []const PairLiteralIntegerIdRef = &.{} },
+ .OpKill => void,
+ .OpReturn => void,
+ .OpReturnValue => struct { value: IdRef },
+ .OpUnreachable => void,
+ .OpLifetimeStart => struct { pointer: IdRef, size: LiteralInteger },
+ .OpLifetimeStop => struct { pointer: IdRef, size: LiteralInteger },
+ .OpGroupAsyncCopy => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, destination: IdRef, source: IdRef, num_elements: IdRef, stride: IdRef, event: IdRef },
+ .OpGroupWaitEvents => struct { execution: IdScope, num_events: IdRef, events_list: IdRef },
+ .OpGroupAll => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, predicate: IdRef },
+ .OpGroupAny => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, predicate: IdRef },
+ .OpGroupBroadcast => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, value: IdRef, localid: IdRef },
+ .OpGroupIAdd => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
+ .OpGroupFAdd => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
+ .OpGroupFMin => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
+ .OpGroupUMin => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
+ .OpGroupSMin => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
+ .OpGroupFMax => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
+ .OpGroupUMax => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
+ .OpGroupSMax => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
+ .OpReadPipe => struct { id_result_type: IdResultType, id_result: IdResult, pipe: IdRef, pointer: IdRef, packet_size: IdRef, packet_alignment: IdRef },
+ .OpWritePipe => struct { id_result_type: IdResultType, id_result: IdResult, pipe: IdRef, pointer: IdRef, packet_size: IdRef, packet_alignment: IdRef },
+ .OpReservedReadPipe => struct { id_result_type: IdResultType, id_result: IdResult, pipe: IdRef, reserve_id: IdRef, index: IdRef, pointer: IdRef, packet_size: IdRef, packet_alignment: IdRef },
+ .OpReservedWritePipe => struct { id_result_type: IdResultType, id_result: IdResult, pipe: IdRef, reserve_id: IdRef, index: IdRef, pointer: IdRef, packet_size: IdRef, packet_alignment: IdRef },
+ .OpReserveReadPipePackets => struct { id_result_type: IdResultType, id_result: IdResult, pipe: IdRef, num_packets: IdRef, packet_size: IdRef, packet_alignment: IdRef },
+ .OpReserveWritePipePackets => struct { id_result_type: IdResultType, id_result: IdResult, pipe: IdRef, num_packets: IdRef, packet_size: IdRef, packet_alignment: IdRef },
+ .OpCommitReadPipe => struct { pipe: IdRef, reserve_id: IdRef, packet_size: IdRef, packet_alignment: IdRef },
+ .OpCommitWritePipe => struct { pipe: IdRef, reserve_id: IdRef, packet_size: IdRef, packet_alignment: IdRef },
+ .OpIsValidReserveId => struct { id_result_type: IdResultType, id_result: IdResult, reserve_id: IdRef },
+ .OpGetNumPipePackets => struct { id_result_type: IdResultType, id_result: IdResult, pipe: IdRef, packet_size: IdRef, packet_alignment: IdRef },
+ .OpGetMaxPipePackets => struct { id_result_type: IdResultType, id_result: IdResult, pipe: IdRef, packet_size: IdRef, packet_alignment: IdRef },
+ .OpGroupReserveReadPipePackets => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, pipe: IdRef, num_packets: IdRef, packet_size: IdRef, packet_alignment: IdRef },
+ .OpGroupReserveWritePipePackets => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, pipe: IdRef, num_packets: IdRef, packet_size: IdRef, packet_alignment: IdRef },
+ .OpGroupCommitReadPipe => struct { execution: IdScope, pipe: IdRef, reserve_id: IdRef, packet_size: IdRef, packet_alignment: IdRef },
+ .OpGroupCommitWritePipe => struct { execution: IdScope, pipe: IdRef, reserve_id: IdRef, packet_size: IdRef, packet_alignment: IdRef },
+ .OpEnqueueMarker => struct { id_result_type: IdResultType, id_result: IdResult, queue: IdRef, num_events: IdRef, wait_events: IdRef, ret_event: IdRef },
+ .OpEnqueueKernel => struct { id_result_type: IdResultType, id_result: IdResult, queue: IdRef, flags: IdRef, nd_range: IdRef, num_events: IdRef, wait_events: IdRef, ret_event: IdRef, invoke: IdRef, param: IdRef, param_size: IdRef, param_align: IdRef, local_size: []const IdRef = &.{} },
+ .OpGetKernelNDrangeSubGroupCount => struct { id_result_type: IdResultType, id_result: IdResult, nd_range: IdRef, invoke: IdRef, param: IdRef, param_size: IdRef, param_align: IdRef },
+ .OpGetKernelNDrangeMaxSubGroupSize => struct { id_result_type: IdResultType, id_result: IdResult, nd_range: IdRef, invoke: IdRef, param: IdRef, param_size: IdRef, param_align: IdRef },
+ .OpGetKernelWorkGroupSize => struct { id_result_type: IdResultType, id_result: IdResult, invoke: IdRef, param: IdRef, param_size: IdRef, param_align: IdRef },
+ .OpGetKernelPreferredWorkGroupSizeMultiple => struct { id_result_type: IdResultType, id_result: IdResult, invoke: IdRef, param: IdRef, param_size: IdRef, param_align: IdRef },
+ .OpRetainEvent => struct { event: IdRef },
+ .OpReleaseEvent => struct { event: IdRef },
+ .OpCreateUserEvent => struct { id_result_type: IdResultType, id_result: IdResult },
+ .OpIsValidEvent => struct { id_result_type: IdResultType, id_result: IdResult, event: IdRef },
+ .OpSetUserEventStatus => struct { event: IdRef, status: IdRef },
+ .OpCaptureEventProfilingInfo => struct { event: IdRef, profiling_info: IdRef, value: IdRef },
+ .OpGetDefaultQueue => struct { id_result_type: IdResultType, id_result: IdResult },
+ .OpBuildNDRange => struct { id_result_type: IdResultType, id_result: IdResult, globalworksize: IdRef, localworksize: IdRef, globalworkoffset: IdRef },
+ .OpImageSparseSampleImplicitLod => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, image_operands: ?ImageOperands.Extended = null },
+ .OpImageSparseSampleExplicitLod => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, image_operands: ImageOperands.Extended },
+ .OpImageSparseSampleDrefImplicitLod => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, d_ref: IdRef, image_operands: ?ImageOperands.Extended = null },
+ .OpImageSparseSampleDrefExplicitLod => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, d_ref: IdRef, image_operands: ImageOperands.Extended },
+ .OpImageSparseSampleProjImplicitLod => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, image_operands: ?ImageOperands.Extended = null },
+ .OpImageSparseSampleProjExplicitLod => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, image_operands: ImageOperands.Extended },
+ .OpImageSparseSampleProjDrefImplicitLod => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, d_ref: IdRef, image_operands: ?ImageOperands.Extended = null },
+ .OpImageSparseSampleProjDrefExplicitLod => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, d_ref: IdRef, image_operands: ImageOperands.Extended },
+ .OpImageSparseFetch => struct { id_result_type: IdResultType, id_result: IdResult, image: IdRef, coordinate: IdRef, image_operands: ?ImageOperands.Extended = null },
+ .OpImageSparseGather => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, component: IdRef, image_operands: ?ImageOperands.Extended = null },
+ .OpImageSparseDrefGather => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, d_ref: IdRef, image_operands: ?ImageOperands.Extended = null },
+ .OpImageSparseTexelsResident => struct { id_result_type: IdResultType, id_result: IdResult, resident_code: IdRef },
+ .OpNoLine => void,
+ .OpAtomicFlagTestAndSet => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics },
+ .OpAtomicFlagClear => struct { pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics },
+ .OpImageSparseRead => struct { id_result_type: IdResultType, id_result: IdResult, image: IdRef, coordinate: IdRef, image_operands: ?ImageOperands.Extended = null },
+ .OpSizeOf => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef },
+ .OpTypePipeStorage => struct { id_result: IdResult },
+ .OpConstantPipeStorage => struct { id_result_type: IdResultType, id_result: IdResult, packet_size: LiteralInteger, packet_alignment: LiteralInteger, capacity: LiteralInteger },
+ .OpCreatePipeFromPipeStorage => struct { id_result_type: IdResultType, id_result: IdResult, pipe_storage: IdRef },
+ .OpGetKernelLocalSizeForSubgroupCount => struct { id_result_type: IdResultType, id_result: IdResult, subgroup_count: IdRef, invoke: IdRef, param: IdRef, param_size: IdRef, param_align: IdRef },
+ .OpGetKernelMaxNumSubgroups => struct { id_result_type: IdResultType, id_result: IdResult, invoke: IdRef, param: IdRef, param_size: IdRef, param_align: IdRef },
+ .OpTypeNamedBarrier => struct { id_result: IdResult },
+ .OpNamedBarrierInitialize => struct { id_result_type: IdResultType, id_result: IdResult, subgroup_count: IdRef },
+ .OpMemoryNamedBarrier => struct { named_barrier: IdRef, memory: IdScope, semantics: IdMemorySemantics },
+ .OpModuleProcessed => struct { process: LiteralString },
+ .OpExecutionModeId => struct { entry_point: IdRef, mode: ExecutionMode.Extended },
+ .OpDecorateId => struct { target: IdRef, decoration: Decoration.Extended },
+ .OpGroupNonUniformElect => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope },
+ .OpGroupNonUniformAll => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, predicate: IdRef },
+ .OpGroupNonUniformAny => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, predicate: IdRef },
+ .OpGroupNonUniformAllEqual => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, value: IdRef },
+ .OpGroupNonUniformBroadcast => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, value: IdRef, id: IdRef },
+ .OpGroupNonUniformBroadcastFirst => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, value: IdRef },
+ .OpGroupNonUniformBallot => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, predicate: IdRef },
+ .OpGroupNonUniformInverseBallot => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, value: IdRef },
+ .OpGroupNonUniformBallotBitExtract => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, value: IdRef, index: IdRef },
+ .OpGroupNonUniformBallotBitCount => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, value: IdRef },
+ .OpGroupNonUniformBallotFindLSB => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, value: IdRef },
+ .OpGroupNonUniformBallotFindMSB => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, value: IdRef },
+ .OpGroupNonUniformShuffle => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, value: IdRef, id: IdRef },
+ .OpGroupNonUniformShuffleXor => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, value: IdRef, mask: IdRef },
+ .OpGroupNonUniformShuffleUp => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, value: IdRef, delta: IdRef },
+ .OpGroupNonUniformShuffleDown => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, value: IdRef, delta: IdRef },
+ .OpGroupNonUniformIAdd => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, value: IdRef, clustersize: ?IdRef = null },
+ .OpGroupNonUniformFAdd => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, value: IdRef, clustersize: ?IdRef = null },
+ .OpGroupNonUniformIMul => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, value: IdRef, clustersize: ?IdRef = null },
+ .OpGroupNonUniformFMul => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, value: IdRef, clustersize: ?IdRef = null },
+ .OpGroupNonUniformSMin => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, value: IdRef, clustersize: ?IdRef = null },
+ .OpGroupNonUniformUMin => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, value: IdRef, clustersize: ?IdRef = null },
+ .OpGroupNonUniformFMin => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, value: IdRef, clustersize: ?IdRef = null },
+ .OpGroupNonUniformSMax => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, value: IdRef, clustersize: ?IdRef = null },
+ .OpGroupNonUniformUMax => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, value: IdRef, clustersize: ?IdRef = null },
+ .OpGroupNonUniformFMax => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, value: IdRef, clustersize: ?IdRef = null },
+ .OpGroupNonUniformBitwiseAnd => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, value: IdRef, clustersize: ?IdRef = null },
+ .OpGroupNonUniformBitwiseOr => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, value: IdRef, clustersize: ?IdRef = null },
+ .OpGroupNonUniformBitwiseXor => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, value: IdRef, clustersize: ?IdRef = null },
+ .OpGroupNonUniformLogicalAnd => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, value: IdRef, clustersize: ?IdRef = null },
+ .OpGroupNonUniformLogicalOr => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, value: IdRef, clustersize: ?IdRef = null },
+ .OpGroupNonUniformLogicalXor => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, value: IdRef, clustersize: ?IdRef = null },
+ .OpGroupNonUniformQuadBroadcast => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, value: IdRef, index: IdRef },
+ .OpGroupNonUniformQuadSwap => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, value: IdRef, direction: IdRef },
+ .OpCopyLogical => struct { id_result_type: IdResultType, id_result: IdResult, operand: IdRef },
+ .OpPtrEqual => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpPtrNotEqual => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpPtrDiff => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpTerminateInvocation => void,
+ .OpSubgroupBallotKHR => struct { id_result_type: IdResultType, id_result: IdResult, predicate: IdRef },
+ .OpSubgroupFirstInvocationKHR => struct { id_result_type: IdResultType, id_result: IdResult, value: IdRef },
+ .OpSubgroupAllKHR => struct { id_result_type: IdResultType, id_result: IdResult, predicate: IdRef },
+ .OpSubgroupAnyKHR => struct { id_result_type: IdResultType, id_result: IdResult, predicate: IdRef },
+ .OpSubgroupAllEqualKHR => struct { id_result_type: IdResultType, id_result: IdResult, predicate: IdRef },
+ .OpSubgroupReadInvocationKHR => struct { id_result_type: IdResultType, id_result: IdResult, value: IdRef, index: IdRef },
+ .OpTraceRayKHR => struct { accel: IdRef, ray_flags: IdRef, cull_mask: IdRef, sbt_offset: IdRef, sbt_stride: IdRef, miss_index: IdRef, ray_origin: IdRef, ray_tmin: IdRef, ray_direction: IdRef, ray_tmax: IdRef, payload: IdRef },
+ .OpExecuteCallableKHR => struct { sbt_index: IdRef, callable_data: IdRef },
+ .OpConvertUToAccelerationStructureKHR => struct { id_result_type: IdResultType, id_result: IdResult, accel: IdRef },
+ .OpIgnoreIntersectionKHR => void,
+ .OpTerminateRayKHR => void,
+ .OpTypeRayQueryKHR => struct { id_result: IdResult },
+ .OpRayQueryInitializeKHR => struct { rayquery: IdRef, accel: IdRef, rayflags: IdRef, cullmask: IdRef, rayorigin: IdRef, raytmin: IdRef, raydirection: IdRef, raytmax: IdRef },
+ .OpRayQueryTerminateKHR => struct { rayquery: IdRef },
+ .OpRayQueryGenerateIntersectionKHR => struct { rayquery: IdRef, hitt: IdRef },
+ .OpRayQueryConfirmIntersectionKHR => struct { rayquery: IdRef },
+ .OpRayQueryProceedKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef },
+ .OpRayQueryGetIntersectionTypeKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef, intersection: IdRef },
+ .OpGroupIAddNonUniformAMD => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
+ .OpGroupFAddNonUniformAMD => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
+ .OpGroupFMinNonUniformAMD => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
+ .OpGroupUMinNonUniformAMD => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
+ .OpGroupSMinNonUniformAMD => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
+ .OpGroupFMaxNonUniformAMD => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
+ .OpGroupUMaxNonUniformAMD => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
+ .OpGroupSMaxNonUniformAMD => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
+ .OpFragmentMaskFetchAMD => struct { id_result_type: IdResultType, id_result: IdResult, image: IdRef, coordinate: IdRef },
+ .OpFragmentFetchAMD => struct { id_result_type: IdResultType, id_result: IdResult, image: IdRef, coordinate: IdRef, fragment_index: IdRef },
+ .OpReadClockKHR => struct { id_result_type: IdResultType, id_result: IdResult, scope: IdScope },
+ .OpImageSampleFootprintNV => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, granularity: IdRef, coarse: IdRef, image_operands: ?ImageOperands.Extended = null },
+ .OpGroupNonUniformPartitionNV => struct { id_result_type: IdResultType, id_result: IdResult, value: IdRef },
+ .OpWritePackedPrimitiveIndices4x8NV => struct { index_offset: IdRef, packed_indices: IdRef },
+ .OpReportIntersectionKHR => struct { id_result_type: IdResultType, id_result: IdResult, hit: IdRef, hitkind: IdRef },
+ .OpIgnoreIntersectionNV => void,
+ .OpTerminateRayNV => void,
+ .OpTraceNV => struct { accel: IdRef, ray_flags: IdRef, cull_mask: IdRef, sbt_offset: IdRef, sbt_stride: IdRef, miss_index: IdRef, ray_origin: IdRef, ray_tmin: IdRef, ray_direction: IdRef, ray_tmax: IdRef, payloadid: IdRef },
+ .OpTypeAccelerationStructureKHR => struct { id_result: IdResult },
+ .OpExecuteCallableNV => struct { sbt_index: IdRef, callable_dataid: IdRef },
+ .OpTypeCooperativeMatrixNV => struct { id_result: IdResult, component_type: IdRef, execution: IdScope, rows: IdRef, columns: IdRef },
+ .OpCooperativeMatrixLoadNV => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, stride: IdRef, column_major: IdRef, memory_access: ?MemoryAccess.Extended = null },
+ .OpCooperativeMatrixStoreNV => struct { pointer: IdRef, object: IdRef, stride: IdRef, column_major: IdRef, memory_access: ?MemoryAccess.Extended = null },
+ .OpCooperativeMatrixMulAddNV => struct { id_result_type: IdResultType, id_result: IdResult, a: IdRef, b: IdRef, c: IdRef },
+ .OpCooperativeMatrixLengthNV => struct { id_result_type: IdResultType, id_result: IdResult, type: IdRef },
+ .OpBeginInvocationInterlockEXT => void,
+ .OpEndInvocationInterlockEXT => void,
+ .OpDemoteToHelperInvocationEXT => void,
+ .OpIsHelperInvocationEXT => struct { id_result_type: IdResultType, id_result: IdResult },
+ .OpSubgroupShuffleINTEL => struct { id_result_type: IdResultType, id_result: IdResult, data: IdRef, invocationid: IdRef },
+ .OpSubgroupShuffleDownINTEL => struct { id_result_type: IdResultType, id_result: IdResult, current: IdRef, next: IdRef, delta: IdRef },
+ .OpSubgroupShuffleUpINTEL => struct { id_result_type: IdResultType, id_result: IdResult, previous: IdRef, current: IdRef, delta: IdRef },
+ .OpSubgroupShuffleXorINTEL => struct { id_result_type: IdResultType, id_result: IdResult, data: IdRef, value: IdRef },
+ .OpSubgroupBlockReadINTEL => struct { id_result_type: IdResultType, id_result: IdResult, ptr: IdRef },
+ .OpSubgroupBlockWriteINTEL => struct { ptr: IdRef, data: IdRef },
+ .OpSubgroupImageBlockReadINTEL => struct { id_result_type: IdResultType, id_result: IdResult, image: IdRef, coordinate: IdRef },
+ .OpSubgroupImageBlockWriteINTEL => struct { image: IdRef, coordinate: IdRef, data: IdRef },
+ .OpSubgroupImageMediaBlockReadINTEL => struct { id_result_type: IdResultType, id_result: IdResult, image: IdRef, coordinate: IdRef, width: IdRef, height: IdRef },
+ .OpSubgroupImageMediaBlockWriteINTEL => struct { image: IdRef, coordinate: IdRef, width: IdRef, height: IdRef, data: IdRef },
+ .OpUCountLeadingZerosINTEL => struct { id_result_type: IdResultType, id_result: IdResult, operand: IdRef },
+ .OpUCountTrailingZerosINTEL => struct { id_result_type: IdResultType, id_result: IdResult, operand: IdRef },
+ .OpAbsISubINTEL => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpAbsUSubINTEL => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpIAddSatINTEL => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpUAddSatINTEL => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpIAverageINTEL => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpUAverageINTEL => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpIAverageRoundedINTEL => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpUAverageRoundedINTEL => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpISubSatINTEL => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpUSubSatINTEL => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpIMul32x16INTEL => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpUMul32x16INTEL => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
+ .OpConstFunctionPointerINTEL => struct { id_result_type: IdResultType, id_result: IdResult, function: IdRef },
+ .OpFunctionPointerCallINTEL => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: []const IdRef = &.{} },
+ .OpAsmTargetINTEL => struct { id_result_type: IdResultType, id_result: IdResult, asm_target: LiteralString },
+ .OpAsmINTEL => struct { id_result_type: IdResultType, id_result: IdResult, asm_type: IdRef, target: IdRef, asm_instructions: LiteralString, constraints: LiteralString },
+ .OpAsmCallINTEL => struct { id_result_type: IdResultType, id_result: IdResult, @"asm": IdRef, argument_0: []const IdRef = &.{} },
+ .OpAtomicFMinEXT => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics, value: IdRef },
+ .OpAtomicFMaxEXT => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics, value: IdRef },
+ .OpAssumeTrueKHR => struct { condition: IdRef },
+ .OpExpectKHR => struct { id_result_type: IdResultType, id_result: IdResult, value: IdRef, expectedvalue: IdRef },
+ .OpDecorateString => struct { target: IdRef, decoration: Decoration.Extended },
+ .OpMemberDecorateString => struct { struct_type: IdRef, member: LiteralInteger, decoration: Decoration.Extended },
+ .OpVmeImageINTEL => struct { id_result_type: IdResultType, id_result: IdResult, image_type: IdRef, sampler: IdRef },
+ .OpTypeVmeImageINTEL => struct { id_result: IdResult, image_type: IdRef },
+ .OpTypeAvcImePayloadINTEL => struct { id_result: IdResult },
+ .OpTypeAvcRefPayloadINTEL => struct { id_result: IdResult },
+ .OpTypeAvcSicPayloadINTEL => struct { id_result: IdResult },
+ .OpTypeAvcMcePayloadINTEL => struct { id_result: IdResult },
+ .OpTypeAvcMceResultINTEL => struct { id_result: IdResult },
+ .OpTypeAvcImeResultINTEL => struct { id_result: IdResult },
+ .OpTypeAvcImeResultSingleReferenceStreamoutINTEL => struct { id_result: IdResult },
+ .OpTypeAvcImeResultDualReferenceStreamoutINTEL => struct { id_result: IdResult },
+ .OpTypeAvcImeSingleReferenceStreaminINTEL => struct { id_result: IdResult },
+ .OpTypeAvcImeDualReferenceStreaminINTEL => struct { id_result: IdResult },
+ .OpTypeAvcRefResultINTEL => struct { id_result: IdResult },
+ .OpTypeAvcSicResultINTEL => struct { id_result: IdResult },
+ .OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL => struct { id_result_type: IdResultType, id_result: IdResult, slice_type: IdRef, qp: IdRef },
+ .OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL => struct { id_result_type: IdResultType, id_result: IdResult, reference_base_penalty: IdRef, payload: IdRef },
+ .OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL => struct { id_result_type: IdResultType, id_result: IdResult, slice_type: IdRef, qp: IdRef },
+ .OpSubgroupAvcMceSetInterShapePenaltyINTEL => struct { id_result_type: IdResultType, id_result: IdResult, packed_shape_penalty: IdRef, payload: IdRef },
+ .OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL => struct { id_result_type: IdResultType, id_result: IdResult, slice_type: IdRef, qp: IdRef },
+ .OpSubgroupAvcMceSetInterDirectionPenaltyINTEL => struct { id_result_type: IdResultType, id_result: IdResult, direction_cost: IdRef, payload: IdRef },
+ .OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL => struct { id_result_type: IdResultType, id_result: IdResult, slice_type: IdRef, qp: IdRef },
+ .OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL => struct { id_result_type: IdResultType, id_result: IdResult, slice_type: IdRef, qp: IdRef },
+ .OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL => struct { id_result_type: IdResultType, id_result: IdResult },
+ .OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL => struct { id_result_type: IdResultType, id_result: IdResult },
+ .OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL => struct { id_result_type: IdResultType, id_result: IdResult },
+ .OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL => struct { id_result_type: IdResultType, id_result: IdResult, packed_cost_center_delta: IdRef, packed_cost_table: IdRef, cost_precision: IdRef, payload: IdRef },
+ .OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL => struct { id_result_type: IdResultType, id_result: IdResult, slice_type: IdRef, qp: IdRef },
+ .OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL => struct { id_result_type: IdResultType, id_result: IdResult },
+ .OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL => struct { id_result_type: IdResultType, id_result: IdResult },
+ .OpSubgroupAvcMceSetAcOnlyHaarINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
+ .OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL => struct { id_result_type: IdResultType, id_result: IdResult, source_field_polarity: IdRef, payload: IdRef },
+ .OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL => struct { id_result_type: IdResultType, id_result: IdResult, reference_field_polarity: IdRef, payload: IdRef },
+ .OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL => struct { id_result_type: IdResultType, id_result: IdResult, forward_reference_field_polarity: IdRef, backward_reference_field_polarity: IdRef, payload: IdRef },
+ .OpSubgroupAvcMceConvertToImePayloadINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
+ .OpSubgroupAvcMceConvertToImeResultINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
+ .OpSubgroupAvcMceConvertToRefPayloadINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
+ .OpSubgroupAvcMceConvertToRefResultINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
+ .OpSubgroupAvcMceConvertToSicPayloadINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
+ .OpSubgroupAvcMceConvertToSicResultINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
+ .OpSubgroupAvcMceGetMotionVectorsINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
+ .OpSubgroupAvcMceGetInterDistortionsINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
+ .OpSubgroupAvcMceGetBestInterDistortionsINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
+ .OpSubgroupAvcMceGetInterMajorShapeINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
+ .OpSubgroupAvcMceGetInterMinorShapeINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
+ .OpSubgroupAvcMceGetInterDirectionsINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
+ .OpSubgroupAvcMceGetInterMotionVectorCountINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
+ .OpSubgroupAvcMceGetInterReferenceIdsINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
+ .OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL => struct { id_result_type: IdResultType, id_result: IdResult, packed_reference_ids: IdRef, packed_reference_parameter_field_polarities: IdRef, payload: IdRef },
+ .OpSubgroupAvcImeInitializeINTEL => struct { id_result_type: IdResultType, id_result: IdResult, src_coord: IdRef, partition_mask: IdRef, sad_adjustment: IdRef },
+ .OpSubgroupAvcImeSetSingleReferenceINTEL => struct { id_result_type: IdResultType, id_result: IdResult, ref_offset: IdRef, search_window_config: IdRef, payload: IdRef },
+ .OpSubgroupAvcImeSetDualReferenceINTEL => struct { id_result_type: IdResultType, id_result: IdResult, fwd_ref_offset: IdRef, bwd_ref_offset: IdRef, id_ref_4: IdRef, payload: IdRef },
+ .OpSubgroupAvcImeRefWindowSizeINTEL => struct { id_result_type: IdResultType, id_result: IdResult, search_window_config: IdRef, dual_ref: IdRef },
+ .OpSubgroupAvcImeAdjustRefOffsetINTEL => struct { id_result_type: IdResultType, id_result: IdResult, ref_offset: IdRef, src_coord: IdRef, ref_window_size: IdRef, image_size: IdRef },
+ .OpSubgroupAvcImeConvertToMcePayloadINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
+ .OpSubgroupAvcImeSetMaxMotionVectorCountINTEL => struct { id_result_type: IdResultType, id_result: IdResult, max_motion_vector_count: IdRef, payload: IdRef },
+ .OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
+ .OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL => struct { id_result_type: IdResultType, id_result: IdResult, threshold: IdRef, payload: IdRef },
+ .OpSubgroupAvcImeSetWeightedSadINTEL => struct { id_result_type: IdResultType, id_result: IdResult, packed_sad_weights: IdRef, payload: IdRef },
+ .OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL => struct { id_result_type: IdResultType, id_result: IdResult, src_image: IdRef, ref_image: IdRef, payload: IdRef },
+ .OpSubgroupAvcImeEvaluateWithDualReferenceINTEL => struct { id_result_type: IdResultType, id_result: IdResult, src_image: IdRef, fwd_ref_image: IdRef, bwd_ref_image: IdRef, payload: IdRef },
+ .OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL => struct { id_result_type: IdResultType, id_result: IdResult, src_image: IdRef, ref_image: IdRef, payload: IdRef, streamin_components: IdRef },
+ .OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL => struct { id_result_type: IdResultType, id_result: IdResult, src_image: IdRef, fwd_ref_image: IdRef, bwd_ref_image: IdRef, payload: IdRef, streamin_components: IdRef },
+ .OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL => struct { id_result_type: IdResultType, id_result: IdResult, src_image: IdRef, ref_image: IdRef, payload: IdRef },
+ .OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL => struct { id_result_type: IdResultType, id_result: IdResult, src_image: IdRef, fwd_ref_image: IdRef, bwd_ref_image: IdRef, payload: IdRef },
+ .OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL => struct { id_result_type: IdResultType, id_result: IdResult, src_image: IdRef, ref_image: IdRef, payload: IdRef, streamin_components: IdRef },
+ .OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL => struct { id_result_type: IdResultType, id_result: IdResult, src_image: IdRef, fwd_ref_image: IdRef, bwd_ref_image: IdRef, payload: IdRef, streamin_components: IdRef },
+ .OpSubgroupAvcImeConvertToMceResultINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
+ .OpSubgroupAvcImeGetSingleReferenceStreaminINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
+ .OpSubgroupAvcImeGetDualReferenceStreaminINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
+ .OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
+ .OpSubgroupAvcImeStripDualReferenceStreamoutINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
+ .OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef, major_shape: IdRef },
+ .OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef, major_shape: IdRef },
+ .OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef, major_shape: IdRef },
+ .OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef, major_shape: IdRef, direction: IdRef },
+ .OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef, major_shape: IdRef, direction: IdRef },
+ .OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef, major_shape: IdRef, direction: IdRef },
+ .OpSubgroupAvcImeGetBorderReachedINTEL => struct { id_result_type: IdResultType, id_result: IdResult, image_select: IdRef, payload: IdRef },
+ .OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
+ .OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
+ .OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
+ .OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
+ .OpSubgroupAvcFmeInitializeINTEL => struct { id_result_type: IdResultType, id_result: IdResult, src_coord: IdRef, motion_vectors: IdRef, major_shapes: IdRef, minor_shapes: IdRef, direction: IdRef, pixel_resolution: IdRef, sad_adjustment: IdRef },
+ .OpSubgroupAvcBmeInitializeINTEL => struct { id_result_type: IdResultType, id_result: IdResult, src_coord: IdRef, motion_vectors: IdRef, major_shapes: IdRef, minor_shapes: IdRef, direction: IdRef, pixel_resolution: IdRef, bidirectional_weight: IdRef, sad_adjustment: IdRef },
+ .OpSubgroupAvcRefConvertToMcePayloadINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
+ .OpSubgroupAvcRefSetBidirectionalMixDisableINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
+ .OpSubgroupAvcRefSetBilinearFilterEnableINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
+ .OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL => struct { id_result_type: IdResultType, id_result: IdResult, src_image: IdRef, ref_image: IdRef, payload: IdRef },
+ .OpSubgroupAvcRefEvaluateWithDualReferenceINTEL => struct { id_result_type: IdResultType, id_result: IdResult, src_image: IdRef, fwd_ref_image: IdRef, bwd_ref_image: IdRef, payload: IdRef },
+ .OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL => struct { id_result_type: IdResultType, id_result: IdResult, src_image: IdRef, packed_reference_ids: IdRef, payload: IdRef },
+ .OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL => struct { id_result_type: IdResultType, id_result: IdResult, src_image: IdRef, packed_reference_ids: IdRef, packed_reference_field_polarities: IdRef, payload: IdRef },
+ .OpSubgroupAvcRefConvertToMceResultINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
+ .OpSubgroupAvcSicInitializeINTEL => struct { id_result_type: IdResultType, id_result: IdResult, src_coord: IdRef },
+ .OpSubgroupAvcSicConfigureSkcINTEL => struct { id_result_type: IdResultType, id_result: IdResult, skip_block_partition_type: IdRef, skip_motion_vector_mask: IdRef, motion_vectors: IdRef, bidirectional_weight: IdRef, sad_adjustment: IdRef, payload: IdRef },
+ .OpSubgroupAvcSicConfigureIpeLumaINTEL => struct { id_result_type: IdResultType, id_result: IdResult, luma_intra_partition_mask: IdRef, intra_neighbour_availabilty: IdRef, left_edge_luma_pixels: IdRef, upper_left_corner_luma_pixel: IdRef, upper_edge_luma_pixels: IdRef, upper_right_edge_luma_pixels: IdRef, sad_adjustment: IdRef, payload: IdRef },
+ .OpSubgroupAvcSicConfigureIpeLumaChromaINTEL => struct { id_result_type: IdResultType, id_result: IdResult, luma_intra_partition_mask: IdRef, intra_neighbour_availabilty: IdRef, left_edge_luma_pixels: IdRef, upper_left_corner_luma_pixel: IdRef, upper_edge_luma_pixels: IdRef, upper_right_edge_luma_pixels: IdRef, left_edge_chroma_pixels: IdRef, upper_left_corner_chroma_pixel: IdRef, upper_edge_chroma_pixels: IdRef, sad_adjustment: IdRef, payload: IdRef },
+ .OpSubgroupAvcSicGetMotionVectorMaskINTEL => struct { id_result_type: IdResultType, id_result: IdResult, skip_block_partition_type: IdRef, direction: IdRef },
+ .OpSubgroupAvcSicConvertToMcePayloadINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
+ .OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL => struct { id_result_type: IdResultType, id_result: IdResult, packed_shape_penalty: IdRef, payload: IdRef },
+ .OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL => struct { id_result_type: IdResultType, id_result: IdResult, luma_mode_penalty: IdRef, luma_packed_neighbor_modes: IdRef, luma_packed_non_dc_penalty: IdRef, payload: IdRef },
+ .OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL => struct { id_result_type: IdResultType, id_result: IdResult, chroma_mode_base_penalty: IdRef, payload: IdRef },
+ .OpSubgroupAvcSicSetBilinearFilterEnableINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
+ .OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL => struct { id_result_type: IdResultType, id_result: IdResult, packed_sad_coefficients: IdRef, payload: IdRef },
+ .OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL => struct { id_result_type: IdResultType, id_result: IdResult, block_based_skip_type: IdRef, payload: IdRef },
+ .OpSubgroupAvcSicEvaluateIpeINTEL => struct { id_result_type: IdResultType, id_result: IdResult, src_image: IdRef, payload: IdRef },
+ .OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL => struct { id_result_type: IdResultType, id_result: IdResult, src_image: IdRef, ref_image: IdRef, payload: IdRef },
+ .OpSubgroupAvcSicEvaluateWithDualReferenceINTEL => struct { id_result_type: IdResultType, id_result: IdResult, src_image: IdRef, fwd_ref_image: IdRef, bwd_ref_image: IdRef, payload: IdRef },
+ .OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL => struct { id_result_type: IdResultType, id_result: IdResult, src_image: IdRef, packed_reference_ids: IdRef, payload: IdRef },
+ .OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL => struct { id_result_type: IdResultType, id_result: IdResult, src_image: IdRef, packed_reference_ids: IdRef, packed_reference_field_polarities: IdRef, payload: IdRef },
+ .OpSubgroupAvcSicConvertToMceResultINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
+ .OpSubgroupAvcSicGetIpeLumaShapeINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
+ .OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
+ .OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
+ .OpSubgroupAvcSicGetPackedIpeLumaModesINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
+ .OpSubgroupAvcSicGetIpeChromaModeINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
+ .OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
+ .OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
+ .OpSubgroupAvcSicGetInterRawSadsINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
+ .OpVariableLengthArrayINTEL => struct { id_result_type: IdResultType, id_result: IdResult, lenght: IdRef },
+ .OpSaveMemoryINTEL => struct { id_result_type: IdResultType, id_result: IdResult },
+ .OpRestoreMemoryINTEL => struct { ptr: IdRef },
+ .OpLoopControlINTEL => struct { loop_control_parameters: []const LiteralInteger = &.{} },
+ .OpPtrCastToCrossWorkgroupINTEL => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef },
+ .OpCrossWorkgroupCastToPtrINTEL => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef },
+ .OpReadPipeBlockingINTEL => struct { id_result_type: IdResultType, id_result: IdResult, packet_size: IdRef, packet_alignment: IdRef },
+ .OpWritePipeBlockingINTEL => struct { id_result_type: IdResultType, id_result: IdResult, packet_size: IdRef, packet_alignment: IdRef },
+ .OpFPGARegINTEL => struct { id_result_type: IdResultType, id_result: IdResult, result: IdRef, input: IdRef },
+ .OpRayQueryGetRayTMinKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef },
+ .OpRayQueryGetRayFlagsKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef },
+ .OpRayQueryGetIntersectionTKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef, intersection: IdRef },
+ .OpRayQueryGetIntersectionInstanceCustomIndexKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef, intersection: IdRef },
+ .OpRayQueryGetIntersectionInstanceIdKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef, intersection: IdRef },
+ .OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef, intersection: IdRef },
+ .OpRayQueryGetIntersectionGeometryIndexKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef, intersection: IdRef },
+ .OpRayQueryGetIntersectionPrimitiveIndexKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef, intersection: IdRef },
+ .OpRayQueryGetIntersectionBarycentricsKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef, intersection: IdRef },
+ .OpRayQueryGetIntersectionFrontFaceKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef, intersection: IdRef },
+ .OpRayQueryGetIntersectionCandidateAABBOpaqueKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef },
+ .OpRayQueryGetIntersectionObjectRayDirectionKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef, intersection: IdRef },
+ .OpRayQueryGetIntersectionObjectRayOriginKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef, intersection: IdRef },
+ .OpRayQueryGetWorldRayDirectionKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef },
+ .OpRayQueryGetWorldRayOriginKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef },
+ .OpRayQueryGetIntersectionObjectToWorldKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef, intersection: IdRef },
+ .OpRayQueryGetIntersectionWorldToObjectKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef, intersection: IdRef },
+ .OpAtomicFAddEXT => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics, value: IdRef },
+ .OpTypeBufferSurfaceINTEL => struct { id_result: IdResult },
+ .OpTypeStructContinuedINTEL => struct { id_ref: []const IdRef = &.{} },
+ .OpConstantCompositeContinuedINTEL => struct { constituents: []const IdRef = &.{} },
+ .OpSpecConstantCompositeContinuedINTEL => struct { constituents: []const IdRef = &.{} },
+ };
+ }
};
pub const ImageOperands = packed struct {
Bias: bool align(@alignOf(u32)) = false,
@@ -618,6 +1238,46 @@ pub const ImageOperands = packed struct {
_reserved_bit_29: bool = false,
_reserved_bit_30: bool = false,
_reserved_bit_31: bool = false,
+
+ pub const MakeTexelAvailableKHR: ImageOperands = .{ .MakeTexelAvailable = true };
+ pub const MakeTexelVisibleKHR: ImageOperands = .{ .MakeTexelVisible = true };
+ pub const NonPrivateTexelKHR: ImageOperands = .{ .NonPrivateTexel = true };
+ pub const VolatileTexelKHR: ImageOperands = .{ .VolatileTexel = true };
+
+ pub const Extended = struct {
+ Bias: ?struct { id_ref: IdRef } = null,
+ Lod: ?struct { id_ref: IdRef } = null,
+ Grad: ?struct { id_ref_0: IdRef, id_ref_1: IdRef } = null,
+ ConstOffset: ?struct { id_ref: IdRef } = null,
+ Offset: ?struct { id_ref: IdRef } = null,
+ ConstOffsets: ?struct { id_ref: IdRef } = null,
+ Sample: ?struct { id_ref: IdRef } = null,
+ MinLod: ?struct { id_ref: IdRef } = null,
+ MakeTexelAvailable: ?struct { id_scope: IdScope } = null,
+ MakeTexelVisible: ?struct { id_scope: IdScope } = null,
+ NonPrivateTexel: bool = false,
+ VolatileTexel: bool = false,
+ SignExtend: bool = false,
+ ZeroExtend: bool = false,
+ _reserved_bit_14: bool = false,
+ _reserved_bit_15: bool = false,
+ _reserved_bit_16: bool = false,
+ _reserved_bit_17: bool = false,
+ _reserved_bit_18: bool = false,
+ _reserved_bit_19: bool = false,
+ _reserved_bit_20: bool = false,
+ _reserved_bit_21: bool = false,
+ _reserved_bit_22: bool = false,
+ _reserved_bit_23: bool = false,
+ _reserved_bit_24: bool = false,
+ _reserved_bit_25: bool = false,
+ _reserved_bit_26: bool = false,
+ _reserved_bit_27: bool = false,
+ _reserved_bit_28: bool = false,
+ _reserved_bit_29: bool = false,
+ _reserved_bit_30: bool = false,
+ _reserved_bit_31: bool = false,
+ };
};
pub const FPFastMathMode = packed struct {
NotNaN: bool align(@alignOf(u32)) = false,
@@ -720,6 +1380,41 @@ pub const LoopControl = packed struct {
_reserved_bit_29: bool = false,
_reserved_bit_30: bool = false,
_reserved_bit_31: bool = false,
+
+ pub const Extended = struct {
+ Unroll: bool = false,
+ DontUnroll: bool = false,
+ DependencyInfinite: bool = false,
+ DependencyLength: ?struct { literal_integer: LiteralInteger } = null,
+ MinIterations: ?struct { literal_integer: LiteralInteger } = null,
+ MaxIterations: ?struct { literal_integer: LiteralInteger } = null,
+ IterationMultiple: ?struct { literal_integer: LiteralInteger } = null,
+ PeelCount: ?struct { literal_integer: LiteralInteger } = null,
+ PartialCount: ?struct { literal_integer: LiteralInteger } = null,
+ _reserved_bit_9: bool = false,
+ _reserved_bit_10: bool = false,
+ _reserved_bit_11: bool = false,
+ _reserved_bit_12: bool = false,
+ _reserved_bit_13: bool = false,
+ _reserved_bit_14: bool = false,
+ _reserved_bit_15: bool = false,
+ InitiationIntervalINTEL: ?struct { literal_integer: LiteralInteger } = null,
+ MaxConcurrencyINTEL: ?struct { literal_integer: LiteralInteger } = null,
+ DependencyArrayINTEL: ?struct { literal_integer: LiteralInteger } = null,
+ PipelineEnableINTEL: ?struct { literal_integer: LiteralInteger } = null,
+ LoopCoalesceINTEL: ?struct { literal_integer: LiteralInteger } = null,
+ MaxInterleavingINTEL: ?struct { literal_integer: LiteralInteger } = null,
+ SpeculatedIterationsINTEL: ?struct { literal_integer: LiteralInteger } = null,
+ NoFusionINTEL: ?struct { literal_integer: LiteralInteger } = null,
+ _reserved_bit_24: bool = false,
+ _reserved_bit_25: bool = false,
+ _reserved_bit_26: bool = false,
+ _reserved_bit_27: bool = false,
+ _reserved_bit_28: bool = false,
+ _reserved_bit_29: bool = false,
+ _reserved_bit_30: bool = false,
+ _reserved_bit_31: bool = false,
+ };
};
pub const FunctionControl = packed struct {
Inline: bool align(@alignOf(u32)) = false,
@@ -788,6 +1483,10 @@ pub const MemorySemantics = packed struct {
_reserved_bit_29: bool = false,
_reserved_bit_30: bool = false,
_reserved_bit_31: bool = false,
+
+ pub const OutputMemoryKHR: MemorySemantics = .{ .OutputMemory = true };
+ pub const MakeAvailableKHR: MemorySemantics = .{ .MakeAvailable = true };
+ pub const MakeVisibleKHR: MemorySemantics = .{ .MakeVisible = true };
};
pub const MemoryAccess = packed struct {
Volatile: bool align(@alignOf(u32)) = false,
@@ -822,6 +1521,45 @@ pub const MemoryAccess = packed struct {
_reserved_bit_29: bool = false,
_reserved_bit_30: bool = false,
_reserved_bit_31: bool = false,
+
+ pub const MakePointerAvailableKHR: MemoryAccess = .{ .MakePointerAvailable = true };
+ pub const MakePointerVisibleKHR: MemoryAccess = .{ .MakePointerVisible = true };
+ pub const NonPrivatePointerKHR: MemoryAccess = .{ .NonPrivatePointer = true };
+
+ pub const Extended = struct {
+ Volatile: bool = false,
+ Aligned: ?struct { literal_integer: LiteralInteger } = null,
+ Nontemporal: bool = false,
+ MakePointerAvailable: ?struct { id_scope: IdScope } = null,
+ MakePointerVisible: ?struct { id_scope: IdScope } = null,
+ NonPrivatePointer: bool = false,
+ _reserved_bit_6: bool = false,
+ _reserved_bit_7: bool = false,
+ _reserved_bit_8: bool = false,
+ _reserved_bit_9: bool = false,
+ _reserved_bit_10: bool = false,
+ _reserved_bit_11: bool = false,
+ _reserved_bit_12: bool = false,
+ _reserved_bit_13: bool = false,
+ _reserved_bit_14: bool = false,
+ _reserved_bit_15: bool = false,
+ _reserved_bit_16: bool = false,
+ _reserved_bit_17: bool = false,
+ _reserved_bit_18: bool = false,
+ _reserved_bit_19: bool = false,
+ _reserved_bit_20: bool = false,
+ _reserved_bit_21: bool = false,
+ _reserved_bit_22: bool = false,
+ _reserved_bit_23: bool = false,
+ _reserved_bit_24: bool = false,
+ _reserved_bit_25: bool = false,
+ _reserved_bit_26: bool = false,
+ _reserved_bit_27: bool = false,
+ _reserved_bit_28: bool = false,
+ _reserved_bit_29: bool = false,
+ _reserved_bit_30: bool = false,
+ _reserved_bit_31: bool = false,
+ };
};
pub const KernelProfilingInfo = packed struct {
CmdExecTime: bool align(@alignOf(u32)) = false,
@@ -932,7 +1670,6 @@ pub const SourceLanguage = enum(u32) {
OpenCL_C = 3,
OpenCL_CPP = 4,
HLSL = 5,
- _,
};
pub const ExecutionModel = enum(u32) {
Vertex = 0,
@@ -944,33 +1681,35 @@ pub const ExecutionModel = enum(u32) {
Kernel = 6,
TaskNV = 5267,
MeshNV = 5268,
- RayGenerationNV = 5313,
RayGenerationKHR = 5313,
- IntersectionNV = 5314,
IntersectionKHR = 5314,
- AnyHitNV = 5315,
AnyHitKHR = 5315,
- ClosestHitNV = 5316,
ClosestHitKHR = 5316,
- MissNV = 5317,
MissKHR = 5317,
- CallableNV = 5318,
CallableKHR = 5318,
- _,
+
+ pub const RayGenerationNV = ExecutionModel.RayGenerationKHR;
+ pub const IntersectionNV = ExecutionModel.IntersectionKHR;
+ pub const AnyHitNV = ExecutionModel.AnyHitKHR;
+ pub const ClosestHitNV = ExecutionModel.ClosestHitKHR;
+ pub const MissNV = ExecutionModel.MissKHR;
+ pub const CallableNV = ExecutionModel.CallableKHR;
};
pub const AddressingModel = enum(u32) {
Logical = 0,
Physical32 = 1,
Physical64 = 2,
PhysicalStorageBuffer64 = 5348,
- _,
+
+ pub const PhysicalStorageBuffer64EXT = AddressingModel.PhysicalStorageBuffer64;
};
pub const MemoryModel = enum(u32) {
Simple = 0,
GLSL450 = 1,
OpenCL = 2,
Vulkan = 3,
- _,
+
+ pub const VulkanKHR = MemoryModel.Vulkan;
};
pub const ExecutionMode = enum(u32) {
Invocations = 0,
@@ -1039,7 +1778,75 @@ pub const ExecutionMode = enum(u32) {
NoGlobalOffsetINTEL = 5895,
NumSIMDWorkitemsINTEL = 5896,
SchedulerTargetFmaxMhzINTEL = 5903,
- _,
+
+ pub const Extended = union(ExecutionMode) {
+ Invocations: struct { literal_integer: LiteralInteger },
+ SpacingEqual,
+ SpacingFractionalEven,
+ SpacingFractionalOdd,
+ VertexOrderCw,
+ VertexOrderCcw,
+ PixelCenterInteger,
+ OriginUpperLeft,
+ OriginLowerLeft,
+ EarlyFragmentTests,
+ PointMode,
+ Xfb,
+ DepthReplacing,
+ DepthGreater,
+ DepthLess,
+ DepthUnchanged,
+ LocalSize: struct { x_size: LiteralInteger, y_size: LiteralInteger, z_size: LiteralInteger },
+ LocalSizeHint: struct { x_size: LiteralInteger, y_size: LiteralInteger, z_size: LiteralInteger },
+ InputPoints,
+ InputLines,
+ InputLinesAdjacency,
+ Triangles,
+ InputTrianglesAdjacency,
+ Quads,
+ Isolines,
+ OutputVertices: struct { vertex_count: LiteralInteger },
+ OutputPoints,
+ OutputLineStrip,
+ OutputTriangleStrip,
+ VecTypeHint: struct { vector_type: LiteralInteger },
+ ContractionOff,
+ Initializer,
+ Finalizer,
+ SubgroupSize: struct { subgroup_size: LiteralInteger },
+ SubgroupsPerWorkgroup: struct { subgroups_per_workgroup: LiteralInteger },
+ SubgroupsPerWorkgroupId: struct { subgroups_per_workgroup: IdRef },
+ LocalSizeId: struct { x_size: IdRef, y_size: IdRef, z_size: IdRef },
+ LocalSizeHintId: struct { local_size_hint: IdRef },
+ PostDepthCoverage,
+ DenormPreserve: struct { target_width: LiteralInteger },
+ DenormFlushToZero: struct { target_width: LiteralInteger },
+ SignedZeroInfNanPreserve: struct { target_width: LiteralInteger },
+ RoundingModeRTE: struct { target_width: LiteralInteger },
+ RoundingModeRTZ: struct { target_width: LiteralInteger },
+ StencilRefReplacingEXT,
+ OutputLinesNV,
+ OutputPrimitivesNV: struct { primitive_count: LiteralInteger },
+ DerivativeGroupQuadsNV,
+ DerivativeGroupLinearNV,
+ OutputTrianglesNV,
+ PixelInterlockOrderedEXT,
+ PixelInterlockUnorderedEXT,
+ SampleInterlockOrderedEXT,
+ SampleInterlockUnorderedEXT,
+ ShadingRateInterlockOrderedEXT,
+ ShadingRateInterlockUnorderedEXT,
+ SharedLocalMemorySizeINTEL: struct { size: LiteralInteger },
+ RoundingModeRTPINTEL: struct { target_width: LiteralInteger },
+ RoundingModeRTNINTEL: struct { target_width: LiteralInteger },
+ FloatingPointModeALTINTEL: struct { target_width: LiteralInteger },
+ FloatingPointModeIEEEINTEL: struct { target_width: LiteralInteger },
+ MaxWorkgroupSizeINTEL: struct { literal_integer_0: LiteralInteger, literal_integer_1: LiteralInteger, literal_integer_2: LiteralInteger },
+ MaxWorkDimINTEL: struct { literal_integer: LiteralInteger },
+ NoGlobalOffsetINTEL,
+ NumSIMDWorkitemsINTEL: struct { literal_integer: LiteralInteger },
+ SchedulerTargetFmaxMhzINTEL: struct { literal_integer: LiteralInteger },
+ };
};
pub const StorageClass = enum(u32) {
UniformConstant = 0,
@@ -1065,7 +1872,14 @@ pub const StorageClass = enum(u32) {
CodeSectionINTEL = 5605,
DeviceOnlyINTEL = 5936,
HostOnlyINTEL = 5937,
- _,
+
+ pub const CallableDataNV = StorageClass.CallableDataKHR;
+ pub const IncomingCallableDataNV = StorageClass.IncomingCallableDataKHR;
+ pub const RayPayloadNV = StorageClass.RayPayloadKHR;
+ pub const HitAttributeNV = StorageClass.HitAttributeKHR;
+ pub const IncomingRayPayloadNV = StorageClass.IncomingRayPayloadKHR;
+ pub const ShaderRecordBufferNV = StorageClass.ShaderRecordBufferKHR;
+ pub const PhysicalStorageBufferEXT = StorageClass.PhysicalStorageBuffer;
};
pub const Dim = enum(u32) {
@"1D" = 0,
@@ -1075,7 +1889,6 @@ pub const Dim = enum(u32) {
Rect = 4,
Buffer = 5,
SubpassData = 6,
- _,
};
pub const SamplerAddressingMode = enum(u32) {
None = 0,
@@ -1083,12 +1896,10 @@ pub const SamplerAddressingMode = enum(u32) {
Clamp = 2,
Repeat = 3,
RepeatMirrored = 4,
- _,
};
pub const SamplerFilterMode = enum(u32) {
Nearest = 0,
Linear = 1,
- _,
};
pub const ImageFormat = enum(u32) {
Unknown = 0,
@@ -1133,7 +1944,6 @@ pub const ImageFormat = enum(u32) {
R8ui = 39,
R64ui = 40,
R64i = 41,
- _,
};
pub const ImageChannelOrder = enum(u32) {
R = 0,
@@ -1156,7 +1966,6 @@ pub const ImageChannelOrder = enum(u32) {
sRGBA = 17,
sBGRA = 18,
ABGR = 19,
- _,
};
pub const ImageChannelDataType = enum(u32) {
SnormInt8 = 0,
@@ -1176,36 +1985,30 @@ pub const ImageChannelDataType = enum(u32) {
Float = 14,
UnormInt24 = 15,
UnormInt101010_2 = 16,
- _,
};
pub const FPRoundingMode = enum(u32) {
RTE = 0,
RTZ = 1,
RTP = 2,
RTN = 3,
- _,
};
pub const FPDenormMode = enum(u32) {
Preserve = 0,
FlushToZero = 1,
- _,
};
pub const FPOperationMode = enum(u32) {
IEEE = 0,
ALT = 1,
- _,
};
pub const LinkageType = enum(u32) {
Export = 0,
Import = 1,
LinkOnceODR = 2,
- _,
};
pub const AccessQualifier = enum(u32) {
ReadOnly = 0,
WriteOnly = 1,
ReadWrite = 2,
- _,
};
pub const FunctionParameterAttribute = enum(u32) {
Zext = 0,
@@ -1216,7 +2019,6 @@ pub const FunctionParameterAttribute = enum(u32) {
NoCapture = 5,
NoWrite = 6,
NoReadWrite = 7,
- _,
};
pub const Decoration = enum(u32) {
RelaxedPrecision = 0,
@@ -1278,11 +2080,8 @@ pub const Decoration = enum(u32) {
PerTaskNV = 5273,
PerVertexNV = 5285,
NonUniform = 5300,
- NonUniformEXT = 5300,
RestrictPointer = 5355,
- RestrictPointerEXT = 5355,
AliasedPointer = 5356,
- AliasedPointerEXT = 5356,
SIMTCallINTEL = 5599,
ReferencedIndirectlyINTEL = 5602,
ClobberINTEL = 5607,
@@ -1293,9 +2092,7 @@ pub const Decoration = enum(u32) {
StackCallINTEL = 5627,
GlobalVariableOffsetINTEL = 5628,
CounterBuffer = 5634,
- HlslCounterBufferGOOGLE = 5634,
UserSemantic = 5635,
- HlslSemanticGOOGLE = 5635,
UserTypeGOOGLE = 5636,
FunctionRoundingModeINTEL = 5822,
FunctionDenormModeINTEL = 5823,
@@ -1322,7 +2119,113 @@ pub const Decoration = enum(u32) {
FunctionFloatingPointModeINTEL = 6080,
SingleElementVectorINTEL = 6085,
VectorComputeCallableFunctionINTEL = 6087,
- _,
+
+ pub const NonUniformEXT = Decoration.NonUniform;
+ pub const RestrictPointerEXT = Decoration.RestrictPointer;
+ pub const AliasedPointerEXT = Decoration.AliasedPointer;
+ pub const HlslCounterBufferGOOGLE = Decoration.CounterBuffer;
+ pub const HlslSemanticGOOGLE = Decoration.UserSemantic;
+
+ pub const Extended = union(Decoration) {
+ RelaxedPrecision,
+ SpecId: struct { specialization_constant_id: LiteralInteger },
+ Block,
+ BufferBlock,
+ RowMajor,
+ ColMajor,
+ ArrayStride: struct { array_stride: LiteralInteger },
+ MatrixStride: struct { matrix_stride: LiteralInteger },
+ GLSLShared,
+ GLSLPacked,
+ CPacked,
+ BuiltIn: struct { built_in: BuiltIn },
+ NoPerspective,
+ Flat,
+ Patch,
+ Centroid,
+ Sample,
+ Invariant,
+ Restrict,
+ Aliased,
+ Volatile,
+ Constant,
+ Coherent,
+ NonWritable,
+ NonReadable,
+ Uniform,
+ UniformId: struct { execution: IdScope },
+ SaturatedConversion,
+ Stream: struct { stream_number: LiteralInteger },
+ Location: struct { location: LiteralInteger },
+ Component: struct { component: LiteralInteger },
+ Index: struct { index: LiteralInteger },
+ Binding: struct { binding_point: LiteralInteger },
+ DescriptorSet: struct { descriptor_set: LiteralInteger },
+ Offset: struct { byte_offset: LiteralInteger },
+ XfbBuffer: struct { xfb_buffer_number: LiteralInteger },
+ XfbStride: struct { xfb_stride: LiteralInteger },
+ FuncParamAttr: struct { function_parameter_attribute: FunctionParameterAttribute },
+ FPRoundingMode: struct { fprounding_mode: FPRoundingMode },
+ FPFastMathMode: struct { fpfast_math_mode: FPFastMathMode },
+ LinkageAttributes: struct { name: LiteralString, linkage_type: LinkageType },
+ NoContraction,
+ InputAttachmentIndex: struct { attachment_index: LiteralInteger },
+ Alignment: struct { alignment: LiteralInteger },
+ MaxByteOffset: struct { max_byte_offset: LiteralInteger },
+ AlignmentId: struct { alignment: IdRef },
+ MaxByteOffsetId: struct { max_byte_offset: IdRef },
+ NoSignedWrap,
+ NoUnsignedWrap,
+ ExplicitInterpAMD,
+ OverrideCoverageNV,
+ PassthroughNV,
+ ViewportRelativeNV,
+ SecondaryViewportRelativeNV: struct { offset: LiteralInteger },
+ PerPrimitiveNV,
+ PerViewNV,
+ PerTaskNV,
+ PerVertexNV,
+ NonUniform,
+ RestrictPointer,
+ AliasedPointer,
+ SIMTCallINTEL: struct { n: LiteralInteger },
+ ReferencedIndirectlyINTEL,
+ ClobberINTEL: struct { register: LiteralString },
+ SideEffectsINTEL,
+ VectorComputeVariableINTEL,
+ FuncParamIOKindINTEL: struct { kind: LiteralInteger },
+ VectorComputeFunctionINTEL,
+ StackCallINTEL,
+ GlobalVariableOffsetINTEL: struct { offset: LiteralInteger },
+ CounterBuffer: struct { counter_buffer: IdRef },
+ UserSemantic: struct { semantic: LiteralString },
+ UserTypeGOOGLE: struct { user_type: LiteralString },
+ FunctionRoundingModeINTEL: struct { target_width: LiteralInteger, fp_rounding_mode: FPRoundingMode },
+ FunctionDenormModeINTEL: struct { target_width: LiteralInteger, fp_denorm_mode: FPDenormMode },
+ RegisterINTEL,
+ MemoryINTEL: struct { memory_type: LiteralString },
+ NumbanksINTEL: struct { banks: LiteralInteger },
+ BankwidthINTEL: struct { bank_width: LiteralInteger },
+ MaxPrivateCopiesINTEL: struct { maximum_copies: LiteralInteger },
+ SinglepumpINTEL,
+ DoublepumpINTEL,
+ MaxReplicatesINTEL: struct { maximum_replicates: LiteralInteger },
+ SimpleDualPortINTEL,
+ MergeINTEL: struct { merge_key: LiteralString, merge_type: LiteralString },
+ BankBitsINTEL: struct { bank_bits: []const LiteralInteger = &.{} },
+ ForcePow2DepthINTEL: struct { force_key: LiteralInteger },
+ BurstCoalesceINTEL,
+ CacheSizeINTEL: struct { cache_size_in_bytes: LiteralInteger },
+ DontStaticallyCoalesceINTEL,
+ PrefetchINTEL: struct { prefetcher_size_in_bytes: LiteralInteger },
+ StallEnableINTEL,
+ FuseLoopsInFunctionINTEL,
+ BufferLocationINTEL: struct { buffer_location_id: LiteralInteger },
+ IOPipeStorageINTEL: struct { io_pipe_id: LiteralInteger },
+ FunctionFloatingPointModeINTEL: struct { target_width: LiteralInteger, fp_operation_mode: FPOperationMode },
+ SingleElementVectorINTEL,
+ VectorComputeCallableFunctionINTEL,
+ };
};
pub const BuiltIn = enum(u32) {
Position = 0,
@@ -1367,15 +2270,10 @@ pub const BuiltIn = enum(u32) {
VertexIndex = 42,
InstanceIndex = 43,
SubgroupEqMask = 4416,
- SubgroupEqMaskKHR = 4416,
SubgroupGeMask = 4417,
- SubgroupGeMaskKHR = 4417,
SubgroupGtMask = 4418,
- SubgroupGtMaskKHR = 4418,
SubgroupLeMask = 4419,
- SubgroupLeMaskKHR = 4419,
SubgroupLtMask = 4420,
- SubgroupLtMaskKHR = 4420,
BaseVertex = 4424,
BaseInstance = 4425,
DrawIndex = 4426,
@@ -1408,42 +2306,47 @@ pub const BuiltIn = enum(u32) {
BaryCoordNV = 5286,
BaryCoordNoPerspNV = 5287,
FragSizeEXT = 5292,
- FragmentSizeNV = 5292,
FragInvocationCountEXT = 5293,
- InvocationsPerPixelNV = 5293,
- LaunchIdNV = 5319,
LaunchIdKHR = 5319,
- LaunchSizeNV = 5320,
LaunchSizeKHR = 5320,
- WorldRayOriginNV = 5321,
WorldRayOriginKHR = 5321,
- WorldRayDirectionNV = 5322,
WorldRayDirectionKHR = 5322,
- ObjectRayOriginNV = 5323,
ObjectRayOriginKHR = 5323,
- ObjectRayDirectionNV = 5324,
ObjectRayDirectionKHR = 5324,
- RayTminNV = 5325,
RayTminKHR = 5325,
- RayTmaxNV = 5326,
RayTmaxKHR = 5326,
- InstanceCustomIndexNV = 5327,
InstanceCustomIndexKHR = 5327,
- ObjectToWorldNV = 5330,
ObjectToWorldKHR = 5330,
- WorldToObjectNV = 5331,
WorldToObjectKHR = 5331,
HitTNV = 5332,
- HitKindNV = 5333,
HitKindKHR = 5333,
- IncomingRayFlagsNV = 5351,
IncomingRayFlagsKHR = 5351,
RayGeometryIndexKHR = 5352,
WarpsPerSMNV = 5374,
SMCountNV = 5375,
WarpIDNV = 5376,
SMIDNV = 5377,
- _,
+
+ pub const SubgroupEqMaskKHR = BuiltIn.SubgroupEqMask;
+ pub const SubgroupGeMaskKHR = BuiltIn.SubgroupGeMask;
+ pub const SubgroupGtMaskKHR = BuiltIn.SubgroupGtMask;
+ pub const SubgroupLeMaskKHR = BuiltIn.SubgroupLeMask;
+ pub const SubgroupLtMaskKHR = BuiltIn.SubgroupLtMask;
+ pub const FragmentSizeNV = BuiltIn.FragSizeEXT;
+ pub const InvocationsPerPixelNV = BuiltIn.FragInvocationCountEXT;
+ pub const LaunchIdNV = BuiltIn.LaunchIdKHR;
+ pub const LaunchSizeNV = BuiltIn.LaunchSizeKHR;
+ pub const WorldRayOriginNV = BuiltIn.WorldRayOriginKHR;
+ pub const WorldRayDirectionNV = BuiltIn.WorldRayDirectionKHR;
+ pub const ObjectRayOriginNV = BuiltIn.ObjectRayOriginKHR;
+ pub const ObjectRayDirectionNV = BuiltIn.ObjectRayDirectionKHR;
+ pub const RayTminNV = BuiltIn.RayTminKHR;
+ pub const RayTmaxNV = BuiltIn.RayTmaxKHR;
+ pub const InstanceCustomIndexNV = BuiltIn.InstanceCustomIndexKHR;
+ pub const ObjectToWorldNV = BuiltIn.ObjectToWorldKHR;
+ pub const WorldToObjectNV = BuiltIn.WorldToObjectKHR;
+ pub const HitKindNV = BuiltIn.HitKindKHR;
+ pub const IncomingRayFlagsNV = BuiltIn.IncomingRayFlagsKHR;
};
pub const Scope = enum(u32) {
CrossDevice = 0,
@@ -1452,9 +2355,9 @@ pub const Scope = enum(u32) {
Subgroup = 3,
Invocation = 4,
QueueFamily = 5,
- QueueFamilyKHR = 5,
ShaderCallKHR = 6,
- _,
+
+ pub const QueueFamilyKHR = Scope.QueueFamily;
};
pub const GroupOperation = enum(u32) {
Reduce = 0,
@@ -1464,13 +2367,11 @@ pub const GroupOperation = enum(u32) {
PartitionedReduceNV = 6,
PartitionedInclusiveScanNV = 7,
PartitionedExclusiveScanNV = 8,
- _,
};
pub const KernelEnqueueFlags = enum(u32) {
NoWait = 0,
WaitKernel = 1,
WaitWorkGroup = 2,
- _,
};
pub const Capability = enum(u32) {
Matrix = 0,
@@ -1550,7 +2451,7 @@ pub const Capability = enum(u32) {
WorkgroupMemoryExplicitLayout16BitAccessKHR = 4430,
SubgroupVoteKHR = 4431,
StorageBuffer16BitAccess = 4433,
- StorageUniform16 = 4434,
+ UniformAndStorageBuffer16BitAccess = 4434,
StoragePushConstant16 = 4435,
StorageInputOutput16 = 4436,
DeviceGroup = 4437,
@@ -1580,7 +2481,7 @@ pub const Capability = enum(u32) {
ShaderClockKHR = 5055,
SampleMaskOverrideCoverageNV = 5249,
GeometryShaderPassthroughNV = 5251,
- ShaderViewportIndexLayerNV = 5254,
+ ShaderViewportIndexLayerEXT = 5254,
ShaderViewportMaskNV = 5255,
ShaderStereoViewNV = 5259,
PerViewAttributesNV = 5260,
@@ -1589,7 +2490,7 @@ pub const Capability = enum(u32) {
ImageFootprintNV = 5282,
FragmentBarycentricNV = 5284,
ComputeDerivativeGroupQuadsNV = 5288,
- ShadingRateNV = 5291,
+ FragmentDensityEXT = 5291,
GroupNonUniformPartitionedNV = 5297,
ShaderNonUniform = 5301,
RuntimeDescriptorArray = 5302,
@@ -1654,21 +2555,37 @@ pub const Capability = enum(u32) {
AtomicFloat32AddEXT = 6033,
AtomicFloat64AddEXT = 6034,
LongConstantCompositeINTEL = 6089,
- _,
+
+ pub const StorageUniformBufferBlock16 = Capability.StorageBuffer16BitAccess;
+ pub const StorageUniform16 = Capability.UniformAndStorageBuffer16BitAccess;
+ pub const ShaderViewportIndexLayerNV = Capability.ShaderViewportIndexLayerEXT;
+ pub const ShadingRateNV = Capability.FragmentDensityEXT;
+ pub const ShaderNonUniformEXT = Capability.ShaderNonUniform;
+ pub const RuntimeDescriptorArrayEXT = Capability.RuntimeDescriptorArray;
+ pub const InputAttachmentArrayDynamicIndexingEXT = Capability.InputAttachmentArrayDynamicIndexing;
+ pub const UniformTexelBufferArrayDynamicIndexingEXT = Capability.UniformTexelBufferArrayDynamicIndexing;
+ pub const StorageTexelBufferArrayDynamicIndexingEXT = Capability.StorageTexelBufferArrayDynamicIndexing;
+ pub const UniformBufferArrayNonUniformIndexingEXT = Capability.UniformBufferArrayNonUniformIndexing;
+ pub const SampledImageArrayNonUniformIndexingEXT = Capability.SampledImageArrayNonUniformIndexing;
+ pub const StorageBufferArrayNonUniformIndexingEXT = Capability.StorageBufferArrayNonUniformIndexing;
+ pub const StorageImageArrayNonUniformIndexingEXT = Capability.StorageImageArrayNonUniformIndexing;
+ pub const InputAttachmentArrayNonUniformIndexingEXT = Capability.InputAttachmentArrayNonUniformIndexing;
+ pub const UniformTexelBufferArrayNonUniformIndexingEXT = Capability.UniformTexelBufferArrayNonUniformIndexing;
+ pub const StorageTexelBufferArrayNonUniformIndexingEXT = Capability.StorageTexelBufferArrayNonUniformIndexing;
+ pub const VulkanMemoryModelKHR = Capability.VulkanMemoryModel;
+ pub const VulkanMemoryModelDeviceScopeKHR = Capability.VulkanMemoryModelDeviceScope;
+ pub const PhysicalStorageBufferAddressesEXT = Capability.PhysicalStorageBufferAddresses;
};
pub const RayQueryIntersection = enum(u32) {
RayQueryCandidateIntersectionKHR = 0,
RayQueryCommittedIntersectionKHR = 1,
- _,
};
pub const RayQueryCommittedIntersectionType = enum(u32) {
RayQueryCommittedIntersectionNoneKHR = 0,
RayQueryCommittedIntersectionTriangleKHR = 1,
RayQueryCommittedIntersectionGeneratedKHR = 2,
- _,
};
pub const RayQueryCandidateIntersectionType = enum(u32) {
RayQueryCandidateIntersectionTriangleKHR = 0,
RayQueryCandidateIntersectionAABBKHR = 1,
- _,
};