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 @@
11//! This file is auto-generated by tools/gen_spirv_spec.zig.
22
33const 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
442pub const version = Version{ .major = 1, .minor = 5, .patch = 4 };
5pub const magic_number: u32 = 0x07230203;
43pub const magic_number: Word = 0x07230203;
644pub const Opcode = enum(u16) {
745 OpNop = 0,
846 OpUndef = 1,
......@@ -381,11 +419,11 @@ pub const Opcode = enum(u16) {
381419 OpImageSampleFootprintNV = 5283,
382420 OpGroupNonUniformPartitionNV = 5296,
383421 OpWritePackedPrimitiveIndices4x8NV = 5299,
384 OpReportIntersectionNV = 5334,
422 OpReportIntersectionKHR = 5334,
385423 OpIgnoreIntersectionNV = 5335,
386424 OpTerminateRayNV = 5336,
387425 OpTraceNV = 5337,
388 OpTypeAccelerationStructureNV = 5341,
426 OpTypeAccelerationStructureKHR = 5341,
389427 OpExecuteCallableNV = 5344,
390428 OpTypeCooperativeMatrixNV = 5358,
391429 OpCooperativeMatrixLoadNV = 5359,
......@@ -580,10 +618,592 @@ pub const Opcode = enum(u16) {
580618 OpTypeStructContinuedINTEL = 6090,
581619 OpConstantCompositeContinuedINTEL = 6091,
582620 OpSpecConstantCompositeContinuedINTEL = 6092,
583 _,
584621
585 const OpReportIntersectionKHR: Opcode = .OpReportIntersectionNV;
586 const OpTypeAccelerationStructureKHR: Opcode = .OpTypeAccelerationStructureNV;
622 pub const OpReportIntersectionNV = Opcode.OpReportIntersectionKHR;
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 }
5871207};
5881208pub const ImageOperands = packed struct {
5891209 Bias: bool align(@alignOf(u32)) = false,
......@@ -618,6 +1238,46 @@ pub const ImageOperands = packed struct {
6181238 _reserved_bit_29: bool = false,
6191239 _reserved_bit_30: bool = false,
6201240 _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 };
6211281};
6221282pub const FPFastMathMode = packed struct {
6231283 NotNaN: bool align(@alignOf(u32)) = false,
......@@ -720,6 +1380,41 @@ pub const LoopControl = packed struct {
7201380 _reserved_bit_29: bool = false,
7211381 _reserved_bit_30: bool = false,
7221382 _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 };
7231418};
7241419pub const FunctionControl = packed struct {
7251420 Inline: bool align(@alignOf(u32)) = false,
......@@ -788,6 +1483,10 @@ pub const MemorySemantics = packed struct {
7881483 _reserved_bit_29: bool = false,
7891484 _reserved_bit_30: bool = false,
7901485 _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 };
7911490};
7921491pub const MemoryAccess = packed struct {
7931492 Volatile: bool align(@alignOf(u32)) = false,
......@@ -822,6 +1521,45 @@ pub const MemoryAccess = packed struct {
8221521 _reserved_bit_29: bool = false,
8231522 _reserved_bit_30: bool = false,
8241523 _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 };
8251563};
8261564pub const KernelProfilingInfo = packed struct {
8271565 CmdExecTime: bool align(@alignOf(u32)) = false,
......@@ -932,7 +1670,6 @@ pub const SourceLanguage = enum(u32) {
9321670 OpenCL_C = 3,
9331671 OpenCL_CPP = 4,
9341672 HLSL = 5,
935 _,
9361673};
9371674pub const ExecutionModel = enum(u32) {
9381675 Vertex = 0,
......@@ -944,33 +1681,35 @@ pub const ExecutionModel = enum(u32) {
9441681 Kernel = 6,
9451682 TaskNV = 5267,
9461683 MeshNV = 5268,
947 RayGenerationNV = 5313,
9481684 RayGenerationKHR = 5313,
949 IntersectionNV = 5314,
9501685 IntersectionKHR = 5314,
951 AnyHitNV = 5315,
9521686 AnyHitKHR = 5315,
953 ClosestHitNV = 5316,
9541687 ClosestHitKHR = 5316,
955 MissNV = 5317,
9561688 MissKHR = 5317,
957 CallableNV = 5318,
9581689 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;
9601697};
9611698pub const AddressingModel = enum(u32) {
9621699 Logical = 0,
9631700 Physical32 = 1,
9641701 Physical64 = 2,
9651702 PhysicalStorageBuffer64 = 5348,
966 _,
1703
1704 pub const PhysicalStorageBuffer64EXT = AddressingModel.PhysicalStorageBuffer64;
9671705};
9681706pub const MemoryModel = enum(u32) {
9691707 Simple = 0,
9701708 GLSL450 = 1,
9711709 OpenCL = 2,
9721710 Vulkan = 3,
973 _,
1711
1712 pub const VulkanKHR = MemoryModel.Vulkan;
9741713};
9751714pub const ExecutionMode = enum(u32) {
9761715 Invocations = 0,
......@@ -1039,7 +1778,75 @@ pub const ExecutionMode = enum(u32) {
10391778 NoGlobalOffsetINTEL = 5895,
10401779 NumSIMDWorkitemsINTEL = 5896,
10411780 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 };
10431850};
10441851pub const StorageClass = enum(u32) {
10451852 UniformConstant = 0,
......@@ -1065,7 +1872,14 @@ pub const StorageClass = enum(u32) {
10651872 CodeSectionINTEL = 5605,
10661873 DeviceOnlyINTEL = 5936,
10671874 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;
10691883};
10701884pub const Dim = enum(u32) {
10711885 @"1D" = 0,
......@@ -1075,7 +1889,6 @@ pub const Dim = enum(u32) {
10751889 Rect = 4,
10761890 Buffer = 5,
10771891 SubpassData = 6,
1078 _,
10791892};
10801893pub const SamplerAddressingMode = enum(u32) {
10811894 None = 0,
......@@ -1083,12 +1896,10 @@ pub const SamplerAddressingMode = enum(u32) {
10831896 Clamp = 2,
10841897 Repeat = 3,
10851898 RepeatMirrored = 4,
1086 _,
10871899};
10881900pub const SamplerFilterMode = enum(u32) {
10891901 Nearest = 0,
10901902 Linear = 1,
1091 _,
10921903};
10931904pub const ImageFormat = enum(u32) {
10941905 Unknown = 0,
......@@ -1133,7 +1944,6 @@ pub const ImageFormat = enum(u32) {
11331944 R8ui = 39,
11341945 R64ui = 40,
11351946 R64i = 41,
1136 _,
11371947};
11381948pub const ImageChannelOrder = enum(u32) {
11391949 R = 0,
......@@ -1156,7 +1966,6 @@ pub const ImageChannelOrder = enum(u32) {
11561966 sRGBA = 17,
11571967 sBGRA = 18,
11581968 ABGR = 19,
1159 _,
11601969};
11611970pub const ImageChannelDataType = enum(u32) {
11621971 SnormInt8 = 0,
......@@ -1176,36 +1985,30 @@ pub const ImageChannelDataType = enum(u32) {
11761985 Float = 14,
11771986 UnormInt24 = 15,
11781987 UnormInt101010_2 = 16,
1179 _,
11801988};
11811989pub const FPRoundingMode = enum(u32) {
11821990 RTE = 0,
11831991 RTZ = 1,
11841992 RTP = 2,
11851993 RTN = 3,
1186 _,
11871994};
11881995pub const FPDenormMode = enum(u32) {
11891996 Preserve = 0,
11901997 FlushToZero = 1,
1191 _,
11921998};
11931999pub const FPOperationMode = enum(u32) {
11942000 IEEE = 0,
11952001 ALT = 1,
1196 _,
11972002};
11982003pub const LinkageType = enum(u32) {
11992004 Export = 0,
12002005 Import = 1,
12012006 LinkOnceODR = 2,
1202 _,
12032007};
12042008pub const AccessQualifier = enum(u32) {
12052009 ReadOnly = 0,
12062010 WriteOnly = 1,
12072011 ReadWrite = 2,
1208 _,
12092012};
12102013pub const FunctionParameterAttribute = enum(u32) {
12112014 Zext = 0,
......@@ -1216,7 +2019,6 @@ pub const FunctionParameterAttribute = enum(u32) {
12162019 NoCapture = 5,
12172020 NoWrite = 6,
12182021 NoReadWrite = 7,
1219 _,
12202022};
12212023pub const Decoration = enum(u32) {
12222024 RelaxedPrecision = 0,
......@@ -1278,11 +2080,8 @@ pub const Decoration = enum(u32) {
12782080 PerTaskNV = 5273,
12792081 PerVertexNV = 5285,
12802082 NonUniform = 5300,
1281 NonUniformEXT = 5300,
12822083 RestrictPointer = 5355,
1283 RestrictPointerEXT = 5355,
12842084 AliasedPointer = 5356,
1285 AliasedPointerEXT = 5356,
12862085 SIMTCallINTEL = 5599,
12872086 ReferencedIndirectlyINTEL = 5602,
12882087 ClobberINTEL = 5607,
......@@ -1293,9 +2092,7 @@ pub const Decoration = enum(u32) {
12932092 StackCallINTEL = 5627,
12942093 GlobalVariableOffsetINTEL = 5628,
12952094 CounterBuffer = 5634,
1296 HlslCounterBufferGOOGLE = 5634,
12972095 UserSemantic = 5635,
1298 HlslSemanticGOOGLE = 5635,
12992096 UserTypeGOOGLE = 5636,
13002097 FunctionRoundingModeINTEL = 5822,
13012098 FunctionDenormModeINTEL = 5823,
......@@ -1322,7 +2119,113 @@ pub const Decoration = enum(u32) {
13222119 FunctionFloatingPointModeINTEL = 6080,
13232120 SingleElementVectorINTEL = 6085,
13242121 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 };
13262229};
13272230pub const BuiltIn = enum(u32) {
13282231 Position = 0,
......@@ -1367,15 +2270,10 @@ pub const BuiltIn = enum(u32) {
13672270 VertexIndex = 42,
13682271 InstanceIndex = 43,
13692272 SubgroupEqMask = 4416,
1370 SubgroupEqMaskKHR = 4416,
13712273 SubgroupGeMask = 4417,
1372 SubgroupGeMaskKHR = 4417,
13732274 SubgroupGtMask = 4418,
1374 SubgroupGtMaskKHR = 4418,
13752275 SubgroupLeMask = 4419,
1376 SubgroupLeMaskKHR = 4419,
13772276 SubgroupLtMask = 4420,
1378 SubgroupLtMaskKHR = 4420,
13792277 BaseVertex = 4424,
13802278 BaseInstance = 4425,
13812279 DrawIndex = 4426,
......@@ -1408,42 +2306,47 @@ pub const BuiltIn = enum(u32) {
14082306 BaryCoordNV = 5286,
14092307 BaryCoordNoPerspNV = 5287,
14102308 FragSizeEXT = 5292,
1411 FragmentSizeNV = 5292,
14122309 FragInvocationCountEXT = 5293,
1413 InvocationsPerPixelNV = 5293,
1414 LaunchIdNV = 5319,
14152310 LaunchIdKHR = 5319,
1416 LaunchSizeNV = 5320,
14172311 LaunchSizeKHR = 5320,
1418 WorldRayOriginNV = 5321,
14192312 WorldRayOriginKHR = 5321,
1420 WorldRayDirectionNV = 5322,
14212313 WorldRayDirectionKHR = 5322,
1422 ObjectRayOriginNV = 5323,
14232314 ObjectRayOriginKHR = 5323,
1424 ObjectRayDirectionNV = 5324,
14252315 ObjectRayDirectionKHR = 5324,
1426 RayTminNV = 5325,
14272316 RayTminKHR = 5325,
1428 RayTmaxNV = 5326,
14292317 RayTmaxKHR = 5326,
1430 InstanceCustomIndexNV = 5327,
14312318 InstanceCustomIndexKHR = 5327,
1432 ObjectToWorldNV = 5330,
14332319 ObjectToWorldKHR = 5330,
1434 WorldToObjectNV = 5331,
14352320 WorldToObjectKHR = 5331,
14362321 HitTNV = 5332,
1437 HitKindNV = 5333,
14382322 HitKindKHR = 5333,
1439 IncomingRayFlagsNV = 5351,
14402323 IncomingRayFlagsKHR = 5351,
14412324 RayGeometryIndexKHR = 5352,
14422325 WarpsPerSMNV = 5374,
14432326 SMCountNV = 5375,
14442327 WarpIDNV = 5376,
14452328 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;
14472350};
14482351pub const Scope = enum(u32) {
14492352 CrossDevice = 0,
......@@ -1452,9 +2355,9 @@ pub const Scope = enum(u32) {
14522355 Subgroup = 3,
14532356 Invocation = 4,
14542357 QueueFamily = 5,
1455 QueueFamilyKHR = 5,
14562358 ShaderCallKHR = 6,
1457 _,
2359
2360 pub const QueueFamilyKHR = Scope.QueueFamily;
14582361};
14592362pub const GroupOperation = enum(u32) {
14602363 Reduce = 0,
......@@ -1464,13 +2367,11 @@ pub const GroupOperation = enum(u32) {
14642367 PartitionedReduceNV = 6,
14652368 PartitionedInclusiveScanNV = 7,
14662369 PartitionedExclusiveScanNV = 8,
1467 _,
14682370};
14692371pub const KernelEnqueueFlags = enum(u32) {
14702372 NoWait = 0,
14712373 WaitKernel = 1,
14722374 WaitWorkGroup = 2,
1473 _,
14742375};
14752376pub const Capability = enum(u32) {
14762377 Matrix = 0,
......@@ -1550,7 +2451,7 @@ pub const Capability = enum(u32) {
15502451 WorkgroupMemoryExplicitLayout16BitAccessKHR = 4430,
15512452 SubgroupVoteKHR = 4431,
15522453 StorageBuffer16BitAccess = 4433,
1553 StorageUniform16 = 4434,
2454 UniformAndStorageBuffer16BitAccess = 4434,
15542455 StoragePushConstant16 = 4435,
15552456 StorageInputOutput16 = 4436,
15562457 DeviceGroup = 4437,
......@@ -1580,7 +2481,7 @@ pub const Capability = enum(u32) {
15802481 ShaderClockKHR = 5055,
15812482 SampleMaskOverrideCoverageNV = 5249,
15822483 GeometryShaderPassthroughNV = 5251,
1583 ShaderViewportIndexLayerNV = 5254,
2484 ShaderViewportIndexLayerEXT = 5254,
15842485 ShaderViewportMaskNV = 5255,
15852486 ShaderStereoViewNV = 5259,
15862487 PerViewAttributesNV = 5260,
......@@ -1589,7 +2490,7 @@ pub const Capability = enum(u32) {
15892490 ImageFootprintNV = 5282,
15902491 FragmentBarycentricNV = 5284,
15912492 ComputeDerivativeGroupQuadsNV = 5288,
1592 ShadingRateNV = 5291,
2493 FragmentDensityEXT = 5291,
15932494 GroupNonUniformPartitionedNV = 5297,
15942495 ShaderNonUniform = 5301,
15952496 RuntimeDescriptorArray = 5302,
......@@ -1654,21 +2555,37 @@ pub const Capability = enum(u32) {
16542555 AtomicFloat32AddEXT = 6033,
16552556 AtomicFloat64AddEXT = 6034,
16562557 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;
16582578};
16592579pub const RayQueryIntersection = enum(u32) {
16602580 RayQueryCandidateIntersectionKHR = 0,
16612581 RayQueryCommittedIntersectionKHR = 1,
1662 _,
16632582};
16642583pub const RayQueryCommittedIntersectionType = enum(u32) {
16652584 RayQueryCommittedIntersectionNoneKHR = 0,
16662585 RayQueryCommittedIntersectionTriangleKHR = 1,
16672586 RayQueryCommittedIntersectionGeneratedKHR = 2,
1668 _,
16692587};
16702588pub const RayQueryCandidateIntersectionType = enum(u32) {
16712589 RayQueryCandidateIntersectionTriangleKHR = 0,
16722590 RayQueryCandidateIntersectionAABBKHR = 1,
1673 _,
16742591};