authorgravatar for robin@voetter.nlRobin Voetter <robin@voetter.nl> 2022-01-21 15:07:01+01:00
committergravatar for robin@voetter.nlRobin Voetter <robin@voetter.nl> 2022-01-28 14:38:57+01:00
log94dd7639363bd48ba50655ddf1e94d488a0bc75c
tree32734d9300d7711d9fde4a179944b4fd5827bf63
parentff042e800662b7407da38aab3e5b163819aba61d

spirv: regenerate spec

Regenerate the specification with the improvements previously made to the spirv spec generator.

1 files changed, 985 insertions(+), 68 deletions(-)

src/codegen/spirv/spec.zig+985-68
...@@ -1,8 +1,46 @@...@@ -1,8 +1,46 @@
1//! This file is auto-generated by tools/gen_spirv_spec.zig.1//! This file is auto-generated by tools/gen_spirv_spec.zig.
22
3const Version = @import("std").builtin.Version;3const Version = @import("std").builtin.Version;
4
5pub const Word = u32;
6pub const IdResultType = struct {
7 id: Word,
8 pub fn toRef(self: IdResultType) IdRef {
9 return .{ .id = self.id };
10 }
11};
12pub const IdResult = struct {
13 id: Word,
14 pub fn toRef(self: IdResult) IdRef {
15 return .{ .id = self.id };
16 }
17 pub fn toResultType(self: IdResult) IdResultType {
18 return .{ .id = self.id };
19 }
20};
21pub const IdRef = struct { id: Word };
22
23pub const IdMemorySemantics = IdRef;
24pub const IdScope = IdRef;
25
26pub const LiteralInteger = Word;
27pub const LiteralString = []const u8;
28pub const LiteralContextDependentNumber = union(enum) {
29 int32: i32,
30 uint32: u32,
31 int64: i64,
32 uint64: u64,
33 float32: f32,
34 float64: f64,
35};
36pub const LiteralExtInstInteger = struct { inst: Word };
37pub const LiteralSpecConstantOpInteger = struct { opcode: Opcode };
38pub const PairLiteralIntegerIdRef = struct { value: LiteralInteger, label: IdRef };
39pub const PairIdRefLiteralInteger = struct { target: IdRef, member: LiteralInteger };
40pub const PairIdRefIdRef = [2]IdRef;
41
4pub const version = Version{ .major = 1, .minor = 5, .patch = 4 };42pub const version = Version{ .major = 1, .minor = 5, .patch = 4 };
5pub const magic_number: u32 = 0x07230203;43pub const magic_number: Word = 0x07230203;
6pub const Opcode = enum(u16) {44pub const Opcode = enum(u16) {
7 OpNop = 0,45 OpNop = 0,
8 OpUndef = 1,46 OpUndef = 1,
...@@ -381,11 +419,11 @@ pub const Opcode = enum(u16) {...@@ -381,11 +419,11 @@ pub const Opcode = enum(u16) {
381 OpImageSampleFootprintNV = 5283,419 OpImageSampleFootprintNV = 5283,
382 OpGroupNonUniformPartitionNV = 5296,420 OpGroupNonUniformPartitionNV = 5296,
383 OpWritePackedPrimitiveIndices4x8NV = 5299,421 OpWritePackedPrimitiveIndices4x8NV = 5299,
384 OpReportIntersectionNV = 5334,422 OpReportIntersectionKHR = 5334,
385 OpIgnoreIntersectionNV = 5335,423 OpIgnoreIntersectionNV = 5335,
386 OpTerminateRayNV = 5336,424 OpTerminateRayNV = 5336,
387 OpTraceNV = 5337,425 OpTraceNV = 5337,
388 OpTypeAccelerationStructureNV = 5341,426 OpTypeAccelerationStructureKHR = 5341,
389 OpExecuteCallableNV = 5344,427 OpExecuteCallableNV = 5344,
390 OpTypeCooperativeMatrixNV = 5358,428 OpTypeCooperativeMatrixNV = 5358,
391 OpCooperativeMatrixLoadNV = 5359,429 OpCooperativeMatrixLoadNV = 5359,
...@@ -580,10 +618,592 @@ pub const Opcode = enum(u16) {...@@ -580,10 +618,592 @@ pub const Opcode = enum(u16) {
580 OpTypeStructContinuedINTEL = 6090,618 OpTypeStructContinuedINTEL = 6090,
581 OpConstantCompositeContinuedINTEL = 6091,619 OpConstantCompositeContinuedINTEL = 6091,
582 OpSpecConstantCompositeContinuedINTEL = 6092,620 OpSpecConstantCompositeContinuedINTEL = 6092,
583 _,
584621
585 const OpReportIntersectionKHR: Opcode = .OpReportIntersectionNV;622 pub const OpReportIntersectionNV = Opcode.OpReportIntersectionKHR;
586 const OpTypeAccelerationStructureKHR: Opcode = .OpTypeAccelerationStructureNV;623 pub const OpTypeAccelerationStructureNV = Opcode.OpTypeAccelerationStructureKHR;
624 pub const OpDecorateStringGOOGLE = Opcode.OpDecorateString;
625 pub const OpMemberDecorateStringGOOGLE = Opcode.OpMemberDecorateString;
626
627 pub fn Operands(comptime self: Opcode) type {
628 return switch (self) {
629 .OpNop => void,
630 .OpUndef => struct { id_result_type: IdResultType, id_result: IdResult },
631 .OpSourceContinued => struct { continued_source: LiteralString },
632 .OpSource => struct { source_language: SourceLanguage, version: LiteralInteger, file: ?IdRef = null, source: ?LiteralString = null },
633 .OpSourceExtension => struct { extension: LiteralString },
634 .OpName => struct { target: IdRef, name: LiteralString },
635 .OpMemberName => struct { type: IdRef, member: LiteralInteger, name: LiteralString },
636 .OpString => struct { id_result: IdResult, string: LiteralString },
637 .OpLine => struct { file: IdRef, line: LiteralInteger, column: LiteralInteger },
638 .OpExtension => struct { name: LiteralString },
639 .OpExtInstImport => struct { id_result: IdResult, name: LiteralString },
640 .OpExtInst => struct { id_result_type: IdResultType, id_result: IdResult, set: IdRef, instruction: LiteralExtInstInteger, id_ref_4: []const IdRef = &.{} },
641 .OpMemoryModel => struct { addressing_model: AddressingModel, memory_model: MemoryModel },
642 .OpEntryPoint => struct { execution_model: ExecutionModel, entry_point: IdRef, name: LiteralString, interface: []const IdRef = &.{} },
643 .OpExecutionMode => struct { entry_point: IdRef, mode: ExecutionMode.Extended },
644 .OpCapability => struct { capability: Capability },
645 .OpTypeVoid => struct { id_result: IdResult },
646 .OpTypeBool => struct { id_result: IdResult },
647 .OpTypeInt => struct { id_result: IdResult, width: LiteralInteger, signedness: LiteralInteger },
648 .OpTypeFloat => struct { id_result: IdResult, width: LiteralInteger },
649 .OpTypeVector => struct { id_result: IdResult, component_type: IdRef, component_count: LiteralInteger },
650 .OpTypeMatrix => struct { id_result: IdResult, column_type: IdRef, column_count: LiteralInteger },
651 .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 },
652 .OpTypeSampler => struct { id_result: IdResult },
653 .OpTypeSampledImage => struct { id_result: IdResult, image_type: IdRef },
654 .OpTypeArray => struct { id_result: IdResult, element_type: IdRef, length: IdRef },
655 .OpTypeRuntimeArray => struct { id_result: IdResult, element_type: IdRef },
656 .OpTypeStruct => struct { id_result: IdResult, id_ref: []const IdRef = &.{} },
657 .OpTypeOpaque => struct { id_result: IdResult, literal_string: LiteralString },
658 .OpTypePointer => struct { id_result: IdResult, storage_class: StorageClass, type: IdRef },
659 .OpTypeFunction => struct { id_result: IdResult, return_type: IdRef, id_ref_2: []const IdRef = &.{} },
660 .OpTypeEvent => struct { id_result: IdResult },
661 .OpTypeDeviceEvent => struct { id_result: IdResult },
662 .OpTypeReserveId => struct { id_result: IdResult },
663 .OpTypeQueue => struct { id_result: IdResult },
664 .OpTypePipe => struct { id_result: IdResult, qualifier: AccessQualifier },
665 .OpTypeForwardPointer => struct { pointer_type: IdRef, storage_class: StorageClass },
666 .OpConstantTrue => struct { id_result_type: IdResultType, id_result: IdResult },
667 .OpConstantFalse => struct { id_result_type: IdResultType, id_result: IdResult },
668 .OpConstant => struct { id_result_type: IdResultType, id_result: IdResult, value: LiteralContextDependentNumber },
669 .OpConstantComposite => struct { id_result_type: IdResultType, id_result: IdResult, constituents: []const IdRef = &.{} },
670 .OpConstantSampler => struct { id_result_type: IdResultType, id_result: IdResult, sampler_addressing_mode: SamplerAddressingMode, param: LiteralInteger, sampler_filter_mode: SamplerFilterMode },
671 .OpConstantNull => struct { id_result_type: IdResultType, id_result: IdResult },
672 .OpSpecConstantTrue => struct { id_result_type: IdResultType, id_result: IdResult },
673 .OpSpecConstantFalse => struct { id_result_type: IdResultType, id_result: IdResult },
674 .OpSpecConstant => struct { id_result_type: IdResultType, id_result: IdResult, value: LiteralContextDependentNumber },
675 .OpSpecConstantComposite => struct { id_result_type: IdResultType, id_result: IdResult, constituents: []const IdRef = &.{} },
676 .OpSpecConstantOp => struct { id_result_type: IdResultType, id_result: IdResult, opcode: LiteralSpecConstantOpInteger },
677 .OpFunction => struct { id_result_type: IdResultType, id_result: IdResult, function_control: FunctionControl, function_type: IdRef },
678 .OpFunctionParameter => struct { id_result_type: IdResultType, id_result: IdResult },
679 .OpFunctionEnd => void,
680 .OpFunctionCall => struct { id_result_type: IdResultType, id_result: IdResult, function: IdRef, id_ref_3: []const IdRef = &.{} },
681 .OpVariable => struct { id_result_type: IdResultType, id_result: IdResult, storage_class: StorageClass, initializer: ?IdRef = null },
682 .OpImageTexelPointer => struct { id_result_type: IdResultType, id_result: IdResult, image: IdRef, coordinate: IdRef, sample: IdRef },
683 .OpLoad => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory_access: ?MemoryAccess.Extended = null },
684 .OpStore => struct { pointer: IdRef, object: IdRef, memory_access: ?MemoryAccess.Extended = null },
685 .OpCopyMemory => struct { target: IdRef, source: IdRef, memory_access_2: ?MemoryAccess.Extended = null, memory_access_3: ?MemoryAccess.Extended = null },
686 .OpCopyMemorySized => struct { target: IdRef, source: IdRef, size: IdRef, memory_access_3: ?MemoryAccess.Extended = null, memory_access_4: ?MemoryAccess.Extended = null },
687 .OpAccessChain => struct { id_result_type: IdResultType, id_result: IdResult, base: IdRef, indexes: []const IdRef = &.{} },
688 .OpInBoundsAccessChain => struct { id_result_type: IdResultType, id_result: IdResult, base: IdRef, indexes: []const IdRef = &.{} },
689 .OpPtrAccessChain => struct { id_result_type: IdResultType, id_result: IdResult, base: IdRef, element: IdRef, indexes: []const IdRef = &.{} },
690 .OpArrayLength => struct { id_result_type: IdResultType, id_result: IdResult, structure: IdRef, array_member: LiteralInteger },
691 .OpGenericPtrMemSemantics => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef },
692 .OpInBoundsPtrAccessChain => struct { id_result_type: IdResultType, id_result: IdResult, base: IdRef, element: IdRef, indexes: []const IdRef = &.{} },
693 .OpDecorate => struct { target: IdRef, decoration: Decoration.Extended },
694 .OpMemberDecorate => struct { structure_type: IdRef, member: LiteralInteger, decoration: Decoration.Extended },
695 .OpDecorationGroup => struct { id_result: IdResult },
696 .OpGroupDecorate => struct { decoration_group: IdRef, targets: []const IdRef = &.{} },
697 .OpGroupMemberDecorate => struct { decoration_group: IdRef, targets: []const PairIdRefLiteralInteger = &.{} },
698 .OpVectorExtractDynamic => struct { id_result_type: IdResultType, id_result: IdResult, vector: IdRef, index: IdRef },
699 .OpVectorInsertDynamic => struct { id_result_type: IdResultType, id_result: IdResult, vector: IdRef, component: IdRef, index: IdRef },
700 .OpVectorShuffle => struct { id_result_type: IdResultType, id_result: IdResult, vector_1: IdRef, vector_2: IdRef, components: []const LiteralInteger = &.{} },
701 .OpCompositeConstruct => struct { id_result_type: IdResultType, id_result: IdResult, constituents: []const IdRef = &.{} },
702 .OpCompositeExtract => struct { id_result_type: IdResultType, id_result: IdResult, composite: IdRef, indexes: []const LiteralInteger = &.{} },
703 .OpCompositeInsert => struct { id_result_type: IdResultType, id_result: IdResult, object: IdRef, composite: IdRef, indexes: []const LiteralInteger = &.{} },
704 .OpCopyObject => struct { id_result_type: IdResultType, id_result: IdResult, operand: IdRef },
705 .OpTranspose => struct { id_result_type: IdResultType, id_result: IdResult, matrix: IdRef },
706 .OpSampledImage => struct { id_result_type: IdResultType, id_result: IdResult, image: IdRef, sampler: IdRef },
707 .OpImageSampleImplicitLod => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, image_operands: ?ImageOperands.Extended = null },
708 .OpImageSampleExplicitLod => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, image_operands: ImageOperands.Extended },
709 .OpImageSampleDrefImplicitLod => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, d_ref: IdRef, image_operands: ?ImageOperands.Extended = null },
710 .OpImageSampleDrefExplicitLod => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, d_ref: IdRef, image_operands: ImageOperands.Extended },
711 .OpImageSampleProjImplicitLod => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, image_operands: ?ImageOperands.Extended = null },
712 .OpImageSampleProjExplicitLod => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, image_operands: ImageOperands.Extended },
713 .OpImageSampleProjDrefImplicitLod => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, d_ref: IdRef, image_operands: ?ImageOperands.Extended = null },
714 .OpImageSampleProjDrefExplicitLod => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, d_ref: IdRef, image_operands: ImageOperands.Extended },
715 .OpImageFetch => struct { id_result_type: IdResultType, id_result: IdResult, image: IdRef, coordinate: IdRef, image_operands: ?ImageOperands.Extended = null },
716 .OpImageGather => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, component: IdRef, image_operands: ?ImageOperands.Extended = null },
717 .OpImageDrefGather => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, d_ref: IdRef, image_operands: ?ImageOperands.Extended = null },
718 .OpImageRead => struct { id_result_type: IdResultType, id_result: IdResult, image: IdRef, coordinate: IdRef, image_operands: ?ImageOperands.Extended = null },
719 .OpImageWrite => struct { image: IdRef, coordinate: IdRef, texel: IdRef, image_operands: ?ImageOperands.Extended = null },
720 .OpImage => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef },
721 .OpImageQueryFormat => struct { id_result_type: IdResultType, id_result: IdResult, image: IdRef },
722 .OpImageQueryOrder => struct { id_result_type: IdResultType, id_result: IdResult, image: IdRef },
723 .OpImageQuerySizeLod => struct { id_result_type: IdResultType, id_result: IdResult, image: IdRef, level_of_detail: IdRef },
724 .OpImageQuerySize => struct { id_result_type: IdResultType, id_result: IdResult, image: IdRef },
725 .OpImageQueryLod => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef },
726 .OpImageQueryLevels => struct { id_result_type: IdResultType, id_result: IdResult, image: IdRef },
727 .OpImageQuerySamples => struct { id_result_type: IdResultType, id_result: IdResult, image: IdRef },
728 .OpConvertFToU => struct { id_result_type: IdResultType, id_result: IdResult, float_value: IdRef },
729 .OpConvertFToS => struct { id_result_type: IdResultType, id_result: IdResult, float_value: IdRef },
730 .OpConvertSToF => struct { id_result_type: IdResultType, id_result: IdResult, signed_value: IdRef },
731 .OpConvertUToF => struct { id_result_type: IdResultType, id_result: IdResult, unsigned_value: IdRef },
732 .OpUConvert => struct { id_result_type: IdResultType, id_result: IdResult, unsigned_value: IdRef },
733 .OpSConvert => struct { id_result_type: IdResultType, id_result: IdResult, signed_value: IdRef },
734 .OpFConvert => struct { id_result_type: IdResultType, id_result: IdResult, float_value: IdRef },
735 .OpQuantizeToF16 => struct { id_result_type: IdResultType, id_result: IdResult, value: IdRef },
736 .OpConvertPtrToU => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef },
737 .OpSatConvertSToU => struct { id_result_type: IdResultType, id_result: IdResult, signed_value: IdRef },
738 .OpSatConvertUToS => struct { id_result_type: IdResultType, id_result: IdResult, unsigned_value: IdRef },
739 .OpConvertUToPtr => struct { id_result_type: IdResultType, id_result: IdResult, integer_value: IdRef },
740 .OpPtrCastToGeneric => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef },
741 .OpGenericCastToPtr => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef },
742 .OpGenericCastToPtrExplicit => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, storage: StorageClass },
743 .OpBitcast => struct { id_result_type: IdResultType, id_result: IdResult, operand: IdRef },
744 .OpSNegate => struct { id_result_type: IdResultType, id_result: IdResult, operand: IdRef },
745 .OpFNegate => struct { id_result_type: IdResultType, id_result: IdResult, operand: IdRef },
746 .OpIAdd => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
747 .OpFAdd => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
748 .OpISub => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
749 .OpFSub => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
750 .OpIMul => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
751 .OpFMul => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
752 .OpUDiv => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
753 .OpSDiv => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
754 .OpFDiv => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
755 .OpUMod => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
756 .OpSRem => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
757 .OpSMod => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
758 .OpFRem => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
759 .OpFMod => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
760 .OpVectorTimesScalar => struct { id_result_type: IdResultType, id_result: IdResult, vector: IdRef, scalar: IdRef },
761 .OpMatrixTimesScalar => struct { id_result_type: IdResultType, id_result: IdResult, matrix: IdRef, scalar: IdRef },
762 .OpVectorTimesMatrix => struct { id_result_type: IdResultType, id_result: IdResult, vector: IdRef, matrix: IdRef },
763 .OpMatrixTimesVector => struct { id_result_type: IdResultType, id_result: IdResult, matrix: IdRef, vector: IdRef },
764 .OpMatrixTimesMatrix => struct { id_result_type: IdResultType, id_result: IdResult, leftmatrix: IdRef, rightmatrix: IdRef },
765 .OpOuterProduct => struct { id_result_type: IdResultType, id_result: IdResult, vector_1: IdRef, vector_2: IdRef },
766 .OpDot => struct { id_result_type: IdResultType, id_result: IdResult, vector_1: IdRef, vector_2: IdRef },
767 .OpIAddCarry => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
768 .OpISubBorrow => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
769 .OpUMulExtended => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
770 .OpSMulExtended => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
771 .OpAny => struct { id_result_type: IdResultType, id_result: IdResult, vector: IdRef },
772 .OpAll => struct { id_result_type: IdResultType, id_result: IdResult, vector: IdRef },
773 .OpIsNan => struct { id_result_type: IdResultType, id_result: IdResult, x: IdRef },
774 .OpIsInf => struct { id_result_type: IdResultType, id_result: IdResult, x: IdRef },
775 .OpIsFinite => struct { id_result_type: IdResultType, id_result: IdResult, x: IdRef },
776 .OpIsNormal => struct { id_result_type: IdResultType, id_result: IdResult, x: IdRef },
777 .OpSignBitSet => struct { id_result_type: IdResultType, id_result: IdResult, x: IdRef },
778 .OpLessOrGreater => struct { id_result_type: IdResultType, id_result: IdResult, x: IdRef, y: IdRef },
779 .OpOrdered => struct { id_result_type: IdResultType, id_result: IdResult, x: IdRef, y: IdRef },
780 .OpUnordered => struct { id_result_type: IdResultType, id_result: IdResult, x: IdRef, y: IdRef },
781 .OpLogicalEqual => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
782 .OpLogicalNotEqual => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
783 .OpLogicalOr => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
784 .OpLogicalAnd => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
785 .OpLogicalNot => struct { id_result_type: IdResultType, id_result: IdResult, operand: IdRef },
786 .OpSelect => struct { id_result_type: IdResultType, id_result: IdResult, condition: IdRef, object_1: IdRef, object_2: IdRef },
787 .OpIEqual => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
788 .OpINotEqual => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
789 .OpUGreaterThan => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
790 .OpSGreaterThan => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
791 .OpUGreaterThanEqual => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
792 .OpSGreaterThanEqual => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
793 .OpULessThan => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
794 .OpSLessThan => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
795 .OpULessThanEqual => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
796 .OpSLessThanEqual => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
797 .OpFOrdEqual => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
798 .OpFUnordEqual => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
799 .OpFOrdNotEqual => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
800 .OpFUnordNotEqual => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
801 .OpFOrdLessThan => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
802 .OpFUnordLessThan => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
803 .OpFOrdGreaterThan => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
804 .OpFUnordGreaterThan => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
805 .OpFOrdLessThanEqual => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
806 .OpFUnordLessThanEqual => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
807 .OpFOrdGreaterThanEqual => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
808 .OpFUnordGreaterThanEqual => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
809 .OpShiftRightLogical => struct { id_result_type: IdResultType, id_result: IdResult, base: IdRef, shift: IdRef },
810 .OpShiftRightArithmetic => struct { id_result_type: IdResultType, id_result: IdResult, base: IdRef, shift: IdRef },
811 .OpShiftLeftLogical => struct { id_result_type: IdResultType, id_result: IdResult, base: IdRef, shift: IdRef },
812 .OpBitwiseOr => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
813 .OpBitwiseXor => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
814 .OpBitwiseAnd => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
815 .OpNot => struct { id_result_type: IdResultType, id_result: IdResult, operand: IdRef },
816 .OpBitFieldInsert => struct { id_result_type: IdResultType, id_result: IdResult, base: IdRef, insert: IdRef, offset: IdRef, count: IdRef },
817 .OpBitFieldSExtract => struct { id_result_type: IdResultType, id_result: IdResult, base: IdRef, offset: IdRef, count: IdRef },
818 .OpBitFieldUExtract => struct { id_result_type: IdResultType, id_result: IdResult, base: IdRef, offset: IdRef, count: IdRef },
819 .OpBitReverse => struct { id_result_type: IdResultType, id_result: IdResult, base: IdRef },
820 .OpBitCount => struct { id_result_type: IdResultType, id_result: IdResult, base: IdRef },
821 .OpDPdx => struct { id_result_type: IdResultType, id_result: IdResult, p: IdRef },
822 .OpDPdy => struct { id_result_type: IdResultType, id_result: IdResult, p: IdRef },
823 .OpFwidth => struct { id_result_type: IdResultType, id_result: IdResult, p: IdRef },
824 .OpDPdxFine => struct { id_result_type: IdResultType, id_result: IdResult, p: IdRef },
825 .OpDPdyFine => struct { id_result_type: IdResultType, id_result: IdResult, p: IdRef },
826 .OpFwidthFine => struct { id_result_type: IdResultType, id_result: IdResult, p: IdRef },
827 .OpDPdxCoarse => struct { id_result_type: IdResultType, id_result: IdResult, p: IdRef },
828 .OpDPdyCoarse => struct { id_result_type: IdResultType, id_result: IdResult, p: IdRef },
829 .OpFwidthCoarse => struct { id_result_type: IdResultType, id_result: IdResult, p: IdRef },
830 .OpEmitVertex => void,
831 .OpEndPrimitive => void,
832 .OpEmitStreamVertex => struct { stream: IdRef },
833 .OpEndStreamPrimitive => struct { stream: IdRef },
834 .OpControlBarrier => struct { execution: IdScope, memory: IdScope, semantics: IdMemorySemantics },
835 .OpMemoryBarrier => struct { memory: IdScope, semantics: IdMemorySemantics },
836 .OpAtomicLoad => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics },
837 .OpAtomicStore => struct { pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics, value: IdRef },
838 .OpAtomicExchange => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics, value: IdRef },
839 .OpAtomicCompareExchange => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, equal: IdMemorySemantics, unequal: IdMemorySemantics, value: IdRef, comparator: IdRef },
840 .OpAtomicCompareExchangeWeak => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, equal: IdMemorySemantics, unequal: IdMemorySemantics, value: IdRef, comparator: IdRef },
841 .OpAtomicIIncrement => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics },
842 .OpAtomicIDecrement => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics },
843 .OpAtomicIAdd => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics, value: IdRef },
844 .OpAtomicISub => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics, value: IdRef },
845 .OpAtomicSMin => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics, value: IdRef },
846 .OpAtomicUMin => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics, value: IdRef },
847 .OpAtomicSMax => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics, value: IdRef },
848 .OpAtomicUMax => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics, value: IdRef },
849 .OpAtomicAnd => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics, value: IdRef },
850 .OpAtomicOr => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics, value: IdRef },
851 .OpAtomicXor => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics, value: IdRef },
852 .OpPhi => struct { id_result_type: IdResultType, id_result: IdResult, pair_id_ref_id_ref: []const PairIdRefIdRef = &.{} },
853 .OpLoopMerge => struct { merge_block: IdRef, continue_target: IdRef, loop_control: LoopControl.Extended },
854 .OpSelectionMerge => struct { merge_block: IdRef, selection_control: SelectionControl },
855 .OpLabel => struct { id_result: IdResult },
856 .OpBranch => struct { target_label: IdRef },
857 .OpBranchConditional => struct { condition: IdRef, true_label: IdRef, false_label: IdRef, branch_weights: []const LiteralInteger = &.{} },
858 .OpSwitch => struct { selector: IdRef, default: IdRef, target: []const PairLiteralIntegerIdRef = &.{} },
859 .OpKill => void,
860 .OpReturn => void,
861 .OpReturnValue => struct { value: IdRef },
862 .OpUnreachable => void,
863 .OpLifetimeStart => struct { pointer: IdRef, size: LiteralInteger },
864 .OpLifetimeStop => struct { pointer: IdRef, size: LiteralInteger },
865 .OpGroupAsyncCopy => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, destination: IdRef, source: IdRef, num_elements: IdRef, stride: IdRef, event: IdRef },
866 .OpGroupWaitEvents => struct { execution: IdScope, num_events: IdRef, events_list: IdRef },
867 .OpGroupAll => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, predicate: IdRef },
868 .OpGroupAny => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, predicate: IdRef },
869 .OpGroupBroadcast => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, value: IdRef, localid: IdRef },
870 .OpGroupIAdd => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
871 .OpGroupFAdd => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
872 .OpGroupFMin => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
873 .OpGroupUMin => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
874 .OpGroupSMin => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
875 .OpGroupFMax => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
876 .OpGroupUMax => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
877 .OpGroupSMax => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
878 .OpReadPipe => struct { id_result_type: IdResultType, id_result: IdResult, pipe: IdRef, pointer: IdRef, packet_size: IdRef, packet_alignment: IdRef },
879 .OpWritePipe => struct { id_result_type: IdResultType, id_result: IdResult, pipe: IdRef, pointer: IdRef, packet_size: IdRef, packet_alignment: IdRef },
880 .OpReservedReadPipe => struct { id_result_type: IdResultType, id_result: IdResult, pipe: IdRef, reserve_id: IdRef, index: IdRef, pointer: IdRef, packet_size: IdRef, packet_alignment: IdRef },
881 .OpReservedWritePipe => struct { id_result_type: IdResultType, id_result: IdResult, pipe: IdRef, reserve_id: IdRef, index: IdRef, pointer: IdRef, packet_size: IdRef, packet_alignment: IdRef },
882 .OpReserveReadPipePackets => struct { id_result_type: IdResultType, id_result: IdResult, pipe: IdRef, num_packets: IdRef, packet_size: IdRef, packet_alignment: IdRef },
883 .OpReserveWritePipePackets => struct { id_result_type: IdResultType, id_result: IdResult, pipe: IdRef, num_packets: IdRef, packet_size: IdRef, packet_alignment: IdRef },
884 .OpCommitReadPipe => struct { pipe: IdRef, reserve_id: IdRef, packet_size: IdRef, packet_alignment: IdRef },
885 .OpCommitWritePipe => struct { pipe: IdRef, reserve_id: IdRef, packet_size: IdRef, packet_alignment: IdRef },
886 .OpIsValidReserveId => struct { id_result_type: IdResultType, id_result: IdResult, reserve_id: IdRef },
887 .OpGetNumPipePackets => struct { id_result_type: IdResultType, id_result: IdResult, pipe: IdRef, packet_size: IdRef, packet_alignment: IdRef },
888 .OpGetMaxPipePackets => struct { id_result_type: IdResultType, id_result: IdResult, pipe: IdRef, packet_size: IdRef, packet_alignment: IdRef },
889 .OpGroupReserveReadPipePackets => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, pipe: IdRef, num_packets: IdRef, packet_size: IdRef, packet_alignment: IdRef },
890 .OpGroupReserveWritePipePackets => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, pipe: IdRef, num_packets: IdRef, packet_size: IdRef, packet_alignment: IdRef },
891 .OpGroupCommitReadPipe => struct { execution: IdScope, pipe: IdRef, reserve_id: IdRef, packet_size: IdRef, packet_alignment: IdRef },
892 .OpGroupCommitWritePipe => struct { execution: IdScope, pipe: IdRef, reserve_id: IdRef, packet_size: IdRef, packet_alignment: IdRef },
893 .OpEnqueueMarker => struct { id_result_type: IdResultType, id_result: IdResult, queue: IdRef, num_events: IdRef, wait_events: IdRef, ret_event: IdRef },
894 .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 = &.{} },
895 .OpGetKernelNDrangeSubGroupCount => struct { id_result_type: IdResultType, id_result: IdResult, nd_range: IdRef, invoke: IdRef, param: IdRef, param_size: IdRef, param_align: IdRef },
896 .OpGetKernelNDrangeMaxSubGroupSize => struct { id_result_type: IdResultType, id_result: IdResult, nd_range: IdRef, invoke: IdRef, param: IdRef, param_size: IdRef, param_align: IdRef },
897 .OpGetKernelWorkGroupSize => struct { id_result_type: IdResultType, id_result: IdResult, invoke: IdRef, param: IdRef, param_size: IdRef, param_align: IdRef },
898 .OpGetKernelPreferredWorkGroupSizeMultiple => struct { id_result_type: IdResultType, id_result: IdResult, invoke: IdRef, param: IdRef, param_size: IdRef, param_align: IdRef },
899 .OpRetainEvent => struct { event: IdRef },
900 .OpReleaseEvent => struct { event: IdRef },
901 .OpCreateUserEvent => struct { id_result_type: IdResultType, id_result: IdResult },
902 .OpIsValidEvent => struct { id_result_type: IdResultType, id_result: IdResult, event: IdRef },
903 .OpSetUserEventStatus => struct { event: IdRef, status: IdRef },
904 .OpCaptureEventProfilingInfo => struct { event: IdRef, profiling_info: IdRef, value: IdRef },
905 .OpGetDefaultQueue => struct { id_result_type: IdResultType, id_result: IdResult },
906 .OpBuildNDRange => struct { id_result_type: IdResultType, id_result: IdResult, globalworksize: IdRef, localworksize: IdRef, globalworkoffset: IdRef },
907 .OpImageSparseSampleImplicitLod => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, image_operands: ?ImageOperands.Extended = null },
908 .OpImageSparseSampleExplicitLod => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, image_operands: ImageOperands.Extended },
909 .OpImageSparseSampleDrefImplicitLod => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, d_ref: IdRef, image_operands: ?ImageOperands.Extended = null },
910 .OpImageSparseSampleDrefExplicitLod => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, d_ref: IdRef, image_operands: ImageOperands.Extended },
911 .OpImageSparseSampleProjImplicitLod => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, image_operands: ?ImageOperands.Extended = null },
912 .OpImageSparseSampleProjExplicitLod => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, image_operands: ImageOperands.Extended },
913 .OpImageSparseSampleProjDrefImplicitLod => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, d_ref: IdRef, image_operands: ?ImageOperands.Extended = null },
914 .OpImageSparseSampleProjDrefExplicitLod => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, d_ref: IdRef, image_operands: ImageOperands.Extended },
915 .OpImageSparseFetch => struct { id_result_type: IdResultType, id_result: IdResult, image: IdRef, coordinate: IdRef, image_operands: ?ImageOperands.Extended = null },
916 .OpImageSparseGather => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, component: IdRef, image_operands: ?ImageOperands.Extended = null },
917 .OpImageSparseDrefGather => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, d_ref: IdRef, image_operands: ?ImageOperands.Extended = null },
918 .OpImageSparseTexelsResident => struct { id_result_type: IdResultType, id_result: IdResult, resident_code: IdRef },
919 .OpNoLine => void,
920 .OpAtomicFlagTestAndSet => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics },
921 .OpAtomicFlagClear => struct { pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics },
922 .OpImageSparseRead => struct { id_result_type: IdResultType, id_result: IdResult, image: IdRef, coordinate: IdRef, image_operands: ?ImageOperands.Extended = null },
923 .OpSizeOf => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef },
924 .OpTypePipeStorage => struct { id_result: IdResult },
925 .OpConstantPipeStorage => struct { id_result_type: IdResultType, id_result: IdResult, packet_size: LiteralInteger, packet_alignment: LiteralInteger, capacity: LiteralInteger },
926 .OpCreatePipeFromPipeStorage => struct { id_result_type: IdResultType, id_result: IdResult, pipe_storage: IdRef },
927 .OpGetKernelLocalSizeForSubgroupCount => struct { id_result_type: IdResultType, id_result: IdResult, subgroup_count: IdRef, invoke: IdRef, param: IdRef, param_size: IdRef, param_align: IdRef },
928 .OpGetKernelMaxNumSubgroups => struct { id_result_type: IdResultType, id_result: IdResult, invoke: IdRef, param: IdRef, param_size: IdRef, param_align: IdRef },
929 .OpTypeNamedBarrier => struct { id_result: IdResult },
930 .OpNamedBarrierInitialize => struct { id_result_type: IdResultType, id_result: IdResult, subgroup_count: IdRef },
931 .OpMemoryNamedBarrier => struct { named_barrier: IdRef, memory: IdScope, semantics: IdMemorySemantics },
932 .OpModuleProcessed => struct { process: LiteralString },
933 .OpExecutionModeId => struct { entry_point: IdRef, mode: ExecutionMode.Extended },
934 .OpDecorateId => struct { target: IdRef, decoration: Decoration.Extended },
935 .OpGroupNonUniformElect => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope },
936 .OpGroupNonUniformAll => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, predicate: IdRef },
937 .OpGroupNonUniformAny => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, predicate: IdRef },
938 .OpGroupNonUniformAllEqual => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, value: IdRef },
939 .OpGroupNonUniformBroadcast => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, value: IdRef, id: IdRef },
940 .OpGroupNonUniformBroadcastFirst => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, value: IdRef },
941 .OpGroupNonUniformBallot => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, predicate: IdRef },
942 .OpGroupNonUniformInverseBallot => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, value: IdRef },
943 .OpGroupNonUniformBallotBitExtract => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, value: IdRef, index: IdRef },
944 .OpGroupNonUniformBallotBitCount => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, value: IdRef },
945 .OpGroupNonUniformBallotFindLSB => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, value: IdRef },
946 .OpGroupNonUniformBallotFindMSB => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, value: IdRef },
947 .OpGroupNonUniformShuffle => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, value: IdRef, id: IdRef },
948 .OpGroupNonUniformShuffleXor => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, value: IdRef, mask: IdRef },
949 .OpGroupNonUniformShuffleUp => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, value: IdRef, delta: IdRef },
950 .OpGroupNonUniformShuffleDown => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, value: IdRef, delta: IdRef },
951 .OpGroupNonUniformIAdd => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, value: IdRef, clustersize: ?IdRef = null },
952 .OpGroupNonUniformFAdd => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, value: IdRef, clustersize: ?IdRef = null },
953 .OpGroupNonUniformIMul => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, value: IdRef, clustersize: ?IdRef = null },
954 .OpGroupNonUniformFMul => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, value: IdRef, clustersize: ?IdRef = null },
955 .OpGroupNonUniformSMin => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, value: IdRef, clustersize: ?IdRef = null },
956 .OpGroupNonUniformUMin => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, value: IdRef, clustersize: ?IdRef = null },
957 .OpGroupNonUniformFMin => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, value: IdRef, clustersize: ?IdRef = null },
958 .OpGroupNonUniformSMax => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, value: IdRef, clustersize: ?IdRef = null },
959 .OpGroupNonUniformUMax => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, value: IdRef, clustersize: ?IdRef = null },
960 .OpGroupNonUniformFMax => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, value: IdRef, clustersize: ?IdRef = null },
961 .OpGroupNonUniformBitwiseAnd => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, value: IdRef, clustersize: ?IdRef = null },
962 .OpGroupNonUniformBitwiseOr => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, value: IdRef, clustersize: ?IdRef = null },
963 .OpGroupNonUniformBitwiseXor => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, value: IdRef, clustersize: ?IdRef = null },
964 .OpGroupNonUniformLogicalAnd => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, value: IdRef, clustersize: ?IdRef = null },
965 .OpGroupNonUniformLogicalOr => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, value: IdRef, clustersize: ?IdRef = null },
966 .OpGroupNonUniformLogicalXor => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, value: IdRef, clustersize: ?IdRef = null },
967 .OpGroupNonUniformQuadBroadcast => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, value: IdRef, index: IdRef },
968 .OpGroupNonUniformQuadSwap => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, value: IdRef, direction: IdRef },
969 .OpCopyLogical => struct { id_result_type: IdResultType, id_result: IdResult, operand: IdRef },
970 .OpPtrEqual => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
971 .OpPtrNotEqual => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
972 .OpPtrDiff => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
973 .OpTerminateInvocation => void,
974 .OpSubgroupBallotKHR => struct { id_result_type: IdResultType, id_result: IdResult, predicate: IdRef },
975 .OpSubgroupFirstInvocationKHR => struct { id_result_type: IdResultType, id_result: IdResult, value: IdRef },
976 .OpSubgroupAllKHR => struct { id_result_type: IdResultType, id_result: IdResult, predicate: IdRef },
977 .OpSubgroupAnyKHR => struct { id_result_type: IdResultType, id_result: IdResult, predicate: IdRef },
978 .OpSubgroupAllEqualKHR => struct { id_result_type: IdResultType, id_result: IdResult, predicate: IdRef },
979 .OpSubgroupReadInvocationKHR => struct { id_result_type: IdResultType, id_result: IdResult, value: IdRef, index: IdRef },
980 .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 },
981 .OpExecuteCallableKHR => struct { sbt_index: IdRef, callable_data: IdRef },
982 .OpConvertUToAccelerationStructureKHR => struct { id_result_type: IdResultType, id_result: IdResult, accel: IdRef },
983 .OpIgnoreIntersectionKHR => void,
984 .OpTerminateRayKHR => void,
985 .OpTypeRayQueryKHR => struct { id_result: IdResult },
986 .OpRayQueryInitializeKHR => struct { rayquery: IdRef, accel: IdRef, rayflags: IdRef, cullmask: IdRef, rayorigin: IdRef, raytmin: IdRef, raydirection: IdRef, raytmax: IdRef },
987 .OpRayQueryTerminateKHR => struct { rayquery: IdRef },
988 .OpRayQueryGenerateIntersectionKHR => struct { rayquery: IdRef, hitt: IdRef },
989 .OpRayQueryConfirmIntersectionKHR => struct { rayquery: IdRef },
990 .OpRayQueryProceedKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef },
991 .OpRayQueryGetIntersectionTypeKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef, intersection: IdRef },
992 .OpGroupIAddNonUniformAMD => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
993 .OpGroupFAddNonUniformAMD => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
994 .OpGroupFMinNonUniformAMD => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
995 .OpGroupUMinNonUniformAMD => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
996 .OpGroupSMinNonUniformAMD => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
997 .OpGroupFMaxNonUniformAMD => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
998 .OpGroupUMaxNonUniformAMD => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
999 .OpGroupSMaxNonUniformAMD => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
1000 .OpFragmentMaskFetchAMD => struct { id_result_type: IdResultType, id_result: IdResult, image: IdRef, coordinate: IdRef },
1001 .OpFragmentFetchAMD => struct { id_result_type: IdResultType, id_result: IdResult, image: IdRef, coordinate: IdRef, fragment_index: IdRef },
1002 .OpReadClockKHR => struct { id_result_type: IdResultType, id_result: IdResult, scope: IdScope },
1003 .OpImageSampleFootprintNV => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, granularity: IdRef, coarse: IdRef, image_operands: ?ImageOperands.Extended = null },
1004 .OpGroupNonUniformPartitionNV => struct { id_result_type: IdResultType, id_result: IdResult, value: IdRef },
1005 .OpWritePackedPrimitiveIndices4x8NV => struct { index_offset: IdRef, packed_indices: IdRef },
1006 .OpReportIntersectionKHR => struct { id_result_type: IdResultType, id_result: IdResult, hit: IdRef, hitkind: IdRef },
1007 .OpIgnoreIntersectionNV => void,
1008 .OpTerminateRayNV => void,
1009 .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 },
1010 .OpTypeAccelerationStructureKHR => struct { id_result: IdResult },
1011 .OpExecuteCallableNV => struct { sbt_index: IdRef, callable_dataid: IdRef },
1012 .OpTypeCooperativeMatrixNV => struct { id_result: IdResult, component_type: IdRef, execution: IdScope, rows: IdRef, columns: IdRef },
1013 .OpCooperativeMatrixLoadNV => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, stride: IdRef, column_major: IdRef, memory_access: ?MemoryAccess.Extended = null },
1014 .OpCooperativeMatrixStoreNV => struct { pointer: IdRef, object: IdRef, stride: IdRef, column_major: IdRef, memory_access: ?MemoryAccess.Extended = null },
1015 .OpCooperativeMatrixMulAddNV => struct { id_result_type: IdResultType, id_result: IdResult, a: IdRef, b: IdRef, c: IdRef },
1016 .OpCooperativeMatrixLengthNV => struct { id_result_type: IdResultType, id_result: IdResult, type: IdRef },
1017 .OpBeginInvocationInterlockEXT => void,
1018 .OpEndInvocationInterlockEXT => void,
1019 .OpDemoteToHelperInvocationEXT => void,
1020 .OpIsHelperInvocationEXT => struct { id_result_type: IdResultType, id_result: IdResult },
1021 .OpSubgroupShuffleINTEL => struct { id_result_type: IdResultType, id_result: IdResult, data: IdRef, invocationid: IdRef },
1022 .OpSubgroupShuffleDownINTEL => struct { id_result_type: IdResultType, id_result: IdResult, current: IdRef, next: IdRef, delta: IdRef },
1023 .OpSubgroupShuffleUpINTEL => struct { id_result_type: IdResultType, id_result: IdResult, previous: IdRef, current: IdRef, delta: IdRef },
1024 .OpSubgroupShuffleXorINTEL => struct { id_result_type: IdResultType, id_result: IdResult, data: IdRef, value: IdRef },
1025 .OpSubgroupBlockReadINTEL => struct { id_result_type: IdResultType, id_result: IdResult, ptr: IdRef },
1026 .OpSubgroupBlockWriteINTEL => struct { ptr: IdRef, data: IdRef },
1027 .OpSubgroupImageBlockReadINTEL => struct { id_result_type: IdResultType, id_result: IdResult, image: IdRef, coordinate: IdRef },
1028 .OpSubgroupImageBlockWriteINTEL => struct { image: IdRef, coordinate: IdRef, data: IdRef },
1029 .OpSubgroupImageMediaBlockReadINTEL => struct { id_result_type: IdResultType, id_result: IdResult, image: IdRef, coordinate: IdRef, width: IdRef, height: IdRef },
1030 .OpSubgroupImageMediaBlockWriteINTEL => struct { image: IdRef, coordinate: IdRef, width: IdRef, height: IdRef, data: IdRef },
1031 .OpUCountLeadingZerosINTEL => struct { id_result_type: IdResultType, id_result: IdResult, operand: IdRef },
1032 .OpUCountTrailingZerosINTEL => struct { id_result_type: IdResultType, id_result: IdResult, operand: IdRef },
1033 .OpAbsISubINTEL => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
1034 .OpAbsUSubINTEL => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
1035 .OpIAddSatINTEL => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
1036 .OpUAddSatINTEL => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
1037 .OpIAverageINTEL => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
1038 .OpUAverageINTEL => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
1039 .OpIAverageRoundedINTEL => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
1040 .OpUAverageRoundedINTEL => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
1041 .OpISubSatINTEL => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
1042 .OpUSubSatINTEL => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
1043 .OpIMul32x16INTEL => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
1044 .OpUMul32x16INTEL => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
1045 .OpConstFunctionPointerINTEL => struct { id_result_type: IdResultType, id_result: IdResult, function: IdRef },
1046 .OpFunctionPointerCallINTEL => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: []const IdRef = &.{} },
1047 .OpAsmTargetINTEL => struct { id_result_type: IdResultType, id_result: IdResult, asm_target: LiteralString },
1048 .OpAsmINTEL => struct { id_result_type: IdResultType, id_result: IdResult, asm_type: IdRef, target: IdRef, asm_instructions: LiteralString, constraints: LiteralString },
1049 .OpAsmCallINTEL => struct { id_result_type: IdResultType, id_result: IdResult, @"asm": IdRef, argument_0: []const IdRef = &.{} },
1050 .OpAtomicFMinEXT => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics, value: IdRef },
1051 .OpAtomicFMaxEXT => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics, value: IdRef },
1052 .OpAssumeTrueKHR => struct { condition: IdRef },
1053 .OpExpectKHR => struct { id_result_type: IdResultType, id_result: IdResult, value: IdRef, expectedvalue: IdRef },
1054 .OpDecorateString => struct { target: IdRef, decoration: Decoration.Extended },
1055 .OpMemberDecorateString => struct { struct_type: IdRef, member: LiteralInteger, decoration: Decoration.Extended },
1056 .OpVmeImageINTEL => struct { id_result_type: IdResultType, id_result: IdResult, image_type: IdRef, sampler: IdRef },
1057 .OpTypeVmeImageINTEL => struct { id_result: IdResult, image_type: IdRef },
1058 .OpTypeAvcImePayloadINTEL => struct { id_result: IdResult },
1059 .OpTypeAvcRefPayloadINTEL => struct { id_result: IdResult },
1060 .OpTypeAvcSicPayloadINTEL => struct { id_result: IdResult },
1061 .OpTypeAvcMcePayloadINTEL => struct { id_result: IdResult },
1062 .OpTypeAvcMceResultINTEL => struct { id_result: IdResult },
1063 .OpTypeAvcImeResultINTEL => struct { id_result: IdResult },
1064 .OpTypeAvcImeResultSingleReferenceStreamoutINTEL => struct { id_result: IdResult },
1065 .OpTypeAvcImeResultDualReferenceStreamoutINTEL => struct { id_result: IdResult },
1066 .OpTypeAvcImeSingleReferenceStreaminINTEL => struct { id_result: IdResult },
1067 .OpTypeAvcImeDualReferenceStreaminINTEL => struct { id_result: IdResult },
1068 .OpTypeAvcRefResultINTEL => struct { id_result: IdResult },
1069 .OpTypeAvcSicResultINTEL => struct { id_result: IdResult },
1070 .OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL => struct { id_result_type: IdResultType, id_result: IdResult, slice_type: IdRef, qp: IdRef },
1071 .OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL => struct { id_result_type: IdResultType, id_result: IdResult, reference_base_penalty: IdRef, payload: IdRef },
1072 .OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL => struct { id_result_type: IdResultType, id_result: IdResult, slice_type: IdRef, qp: IdRef },
1073 .OpSubgroupAvcMceSetInterShapePenaltyINTEL => struct { id_result_type: IdResultType, id_result: IdResult, packed_shape_penalty: IdRef, payload: IdRef },
1074 .OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL => struct { id_result_type: IdResultType, id_result: IdResult, slice_type: IdRef, qp: IdRef },
1075 .OpSubgroupAvcMceSetInterDirectionPenaltyINTEL => struct { id_result_type: IdResultType, id_result: IdResult, direction_cost: IdRef, payload: IdRef },
1076 .OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL => struct { id_result_type: IdResultType, id_result: IdResult, slice_type: IdRef, qp: IdRef },
1077 .OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL => struct { id_result_type: IdResultType, id_result: IdResult, slice_type: IdRef, qp: IdRef },
1078 .OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL => struct { id_result_type: IdResultType, id_result: IdResult },
1079 .OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL => struct { id_result_type: IdResultType, id_result: IdResult },
1080 .OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL => struct { id_result_type: IdResultType, id_result: IdResult },
1081 .OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL => struct { id_result_type: IdResultType, id_result: IdResult, packed_cost_center_delta: IdRef, packed_cost_table: IdRef, cost_precision: IdRef, payload: IdRef },
1082 .OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL => struct { id_result_type: IdResultType, id_result: IdResult, slice_type: IdRef, qp: IdRef },
1083 .OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL => struct { id_result_type: IdResultType, id_result: IdResult },
1084 .OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL => struct { id_result_type: IdResultType, id_result: IdResult },
1085 .OpSubgroupAvcMceSetAcOnlyHaarINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
1086 .OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL => struct { id_result_type: IdResultType, id_result: IdResult, source_field_polarity: IdRef, payload: IdRef },
1087 .OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL => struct { id_result_type: IdResultType, id_result: IdResult, reference_field_polarity: IdRef, payload: IdRef },
1088 .OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL => struct { id_result_type: IdResultType, id_result: IdResult, forward_reference_field_polarity: IdRef, backward_reference_field_polarity: IdRef, payload: IdRef },
1089 .OpSubgroupAvcMceConvertToImePayloadINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
1090 .OpSubgroupAvcMceConvertToImeResultINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
1091 .OpSubgroupAvcMceConvertToRefPayloadINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
1092 .OpSubgroupAvcMceConvertToRefResultINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
1093 .OpSubgroupAvcMceConvertToSicPayloadINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
1094 .OpSubgroupAvcMceConvertToSicResultINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
1095 .OpSubgroupAvcMceGetMotionVectorsINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
1096 .OpSubgroupAvcMceGetInterDistortionsINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
1097 .OpSubgroupAvcMceGetBestInterDistortionsINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
1098 .OpSubgroupAvcMceGetInterMajorShapeINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
1099 .OpSubgroupAvcMceGetInterMinorShapeINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
1100 .OpSubgroupAvcMceGetInterDirectionsINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
1101 .OpSubgroupAvcMceGetInterMotionVectorCountINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
1102 .OpSubgroupAvcMceGetInterReferenceIdsINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
1103 .OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL => struct { id_result_type: IdResultType, id_result: IdResult, packed_reference_ids: IdRef, packed_reference_parameter_field_polarities: IdRef, payload: IdRef },
1104 .OpSubgroupAvcImeInitializeINTEL => struct { id_result_type: IdResultType, id_result: IdResult, src_coord: IdRef, partition_mask: IdRef, sad_adjustment: IdRef },
1105 .OpSubgroupAvcImeSetSingleReferenceINTEL => struct { id_result_type: IdResultType, id_result: IdResult, ref_offset: IdRef, search_window_config: IdRef, payload: IdRef },
1106 .OpSubgroupAvcImeSetDualReferenceINTEL => struct { id_result_type: IdResultType, id_result: IdResult, fwd_ref_offset: IdRef, bwd_ref_offset: IdRef, id_ref_4: IdRef, payload: IdRef },
1107 .OpSubgroupAvcImeRefWindowSizeINTEL => struct { id_result_type: IdResultType, id_result: IdResult, search_window_config: IdRef, dual_ref: IdRef },
1108 .OpSubgroupAvcImeAdjustRefOffsetINTEL => struct { id_result_type: IdResultType, id_result: IdResult, ref_offset: IdRef, src_coord: IdRef, ref_window_size: IdRef, image_size: IdRef },
1109 .OpSubgroupAvcImeConvertToMcePayloadINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
1110 .OpSubgroupAvcImeSetMaxMotionVectorCountINTEL => struct { id_result_type: IdResultType, id_result: IdResult, max_motion_vector_count: IdRef, payload: IdRef },
1111 .OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
1112 .OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL => struct { id_result_type: IdResultType, id_result: IdResult, threshold: IdRef, payload: IdRef },
1113 .OpSubgroupAvcImeSetWeightedSadINTEL => struct { id_result_type: IdResultType, id_result: IdResult, packed_sad_weights: IdRef, payload: IdRef },
1114 .OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL => struct { id_result_type: IdResultType, id_result: IdResult, src_image: IdRef, ref_image: IdRef, payload: IdRef },
1115 .OpSubgroupAvcImeEvaluateWithDualReferenceINTEL => struct { id_result_type: IdResultType, id_result: IdResult, src_image: IdRef, fwd_ref_image: IdRef, bwd_ref_image: IdRef, payload: IdRef },
1116 .OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL => struct { id_result_type: IdResultType, id_result: IdResult, src_image: IdRef, ref_image: IdRef, payload: IdRef, streamin_components: IdRef },
1117 .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 },
1118 .OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL => struct { id_result_type: IdResultType, id_result: IdResult, src_image: IdRef, ref_image: IdRef, payload: IdRef },
1119 .OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL => struct { id_result_type: IdResultType, id_result: IdResult, src_image: IdRef, fwd_ref_image: IdRef, bwd_ref_image: IdRef, payload: IdRef },
1120 .OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL => struct { id_result_type: IdResultType, id_result: IdResult, src_image: IdRef, ref_image: IdRef, payload: IdRef, streamin_components: IdRef },
1121 .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 },
1122 .OpSubgroupAvcImeConvertToMceResultINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
1123 .OpSubgroupAvcImeGetSingleReferenceStreaminINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
1124 .OpSubgroupAvcImeGetDualReferenceStreaminINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
1125 .OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
1126 .OpSubgroupAvcImeStripDualReferenceStreamoutINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
1127 .OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef, major_shape: IdRef },
1128 .OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef, major_shape: IdRef },
1129 .OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef, major_shape: IdRef },
1130 .OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef, major_shape: IdRef, direction: IdRef },
1131 .OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef, major_shape: IdRef, direction: IdRef },
1132 .OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef, major_shape: IdRef, direction: IdRef },
1133 .OpSubgroupAvcImeGetBorderReachedINTEL => struct { id_result_type: IdResultType, id_result: IdResult, image_select: IdRef, payload: IdRef },
1134 .OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
1135 .OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
1136 .OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
1137 .OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
1138 .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 },
1139 .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 },
1140 .OpSubgroupAvcRefConvertToMcePayloadINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
1141 .OpSubgroupAvcRefSetBidirectionalMixDisableINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
1142 .OpSubgroupAvcRefSetBilinearFilterEnableINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
1143 .OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL => struct { id_result_type: IdResultType, id_result: IdResult, src_image: IdRef, ref_image: IdRef, payload: IdRef },
1144 .OpSubgroupAvcRefEvaluateWithDualReferenceINTEL => struct { id_result_type: IdResultType, id_result: IdResult, src_image: IdRef, fwd_ref_image: IdRef, bwd_ref_image: IdRef, payload: IdRef },
1145 .OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL => struct { id_result_type: IdResultType, id_result: IdResult, src_image: IdRef, packed_reference_ids: IdRef, payload: IdRef },
1146 .OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL => struct { id_result_type: IdResultType, id_result: IdResult, src_image: IdRef, packed_reference_ids: IdRef, packed_reference_field_polarities: IdRef, payload: IdRef },
1147 .OpSubgroupAvcRefConvertToMceResultINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
1148 .OpSubgroupAvcSicInitializeINTEL => struct { id_result_type: IdResultType, id_result: IdResult, src_coord: IdRef },
1149 .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 },
1150 .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 },
1151 .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 },
1152 .OpSubgroupAvcSicGetMotionVectorMaskINTEL => struct { id_result_type: IdResultType, id_result: IdResult, skip_block_partition_type: IdRef, direction: IdRef },
1153 .OpSubgroupAvcSicConvertToMcePayloadINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
1154 .OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL => struct { id_result_type: IdResultType, id_result: IdResult, packed_shape_penalty: IdRef, payload: IdRef },
1155 .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 },
1156 .OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL => struct { id_result_type: IdResultType, id_result: IdResult, chroma_mode_base_penalty: IdRef, payload: IdRef },
1157 .OpSubgroupAvcSicSetBilinearFilterEnableINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
1158 .OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL => struct { id_result_type: IdResultType, id_result: IdResult, packed_sad_coefficients: IdRef, payload: IdRef },
1159 .OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL => struct { id_result_type: IdResultType, id_result: IdResult, block_based_skip_type: IdRef, payload: IdRef },
1160 .OpSubgroupAvcSicEvaluateIpeINTEL => struct { id_result_type: IdResultType, id_result: IdResult, src_image: IdRef, payload: IdRef },
1161 .OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL => struct { id_result_type: IdResultType, id_result: IdResult, src_image: IdRef, ref_image: IdRef, payload: IdRef },
1162 .OpSubgroupAvcSicEvaluateWithDualReferenceINTEL => struct { id_result_type: IdResultType, id_result: IdResult, src_image: IdRef, fwd_ref_image: IdRef, bwd_ref_image: IdRef, payload: IdRef },
1163 .OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL => struct { id_result_type: IdResultType, id_result: IdResult, src_image: IdRef, packed_reference_ids: IdRef, payload: IdRef },
1164 .OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL => struct { id_result_type: IdResultType, id_result: IdResult, src_image: IdRef, packed_reference_ids: IdRef, packed_reference_field_polarities: IdRef, payload: IdRef },
1165 .OpSubgroupAvcSicConvertToMceResultINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
1166 .OpSubgroupAvcSicGetIpeLumaShapeINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
1167 .OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
1168 .OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
1169 .OpSubgroupAvcSicGetPackedIpeLumaModesINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
1170 .OpSubgroupAvcSicGetIpeChromaModeINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
1171 .OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
1172 .OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
1173 .OpSubgroupAvcSicGetInterRawSadsINTEL => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
1174 .OpVariableLengthArrayINTEL => struct { id_result_type: IdResultType, id_result: IdResult, lenght: IdRef },
1175 .OpSaveMemoryINTEL => struct { id_result_type: IdResultType, id_result: IdResult },
1176 .OpRestoreMemoryINTEL => struct { ptr: IdRef },
1177 .OpLoopControlINTEL => struct { loop_control_parameters: []const LiteralInteger = &.{} },
1178 .OpPtrCastToCrossWorkgroupINTEL => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef },
1179 .OpCrossWorkgroupCastToPtrINTEL => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef },
1180 .OpReadPipeBlockingINTEL => struct { id_result_type: IdResultType, id_result: IdResult, packet_size: IdRef, packet_alignment: IdRef },
1181 .OpWritePipeBlockingINTEL => struct { id_result_type: IdResultType, id_result: IdResult, packet_size: IdRef, packet_alignment: IdRef },
1182 .OpFPGARegINTEL => struct { id_result_type: IdResultType, id_result: IdResult, result: IdRef, input: IdRef },
1183 .OpRayQueryGetRayTMinKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef },
1184 .OpRayQueryGetRayFlagsKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef },
1185 .OpRayQueryGetIntersectionTKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef, intersection: IdRef },
1186 .OpRayQueryGetIntersectionInstanceCustomIndexKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef, intersection: IdRef },
1187 .OpRayQueryGetIntersectionInstanceIdKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef, intersection: IdRef },
1188 .OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef, intersection: IdRef },
1189 .OpRayQueryGetIntersectionGeometryIndexKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef, intersection: IdRef },
1190 .OpRayQueryGetIntersectionPrimitiveIndexKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef, intersection: IdRef },
1191 .OpRayQueryGetIntersectionBarycentricsKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef, intersection: IdRef },
1192 .OpRayQueryGetIntersectionFrontFaceKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef, intersection: IdRef },
1193 .OpRayQueryGetIntersectionCandidateAABBOpaqueKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef },
1194 .OpRayQueryGetIntersectionObjectRayDirectionKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef, intersection: IdRef },
1195 .OpRayQueryGetIntersectionObjectRayOriginKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef, intersection: IdRef },
1196 .OpRayQueryGetWorldRayDirectionKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef },
1197 .OpRayQueryGetWorldRayOriginKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef },
1198 .OpRayQueryGetIntersectionObjectToWorldKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef, intersection: IdRef },
1199 .OpRayQueryGetIntersectionWorldToObjectKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef, intersection: IdRef },
1200 .OpAtomicFAddEXT => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics, value: IdRef },
1201 .OpTypeBufferSurfaceINTEL => struct { id_result: IdResult },
1202 .OpTypeStructContinuedINTEL => struct { id_ref: []const IdRef = &.{} },
1203 .OpConstantCompositeContinuedINTEL => struct { constituents: []const IdRef = &.{} },
1204 .OpSpecConstantCompositeContinuedINTEL => struct { constituents: []const IdRef = &.{} },
1205 };
1206 }
587};1207};
588pub const ImageOperands = packed struct {1208pub const ImageOperands = packed struct {
589 Bias: bool align(@alignOf(u32)) = false,1209 Bias: bool align(@alignOf(u32)) = false,
...@@ -618,6 +1238,46 @@ pub const ImageOperands = packed struct {...@@ -618,6 +1238,46 @@ pub const ImageOperands = packed struct {
618 _reserved_bit_29: bool = false,1238 _reserved_bit_29: bool = false,
619 _reserved_bit_30: bool = false,1239 _reserved_bit_30: bool = false,
620 _reserved_bit_31: bool = false,1240 _reserved_bit_31: bool = false,
1241
1242 pub const MakeTexelAvailableKHR: ImageOperands = .{ .MakeTexelAvailable = true };
1243 pub const MakeTexelVisibleKHR: ImageOperands = .{ .MakeTexelVisible = true };
1244 pub const NonPrivateTexelKHR: ImageOperands = .{ .NonPrivateTexel = true };
1245 pub const VolatileTexelKHR: ImageOperands = .{ .VolatileTexel = true };
1246
1247 pub const Extended = struct {
1248 Bias: ?struct { id_ref: IdRef } = null,
1249 Lod: ?struct { id_ref: IdRef } = null,
1250 Grad: ?struct { id_ref_0: IdRef, id_ref_1: IdRef } = null,
1251 ConstOffset: ?struct { id_ref: IdRef } = null,
1252 Offset: ?struct { id_ref: IdRef } = null,
1253 ConstOffsets: ?struct { id_ref: IdRef } = null,
1254 Sample: ?struct { id_ref: IdRef } = null,
1255 MinLod: ?struct { id_ref: IdRef } = null,
1256 MakeTexelAvailable: ?struct { id_scope: IdScope } = null,
1257 MakeTexelVisible: ?struct { id_scope: IdScope } = null,
1258 NonPrivateTexel: bool = false,
1259 VolatileTexel: bool = false,
1260 SignExtend: bool = false,
1261 ZeroExtend: bool = false,
1262 _reserved_bit_14: bool = false,
1263 _reserved_bit_15: bool = false,
1264 _reserved_bit_16: bool = false,
1265 _reserved_bit_17: bool = false,
1266 _reserved_bit_18: bool = false,
1267 _reserved_bit_19: bool = false,
1268 _reserved_bit_20: bool = false,
1269 _reserved_bit_21: bool = false,
1270 _reserved_bit_22: bool = false,
1271 _reserved_bit_23: bool = false,
1272 _reserved_bit_24: bool = false,
1273 _reserved_bit_25: bool = false,
1274 _reserved_bit_26: bool = false,
1275 _reserved_bit_27: bool = false,
1276 _reserved_bit_28: bool = false,
1277 _reserved_bit_29: bool = false,
1278 _reserved_bit_30: bool = false,
1279 _reserved_bit_31: bool = false,
1280 };
621};1281};
622pub const FPFastMathMode = packed struct {1282pub const FPFastMathMode = packed struct {
623 NotNaN: bool align(@alignOf(u32)) = false,1283 NotNaN: bool align(@alignOf(u32)) = false,
...@@ -720,6 +1380,41 @@ pub const LoopControl = packed struct {...@@ -720,6 +1380,41 @@ pub const LoopControl = packed struct {
720 _reserved_bit_29: bool = false,1380 _reserved_bit_29: bool = false,
721 _reserved_bit_30: bool = false,1381 _reserved_bit_30: bool = false,
722 _reserved_bit_31: bool = false,1382 _reserved_bit_31: bool = false,
1383
1384 pub const Extended = struct {
1385 Unroll: bool = false,
1386 DontUnroll: bool = false,
1387 DependencyInfinite: bool = false,
1388 DependencyLength: ?struct { literal_integer: LiteralInteger } = null,
1389 MinIterations: ?struct { literal_integer: LiteralInteger } = null,
1390 MaxIterations: ?struct { literal_integer: LiteralInteger } = null,
1391 IterationMultiple: ?struct { literal_integer: LiteralInteger } = null,
1392 PeelCount: ?struct { literal_integer: LiteralInteger } = null,
1393 PartialCount: ?struct { literal_integer: LiteralInteger } = null,
1394 _reserved_bit_9: bool = false,
1395 _reserved_bit_10: bool = false,
1396 _reserved_bit_11: bool = false,
1397 _reserved_bit_12: bool = false,
1398 _reserved_bit_13: bool = false,
1399 _reserved_bit_14: bool = false,
1400 _reserved_bit_15: bool = false,
1401 InitiationIntervalINTEL: ?struct { literal_integer: LiteralInteger } = null,
1402 MaxConcurrencyINTEL: ?struct { literal_integer: LiteralInteger } = null,
1403 DependencyArrayINTEL: ?struct { literal_integer: LiteralInteger } = null,
1404 PipelineEnableINTEL: ?struct { literal_integer: LiteralInteger } = null,
1405 LoopCoalesceINTEL: ?struct { literal_integer: LiteralInteger } = null,
1406 MaxInterleavingINTEL: ?struct { literal_integer: LiteralInteger } = null,
1407 SpeculatedIterationsINTEL: ?struct { literal_integer: LiteralInteger } = null,
1408 NoFusionINTEL: ?struct { literal_integer: LiteralInteger } = null,
1409 _reserved_bit_24: bool = false,
1410 _reserved_bit_25: bool = false,
1411 _reserved_bit_26: bool = false,
1412 _reserved_bit_27: bool = false,
1413 _reserved_bit_28: bool = false,
1414 _reserved_bit_29: bool = false,
1415 _reserved_bit_30: bool = false,
1416 _reserved_bit_31: bool = false,
1417 };
723};1418};
724pub const FunctionControl = packed struct {1419pub const FunctionControl = packed struct {
725 Inline: bool align(@alignOf(u32)) = false,1420 Inline: bool align(@alignOf(u32)) = false,
...@@ -788,6 +1483,10 @@ pub const MemorySemantics = packed struct {...@@ -788,6 +1483,10 @@ pub const MemorySemantics = packed struct {
788 _reserved_bit_29: bool = false,1483 _reserved_bit_29: bool = false,
789 _reserved_bit_30: bool = false,1484 _reserved_bit_30: bool = false,
790 _reserved_bit_31: bool = false,1485 _reserved_bit_31: bool = false,
1486
1487 pub const OutputMemoryKHR: MemorySemantics = .{ .OutputMemory = true };
1488 pub const MakeAvailableKHR: MemorySemantics = .{ .MakeAvailable = true };
1489 pub const MakeVisibleKHR: MemorySemantics = .{ .MakeVisible = true };
791};1490};
792pub const MemoryAccess = packed struct {1491pub const MemoryAccess = packed struct {
793 Volatile: bool align(@alignOf(u32)) = false,1492 Volatile: bool align(@alignOf(u32)) = false,
...@@ -822,6 +1521,45 @@ pub const MemoryAccess = packed struct {...@@ -822,6 +1521,45 @@ pub const MemoryAccess = packed struct {
822 _reserved_bit_29: bool = false,1521 _reserved_bit_29: bool = false,
823 _reserved_bit_30: bool = false,1522 _reserved_bit_30: bool = false,
824 _reserved_bit_31: bool = false,1523 _reserved_bit_31: bool = false,
1524
1525 pub const MakePointerAvailableKHR: MemoryAccess = .{ .MakePointerAvailable = true };
1526 pub const MakePointerVisibleKHR: MemoryAccess = .{ .MakePointerVisible = true };
1527 pub const NonPrivatePointerKHR: MemoryAccess = .{ .NonPrivatePointer = true };
1528
1529 pub const Extended = struct {
1530 Volatile: bool = false,
1531 Aligned: ?struct { literal_integer: LiteralInteger } = null,
1532 Nontemporal: bool = false,
1533 MakePointerAvailable: ?struct { id_scope: IdScope } = null,
1534 MakePointerVisible: ?struct { id_scope: IdScope } = null,
1535 NonPrivatePointer: bool = false,
1536 _reserved_bit_6: bool = false,
1537 _reserved_bit_7: bool = false,
1538 _reserved_bit_8: bool = false,
1539 _reserved_bit_9: bool = false,
1540 _reserved_bit_10: bool = false,
1541 _reserved_bit_11: bool = false,
1542 _reserved_bit_12: bool = false,
1543 _reserved_bit_13: bool = false,
1544 _reserved_bit_14: bool = false,
1545 _reserved_bit_15: bool = false,
1546 _reserved_bit_16: bool = false,
1547 _reserved_bit_17: bool = false,
1548 _reserved_bit_18: bool = false,
1549 _reserved_bit_19: bool = false,
1550 _reserved_bit_20: bool = false,
1551 _reserved_bit_21: bool = false,
1552 _reserved_bit_22: bool = false,
1553 _reserved_bit_23: bool = false,
1554 _reserved_bit_24: bool = false,
1555 _reserved_bit_25: bool = false,
1556 _reserved_bit_26: bool = false,
1557 _reserved_bit_27: bool = false,
1558 _reserved_bit_28: bool = false,
1559 _reserved_bit_29: bool = false,
1560 _reserved_bit_30: bool = false,
1561 _reserved_bit_31: bool = false,
1562 };
825};1563};
826pub const KernelProfilingInfo = packed struct {1564pub const KernelProfilingInfo = packed struct {
827 CmdExecTime: bool align(@alignOf(u32)) = false,1565 CmdExecTime: bool align(@alignOf(u32)) = false,
...@@ -932,7 +1670,6 @@ pub const SourceLanguage = enum(u32) {...@@ -932,7 +1670,6 @@ pub const SourceLanguage = enum(u32) {
932 OpenCL_C = 3,1670 OpenCL_C = 3,
933 OpenCL_CPP = 4,1671 OpenCL_CPP = 4,
934 HLSL = 5,1672 HLSL = 5,
935 _,
936};1673};
937pub const ExecutionModel = enum(u32) {1674pub const ExecutionModel = enum(u32) {
938 Vertex = 0,1675 Vertex = 0,
...@@ -944,33 +1681,35 @@ pub const ExecutionModel = enum(u32) {...@@ -944,33 +1681,35 @@ pub const ExecutionModel = enum(u32) {
944 Kernel = 6,1681 Kernel = 6,
945 TaskNV = 5267,1682 TaskNV = 5267,
946 MeshNV = 5268,1683 MeshNV = 5268,
947 RayGenerationNV = 5313,
948 RayGenerationKHR = 5313,1684 RayGenerationKHR = 5313,
949 IntersectionNV = 5314,
950 IntersectionKHR = 5314,1685 IntersectionKHR = 5314,
951 AnyHitNV = 5315,
952 AnyHitKHR = 5315,1686 AnyHitKHR = 5315,
953 ClosestHitNV = 5316,
954 ClosestHitKHR = 5316,1687 ClosestHitKHR = 5316,
955 MissNV = 5317,
956 MissKHR = 5317,1688 MissKHR = 5317,
957 CallableNV = 5318,
958 CallableKHR = 5318,1689 CallableKHR = 5318,
959 _,1690
1691 pub const RayGenerationNV = ExecutionModel.RayGenerationKHR;
1692 pub const IntersectionNV = ExecutionModel.IntersectionKHR;
1693 pub const AnyHitNV = ExecutionModel.AnyHitKHR;
1694 pub const ClosestHitNV = ExecutionModel.ClosestHitKHR;
1695 pub const MissNV = ExecutionModel.MissKHR;
1696 pub const CallableNV = ExecutionModel.CallableKHR;
960};1697};
961pub const AddressingModel = enum(u32) {1698pub const AddressingModel = enum(u32) {
962 Logical = 0,1699 Logical = 0,
963 Physical32 = 1,1700 Physical32 = 1,
964 Physical64 = 2,1701 Physical64 = 2,
965 PhysicalStorageBuffer64 = 5348,1702 PhysicalStorageBuffer64 = 5348,
966 _,1703
1704 pub const PhysicalStorageBuffer64EXT = AddressingModel.PhysicalStorageBuffer64;
967};1705};
968pub const MemoryModel = enum(u32) {1706pub const MemoryModel = enum(u32) {
969 Simple = 0,1707 Simple = 0,
970 GLSL450 = 1,1708 GLSL450 = 1,
971 OpenCL = 2,1709 OpenCL = 2,
972 Vulkan = 3,1710 Vulkan = 3,
973 _,1711
1712 pub const VulkanKHR = MemoryModel.Vulkan;
974};1713};
975pub const ExecutionMode = enum(u32) {1714pub const ExecutionMode = enum(u32) {
976 Invocations = 0,1715 Invocations = 0,
...@@ -1039,7 +1778,75 @@ pub const ExecutionMode = enum(u32) {...@@ -1039,7 +1778,75 @@ pub const ExecutionMode = enum(u32) {
1039 NoGlobalOffsetINTEL = 5895,1778 NoGlobalOffsetINTEL = 5895,
1040 NumSIMDWorkitemsINTEL = 5896,1779 NumSIMDWorkitemsINTEL = 5896,
1041 SchedulerTargetFmaxMhzINTEL = 5903,1780 SchedulerTargetFmaxMhzINTEL = 5903,
1042 _,1781
1782 pub const Extended = union(ExecutionMode) {
1783 Invocations: struct { literal_integer: LiteralInteger },
1784 SpacingEqual,
1785 SpacingFractionalEven,
1786 SpacingFractionalOdd,
1787 VertexOrderCw,
1788 VertexOrderCcw,
1789 PixelCenterInteger,
1790 OriginUpperLeft,
1791 OriginLowerLeft,
1792 EarlyFragmentTests,
1793 PointMode,
1794 Xfb,
1795 DepthReplacing,
1796 DepthGreater,
1797 DepthLess,
1798 DepthUnchanged,
1799 LocalSize: struct { x_size: LiteralInteger, y_size: LiteralInteger, z_size: LiteralInteger },
1800 LocalSizeHint: struct { x_size: LiteralInteger, y_size: LiteralInteger, z_size: LiteralInteger },
1801 InputPoints,
1802 InputLines,
1803 InputLinesAdjacency,
1804 Triangles,
1805 InputTrianglesAdjacency,
1806 Quads,
1807 Isolines,
1808 OutputVertices: struct { vertex_count: LiteralInteger },
1809 OutputPoints,
1810 OutputLineStrip,
1811 OutputTriangleStrip,
1812 VecTypeHint: struct { vector_type: LiteralInteger },
1813 ContractionOff,
1814 Initializer,
1815 Finalizer,
1816 SubgroupSize: struct { subgroup_size: LiteralInteger },
1817 SubgroupsPerWorkgroup: struct { subgroups_per_workgroup: LiteralInteger },
1818 SubgroupsPerWorkgroupId: struct { subgroups_per_workgroup: IdRef },
1819 LocalSizeId: struct { x_size: IdRef, y_size: IdRef, z_size: IdRef },
1820 LocalSizeHintId: struct { local_size_hint: IdRef },
1821 PostDepthCoverage,
1822 DenormPreserve: struct { target_width: LiteralInteger },
1823 DenormFlushToZero: struct { target_width: LiteralInteger },
1824 SignedZeroInfNanPreserve: struct { target_width: LiteralInteger },
1825 RoundingModeRTE: struct { target_width: LiteralInteger },
1826 RoundingModeRTZ: struct { target_width: LiteralInteger },
1827 StencilRefReplacingEXT,
1828 OutputLinesNV,
1829 OutputPrimitivesNV: struct { primitive_count: LiteralInteger },
1830 DerivativeGroupQuadsNV,
1831 DerivativeGroupLinearNV,
1832 OutputTrianglesNV,
1833 PixelInterlockOrderedEXT,
1834 PixelInterlockUnorderedEXT,
1835 SampleInterlockOrderedEXT,
1836 SampleInterlockUnorderedEXT,
1837 ShadingRateInterlockOrderedEXT,
1838 ShadingRateInterlockUnorderedEXT,
1839 SharedLocalMemorySizeINTEL: struct { size: LiteralInteger },
1840 RoundingModeRTPINTEL: struct { target_width: LiteralInteger },
1841 RoundingModeRTNINTEL: struct { target_width: LiteralInteger },
1842 FloatingPointModeALTINTEL: struct { target_width: LiteralInteger },
1843 FloatingPointModeIEEEINTEL: struct { target_width: LiteralInteger },
1844 MaxWorkgroupSizeINTEL: struct { literal_integer_0: LiteralInteger, literal_integer_1: LiteralInteger, literal_integer_2: LiteralInteger },
1845 MaxWorkDimINTEL: struct { literal_integer: LiteralInteger },
1846 NoGlobalOffsetINTEL,
1847 NumSIMDWorkitemsINTEL: struct { literal_integer: LiteralInteger },
1848 SchedulerTargetFmaxMhzINTEL: struct { literal_integer: LiteralInteger },
1849 };
1043};1850};
1044pub const StorageClass = enum(u32) {1851pub const StorageClass = enum(u32) {
1045 UniformConstant = 0,1852 UniformConstant = 0,
...@@ -1065,7 +1872,14 @@ pub const StorageClass = enum(u32) {...@@ -1065,7 +1872,14 @@ pub const StorageClass = enum(u32) {
1065 CodeSectionINTEL = 5605,1872 CodeSectionINTEL = 5605,
1066 DeviceOnlyINTEL = 5936,1873 DeviceOnlyINTEL = 5936,
1067 HostOnlyINTEL = 5937,1874 HostOnlyINTEL = 5937,
1068 _,1875
1876 pub const CallableDataNV = StorageClass.CallableDataKHR;
1877 pub const IncomingCallableDataNV = StorageClass.IncomingCallableDataKHR;
1878 pub const RayPayloadNV = StorageClass.RayPayloadKHR;
1879 pub const HitAttributeNV = StorageClass.HitAttributeKHR;
1880 pub const IncomingRayPayloadNV = StorageClass.IncomingRayPayloadKHR;
1881 pub const ShaderRecordBufferNV = StorageClass.ShaderRecordBufferKHR;
1882 pub const PhysicalStorageBufferEXT = StorageClass.PhysicalStorageBuffer;
1069};1883};
1070pub const Dim = enum(u32) {1884pub const Dim = enum(u32) {
1071 @"1D" = 0,1885 @"1D" = 0,
...@@ -1075,7 +1889,6 @@ pub const Dim = enum(u32) {...@@ -1075,7 +1889,6 @@ pub const Dim = enum(u32) {
1075 Rect = 4,1889 Rect = 4,
1076 Buffer = 5,1890 Buffer = 5,
1077 SubpassData = 6,1891 SubpassData = 6,
1078 _,
1079};1892};
1080pub const SamplerAddressingMode = enum(u32) {1893pub const SamplerAddressingMode = enum(u32) {
1081 None = 0,1894 None = 0,
...@@ -1083,12 +1896,10 @@ pub const SamplerAddressingMode = enum(u32) {...@@ -1083,12 +1896,10 @@ pub const SamplerAddressingMode = enum(u32) {
1083 Clamp = 2,1896 Clamp = 2,
1084 Repeat = 3,1897 Repeat = 3,
1085 RepeatMirrored = 4,1898 RepeatMirrored = 4,
1086 _,
1087};1899};
1088pub const SamplerFilterMode = enum(u32) {1900pub const SamplerFilterMode = enum(u32) {
1089 Nearest = 0,1901 Nearest = 0,
1090 Linear = 1,1902 Linear = 1,
1091 _,
1092};1903};
1093pub const ImageFormat = enum(u32) {1904pub const ImageFormat = enum(u32) {
1094 Unknown = 0,1905 Unknown = 0,
...@@ -1133,7 +1944,6 @@ pub const ImageFormat = enum(u32) {...@@ -1133,7 +1944,6 @@ pub const ImageFormat = enum(u32) {
1133 R8ui = 39,1944 R8ui = 39,
1134 R64ui = 40,1945 R64ui = 40,
1135 R64i = 41,1946 R64i = 41,
1136 _,
1137};1947};
1138pub const ImageChannelOrder = enum(u32) {1948pub const ImageChannelOrder = enum(u32) {
1139 R = 0,1949 R = 0,
...@@ -1156,7 +1966,6 @@ pub const ImageChannelOrder = enum(u32) {...@@ -1156,7 +1966,6 @@ pub const ImageChannelOrder = enum(u32) {
1156 sRGBA = 17,1966 sRGBA = 17,
1157 sBGRA = 18,1967 sBGRA = 18,
1158 ABGR = 19,1968 ABGR = 19,
1159 _,
1160};1969};
1161pub const ImageChannelDataType = enum(u32) {1970pub const ImageChannelDataType = enum(u32) {
1162 SnormInt8 = 0,1971 SnormInt8 = 0,
...@@ -1176,36 +1985,30 @@ pub const ImageChannelDataType = enum(u32) {...@@ -1176,36 +1985,30 @@ pub const ImageChannelDataType = enum(u32) {
1176 Float = 14,1985 Float = 14,
1177 UnormInt24 = 15,1986 UnormInt24 = 15,
1178 UnormInt101010_2 = 16,1987 UnormInt101010_2 = 16,
1179 _,
1180};1988};
1181pub const FPRoundingMode = enum(u32) {1989pub const FPRoundingMode = enum(u32) {
1182 RTE = 0,1990 RTE = 0,
1183 RTZ = 1,1991 RTZ = 1,
1184 RTP = 2,1992 RTP = 2,
1185 RTN = 3,1993 RTN = 3,
1186 _,
1187};1994};
1188pub const FPDenormMode = enum(u32) {1995pub const FPDenormMode = enum(u32) {
1189 Preserve = 0,1996 Preserve = 0,
1190 FlushToZero = 1,1997 FlushToZero = 1,
1191 _,
1192};1998};
1193pub const FPOperationMode = enum(u32) {1999pub const FPOperationMode = enum(u32) {
1194 IEEE = 0,2000 IEEE = 0,
1195 ALT = 1,2001 ALT = 1,
1196 _,
1197};2002};
1198pub const LinkageType = enum(u32) {2003pub const LinkageType = enum(u32) {
1199 Export = 0,2004 Export = 0,
1200 Import = 1,2005 Import = 1,
1201 LinkOnceODR = 2,2006 LinkOnceODR = 2,
1202 _,
1203};2007};
1204pub const AccessQualifier = enum(u32) {2008pub const AccessQualifier = enum(u32) {
1205 ReadOnly = 0,2009 ReadOnly = 0,
1206 WriteOnly = 1,2010 WriteOnly = 1,
1207 ReadWrite = 2,2011 ReadWrite = 2,
1208 _,
1209};2012};
1210pub const FunctionParameterAttribute = enum(u32) {2013pub const FunctionParameterAttribute = enum(u32) {
1211 Zext = 0,2014 Zext = 0,
...@@ -1216,7 +2019,6 @@ pub const FunctionParameterAttribute = enum(u32) {...@@ -1216,7 +2019,6 @@ pub const FunctionParameterAttribute = enum(u32) {
1216 NoCapture = 5,2019 NoCapture = 5,
1217 NoWrite = 6,2020 NoWrite = 6,
1218 NoReadWrite = 7,2021 NoReadWrite = 7,
1219 _,
1220};2022};
1221pub const Decoration = enum(u32) {2023pub const Decoration = enum(u32) {
1222 RelaxedPrecision = 0,2024 RelaxedPrecision = 0,
...@@ -1278,11 +2080,8 @@ pub const Decoration = enum(u32) {...@@ -1278,11 +2080,8 @@ pub const Decoration = enum(u32) {
1278 PerTaskNV = 5273,2080 PerTaskNV = 5273,
1279 PerVertexNV = 5285,2081 PerVertexNV = 5285,
1280 NonUniform = 5300,2082 NonUniform = 5300,
1281 NonUniformEXT = 5300,
1282 RestrictPointer = 5355,2083 RestrictPointer = 5355,
1283 RestrictPointerEXT = 5355,
1284 AliasedPointer = 5356,2084 AliasedPointer = 5356,
1285 AliasedPointerEXT = 5356,
1286 SIMTCallINTEL = 5599,2085 SIMTCallINTEL = 5599,
1287 ReferencedIndirectlyINTEL = 5602,2086 ReferencedIndirectlyINTEL = 5602,
1288 ClobberINTEL = 5607,2087 ClobberINTEL = 5607,
...@@ -1293,9 +2092,7 @@ pub const Decoration = enum(u32) {...@@ -1293,9 +2092,7 @@ pub const Decoration = enum(u32) {
1293 StackCallINTEL = 5627,2092 StackCallINTEL = 5627,
1294 GlobalVariableOffsetINTEL = 5628,2093 GlobalVariableOffsetINTEL = 5628,
1295 CounterBuffer = 5634,2094 CounterBuffer = 5634,
1296 HlslCounterBufferGOOGLE = 5634,
1297 UserSemantic = 5635,2095 UserSemantic = 5635,
1298 HlslSemanticGOOGLE = 5635,
1299 UserTypeGOOGLE = 5636,2096 UserTypeGOOGLE = 5636,
1300 FunctionRoundingModeINTEL = 5822,2097 FunctionRoundingModeINTEL = 5822,
1301 FunctionDenormModeINTEL = 5823,2098 FunctionDenormModeINTEL = 5823,
...@@ -1322,7 +2119,113 @@ pub const Decoration = enum(u32) {...@@ -1322,7 +2119,113 @@ pub const Decoration = enum(u32) {
1322 FunctionFloatingPointModeINTEL = 6080,2119 FunctionFloatingPointModeINTEL = 6080,
1323 SingleElementVectorINTEL = 6085,2120 SingleElementVectorINTEL = 6085,
1324 VectorComputeCallableFunctionINTEL = 6087,2121 VectorComputeCallableFunctionINTEL = 6087,
1325 _,2122
2123 pub const NonUniformEXT = Decoration.NonUniform;
2124 pub const RestrictPointerEXT = Decoration.RestrictPointer;
2125 pub const AliasedPointerEXT = Decoration.AliasedPointer;
2126 pub const HlslCounterBufferGOOGLE = Decoration.CounterBuffer;
2127 pub const HlslSemanticGOOGLE = Decoration.UserSemantic;
2128
2129 pub const Extended = union(Decoration) {
2130 RelaxedPrecision,
2131 SpecId: struct { specialization_constant_id: LiteralInteger },
2132 Block,
2133 BufferBlock,
2134 RowMajor,
2135 ColMajor,
2136 ArrayStride: struct { array_stride: LiteralInteger },
2137 MatrixStride: struct { matrix_stride: LiteralInteger },
2138 GLSLShared,
2139 GLSLPacked,
2140 CPacked,
2141 BuiltIn: struct { built_in: BuiltIn },
2142 NoPerspective,
2143 Flat,
2144 Patch,
2145 Centroid,
2146 Sample,
2147 Invariant,
2148 Restrict,
2149 Aliased,
2150 Volatile,
2151 Constant,
2152 Coherent,
2153 NonWritable,
2154 NonReadable,
2155 Uniform,
2156 UniformId: struct { execution: IdScope },
2157 SaturatedConversion,
2158 Stream: struct { stream_number: LiteralInteger },
2159 Location: struct { location: LiteralInteger },
2160 Component: struct { component: LiteralInteger },
2161 Index: struct { index: LiteralInteger },
2162 Binding: struct { binding_point: LiteralInteger },
2163 DescriptorSet: struct { descriptor_set: LiteralInteger },
2164 Offset: struct { byte_offset: LiteralInteger },
2165 XfbBuffer: struct { xfb_buffer_number: LiteralInteger },
2166 XfbStride: struct { xfb_stride: LiteralInteger },
2167 FuncParamAttr: struct { function_parameter_attribute: FunctionParameterAttribute },
2168 FPRoundingMode: struct { fprounding_mode: FPRoundingMode },
2169 FPFastMathMode: struct { fpfast_math_mode: FPFastMathMode },
2170 LinkageAttributes: struct { name: LiteralString, linkage_type: LinkageType },
2171 NoContraction,
2172 InputAttachmentIndex: struct { attachment_index: LiteralInteger },
2173 Alignment: struct { alignment: LiteralInteger },
2174 MaxByteOffset: struct { max_byte_offset: LiteralInteger },
2175 AlignmentId: struct { alignment: IdRef },
2176 MaxByteOffsetId: struct { max_byte_offset: IdRef },
2177 NoSignedWrap,
2178 NoUnsignedWrap,
2179 ExplicitInterpAMD,
2180 OverrideCoverageNV,
2181 PassthroughNV,
2182 ViewportRelativeNV,
2183 SecondaryViewportRelativeNV: struct { offset: LiteralInteger },
2184 PerPrimitiveNV,
2185 PerViewNV,
2186 PerTaskNV,
2187 PerVertexNV,
2188 NonUniform,
2189 RestrictPointer,
2190 AliasedPointer,
2191 SIMTCallINTEL: struct { n: LiteralInteger },
2192 ReferencedIndirectlyINTEL,
2193 ClobberINTEL: struct { register: LiteralString },
2194 SideEffectsINTEL,
2195 VectorComputeVariableINTEL,
2196 FuncParamIOKindINTEL: struct { kind: LiteralInteger },
2197 VectorComputeFunctionINTEL,
2198 StackCallINTEL,
2199 GlobalVariableOffsetINTEL: struct { offset: LiteralInteger },
2200 CounterBuffer: struct { counter_buffer: IdRef },
2201 UserSemantic: struct { semantic: LiteralString },
2202 UserTypeGOOGLE: struct { user_type: LiteralString },
2203 FunctionRoundingModeINTEL: struct { target_width: LiteralInteger, fp_rounding_mode: FPRoundingMode },
2204 FunctionDenormModeINTEL: struct { target_width: LiteralInteger, fp_denorm_mode: FPDenormMode },
2205 RegisterINTEL,
2206 MemoryINTEL: struct { memory_type: LiteralString },
2207 NumbanksINTEL: struct { banks: LiteralInteger },
2208 BankwidthINTEL: struct { bank_width: LiteralInteger },
2209 MaxPrivateCopiesINTEL: struct { maximum_copies: LiteralInteger },
2210 SinglepumpINTEL,
2211 DoublepumpINTEL,
2212 MaxReplicatesINTEL: struct { maximum_replicates: LiteralInteger },
2213 SimpleDualPortINTEL,
2214 MergeINTEL: struct { merge_key: LiteralString, merge_type: LiteralString },
2215 BankBitsINTEL: struct { bank_bits: []const LiteralInteger = &.{} },
2216 ForcePow2DepthINTEL: struct { force_key: LiteralInteger },
2217 BurstCoalesceINTEL,
2218 CacheSizeINTEL: struct { cache_size_in_bytes: LiteralInteger },
2219 DontStaticallyCoalesceINTEL,
2220 PrefetchINTEL: struct { prefetcher_size_in_bytes: LiteralInteger },
2221 StallEnableINTEL,
2222 FuseLoopsInFunctionINTEL,
2223 BufferLocationINTEL: struct { buffer_location_id: LiteralInteger },
2224 IOPipeStorageINTEL: struct { io_pipe_id: LiteralInteger },
2225 FunctionFloatingPointModeINTEL: struct { target_width: LiteralInteger, fp_operation_mode: FPOperationMode },
2226 SingleElementVectorINTEL,
2227 VectorComputeCallableFunctionINTEL,
2228 };
1326};2229};
1327pub const BuiltIn = enum(u32) {2230pub const BuiltIn = enum(u32) {
1328 Position = 0,2231 Position = 0,
...@@ -1367,15 +2270,10 @@ pub const BuiltIn = enum(u32) {...@@ -1367,15 +2270,10 @@ pub const BuiltIn = enum(u32) {
1367 VertexIndex = 42,2270 VertexIndex = 42,
1368 InstanceIndex = 43,2271 InstanceIndex = 43,
1369 SubgroupEqMask = 4416,2272 SubgroupEqMask = 4416,
1370 SubgroupEqMaskKHR = 4416,
1371 SubgroupGeMask = 4417,2273 SubgroupGeMask = 4417,
1372 SubgroupGeMaskKHR = 4417,
1373 SubgroupGtMask = 4418,2274 SubgroupGtMask = 4418,
1374 SubgroupGtMaskKHR = 4418,
1375 SubgroupLeMask = 4419,2275 SubgroupLeMask = 4419,
1376 SubgroupLeMaskKHR = 4419,
1377 SubgroupLtMask = 4420,2276 SubgroupLtMask = 4420,
1378 SubgroupLtMaskKHR = 4420,
1379 BaseVertex = 4424,2277 BaseVertex = 4424,
1380 BaseInstance = 4425,2278 BaseInstance = 4425,
1381 DrawIndex = 4426,2279 DrawIndex = 4426,
...@@ -1408,42 +2306,47 @@ pub const BuiltIn = enum(u32) {...@@ -1408,42 +2306,47 @@ pub const BuiltIn = enum(u32) {
1408 BaryCoordNV = 5286,2306 BaryCoordNV = 5286,
1409 BaryCoordNoPerspNV = 5287,2307 BaryCoordNoPerspNV = 5287,
1410 FragSizeEXT = 5292,2308 FragSizeEXT = 5292,
1411 FragmentSizeNV = 5292,
1412 FragInvocationCountEXT = 5293,2309 FragInvocationCountEXT = 5293,
1413 InvocationsPerPixelNV = 5293,
1414 LaunchIdNV = 5319,
1415 LaunchIdKHR = 5319,2310 LaunchIdKHR = 5319,
1416 LaunchSizeNV = 5320,
1417 LaunchSizeKHR = 5320,2311 LaunchSizeKHR = 5320,
1418 WorldRayOriginNV = 5321,
1419 WorldRayOriginKHR = 5321,2312 WorldRayOriginKHR = 5321,
1420 WorldRayDirectionNV = 5322,
1421 WorldRayDirectionKHR = 5322,2313 WorldRayDirectionKHR = 5322,
1422 ObjectRayOriginNV = 5323,
1423 ObjectRayOriginKHR = 5323,2314 ObjectRayOriginKHR = 5323,
1424 ObjectRayDirectionNV = 5324,
1425 ObjectRayDirectionKHR = 5324,2315 ObjectRayDirectionKHR = 5324,
1426 RayTminNV = 5325,
1427 RayTminKHR = 5325,2316 RayTminKHR = 5325,
1428 RayTmaxNV = 5326,
1429 RayTmaxKHR = 5326,2317 RayTmaxKHR = 5326,
1430 InstanceCustomIndexNV = 5327,
1431 InstanceCustomIndexKHR = 5327,2318 InstanceCustomIndexKHR = 5327,
1432 ObjectToWorldNV = 5330,
1433 ObjectToWorldKHR = 5330,2319 ObjectToWorldKHR = 5330,
1434 WorldToObjectNV = 5331,
1435 WorldToObjectKHR = 5331,2320 WorldToObjectKHR = 5331,
1436 HitTNV = 5332,2321 HitTNV = 5332,
1437 HitKindNV = 5333,
1438 HitKindKHR = 5333,2322 HitKindKHR = 5333,
1439 IncomingRayFlagsNV = 5351,
1440 IncomingRayFlagsKHR = 5351,2323 IncomingRayFlagsKHR = 5351,
1441 RayGeometryIndexKHR = 5352,2324 RayGeometryIndexKHR = 5352,
1442 WarpsPerSMNV = 5374,2325 WarpsPerSMNV = 5374,
1443 SMCountNV = 5375,2326 SMCountNV = 5375,
1444 WarpIDNV = 5376,2327 WarpIDNV = 5376,
1445 SMIDNV = 5377,2328 SMIDNV = 5377,
1446 _,2329
2330 pub const SubgroupEqMaskKHR = BuiltIn.SubgroupEqMask;
2331 pub const SubgroupGeMaskKHR = BuiltIn.SubgroupGeMask;
2332 pub const SubgroupGtMaskKHR = BuiltIn.SubgroupGtMask;
2333 pub const SubgroupLeMaskKHR = BuiltIn.SubgroupLeMask;
2334 pub const SubgroupLtMaskKHR = BuiltIn.SubgroupLtMask;
2335 pub const FragmentSizeNV = BuiltIn.FragSizeEXT;
2336 pub const InvocationsPerPixelNV = BuiltIn.FragInvocationCountEXT;
2337 pub const LaunchIdNV = BuiltIn.LaunchIdKHR;
2338 pub const LaunchSizeNV = BuiltIn.LaunchSizeKHR;
2339 pub const WorldRayOriginNV = BuiltIn.WorldRayOriginKHR;
2340 pub const WorldRayDirectionNV = BuiltIn.WorldRayDirectionKHR;
2341 pub const ObjectRayOriginNV = BuiltIn.ObjectRayOriginKHR;
2342 pub const ObjectRayDirectionNV = BuiltIn.ObjectRayDirectionKHR;
2343 pub const RayTminNV = BuiltIn.RayTminKHR;
2344 pub const RayTmaxNV = BuiltIn.RayTmaxKHR;
2345 pub const InstanceCustomIndexNV = BuiltIn.InstanceCustomIndexKHR;
2346 pub const ObjectToWorldNV = BuiltIn.ObjectToWorldKHR;
2347 pub const WorldToObjectNV = BuiltIn.WorldToObjectKHR;
2348 pub const HitKindNV = BuiltIn.HitKindKHR;
2349 pub const IncomingRayFlagsNV = BuiltIn.IncomingRayFlagsKHR;
1447};2350};
1448pub const Scope = enum(u32) {2351pub const Scope = enum(u32) {
1449 CrossDevice = 0,2352 CrossDevice = 0,
...@@ -1452,9 +2355,9 @@ pub const Scope = enum(u32) {...@@ -1452,9 +2355,9 @@ pub const Scope = enum(u32) {
1452 Subgroup = 3,2355 Subgroup = 3,
1453 Invocation = 4,2356 Invocation = 4,
1454 QueueFamily = 5,2357 QueueFamily = 5,
1455 QueueFamilyKHR = 5,
1456 ShaderCallKHR = 6,2358 ShaderCallKHR = 6,
1457 _,2359
2360 pub const QueueFamilyKHR = Scope.QueueFamily;
1458};2361};
1459pub const GroupOperation = enum(u32) {2362pub const GroupOperation = enum(u32) {
1460 Reduce = 0,2363 Reduce = 0,
...@@ -1464,13 +2367,11 @@ pub const GroupOperation = enum(u32) {...@@ -1464,13 +2367,11 @@ pub const GroupOperation = enum(u32) {
1464 PartitionedReduceNV = 6,2367 PartitionedReduceNV = 6,
1465 PartitionedInclusiveScanNV = 7,2368 PartitionedInclusiveScanNV = 7,
1466 PartitionedExclusiveScanNV = 8,2369 PartitionedExclusiveScanNV = 8,
1467 _,
1468};2370};
1469pub const KernelEnqueueFlags = enum(u32) {2371pub const KernelEnqueueFlags = enum(u32) {
1470 NoWait = 0,2372 NoWait = 0,
1471 WaitKernel = 1,2373 WaitKernel = 1,
1472 WaitWorkGroup = 2,2374 WaitWorkGroup = 2,
1473 _,
1474};2375};
1475pub const Capability = enum(u32) {2376pub const Capability = enum(u32) {
1476 Matrix = 0,2377 Matrix = 0,
...@@ -1550,7 +2451,7 @@ pub const Capability = enum(u32) {...@@ -1550,7 +2451,7 @@ pub const Capability = enum(u32) {
1550 WorkgroupMemoryExplicitLayout16BitAccessKHR = 4430,2451 WorkgroupMemoryExplicitLayout16BitAccessKHR = 4430,
1551 SubgroupVoteKHR = 4431,2452 SubgroupVoteKHR = 4431,
1552 StorageBuffer16BitAccess = 4433,2453 StorageBuffer16BitAccess = 4433,
1553 StorageUniform16 = 4434,2454 UniformAndStorageBuffer16BitAccess = 4434,
1554 StoragePushConstant16 = 4435,2455 StoragePushConstant16 = 4435,
1555 StorageInputOutput16 = 4436,2456 StorageInputOutput16 = 4436,
1556 DeviceGroup = 4437,2457 DeviceGroup = 4437,
...@@ -1580,7 +2481,7 @@ pub const Capability = enum(u32) {...@@ -1580,7 +2481,7 @@ pub const Capability = enum(u32) {
1580 ShaderClockKHR = 5055,2481 ShaderClockKHR = 5055,
1581 SampleMaskOverrideCoverageNV = 5249,2482 SampleMaskOverrideCoverageNV = 5249,
1582 GeometryShaderPassthroughNV = 5251,2483 GeometryShaderPassthroughNV = 5251,
1583 ShaderViewportIndexLayerNV = 5254,2484 ShaderViewportIndexLayerEXT = 5254,
1584 ShaderViewportMaskNV = 5255,2485 ShaderViewportMaskNV = 5255,
1585 ShaderStereoViewNV = 5259,2486 ShaderStereoViewNV = 5259,
1586 PerViewAttributesNV = 5260,2487 PerViewAttributesNV = 5260,
...@@ -1589,7 +2490,7 @@ pub const Capability = enum(u32) {...@@ -1589,7 +2490,7 @@ pub const Capability = enum(u32) {
1589 ImageFootprintNV = 5282,2490 ImageFootprintNV = 5282,
1590 FragmentBarycentricNV = 5284,2491 FragmentBarycentricNV = 5284,
1591 ComputeDerivativeGroupQuadsNV = 5288,2492 ComputeDerivativeGroupQuadsNV = 5288,
1592 ShadingRateNV = 5291,2493 FragmentDensityEXT = 5291,
1593 GroupNonUniformPartitionedNV = 5297,2494 GroupNonUniformPartitionedNV = 5297,
1594 ShaderNonUniform = 5301,2495 ShaderNonUniform = 5301,
1595 RuntimeDescriptorArray = 5302,2496 RuntimeDescriptorArray = 5302,
...@@ -1654,21 +2555,37 @@ pub const Capability = enum(u32) {...@@ -1654,21 +2555,37 @@ pub const Capability = enum(u32) {
1654 AtomicFloat32AddEXT = 6033,2555 AtomicFloat32AddEXT = 6033,
1655 AtomicFloat64AddEXT = 6034,2556 AtomicFloat64AddEXT = 6034,
1656 LongConstantCompositeINTEL = 6089,2557 LongConstantCompositeINTEL = 6089,
1657 _,2558
2559 pub const StorageUniformBufferBlock16 = Capability.StorageBuffer16BitAccess;
2560 pub const StorageUniform16 = Capability.UniformAndStorageBuffer16BitAccess;
2561 pub const ShaderViewportIndexLayerNV = Capability.ShaderViewportIndexLayerEXT;
2562 pub const ShadingRateNV = Capability.FragmentDensityEXT;
2563 pub const ShaderNonUniformEXT = Capability.ShaderNonUniform;
2564 pub const RuntimeDescriptorArrayEXT = Capability.RuntimeDescriptorArray;
2565 pub const InputAttachmentArrayDynamicIndexingEXT = Capability.InputAttachmentArrayDynamicIndexing;
2566 pub const UniformTexelBufferArrayDynamicIndexingEXT = Capability.UniformTexelBufferArrayDynamicIndexing;
2567 pub const StorageTexelBufferArrayDynamicIndexingEXT = Capability.StorageTexelBufferArrayDynamicIndexing;
2568 pub const UniformBufferArrayNonUniformIndexingEXT = Capability.UniformBufferArrayNonUniformIndexing;
2569 pub const SampledImageArrayNonUniformIndexingEXT = Capability.SampledImageArrayNonUniformIndexing;
2570 pub const StorageBufferArrayNonUniformIndexingEXT = Capability.StorageBufferArrayNonUniformIndexing;
2571 pub const StorageImageArrayNonUniformIndexingEXT = Capability.StorageImageArrayNonUniformIndexing;
2572 pub const InputAttachmentArrayNonUniformIndexingEXT = Capability.InputAttachmentArrayNonUniformIndexing;
2573 pub const UniformTexelBufferArrayNonUniformIndexingEXT = Capability.UniformTexelBufferArrayNonUniformIndexing;
2574 pub const StorageTexelBufferArrayNonUniformIndexingEXT = Capability.StorageTexelBufferArrayNonUniformIndexing;
2575 pub const VulkanMemoryModelKHR = Capability.VulkanMemoryModel;
2576 pub const VulkanMemoryModelDeviceScopeKHR = Capability.VulkanMemoryModelDeviceScope;
2577 pub const PhysicalStorageBufferAddressesEXT = Capability.PhysicalStorageBufferAddresses;
1658};2578};
1659pub const RayQueryIntersection = enum(u32) {2579pub const RayQueryIntersection = enum(u32) {
1660 RayQueryCandidateIntersectionKHR = 0,2580 RayQueryCandidateIntersectionKHR = 0,
1661 RayQueryCommittedIntersectionKHR = 1,2581 RayQueryCommittedIntersectionKHR = 1,
1662 _,
1663};2582};
1664pub const RayQueryCommittedIntersectionType = enum(u32) {2583pub const RayQueryCommittedIntersectionType = enum(u32) {
1665 RayQueryCommittedIntersectionNoneKHR = 0,2584 RayQueryCommittedIntersectionNoneKHR = 0,
1666 RayQueryCommittedIntersectionTriangleKHR = 1,2585 RayQueryCommittedIntersectionTriangleKHR = 1,
1667 RayQueryCommittedIntersectionGeneratedKHR = 2,2586 RayQueryCommittedIntersectionGeneratedKHR = 2,
1668 _,
1669};2587};
1670pub const RayQueryCandidateIntersectionType = enum(u32) {2588pub const RayQueryCandidateIntersectionType = enum(u32) {
1671 RayQueryCandidateIntersectionTriangleKHR = 0,2589 RayQueryCandidateIntersectionTriangleKHR = 0,
1672 RayQueryCandidateIntersectionAABBKHR = 1,2590 RayQueryCandidateIntersectionAABBKHR = 1,
1673 _,
1674};2591};